
Hola hacketones! En este capítulo de TryHackMe – Linux Fundamentals Part 2 aplicaremos los conocimientos de la primera entrega, así que les recomiendo que completen esa sección antes de continuar.
En la segunda parte, dejaremos de lado la funcionalidad del navegador y te ayudaremos a iniciarte en una habilidad fundamental para iniciar sesión y controlar las terminales de equipos remotos. Además, la sala te permitirá:

- Desbloquee el potencial de sus primeros comandos presentándole el uso de indicadores y argumentos
- Mejore su conocimiento del sistema de archivos para ejecutar algunos comandos más útiles, como copiar y mover archivos.
- Descubrir cómo se gestiona el acceso a archivos y carpetas y cómo podemos determinar nuestro acceso.
- ¡Ejecutando tus primeros scripts y ejecutables!

Tarea 2 Cómo acceder a su máquina Linux mediante SSH (Implementación)
La funcionalidad del navegador se utilizó en Fundamentos de Linux Parte 1 para permitirle conectarse directamente a su primera máquina Linux sin ningún problema.
De hecho, la funcionalidad del navegador utiliza exactamente el mismo protocolo que usaremos hoy. Este protocolo se denomina Secure Secure o SSH y es el método habitual para conectarse e interactuar con la línea de comandos de una máquina Linux remota .
Implementaremos dos máquinas en esta sala:
- Su máquina Linux
- La caja de ataque TryHackMe
¿Qué es SSH y cómo funciona?
Secure Shell o SSH es simplemente un protocolo entre dispositivos en formato cifrado. Mediante criptografía, cualquier entrada que enviemos en un formato legible se cifra para su transmisión por la red, donde se descifra al llegar a la máquina remota, como se muestra en el diagrama a continuación.

Puedes aprender sobre los distintos tipos de cifrado en una sala TryHackMe. Pero por ahora, solo necesitamos entender que:
- SSH nos permite ejecutar comandos de forma remota en otro dispositivo.
- Cualquier dato enviado entre dispositivos se cifra cuando se envía a través de una red como Internet.
Implementación de su máquina Linux
Presione el botón verde Iniciar máquina que aparece a continuación.
Arrancar la máquina
Luego, desplácese hasta la parte superior de la página para ver la información de implementación similar a la captura de pantalla a continuación.

La dirección IP mostrada es la dirección de tu equipo Linux al que iniciarás sesión mediante SSH . Tenla en cuenta por ahora.
Implementación de TryHackMe AttackBox
En la parte superior de la página, pulsa el botón «Iniciar AttackBox» para desplegar la TryHackMe AttackBox con la que interactuaremos. La TryHackMe AttackBox es una máquina Ubuntu Linux alojada en la nube y con la que puedes interactuar a través de tu navegador. La usarás para interactuar con la máquina que implementes en esta tarea.

Cómo usar SSH para iniciar sesión en su máquina Linux
La sintaxis para usar SSH es muy sencilla. Solo necesitamos proporcionar dos datos:
1. La dirección IP de la máquina remota
2. Credenciales correctas de una cuenta válida para iniciar sesión en la máquina remota
En esta sala, iniciaremos sesión como «tryhackme», cuya contraseña es «tryhackme» sin las comillas («»). Usaremos la dirección IP de la máquina que se muestra en la tarjeta en la parte superior de la sala como dirección IP y este usuario para construir un comando que inicie sesión en la máquina remota mediante SSH . El comando es sshy, a continuación, el nombre de usuario de la cuenta y @la dirección IP de la máquina.
Pero primero, necesitamos abrir una terminal en TryHackMe AttackBox. Hay un icono en el escritorio llamado «Terminal». Ahora, podemos empezar a introducir comandos.
Por ejemplo: ssh tryhackme@MACHINE_IP Reemplazar la dirección IP por la de su máquina Linux de destino. Una vez ejecutado, se nos pedirá que confiemos en el host y que proporcionemos una contraseña para la cuenta » tryhackme «, que también es » tryhackme «.

Ahora que estamos conectados, cualquier comando que ejecutemos se ejecutará en la máquina remota, no en la nuestra.
Nota: Al escribir una contraseña en el mensaje de inicio de sesión SSH , no se muestra ninguna respuesta; no verá ningún texto ni símbolo al escribirla. Sin embargo, sigue funcionando, así que simplemente escriba la contraseña y presione Enter para iniciar sesión.

Tarea 3 Introducción a las banderas y los interruptores
La mayoría de los comandos permiten el uso de argumentos. Estos argumentos se identifican mediante un guion y una palabra clave específica conocida como indicadores o modificadores.
Más adelante analizaremos cómo podemos identificar qué comandos permiten proporcionar argumentos y comprender exactamente qué hacen.
Al usar un comando, a menos que se especifique lo contrario, este se comportará de forma predeterminada. Por ejemplo, ls lista el contenido del directorio de trabajo. Sin embargo, no se muestran los archivos ocultos. Podemos usar indicadores y parámetros para ampliar el comportamiento de los comandos.
Usando nuestro lsejemplo, lsnos informa que solo existe una carpeta llamada «carpeta1», como se muestra en la captura de pantalla a continuación. Tenga en cuenta que el contenido de las capturas de pantalla a continuación es solo un ejemplo.
Usando ls para ver el contenido de un directorio
tryhackme@linux2:~$lsfolder1
tryhackme@linux2:~$
Sin embargo, tras usar el -aargumento (abreviatura de –all), obtenemos una salida con algunos archivos y carpetas adicionales, como «.hiddenfolder». Los archivos y carpetas con » . » son archivos ocultos.
Usando ls para ver carpetas ocultas
tryhackme@linux2:~$ls-a.hiddenfolder folder1
tryhackme@linux2:~$

Los comandos que las aceptan también tendrán una –helpopción. Esta opción enumerará las posibles opciones que acepta el comando, proporcionará una breve descripción y un ejemplo de cómo usarla.
Enumerando las opciones que podemos utilizar con ls
tryhackme@linux2:~$ls–help Usage: ls [OPTION]… [FILE]…
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -c ftuvSUX nor –sort is specified.

Mandatory arguments to long options are mandatory for short options too.
-a, –all do not ignore entries starting with .
-A, –almost-all do not list implied . and ..
–author with -l, print the author of each file
-b, –escape print C-style escapes for nongraphic characters
–block-size=SIZE with -l, scale sizes by SIZE when printing them;
e.g., ‘–block-size=M’; see SIZE format below
-B, –ignore-backups do not list implied entries ending with ~
-c with -lt: sort by, and show, ctime (time of last
modification of file status information);
with -l: show ctime and sort by name;
otherwise: sort by ctime, newest first
-C list entries by columns
–color[=WHEN] colorize the output; WHEN can be ‘always’ (default
if omitted), ‘auto’, or ‘never’; more info below
-d, –directory list directories themselves, not their contents
-D, –dired generate output designed for Emacs’ dired mode
-f do not sort, enable -aU, disable -ls –color
-F, –classify append indicator (one of */=>@|) to entries
–file-type likewise, except do not append ‘*’
–format=WORD across -x, commas -m, horizontal -x, long -l,
single-column -1, verbose -l, vertical -C
–full-time like -l –time-style=full-iso
-g like -l, but do not list owner
–group-directories-first
tryhackme@linux2:~$
Esta opción es, de hecho, una salida formateada de lo que se denomina página man (abreviatura de manual), que contiene documentación para comandos y aplicaciones de Linux .
La página del manual
Las páginas del manual son una gran fuente de información tanto para comandos del sistema como para aplicaciones , y están disponibles tanto en una máquina Linux (a la que se puede acceder desde la propia máquina) como en línea .
Para acceder a esta documentación, podemos usar el man comando y luego especificar el comando para el que queremos leer la documentación. En nuestro ejemplo de ls, usaríamos man lspara ver las páginas del manual de lsla siguiente manera:
Enumerando las opciones que podemos utilizar con ls
tryhackme@linux2:~$man ls LS(1) User Commands LS(1)
NAME
ls – list directory contents
SYNOPSIS
ls [OPTION]… [FILE]…
DESCRIPTION
List information about the FILEs (the current directory by default). Sort entries alphabetically if none of
-cftuvSUX nor –sort is specified.
Mandatory arguments to long options are mandatory for short options too.
-a, –all
do not ignore entries starting with .
-A, –almost-all
do not list implied . and ..
–author
with -l, print the author of each file
-b, –escape
print C-style escapes for nongraphic characters
–block-size=SIZE
with -l, scale sizes by SIZE when printing them; e.g., ‘–block-size=M’; see SIZE format below
Manual page ls(1) line 1 (press h for help or q to quit)
Responda las preguntas a continuación
Explora la página del manual del comando ls
man ls
¿Qué tecla de flecha direccional usaríamos para navegar hacia abajo en la página del manual?
down
¿Qué bandera usaríamos para mostrar la salida de una manera «legible para humanos»?
-h
Tarea 4 Interacción del sistema de archivos (continuación)
Abordamos algunos de los comandos más fundamentales al interactuar con el sistema de archivos en Linux . Por ejemplo, vimos cómo listar y encontrar el contenido de las carpetas usando ls y find y cómo navegar por el sistema de archivos usando cd.
En esta tarea, aprenderemos algunos comandos más para interactuar con el sistema de archivos que nos permitirán:
- crear archivos y carpetas
- mover archivos y carpetas
- eliminar archivos y carpetas

Más específicamente, los siguientes comandos:
| Dominio | Nombre completo | Objetivo |
| tocar | tocar | Crear archivo |
| mkdir | crear directorio | Crear una carpeta |
| cp | Copiar | Copiar un archivo o carpeta |
| vehículo motorizado | mover | Mover un archivo o carpeta |
| rm | eliminar | Eliminar un archivo o carpeta |
| archivo | archivo | Determinar el tipo de un archivo |
Consejo profesional: De manera similar al uso de cat, podemos proporcionar rutas de archivo completas, es decir, directorio1/directorio2/nota para todos estos comandos

Creación de archivos y carpetas (touch, mkdir)
Crear archivos y carpetas en Linux es un proceso sencillo. Primero, veremos cómo crear un archivo. El comando «touch» solo acepta un argumento: el nombre que queremos darle al archivo. Por ejemplo, podemos crear el archivo «nota» usando touch note. Cabe destacar que «touch» simplemente crea un archivo en blanco. Necesitaría usar comandos como echo o editores de texto como nano para agregar contenido al archivo en blanco.
Usar el tacto para crear un nuevo archivo
tryhackme@linux2:~$touchnotetryhackme@linux2:~$lsfolder1 note
Este es un proceso similar para crear una carpeta, que simplemente implica usar el mkdircomando y, de nuevo, proporcionar el nombre que queremos asignar al directorio. Por ejemplo, crear el directorio «midirectorio» con mkdir mydirectory.
Creando un nuevo directorio con mkdir
tryhackme@linux2:~$mkdirmydirectorytryhackme@linux2:~$lsfolder1 mydirectory note
Eliminar archivos y carpetas (rm)
rm Es extraordinario entre los comandos que hemos visto hasta ahora. Puedes eliminar archivos simplemente usando rm. Sin embargo, debes indicar el -Rmodificador junto con el nombre del directorio que deseas eliminar.
Usando rm para eliminar un archivo
tryhackme@linux2:~$rmnotetryhackme@linux2:~$lsfolder1 mydirectory
Usando rm recursivamente para eliminar un directorio
tryhackme@linux2:~$rm-Rmydirectorytryhackme@linux2:~$lsfolder1
Copiar y mover archivos y carpetas (cp, mv)
Copiar y mover archivos es una función importante en una máquina Linuxcp . A partir de , este comando acepta dos argumentos:
1. el nombre del archivo existente
2. el nombre que deseamos asignar al nuevo archivo al copiar
cp Copia todo el contenido del archivo existente en el nuevo. En la captura de pantalla a continuación, copiamos «nota» a «nota2».
Usando cp para copiar un archivo
tryhackme@linux2:~$cpnote note2tryhackme@linux2:~$lsfolder1 note note2
Mover un archivo requiere dos argumentos, al igual que el comando cp. Sin embargo, en lugar de copiar o crear un nuevo archivo, mvse fusionará o modificará el segundo archivo que proporcionamos como argumento. No solo se puede usar mvpara mover un archivo a una nueva carpeta, sino también mv para renombrarlo. Por ejemplo, en la captura de pantalla a continuación, renombramos el archivo «nota2» a «nota3». «nota3» ahora tendrá el contenido de «nota2».
Usando mv para mover un archivo
tryhackme@linux2:~$mvnote2 note3tryhackme@linux2:~$lsfolder1 note note3
Determinación del tipo de archivo
Lo que suele ser engañoso y suele pillar a la gente es hacer suposiciones a partir de los archivos sobre su propósito o contenido. Para facilitar esto, los archivos suelen tener una extensión. Por ejemplo, los archivos de texto suelen tener la extensión «.txt». Pero esto no es necesario.

