Metasploit
Conceptos
Metasploit es el marco de explotación más ampliamente utilizado. Metasploit es una herramienta poderosa que puede apoyar todas las fases de un compromiso de pruebas de penetración, desde la recopilación de información hasta la post-explotación.
Hay 2 versiones:
Metasploit Pro: La versión comercial que facilita la automatización y gestión de tareas. Esta versión cuenta con una interfaz gráfica de usuario (GUI).
Metasploit Framework: La versión de código abierto que funciona desde la línea de comandos, es la que viene instalada por defecto en Kali Linux.
Componentes principales
Exploit: Un fragmento de código que utiliza una vulnerabilidad presente en el sistema objetivo.
Vulnerabilidad: Una falla en el diseño, en la codificación o en la lógica que afecta al sistema objetivo. La explotación de una vulnerabilidad puede resultar en la revelación de información confidencial o permitir que el atacante ejecute código en el sistema objetivo.
Payload: Un exploit aprovechará una vulnerabilidad. Sin embargo, si queremos que el exploit tenga el resultado que deseamos (acceder al sistema objetivo, leer información confidencial, etc.), necesitamos usar un payload. Los payloads son el código que se ejecutará en el sistema objetivo.
Dentro de estos componentes hay diferentes modulos que nos ayudaran a realizar nuestras pruebas de penetración:
Auxiliary
Cualquier módulo de soporte, como escáneres, crawlers y fuzzers, se puede encontrar aquí.
Encoders
Los codificadores te permitirán codificar el exploit y la carga útil con la esperanza de que una solución antivirus basada en firmas las ignore. Las soluciones de seguridad y antivirus basadas en firmas tienen una base de datos de amenazas conocidas. Detectan amenazas comparando los archivos sospechosos con esta base de datos y emiten una alerta si hay una coincidencia. Por lo tanto, los codificadores pueden tener una tasa de éxito limitada, ya que las soluciones antivirus pueden realizar controles adicionales.
Evasion
Si bien los codificadores codificarán la carga útil, no deben considerarse un intento directo de evadir el software antivirus. Por otro lado, los módulos de "evasión" intentarán hacerlo, con más o menos éxito.
Exploits
Exploits organizados de forma ordenada por sistema objetivo.
NOPs
Los NOPs (No OPeration) no hacen nada, literalmente. En la familia de procesadores Intel x86 se representan con 0x90, después de lo cual el CPU no hace nada durante un ciclo. A menudo se utilizan como un búfer para lograr tamaños de carga útil consistentes.
Payloads
Los payloads son códigos que se ejecutarán en el sistema de destino. Los exploits aprovecharán una vulnerabilidad en el sistema de destino, pero para lograr el resultado deseado, necesitaremos un payload. Ejemplos podrían ser: obtener una shell, cargar un malware o puerta trasera en el sistema de destino, ejecutar un comando o lanzar calc.exe como prueba de concepto para agregar al informe de prueba de penetración. Iniciar la calculadora en el sistema de destino de forma remota mediante el lanzamiento de la aplicación calc.exe es una forma benigna de mostrar que podemos ejecutar comandos en el sistema de destino. Ejecutar comandos en el sistema de destino ya es un paso importante, pero tener una conexión interactiva que le permita escribir comandos que se ejecutarán en el sistema de destino es mejor. Una línea de comando interactiva de este tipo se llama "shell". Metasploit ofrece la capacidad de enviar diferentes payloads que pueden abrir shells en el sistema de destino.
Verás tres directorios diferentes en "payloads": "singles", "stagers" y "stages".
Adapters envuelven los "single payloads" para convertirlos a diferentes formatos. Por ejemplo, un "single payload" normal se puede envolver dentro de un adaptador de Powershell, que creará un solo comando de Powershell que ejecutará el payload.
Singles son "payloads" autocontenidos (agregar usuario, lanzar notepad.exe, etc.) que no necesitan descargar un componente adicional para ejecutarse.
Stagers son responsables de configurar un canal de conexión entre Metasploit y el sistema objetivo. Útil cuando se trabaja con "staged payloads" cargarán primero un "stager" en el sistema objetivo y luego descargarán el resto del "payload" ("stage"). Esto proporciona algunas ventajas, ya que el tamaño inicial del "payload" será relativamente pequeño en comparación con el "payload" completo enviado de una sola vez.
Stages son descargados por el "stager". Esto le permitirá usar "payloads" de mayor tamaño.
Metasploit tiene una forma sutil de ayudarte a identificar "single payloads" (también llamados "inline payloads") y "staged payloads".
windows/meterpreter/reverse_tcp
java/meterpreter/reverse_tcp
php/meterpreter/reverse_tcp
php/meterpreter_reverse_tcp
ruby/shell_reverse_tcp
cmd/unix/interact
cmd/unix/reverse
cmd/unix/reverse_perl
cmd/unix/reverse_netcat_gaping
windows/meterpreter/reverse_nonx_tcp
windows/meterpreter/reverse_ord_tcp
windows/shell/reverse_tcp
generic/shell_reverse_tcp
Son ambos "reverse shells" de Windows. El primero es un "single payload", como indica el "_" entre "shell" y "reverse". Mientras que el último es un "staged payload", como indica el "/" entre "shell" y "reverse".
Post
Los módulos "Post" serán útiles en la etapa final del proceso de pruebas de penetración mencionado anteriormente, la post-explotación.
Msfvenom
Msfvenom es una herramienta de la suite de herramientas de Metasploit que se utiliza para generar payloads personalizados. La herramienta msfvenom permite a los usuarios crear diferentes tipos de payloads, incluyendo payloads para exploits de vulnerabilidades, troyanos de acceso remoto (RATs), payloads para ejecución de comandos, entre otros.
Diferencias entre payload Staged y Non-Staged
Un payload staged se refiere a un ataque en el que el atacante divide el payload en varias partes o etapas, lo que le permite evadir las defensas de seguridad en el sistema de destino. La primera etapa del payload staged suele ser un pequeño archivo que se envía al sistema objetivo y se ejecuta para establecer una conexión con el atacante o con un servidor controlado por el atacante. Una vez que se establece la conexión, el atacante puede enviar y ejecutar el resto de las etapas del payload para llevar a cabo el ataque.
Por otro lado, un payload non-staged es aquel que se entrega en una sola pieza. No hay necesidad de establecer una conexión separada o realizar una descarga adicional de archivos para ejecutar el ataque. Este tipo de payload es más simple y menos sofisticado que un staged payload, pero también es más fácil de detectar por los sistemas de seguridad.
Payload Staged
Con Linux
Payload Non-Staged
Estos payloads están enfocados para cuando se hace el proceso entero con metasploit, pero si solamente queremos que msfvenom nos haga el payload y que el listener se haga por ejemplo con ncat se tiene que hacer con el siguiente comanda
RV Shells
Windows
PHP
Recuerda que al crear esta rev_shell hay que entrar dentro y quitar las comillas que hay cuando lo crea metasploit.
ASP
Python
Pivoting
Una vez hayamos hecho autoroute y tengamos acceso a la red interna que no teniamos antes, se pueden utilizar todos módulos de Metasploit (escanear, exploit etc).
Port Forwading
Meterpreter
Comandos principales
background
Envía la sesión actual al segundo plano
exit
Termina la sesión de Meterpreter
guid
Obtiene el GUID (Identificador único global) de la sesión
help
Muestra el menú de ayuda
info
Muestra información sobre un módulo de Post
irb
Abre un shell interactivo de Ruby en la sesión actual
load
Carga una o varias extensiones de Meterpreter
migrate
Permite migrar Meterpreter a otro proceso
run
Ejecuta un script o módulo de Meterpreter o Post
sessions
Cambia rápidamente a otra sesión
Filtrar exploits y busqueda
search [keyword]
Busca exploits y otros módulos que contengan una palabra clave específica.
search type:exploit [keyword]
Busca específicamente exploits, con la opción de agregar una palabra clave para filtrar los resultados.
search platform:[platform]
Busca exploits y otros módulos para una plataforma específica.
search cve:[cve]
Busca exploits específicos para una vulnerabilidad de CVE específica.
Comandos del sistema de archivos
cd
Cambia de directorio
ls
Lista los archivos en el directorio actual (dir
también funciona)
pwd
Muestra el directorio de trabajo actual
edit
Permite editar un archivo
cat
Muestra el contenido de un archivo en la pantalla
rm
Elimina el archivo especificado
search
Busca archivos
upload
Sube un archivo o directorio
download
Descarga un archivo o directorio
Comandos de redes
arp
Muestra la caché ARP (Protocolo de resolución de direcciones) del host
ifconfig
Muestra las interfaces de red disponibles en el sistema objetivo
netstat
Muestra las conexiones de red
portfwd
Reenvía un puerto local a un servicio remoto
route
Permite ver y modificar la tabla de enrutamiento
Comandos del sistema
clearev
Borra los registros de eventos
execute
Ejecuta un comando
getpid
Muestra el identificador de proceso actual
getuid
Muestra el usuario que ejecuta Meterpreter
kill
Termina un proceso
pkill
Termina procesos por nombre
ps
Lista los procesos en ejecución
reboot
Reinicia el equipo remoto
shell
Abre una shell de comandos del sistema
shutdown
Apaga el equipo remoto
sysinfo
Obtiene información sobre el sistema remoto, como el sistema operativo
Otros comandos (estos se enumerarán en diferentes categorías de menú en el menú de ayuda)
idletime
Devuelve el número de segundos que el usuario remoto ha estado inactivo
keyscan_dump
Muestra el búfer de pulsaciones de teclas
keyscan_start
Inicia la captura de pulsaciones de teclas
keyscan_stop
Detiene la captura de pulsaciones de teclas
screenshare
Permite ver el escritorio del usuario remoto en tiempo real
Post-Explotación
getuid
Muestra el usuario actual que está ejecutando Meterpreter.
getpid
Muestra el ID del proceso actual que está ejecutando Meterpreter.
getprivs
Muestra los privilegios actuales del usuario que está ejecutando Meterpreter.
ps
Muestra una lista de procesos en el sistema.
kill
Termina un proceso especificado.
execute
Ejecuta un comando en el sistema remoto.
download
Descarga un archivo del sistema remoto a la máquina del atacante.
upload
Sube un archivo desde la máquina del atacante al sistema remoto.
shell
Abre una consola de comandos en el sistema remoto.
sysinfo
Muestra información del sistema remoto, como el nombre de la máquina, el sistema operativo, la versión del kernel, etc.
hashdump
Dump los hashes de contraseñas almacenados en el sistema.
getsystem
Intenta elevar los privilegios de la sesión actual a SYSTEM.
migrate
Mueve la sesión actual de Meterpreter a otro proceso en ejecución.
portfwd
Reenvía un puerto local en la máquina del atacante al puerto de un servicio en el sistema remoto.
timestomp
Cambia la hora de creación, modificación y/o acceso de un archivo.
getfiletype
Obtiene información del tipo de archivo de un archivo especificado.
enum_logged_on_users
Enumera los usuarios que han iniciado sesión en el sistema remoto.
hashdump
Dump los hashes de contraseñas almacenados en el sistema.
keylog_recorder
Registra las pulsaciones de teclas en el sistema remoto.
screenshot
Captura una imagen de la pantalla del sistema remoto.
webcam_list
Enumera las cámaras web conectadas al sistema remoto.
webcam_snap
Captura una imagen desde una cámara web conectada al sistema remoto.
webcam_stream
Transmite vídeo en directo desde una cámara web conectada al sistema remoto.
search -f file.txt
Para buscar archivos dentro del sistema comprometido
Migrar entre procesos
migrate
Mueve Meterpreter a otro proceso en el mismo sistema operativo.
migrate -L
Lista los procesos que Meterpreter puede migrar.
migrate <PID>
Mueve Meterpreter al proceso con el ID de proceso (PID) especificado.
migrate -N <nombre>
Mueve Meterpreter al proceso con el nombre especificado.
migrate -R
Mueve Meterpreter a un proceso aleatorio.
migrate -H
Muestra la ayuda para el comando migrate.
Tratamiento TTY meterpreter
Last updated