Saltar al contenido
Portada » Blog – Laprovittera Carlos » TryHackMe – Linux Fundamentals Part 2

TryHackMe – Linux Fundamentals Part 2

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:

DominioNombre completoObjetivo
tocartocarCrear archivo
mkdircrear directorioCrear una carpeta
cpCopiarCopiar un archivo o carpeta
vehículo motorizadomoverMover un archivo o carpeta
rmeliminarEliminar un archivo o carpeta
archivoarchivoDeterminar 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!!!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *