Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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
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:
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.
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
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
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.
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.
• 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.
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.
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
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.
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
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
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
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
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).
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).
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.
3.- Dentro de Metasploit, use los siguientes comandos para seleccionar el módulo de explotación
SMB PsExec:
msf6 > use exploit/windows/smb/psexec
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:
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 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:
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.
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.
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
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:
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
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.