Hasta ahora, los archivos que hemos usado en nuestros ejemplos no tienen extensión. Sin conocer el contexto de su existencia, desconocemos su propósito. Introduzca el filecomando. Este comando solo acepta un argumento. Por ejemplo, usaremos filepara confirmar si el archivo «nota» de nuestros ejemplos es un archivo de texto, como se muestra a continuación file note.
Usar un archivo para determinar el contenido de un archivo
tryhackme@linux2:~$filenotenote: ASCII text
Responda las preguntas a continuación
¿Cómo crearías el archivo llamado «newnote»?
touch newnote
En la máquina implementable, ¿cuál es el tipo de archivo de «unknown1» en el directorio de inicio de «tryhackme»?
ASCII text
¿Cómo movemos el archivo «myfile» al directorio «myfolder»?
mv myfile myfolder
¿Cuál es el contenido de este archivo?
THM{FILESYSTEM}
Continúe aplicando sus conocimientos y practicando los comandos de esta tarea.
Tarea 5 Permisos 101
Como ya habrás descubierto, algunos usuarios no pueden acceder a ciertos archivos o carpetas. Anteriormente, exploramos algunos comandos que permiten determinar qué tipo de acceso tenemos y adónde nos lleva.
En nuestras tareas anteriores, aprendimos a extender el uso de comandos mediante indicadores y parámetros. Tomemos, por ejemplo, el lscomando que lista el contenido del directorio actual. Al usar el -l parámetro, podemos ver diez columnas, como en la captura de pantalla a continuación. Sin embargo, solo nos interesan las tres primeras:
Usar ls -lh para enumerar los permisos de todos los archivos en el directorio
tryhackme@linux2:~$ls-lh-rw-r–r– 1 cmnatic cmnatic 0 Feb 19 10:37 file1
-rw-r–r– 8 cmnatic cmnatic 0 Feb 19 10:37 file2
Aunque parezca intimidante, estas tres columnas son muy importantes para determinar ciertas características de un archivo o carpeta y si tenemos acceso a él o no. Un archivo o carpeta puede tener un par de características que determinan qué acciones están permitidas y qué usuario o grupo puede realizarlas, como las siguientes:
- Leer
- Escribir
- Ejecutar

Brevemente: Las diferencias entre usuarios y grupos
Lo bueno de Linux es que los permisos pueden ser tan granulares que, si bien un usuario técnicamente es el propietario de un archivo, si se han establecido los permisos, un grupo de usuarios también puede tener el mismo conjunto de permisos o uno diferente para el mismo archivo sin afectar al propietario del archivo en sí.
Pongamos esto en contexto real: el usuario del sistema que ejecuta un servidor web debe tener permisos de lectura y escritura para que una aplicación web sea eficaz. Sin embargo, empresas como las de alojamiento web deberán permitir que sus clientes carguen sus propios archivos para su sitio web sin ser el usuario del servidor web, lo que comprometería la seguridad de los demás clientes.
A continuación aprenderemos los comandos necesarios para cambiar entre usuarios.
Cambiar entre usuarios
Cambiar de usuario en una instalación de Linux es fácil gracias al sucomando. A menos que sea el usuario root (o utilice permisos root mediante sudo), debe saber dos cosas para facilitar esta transición de cuentas de usuario:
- El usuario al que deseamos cambiar
- La contraseña del usuario

El su comando utiliza un par de parámetros que podrían ser relevantes. Por ejemplo, ejecutar un comando al iniciar sesión o especificar un shell específico. Le recomiendo leer la página del manual para su obtener más información. Sin embargo, aquí abordaré el parámetro -l`or` –login.
Simplemente, al proporcionar el -l cambio a su, iniciamos un shell que es mucho más similar al usuario real que inicia sesión en el sistema: heredamos muchas más propiedades del nuevo usuario, es decir, variables de entorno y similares.
Usando su para cambiar al usuario2 interactivamente
tryhackme@linux2:~$suuser2Password:
user2@linux2:/home/tryhackme$
Por ejemplo, cuando usamos supara cambiar a “usuario2”, nuestra nueva sesión nos lleva al directorio de inicio de nuestro usuario anterior.
Usando su para cambiar al usuario2 interactivamente
tryhackme@linux2:~$su-luser2Password:
user2@linux2:~$pwduser2@:/home/user2$
Ahora, después de usar -l, nuestra nueva sesión nos ha llevado automáticamente al directorio de inicio de «usuario».
Responda las preguntas a continuación
En la máquina desplegable, ¿quién es el propietario de «importante»?
user2
¿Cuál sería el comando para cambiar al usuario «usuario2»?
su user2
Ahora cambie a este usuario «usuario2» usando la contraseña «usuario2»
Salida del contenido de «importante», ¿cuál es la bandera?
THM{SU_USER2}
Tarea 6 Directorios comunes
/etc
Este directorio raíz es uno de los más importantes de su sistema. La carpeta etc (abreviatura de etcétera) es una ubicación común para almacenar archivos de sistema utilizados por su sistema operativo.
Por ejemplo, el archivo sudoers resaltado en la captura de pantalla a continuación contiene una lista de los usuarios y grupos que tienen permiso para ejecutar sudo o un conjunto de comandos como usuario root.
También se destacan a continuación los archivos » passwd » y » shadow «. Estos dos archivos son especiales para Linux , ya que muestran cómo el sistema almacena las contraseñas de cada usuario en un formato cifrado llamado sha512.
Algunos contenidos notables del directorio /etc
tryhackme@linux2:/etc$lsshadow passwd sudoers sudoers.d
/var
El directorio «/var», donde «var» es la abreviatura de datos variables, es una de las carpetas raíz principales de una instalación de Linux . Esta carpeta almacena datos a los que acceden o escriben con frecuencia los servicios o aplicaciones que se ejecutan en el sistema. Por ejemplo, aquí se escriben los archivos de registro de los servicios y aplicaciones en ejecución ( /var/log ), u otros datos que no están necesariamente asociados con un usuario específico (es decir, bases de datos, etc.).
Algunos contenidos notables del directorio /var
tryhackme@linux2:/var$lsbackups log opt tmp
/ raíz
A diferencia del directorio /home , la carpeta /root es el directorio de inicio del usuario «root» del sistema. Esta carpeta es el único requisito, salvo comprender que es el directorio de inicio del usuario «root». Sin embargo, cabe mencionarlo, ya que se supone que este usuario tendría sus datos en un directorio como » /home/root » por defecto.
Algunos contenidos notables del directorio /root
root@linux2:~#lsmyfile myfolder passwords.xlsx
/tmp
Este es un directorio raíz único que se encuentra en una instalación de Linux . El directorio /tmp, abreviatura de » temporal «, es volátil y se utiliza para almacenar datos a los que solo se accede una o dos veces. Al igual que ocurre con la memoria de su ordenador, al reiniciarlo, el contenido de esta carpeta se borra.

Lo útil para nosotros en pruebas de penetración es que cualquier usuario puede escribir en esta carpeta por defecto. Esto significa que, una vez que tenemos acceso a una máquina, sirve como un buen lugar para almacenar elementos como nuestros scripts de enumeración.
Algunos contenidos notables del directorio /tmp
root@linux2:/tmp#lstodelete trash.txt rubbish.bin
¿Cuál es la ruta del directorio en la que esperamos que se almacenen los registros?
/var/log
¿Qué directorio raíz es similar a cómo funciona la RAM en una computadora?
/tmp
Nombra el directorio de inicio del usuario root
/root
Ahora aplique su aprendizaje y navegue a través de estos directorios en la máquina Linux implementada.
Tarea 7 Conclusiones y resúmenes
¡Buen trabajo! Esta sala se centró en la teoría y abordó diversos aspectos fundamentales para familiarizarte con Linux . En resumen, esta sala te enseñó:
- Cómo conectarse a una máquina Linux de forma remota mediante SSH
- Mejore su uso de comandos al proporcionar indicadores, modificadores y dónde puede obtener información sobre ellos para cada comando (páginas de manual)
- Algunos comandos más que usarás frecuentemente para interactuar con el sistema de archivos y su contenido
- Una breve introducción a los permisos de archivos y al cambio de usuarios
- Un párrafo de resumen de los directorios raíz importantes en una instalación de Ubuntu Linux y cómo podemos utilizar los datos almacenados en ellos.
Te animo a que recorras esta sala una o dos veces para familiarizarte con los conceptos. ¡Al fin y al cabo, la práctica hace al maestro!

Sigan entrenando, Hacketones, Nos vemos en el próximo laboratorio!!!