En esta ocasión vamos a ver una sala que nos muestra algunos comandos a la hora de empezar con el pentesting. Más adelante veremos cada una de estas herramientas con más detenimiento, pero por ahora esto es un acercamiento a ellas para ir familiarizándonos con su uso.
Esta sala estará dividida, ya que consta de 7 secciones distintas, y bastante extensas. Además, en esta ocasión os he publicado las respuestas de cada una de las preguntas, aunque la mayoría son sencillas de encontrar con tan sólo usar la página del manual de cada herramienta o, en su defecto, la ayuda (ya sabéis, para usar el manual solo tenéis que escribir man comando y para la mayoría de herramientas la ayuda aparece con comando –help).
Para cualquier duda, no tengáis problema en ponerme un comentario, y os atenderé tan pronto me sea posible. Podéis encontrar más rooms de TryHackMe traducidas en la página correspondiente.

Índice
CURSO INTENSIVO DE PENTESTING
La idea tras esta sala es proveer de una introducción a varias herramientas y conceptos que os encontraréis de forma habitual en cualquier pentesting.
Esta sala asume que tenéis un conocimiento básico de Linux y redes. Además, no está destinada a ser un “final absoluto” en el tema de los pentesting.
Las tareas en esta sala pueden completarse en cualquier orden; de todos modos, si eres nuevo en el mundo del pentesting, es recomendable completar las dos primeras antes de hacer nada más.
SECCIÓN 1 – UTILIDADES DE RED
NMAP
Nmap es una de las herramientas más importantes que utilizaremos en cualquier pentesting. Ésta nos permite ver qué puertos están abiertos, además de información sobre qué servicios están corriendo en cada uno de esos puertos. Por lo tanto, esta tarea se enfocará a enseñaros varios modificadores de nmap. Las primeras preguntas pueden contestarse con tan solo utilizar la página de manual de nmap. Las últimas requerirán que despliegues la máquina virtual que te facilitamos.
- ¿Qué significa nmap? Respuesta: Network Mapper
- ¿Cómo especificas qué puerto(s) hay que escanear? Respuesta: -p
- ¿Cómo realizar un “escaneo ping” (comprobar si el host está activo)? Respuesta: -sn
- ¿Cuál es el modificador para un escaneo UDP? Respuesta: -sU
- ¿Cómo corres los scripts por defecto? Respuesta: -sC
- ¿Cómo activas el “modo agresivo” (habilita la detección de SO, detección de versión, escaneo de scripts y traceroute)? Respuesta: -A
- ¿Qué modificador habilita la detección de SO? Respuesta: -O
- ¿Cómo consigues las versiones de los servicios que están corriendo en la máquina objetivo? Respuesta: -sV
Es hora de desplegar la máquina adjunta:
- ¿Cuántos puertos hay abiertos en la máquina? Respuesta: 1
- ¿Qué servicio está corriendo en la máquina? Respuesta: Apache
- ¿Cuál es la versión del servicio? Respuesta: 2.4.18
- ¿Cuál es la salida del script http-title (incluido en los scripts por defecto): Respuesta: Apache2 Ubuntu Default Page: It Works
NETCAT
Netcat, también conocido como nc, es una herramienta extremadamente versátil. Permite a los usuarios conectar a puestos específicos y enviar y recibir datos. También permite a las máquinas recibir datos y conexiones en puertos específicos, lo cual hace de nc una herramienta muy popular para conseguir una Reverse Shell. El objetivo de todo pentesting o prueba de penetración es conseguir obtener acceso root a la máquina objetivo, y Netcat nos ayudará en ello.
Después de conectar a un puerto con nc podréis enviar datos, esto también tiene la consecuencia para el usuario de poder mandar datos mediante una tubería o pipe con nc. Por ejemplo, se puede hacer echo hello | nc <ip> 1234 para enviar la cadena hello al servicio corriendo en el puerto 1234.
Nota: Hay múltiples versiones de nc, por lo que si no puedes encontrar una respuesta en tu página de manual específica, prueba con las páginas de manual de otras versiones.
- ¿Cómo se pone a la escucha para conexiones? Respuesta: -l
- ¿Cómo se activa el modo verbose (te permite ver quién se ha conectado a ti)? Respuesta: -v
- ¿Cómo especificamos el puerto en el que escuchar? Respuesta: -p
- ¿Cómo especificamos qué programa ejecutar después de conectar al host (uno de los más infames)? Respuesta: -e
- ¿Cómo conectamos a puertos udp? Respuesta: -u
SECCIÓN 2 – ENUMERACIÓN WEB
GOBUSTER
Uno de los principales problemas en el pentesting de páginas web es no saber dónde está cada cosa. Un reconocimiento básico puede decirnos dónde se encuentran algunos ficheros y directorios; de todos modos, algunas de las cosas más importantes estarán ocultas a los ojos de los usuarios. Ahí es donde entra gobuster, la idea tras este programa es que intenta encontrar directorios válidos de un diccionario de posibles directorios. Gobuster puede utilizarse también para subdominios válidos utilizando el mismo método.
Las primeras preguntas de esta tarea se pueden contestar utilizando la página de manual de gobuster, mientras que las últimas requerirán el despliegue de la máquina virtual.
Si en el SO que estás utilizando no se encuentra la página de manual de gobuster, utiliza gobuster –help.
- ¿Cómo especificamos el modo de fuerza bruta para ficheros y directorios? Respuesta: dir
- ¿Cómo especificamos el modo de fuerza bruta para dns? Respuesta: dns
- ¿Qué modificador indica las extensiones a buscar? Por ejemplo, si la extensión configurada es php, y la palabra es “admin”, entonces gobuster buscará admin.php en el servidor web. Respuesta: -x
- ¿Qué modificador indica el diccionario a utilizar? Respuesta: -w
- ¿Cómo indicamos el Username para una autenticación básica (si el directorio requiere un usuario/contraseña)? Respuesta: -U
- ¿Cómo especificamos la contraseña para una autenticación básica? Respuesta: -P
- ¿Cómo indicamos los códigos de estado que gobuster interpretará como válidos? Por ejemplo, 200, 400, 404, 204 Respuesta: -s
- ¿Cómo saltamos la certificación de ssl? Respuesta: -k
- ¿Cómo especificamos un User-Agent? Respuesta: -a
- ¿Cómo especificamos una cabecera HTTP? Respuesta: -H
- ¿Qué modificador establece la URL en fuerza bruta? Respuesta: -u
Despliega la máquina adjunta:
- ¿Cuál es el nombre del directorio oculto? Respuesta: secret
- ¿Cuál es el nombre del archivo oculto con extensión xxa? Respuesta: password
NIKTO
Nikto es una herramienta de escaneo web muy popular en pentesting web que permite a los usuarios encontrar vulnerabilidades comunes en la web. Normalmente se utiliza para verificar CVE’s comunes como shellshock, además de para conseguir información general acerca de un servidor web que le indicamos.
- ¿Cómo especificamos el host a utilizar? Respuesta: -h
- ¿Qué modificador desactiva ssl? Respuesta: -nossl
- ¿Cómo forzamos ssl? Respuesta: -ssl
- ¿Cómo especificamos la autenticación (usuario + contraseña)? Respuesta: -id
- ¿Cómo seleccionamos qué plugin utilizar? Respuesta: -plugins
- ¿Qué plugin comprueba si podemos enumerar a los usuarios de apache? Respuesta: apacheusers
- ¿Cómo actualizamos la lista de plugins? Respuesta: -update
- ¿Cómo listamos los plugins que podemos utilizar? Respuesta: –list-plugins
SECCIÓN 3 – METASPLOIT
Metasploit es uno de los frameworks de pentesting más populares que existe. Contiene una extensa base de datos de casi todos los CVE, los cuáles puedes utilizar fácilmente contra una máquina. El objetivo de esta sección es adentraros un poco en algunas de las características de metasploit, y al final encontraréis una máquina que necesitaréis explotar.

PREPARANDO
Una vez instalado metasploit por medio de su instalador o de los repositorios de vuestra distribución, tendréis varios comandos disponibles. Esta sección se enfocará principalmente en el comando msfconsole.
La ejecución de este comando nos presentará un prompt de “msf5” el cual nos permitirá entrar los comandos. Todas las tareas se pueden contestar con el comando “help”
- ¿Qué comando nos permite buscar módulos? Respuesta: search
- ¿Cómo seleccionamos un módulo? Respuesta: use
- ¿Cómo mostramos información acerca de un módulo específico? Respuesta: info
- ¿Cómo listamos las opciones que podemos configurar? Respuesta: options
- ¿Qué comando nos permite ver las opciones avanzadas de un módulo en concreto? Respuesta: advanced
- ¿Cómo mostramos las opciones de una categoría específica? Respuesta: show
SELECCIONANDO UN MÓDULO
Una vez encontrado el módulo necesario para la máquina que queráis explotar, necesitaréis seleccionarlo y configurar las opciones pertinentes. Esta tarea os llevará a través de esta selección y configuración de opciones para uno de los módulos más conocidos de metasploit: “eternalblue”. Todos los comandos básicos que pueden ejecutarse antes de seleccionar un módulo pueden utilizarse también una vez que el módulo ha sido seleccionado.
- ¿Cómo seleccionamos el módulo eternalblue? Respuesta: use exploit/windows/smb/ms17_010_eternalblue
- ¿Qué opción nos permite seleccionar el o los hosts objetivos? Respuesta: RHOSTS
- ¿Cómo indicamos el puerto objetivo? Respuesta: RPORT
- ¿Qué comando nos permite configurar las opciones? Respuesta: set
- ¿Cómo configuramos el SMBPass a “username”? Respuesta: set SMBPass username
- ¿Cómo configuramos el SMBUser a “password”? Respuesta: set SMBUser password
- ¿Qué opción configura la arquitectura a ser explotada? Respuesta: arch
- ¿Qué opción configura el payload que se enviará a la máquina objetivo? Respuesta: payload
- Una vez finalizada la configuración de las opciones requeridas, ¿cómo corremos el exploit? Respuesta: exploit
- ¿Qué modificador configuramos si queremos que el exploit se ejecute en segundo plano? Respuesta: -j
- ¿Cómo listamos las distintas sesiones actuales? Respuesta: sessions
- ¿Qué modificador nos permite entrar en el modo interactivo en una sesión (nos lleva a un meterpreter o a una regular shell)? Respuesta: -i
METERPRETER
Una vez ejecutado el exploit, lo ideal es que os dirija a una de estas dos cosas: una shell de comandos o una shell de meterpreter. Meterpreter es el “centro de control” de metasploit donde podéis hacer varias cosas para interactuar con la máquina. Podéis encontrar una lista de los comandos más comunes de meterpreter aquí.
Nota: Las regular shells pueden actualizarse a shells de meterpreter usando el módulo post/multi/manage/shell_to_meterpreter.
- ¿Qué comando nos permite descargar archivos desde la máquina? Respuesta: download
- ¿Qué comando nos permite subir archivos a la máquina? Respuesta: upload
- ¿Cómo listamos los procesos en ejecución? Respuesta: ps
- ¿Cómo cambiamos los procesos en el host de la víctima (idealmente ello nos permitirá cambiar de usuario y conseguir los permisos asociados a ese usuario)? Respuesta: migrate
- ¿Qué comando listará los ficheros en el directorio actual en la máquina remota? Respuesta: ls
- ¿Cómo ejecutamos un comando en la máquina objetivo? Respuesta: execute
- ¿Qué comando inicia una shell interactiva en la máquina objetivo? Respuesta: shell
- ¿Cómo encontramos archivos en la máquina objetivo (función similar a la del comando de Linux “find”)? Respuesta: search
- ¿Cómo obtenemos la salida de un archivo en la máquina remota? Respuesta: cat
- ¿Cómo ponemos una shell de meterpreter en “modo segundo plano” (esto permite ejecutar otros módulos de msf mientras mantiene la shell de meterpreter como una sesión)? Respuesta: background
GUÍA FINAL
Es momento de utilizar todo lo aprendido en las tareas anteriores de metasploit y probarlas en una máquina de ejemplo. Esta máquina es vulnerable al módulo de metasploit exploit/multi/http/nostromo_code_execen el puerto 80, y esta tarea os llevará a lo largo del proceso de explotación y obtención de una shell en la máquina.
- Selecciona el módulo que necesita ser explotado. Respuesta: use exploit/multi/http/nostromo_code_exec
- ¿Qué variable necesitamos configurar para seleccionar el host remoto? Respuesta: rhosts
- ¿Cómo configuramos el puerto 80? Respuesta: set rport 80
- ¿Cómo configuramos la dirección de escucha (nuesta máquina)? Respuesta: lhost
Es hora de desplegar la máquina:
- ¿Cuál es el nombre del directorio secreto dentro del directorio /var/nostromo/htdocs? Respuesta: s3cretd1r
- ¿Cuál es el contenido del archivo que hay dentro del directorio? Respuesta: Woohoo!
SECCIÓN 4 – HASH CRACKING

INTRODUCCIÓN
En ocasiones, durante un proceso de pentesting, necesitarás obtener el acceso a una base de datos. Cuando investigues la base de datos, a menudo encontrarás una tabla de usuarios, la cual contiene los nombres de usuario y las contraseñas hasheadas. A veces es necesario saber cómo crackear estas contraseñas para conseguir la autenticación en un sitio web (¡o si tienes suerte es posible que la contraseña sirva para ssh!)
SALANDO Y FORMATEANDO
No importa qué herramienta utilices, virtualmente todas ellas tienen el mismo formato. Un archivo con el hash o hashes en el que cada hash aparece separado por una nueva línea.
Ejemplo:
<hash 1>
<hash 2>
<hash 3>
Las “sales” están normalmente añadidas al final del hash con dos puntos y la sal en cuestión. Los ficheros con este tipo de hash siguen la misma convención con cada uno separado por una nueva línea.
Ejemplo:
<hash 1>:<sal>
<hash 2>:<sal>
<hash 3>:<sal>
Nota: Los distintos algoritmos de hashing tratan las sales de forma distinta. Algunos las incluyen delante, y otros detrás. Asegúrate de lo que estás intentando crackear y ten en cuenta esta distinción.
HASHCAT
Hashcat es otra de las herramientas más populares en el cracking de hashes y muy usada en todo pentesting. Es muy reconocida por su versatilidad y su velocidad. Hashcat no tiene autodetección del tipo de hashes, aunque sí tiene distintos modos. Por ejemplo, si estás intentando crackear un hash md5 el “modo” deberá ser 0, mientras que si estás intentando crackear un hash en sha1, el “modo” deberá ser 100.
Aquí puedes encontrar una lista de todos los modos disponibles.
- ¿Qué modificador configura el modo? Respuesta: -m
- ¿Qué modificador configura el “modo de ataque”? Respuesta: -a
- ¿Cuál es el número de modo de ataque para fuerza bruta? Respuesta: 3
- ¿Cuál es el número del modo para SHA3-512? Respuesta: 17600
Crackea este hash: 56ab24c15b72a457069c5ea42fcfc640
- Tipo: MD5. Respuesta: happy
Crackea este hash: 4bc9ae2b9236c2ad02d81491dcb51d5f
- Tipo: MD4. Respuesta: nootnoot
JOHN THE RIPPER
John The Ripper(jtr) es una de las mejores herramientas para crackear hashes disponibles. Soporta diversos formatos de hash y es extremadamente sencilla de utilizar, además de que posee muchas opciones de personalización.
Nota: Existen múltiples variaciones de jtr ahí fuera. Para esta tarea utilizaremos la versión preinstalada en Kali.
Nota 2: Todos los hashes pueden crackearse con el diccionario rockyou.txt
- ¿Qué modificador permite especificar la lista de palabras a utilizar? Respuesta: –wordlist
- ¿Qué modificador permite especificar el formato de hash (MD5, SHA1, etc.) a utilizar? Respuesta: –format
- ¿Cómo especificamos la norma a utilizar? Respuesta: –rules
Crackea este hash: 5d41402abc4b2a76b9719d911017c592
- Tipo: MD5. Respuesta: hello
Crackea este hash: 5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8
- Tipo: SHA1. Respuesta: password
SECCIÓN 5 – SQL INJECTION
INTRODUCCIÓN
SQL Injection es el arte de modificar una consulta SQL de modo que podamos obtener acceso a la base de datos objetivo. Esta técnica se utiliza a menudo en pruebas de pentesting de páginas web para obtener datos de usuarios, tales como contraseñas, e-mails, etc. SQL Injection es una de las vulnerabilidades web más comunes, y como tal, vale la pena comprobarlo.
SQLMAP
Sqlmap es, probablemente, la herramienta más popular de SQL Injection que existe. Comprueba varios tipos de inyecciones, y tiene todo un repertorio de opciones de personalización.
- ¿Cómo especificamos la URL a comprobar? Respuesta: -u
- ¿Y acerca de qué dork de Google utilizar? Respuesta: -g
- ¿Cómo se selecciona el parámetro a usar? (Ejemplo: en la url http://ex.com?test=1el parámetro sería test.) Respuesta: -p
- ¿Qué modificador establece qué base de datos hay en el backend del host objetivo? (Ejemplo: Si el modificador está configurado a mysql, entonces sqlmap solo testeará inyecciones mysql). Respuesta: –dbms
- ¿Cómo seleccionamos el nivel de profundidad que sqlmap debe usar? (Cuanto más alto, más preciso y más pruebas en general.) Respuesta: –level
- ¿Cómo dumpeamos las entradas de la tabla de la base de datos? Respuesta: –dump
- ¿Qué modificador indica qué base de datos enumeramos? (Sensible a mayúsculas). Respuesta: -D
- ¿Qué modificador indica qué tabla enumeramos? (Sensible a mayúsculas). Respuesta: -T
- ¿Qué modificador indica qué columna enumeramos? (Sensible a mayúsculas). Respuesta: -C
- ¿Cómo le pedimos a sqlmap que intente conseguir una shell interactiva del sistema operativo? Respuesta: –os-shell
- ¿Qué modificador dumpea todos los datos de cada tabla? Respuesta: –dump-all
UNA NOTA SOBRE SQL INJECTION MANUAL
Ocasionalmente no podrás utilizar sqlmap. Esto se puede deber a varias razones, como que el objetivo tiene configurado un cortafuegos o un límite de consultas. En este caso es importante saber cómo realizar una inyección manual de SQL, aunque sea tan solo para confirmar que es posible hacer SQL Injection a esa web. Puedes encontrar aquí una lista de formas de verificar la inyección de SQL.
APLICACIÓN WEB VULNERABLE
Para demostrar cómo usar sqlmap para comprobar vulnerabilidades y dumpear datos de tablas, te lo mostraré a través de una aplicación web de ejemplo. ¡Despliega la máquina y empecemos!
Nota: Esta tarea utilizará sqlmap. De todas formas, puedes intentar explotarla manualmente si quieres. Genera la consulta completa en cada intento, por lo que puedes saber qué intenta hacer mysql.
- ¿A cuántos tipos de sqli es vulnerable este sitio? Respuesta: 3
- ¿Cuál es el nombre de la base de datos? Respuesta: tests
- ¿Cuántas tablas hay en la base de datos? Respuesta: 2
- ¿Cuál es el valor de la bandera? Respuesta: found_me
SECCIÓN 6 – SAMBA
INTRODUCCIÓN
La mayoría de técnicas de pentesting y herramientas que has visto pueden utilizarse tanto en Windows como en Linux. De todos modos, una de las cosas que encontrarás más a menudo cuando hagas pentesting a máquinas Windows es Samba, por lo que es importante dedicarle una sección.
Nota: Aunque Samba también es multiplataforma, en esta sección nos centraremos principalmente en la enumeración en Windows; algunas de las técnicas que verás aquí se pueden aplicar también en Linux.
SMBMAP
Continuando con la tendencia de que las herramientas que tienen la palabra “map” en su nombre son extremadamente populares, smbmap es una de las mejores formas de enumerar Samba. Smbmap permite a los pentesters ejecutar comandos (con los permisos adecuados), descargar y subir archivos, y es increíblemente útil en la enumeración de smb.
- ¿Cómo indicamos el nombre con el que autenticarnos? Respuesta: -u
- ¿Y la contraseña? Respuesta: -p
- ¿Cómo configuramos el host? Respuesta: -H
- ¿Qué modificador ejecuta un comando en el servidor (asumiendo que tienes permisos para ello)? Respuesta: -x
- ¿Cómo especificamos el recurso compartido a enumerar? Respuesta: -s
- ¿Cómo especificamos el dominio a enumerar? Respuesta: -d
- ¿Qué modificador descarga un fichero? Respuesta: –download
- ¿Y para subir un archivo? Respuesta: –upload
- Dado el nombre de usuario “admin”, la contraseña “password”, y la IP “10.10.10.10”, ¿cómo ejecutarías ipconfig en esa máquina? Respuesta: smbmap -u «admin» -p «password» -H 10.10.10.10 -x «ipconfig»
SMBCLIENT
Smbclient permite hacer la mayoría de cosas que podemos hacer con smbmap, además de ofrecer un prompt interactivo.
- ¿Cómo especificamos el dominio (workgroup) a utilizar cuando conectamos a un host? Respuesta: -w
- ¿Cómo especificamos la dirección IP del host? Respuesta: -I
- ¿Cómo ejecutaríamos el comando “ipconfig” en la máquina objetivo? Respuesta: -c “ipconfig”
- ¿Cómo especificamos el usuario con el que autenticarnos? Respuesta: -U
- ¿Cómo especificamos la contraseña con la que autenticarnos? Respuesta: -P
- ¿Qué modificador le indica a smbclient que no utilice contraseña? Respuesta: -N
- Una vez en el prompt interactivo, ¿cómo descargamos el fichero test, asumiendo que está en el directorio actual? Respuesta: get test
- En el prompt interactivo, ¿cómo subimos nuestro fichero /etc/hosts? Respuesta: put /etc/hosts
UNA NOTA ACERCA DE IMPACKET
Impacket es una colección de scripts extremadamente útiles en Windows. Es importante mencionarlo aquí, ya que contiene scripts para usar en Samba que enumeran y obtienen acceso a la shell de las máquinas Windows. Todos los scripts los puedes encontrar aquí.
Nota: impacket tiene scripts que utilizan otros protocolos y servicios además de Samba.
MISCELÁNEA – NOTA ACERCA DE LA ESCALADA DE PRIVILEGIOS
La escalada de privilegios es un tema extenso que sería imposible de tratar debidamente en esta clase de salas. De todos modos, es un tema que es necesario cubrir, ya que es el objetivo de todo pentesting, por lo que, más que realizar una tarea basada en preguntas, os proporcionaré algunas fuentes.
General:
https://github.com/swisskyrepo/PayloadsAllTheThings(un manojo de herramientas y payloads para cada fase del pentesting).
Linux:
https://blog.g0tmi1k.com/2011/08/basic-linux-privilege-escalation/(un poco antigua, pero sigue siendo útil mirarla).
https://github.com/rebootuser/LinEnum(uno de los scripts más populares para escalada de privilegios).
https://github.com/diego-treitos/linux-smart-enumeration/blob/master/lse.sh(otro script popular).
https://github.com/mzet-/linux-exploit-suggester(un script dedicado a la búsqueda de exploits del kernel).
https://gtfobins.github.io(no puedo constatar la utilidad de este script para escalada de privilegios, si un binario común tiene permisos especiales, puede utilizar este sitio para ver cómo obtener permisos de root con él).
Windows:
https://www.fuzzysecurity.com/tutorials/16.html (dicta algunos comandos y métodos muy útiles para enumerar el host y obtener información).
https://github.com/PowerShellEmpire/PowerTools/tree/master/PowerUp(un script un poco viejo, pero increíblemente útil).
https://github.com/411Hall/JAWS (un script de enumeración general).

SECCIÓN 7 – BUENA SUERTE
A lo largo de este curso has aprendido varias tácticas y acerca de varias herramientas de pentesting. Aquí es donde todo se somete a examen, he configurado un CTF nivel principiante que contiene dos banderas. ¡Buena suerte y a pasarlo bien!
- ¿Qué hay en user.txt? Respuesta: supernootnoot
- ¿Qué hay en root.txt? Respuesta: congratulations!!!!
Y hasta aquí ha llegado nuestro tutorial sobre cómo realizar un pentesting y no morir en el intento. Estas son algunas de las herramientas y técnicas más utilizadas en cualquier prueba de penetración, pero hay muchas otras herramientas que suelen usarse. No os limitéis a las herramientas aquí explicadas y practicar en vuestros pentesting con todo lo que podáis. Muchas veces hay varias formas distintas de llegar a la misma información, sólo hay que saber cómo hacerlo y practicar, practicar y practicar. ¡¡¡Happy Hacking!!!