Bienvenido a TryHackMe #5 – “Fundamentos de Linux 2”, donde nos sumergiremos aún más en las profundidades de Linux. Este artículo te llevará a través de nuevos conceptos, proporcionándote las herramientas esenciales para enfrentar los desafíos de seguridad informática más complejos.

¿Te gustaría enterarte de cuando lanzamos descuentos al Máximo o Nuevos Cursos?

Acceder a su máquina Linux usando SSH

La funcionalidad del navegador usa exactamente el mismo protocolo que vamos a usar hoy. Este protocolo se llama Secure Shell o SSH para abreviar y es el medio común para conectarse e interactuar con la línea de comando de una máquina Linux remota.

¿Qué es SSH y cómo funciona?

Secure Shell o SSH simplemente es un protocolo entre dispositivos en forma encriptada. Al usar criptografía, cualquier entrada que enviamos en un formato legible por humanos se cifra para viajar a través de una red, donde luego se descifra una vez que llega a la máquina remota, como en el diagrama a continuación.

Necesitamos entender que:

  • SSH nos permite ejecutar comandos de forma remota en otro dispositivo.
  • Todos los datos enviados entre los dispositivos se cifran cuando se envían a través de una red como Internet.

Implementación de su máquina Linux

Presione el botón verde “Iniciar máquina” en la parte superior derecha de esta tarea y luego desplácese hasta la parte superior de la página para ver la información de implementación de esta manera:

Uso de SSH para iniciar sesión en su máquina Linux

La sintaxis para usar SSH es muy simple. Sólo tenemos que proporcionar dos cosas:

1. La dirección IP de la máquina remota

2. Corrija las credenciales a una cuenta válida para iniciar sesión en la máquina remota

Para esta sala, iniciaremos sesión como “tryhackme”, cuya contraseña es “tryhackme” sin las comillas (“”). Usemos la dirección IP de la máquina que se muestra en la tarjeta en la parte superior de la sala como la dirección IP y este usuario, para construir un comando para iniciar sesión en la máquina remota usando SSH. El comando para hacerlo es sshy luego el nombre de usuario de la cuenta, @la dirección IP de la máquina.

Pero primero, necesitamos abrir una terminal en TryHackMe AttackBox. Hay un icono colocado en el escritorio llamado “Terminal”. Y ahora, podemos proceder a ingresar comandos.

Por ejemplo: ssh tryhackme@MACHINE_IP . Reemplazar la dirección IP con la dirección IP de su máquina de destino Linux . Una vez ejecutado, se nos pedirá que confiemos en el host y luego proporcionemos una contraseña para la cuenta “ tryhackme “, que también es ” tryhackme “.

Ahora que estamos conectados, cualquier comando que ejecutemos ahora se ejecutará en la máquina remota, no en la nuestra.

Nota: cuando ingresa una contraseña en un indicador de inicio de sesión de ssh, no hay comentarios visibles; no podrá ver ningún texto o símbolo que aparezca mientras ingresa la contraseña. Sin embargo, todavía funciona, así que simplemente escriba la contraseña y presione Intro para iniciar sesión.

Introducción a banderas e interruptores

La mayoría de los comandos permiten proporcionar argumentos. Estos argumentos se identifican con un guion y una determinada palabra clave conocida como banderas o interruptores. Al usar un comando, a menos que se especifique lo contrario, realizará su comportamiento predeterminado. Por ejemplo,  ls enumera el contenido del directorio de trabajo. Sin embargo, los archivos ocultos no se muestran. Podemos usar banderas e interruptores para extender el comportamiento de los comandos.

Sin embargo, después de usar el -aargumento (abreviatura de –all), de repente tenemos una salida con algunos archivos y carpetas más, como “. carpeta oculta”. Los archivos y carpetas con “. ” son archivos ocultos.

Los comandos que los acepten también tendrán una opción–help. Esta opción enumerará las posibles opciones que acepta el comando, proporcionará una breve descripción y un ejemplo de cómo usarlo.

Esta opción es, de hecho, una salida formateada de lo que se llama la página del manual (abreviatura de manual), que contiene documentación para comandos y aplicaciones de Linux.

Las páginas del manual

Son una gran fuente de información tanto para los comandos del sistema como para las aplicaciones y están disponibles tanto en una máquina Linux, a la que se puede acceder en la propia máquina como en línea.

Para acceder a esta documentación, podemos usar el comando man y luego proporcionar el comando para el que queremos leer la documentación. Usando nuestro ejemplo de ls, usaríamos man ls para ver las páginas del manual de ls la siguiente manera:

Continuación de la interacción del sistema de archivos

En esta tarea, aprenderemos algunos comandos más para interactuar con el sistema de archivos que nos permitan:

  • crear archivos y carpetas
  • mover archivos y carpetas
  • eliminar archivos y carpetas

Más específicamente, los siguientes comandos:

ComandoNombre completoObjetivo
touchtouchCrea un archivo
mkdirmake directorycrear una carpeta
cpcopyCopiar un archivo o carpeta
mvmoveMover un archivo o carpeta
rmremoveEliminar un archivo o carpeta
filefileDeterminar 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 simple. Primero, cubriremos la creación de un archivo. El comando touch toma exactamente un argumento: el nombre que queremos darle al archivo que creamos. Por ejemplo, podemos crear el archivo “nota” usandotouch nota. Vale la pena señalar que tocar simplemente crea un archivo en blanco. Necesitará usar comandos como echo o editores de texto como nano para agregar contenido al archivo en blanco.

Es igual para crear una carpeta, que solo implica usar mkdir y nuevamente proporcionar el nombre que queremos asignar al directorio. Por ejemplo, crear el directorio “mydirectory” usando mkdir mydirectory.

Eliminación de archivos y carpetas (rm)

Simplemente puede eliminar archivos usando rm. Sin embargo, debe proporcionar el -Rpara eliminar un directorio.

Copiar y mover archivos y carpetas (cp, mv)

Copiar y mover archivos es una funcionalidad importante en una máquina Linux. Comenzando concp , este comando toma dos argumentos:

1. el nombre del archivo existente

2. el nombre que deseamos asignar al nuevo archivo al copiar

cpcopia todo el contenido del archivo existente en el nuevo archivo. En la captura de pantalla a continuación, estamos copiando “nota” a “nota2”.

Mover un archivo requiere dos argumentos, al igual que el comando cp. Sin embargo, en lugar de copiar y/o crear un nuevo archivo, mv fusionará o modificará el segundo archivo que proporcionamos como argumento. No solo puede usar maura mover un archivo a una nueva carpeta, sino que también puede usar mv para cambiar el nombre de un archivo o carpeta. Por ejemplo, en la captura de pantalla a continuación, estamos cambiando el nombre del archivo “nota2” para que se llame “nota3”. “note3” ahora tendrá el contenido de “note2”.

Determinación del tipo de archivo

Lo que a menudo es engañoso y sorprende a la gente es hacer suposiciones a partir de los archivos sobre cuál puede ser su propósito o contenido. Los archivos suelen tener lo que se conoce como una extensión para hacerlo más fácil. Por ejemplo, los archivos de texto suelen tener una extensión de “.txt”. Pero esto no es necesario.

Hasta ahora, los archivos que hemos usado en nuestros ejemplos no tenían extensión. Sin conocer el contexto de por qué el archivo está allí, realmente no sabemos su propósito. Usaremos file para confirmar si el archivo de “nota” en nuestros ejemplos es realmente un archivo de texto, así file note.

Permisos 101

Ciertos usuarios no pueden acceder a ciertos archivos o carpetas. Anteriormente exploramos algunos comandos que se pueden usar para determinar qué acceso tenemos y hacia dónde nos lleva. 

En nuestras tareas anteriores, aprendimos cómo extender el uso de comandos a través de indicadores e interruptores. Tomemos, por ejemplo, el comando ls, que enumera el contenido del directorio actual. Al usar el -l, podemos ver diez columnas, como en la captura de pantalla a continuación. Sin embargo, solo nos interesan las tres primeras columnas:

Estas tres columnas son muy importantes para determinar ciertas características de un archivo o carpeta y si tenemos o no acceso a él. Un archivo o carpeta puede tener un par de características que determinan qué acciones están permitidas y qué usuario o grupo tiene la capacidad de realizar la acción determinada, como las siguientes:

  • Leer
  • Escribe
  • Ejecutar 

Usando su para cambiar a usuario2

Usemos el archivo “cmnatic.pem” en nuestra captura de pantalla. Tiene el indicador “-” resaltando que es un archivo y luego “rw” seguido. Esto significa que solo el propietario del archivo puede leer y escribir en este archivo “cmnatic.pem”, pero no puede ejecutarlo.

Las diferencias entre usuarios y grupos

Lo mejor de Linux es que los permisos pueden ser tan granulares que, aunque técnicamente un usuario posee un archivo, si se han establecido los permisos, un grupo de usuarios también puede tener los mismos o diferentes conjuntos de permisos para exactamente lo mismo archivo sin afectar al propio propietario del archivo.

Pongamos esto en un contexto del mundo real; el usuario del sistema que ejecuta un servidor web debe tener permisos para leer y escribir archivos para una aplicación web eficaz. Sin embargo, las empresas como las de alojamiento web tendrán que permitir que sus clientes carguen sus propios archivos sin ser el usuario del sistema del servidor web, lo que compromete la seguridad de todos los demás clientes.

Cambiar entre usuarios

Cambiar entre usuarios en una instalación de Linux es un trabajo fácil gracias al comando su. A menos que sea el usuario root (o use permisos de root a través de 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

Al proporcionar -l 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 como variables de entorno y similares. Por ejemplo, cuando se usa supara cambiar a “usuario2”, nuestra nueva sesión nos lleva al directorio de inicio de nuestro usuario anterior. 

Después de usar -l, nuestra nueva sesión nos ha llevado automáticamente al directorio de inicio de “usuario”. 

Directorios comunes

/etc

Este directorio raíz es uno de los directorios raíz más importantes de su sistema. La carpeta etc (abreviatura de etcétera) es una ubicación común para almacenar archivos del sistema que utiliza su sistema operativo. 

Por ejemplo, el archivo sudoers resaltado en la siguiente captura de pantalla contiene una lista de los usuarios y grupos que tienen permiso para ejecutar sudo o un conjunto de comandos como usuario raíz.

También se destacan a continuación los archivos ” passwd ” y ” shadow “. Estos dos archivos son especiales para Linux, ya que muestran cómo su sistema almacena las contraseñas de cada usuario en un formato cifrado llamado sha512.

/var

El directorio “/var”, siendo “var” la abreviatura de datos variables, es una de las principales carpetas de la raíz que se encuentran en una instalación de Linux. Esta carpeta almacena datos a los que los servicios o aplicaciones que se ejecutan en el sistema acceden o escriben con frecuencia. 

Por ejemplo, los archivos de registro de los servicios y aplicaciones en ejecución se escriben aquí ( /var/log ), u otros datos que no están necesariamente asociados con un usuario específico (bases de datos y similares).

root

A diferencia del directorio /home, la carpeta /root  es en realidad el hogar del usuario del sistema “raíz”. No hay nada más en esta carpeta aparte de entender que este es el directorio de inicio para el usuario “raíz”. Pero vale la pena mencionarlo, ya que la presunción lógica es que este usuario tendría sus datos en un directorio como ” /home/root ” por defecto.  

/tmp

Abreviatura de ” temporal “, el directorio /tmp es volátil y se usa para almacenar datos a los que solo se necesita acceder una o dos veces. Similar a la memoria de su computadora, una vez que la computadora se reinicia, el contenido de esta carpeta se borra.

Lo que nos resulta útil en el pentesting es que cualquier usuario puede escribir en esta carpeta de forma predeterminada. Lo que significa que una vez que tenemos acceso a una máquina, sirve como un buen lugar para almacenar cosas como nuestros scripts de enumeración.

Task 3 Introduction to Flags and Switches

What directional arrow key would we use to navigate down the manual page?

down

Para moverte por las páginas del manual podes usar las flechas de arriba y abajo. para salir usa q

What flag would we use to display the output in a “human-readable” way?

-h

h es de human y se usa para una lectura humana. Asi el tamaño de los archivos se verán en kb, mg, gb, etc.

Task 4 Filesystem Interaction Continued

How would you create the file named “newnote”?

touch newnote

El comando touch de Linux se usa principalmente para crear archivos vacíos y cambiar marcas de tiempo de archivos o carpetas

On the deployable machine, what is the file type of “unknown1” in “tryhackme’s” home directory?

ASCII text

How would we move the file “myfile” to the directory “myfolder” 

mv myfile myfolder

mv es un comando de Linux usado para mover o renombrar archivos o directorios del sistema de archivos. El archivo original es borrado y se crea un nuevo archivo con el mismo contenido, el nombre puede ser diferente o puede ser el mismo. En caso de que se use en la misma ruta con el nombre del archivo y otro nombre, solo cambiará el nombre del archivo.

What are the contents of this file?

THM{FILESYSTEM}

Para saber el contenido debemos ejecutar cat myfile

Task 5 Permissions 101

On the deployable machine, who is the owner of “important”?

user2

What would the command be to switch to the user “user2”?

su user2

El programa su es una utilidad de los sistemas operativos del tipo Unix que permite usar el intérprete de comandos de otro usuario sin necesidad de cerrar la sesión. Comúnmente se usa para obtener permisos de root para operaciones administrativas, sin tener que salir y reentrar al sistema. 

Output the contents of “important”, what is the flag?

THM{SU_USER2}

Task 6 Common Directories

What is the directory path that would we expect logs to be stored in?

/var/log

What root directory is similar to how RAM on a computer works?

Correct Answer

 Hint

Name the home directory of the root user 

/root

Con TryHackMe #5, has alcanzado nuevas alturas en tu comprensión de Linux. Estos fundamentos avanzados son piedras angulares cruciales para cualquier profesional de la ciberseguridad. Ahora, estás mejor equipado para enfrentar y superar los desafíos que te esperan.

Felicidades has finalizado – Happy Hacking! Nos vemos en la parte 3

Hacking Ético Ofensivo. 100% Practico en Red Team. +42hs

Aprende Hacking Ético y Pentesting 100% Practicando. Laboratorios donde te explicamos detalladamente cada herramienta: https://achirou.com/ctf-red-team

Lo que aprenderás

  • Hacking Ético Ofensivo
  • Ser un Hacker Ético Profesional Ofensivo (Red Team)
  • Utilizar Herramientas para Hacking
  • Montar un Laboratorio para hacer las Prácticas
  • Introducción a Redes
  • Modelo OSI
  • Dirección IP, Protocolos de Red y Puertos
  • Conexiones Inversas, Directas y Lado del Cliente
  • Las 5 Fases del Pentesting
  • Herramientas Útiles para Realizar Escaneo
  • Herramientas Útiles para Encontrar Vulnerabilidades
  • Herramientas Útiles para Obtener Acceso al Sistema
  • Utilizar Tryhackme
  • Diferencias entre Red Team y Blue Team
  • Cómo Realizar Investigaciones Autodidactas
  • Manejar Linux como todo un Profesional
  • Usa la Herramienta Nmap como todo un Profesional
  • Entender, Escanear y Explotar el Servicio de Red SMB
  • Entender, Escanear y Explotar el Servicio de Red Telnet
  • Entender, Escanear y Explotar el Servicio de Red FTP
  • Entender, Escanear y Explotar el Servicio de Red NFS
  • Entender, Escanear y Explotar el Servicio de Red SMTP
  • Entender, Escanear y Explotar el Servicio de Red MySQL
  • Cómo Funcionan y se Crean los Sitios Web
  • Cómo Funciona toda la Web
  • Uso de la Herramienta Burp Suite como todo un profesional
  • Entender, Enumerar, Explotar y Reconocer las TOP 10 Vulnerabilidades de OWASP
  • Poner en Práctica la Explotación de las Vulnerabilidades OWASP
  • Entender, Enumerar, Reconocer y Explotar la Vulnerabilidad de Carga de Archivos
  • Escenarios Reales donde Prácticar Pentesting Ofensivo

¿Te gustaría enterarte de cuando lanzamos descuentos al Máximo o Nuevos Cursos?