miércoles, septiembre 20, 2017

OWASP ZSC (ZeroDay Cyber Research ShellCoder): Weaponizing ShellCodes

A menudo podemos utilizar la herramienta msfvenom de Metasploit para poder llevar a cabo la generación de shellcodes o código ofuscado para que los exploits consigan ejecutarlos sobre los objetivos. La herramienta msfvenom es una de las fundamentales en el mundo de la seguridad, pero hoy queremos hablar de otras herramientas que pueden complementar a la gran msfvenom de Metasploit. Una shellcode es un pequeño código Assembly el cual puede ser utilizado como un payload o parte de él en una explotación de software.

Figura 1: OWASP ZSC "Weaponizing ShellCodes"

Además, en otros ámbitos también son utilizados: el propio malware o la fase de bypass de antivirus, son claros ejemplos. La posibilidad de personalizar las shellcodes es algo interesante, desde el punto de vista ofensivo, ya que nos permite poder evadir y hacer más difícil la posible detección o contramedida en este caso. La herramienta OWASP ZSC utiliza nuevos encodes y métodos que, al principio, tendrán una menor detección por parte de los antivirus. OWASP ZSC permite generar miles de shellcodes de forma dinámica, a través del uso de encodes aleatorios. La herramienta puede ser descargada desde su Github.

Figura 2: GitHub OWASP ZSC

Con esta herramienta, OWASP, ha trabajado en la creación de nuevos métodos de ofuscación. Esto lo llevaron a cabo durante el último Google Summer of Code. Además, se está buscando penetrar en el área de shellcodes para macOS, lo cual hace que esta herramienta gane en interés. Lógicamente, aún no está, desde mi punto de vista, a la altura de herramientas como msfvenom, pero si el proyecto sigue adelante, la cosa promete.

Figura 3: OWASP ZeroDay Cyber Research Shellcoder

La instalación de la herramienta es sencilla: python installer.py, una vez descargado el código desde su Github. Accedemos a la herramienta ejecutando el comando zsc, previa instalación realizada. Como se puede ver en la imagen, las posibilidades que ofrece la herramienta van directamente relacionadas con la selección de las shellcodes, el listado de éstas y la ofuscación que se puede llevar a cabo.

Figura 4: Comandos de OWASP ZSC

Otra de las opciones que permite hacer las herramientas es listar las shellcodes disponibles. Para ello se puede hacer uso del comando shell_storm_list, una vez cargada la opción shellcode. El listado de shellcodes es el que se tiene disponible en el sitio web de Shell Storm, un sitio web que ofrece una gran cantidad de shellcodes para distintas plataformas y arquitecturas.

Figura 5: Shellcodes en OWASP ZSC

Para ejemplificar el uso de la herramienta, seleccionamos una de las shellcodes disponibles. Para este caso, utilizamos la ruta shellcode/generate/windows_x86/[shellcode]. Si quisiéramos utilizar otra ruta para otra plataforma, sería del tipo: Windows_x86_x64, Linux, etcétera. Para mostrar en el ejemplo, seleccionamos la shellcode add_admin, cuyo código permitirá que cuando se ejecute aparezca un nuevo usuario en el sistema con privilegios de Administrador.

Tras seleccionar la shellcode se puede introducir el nombre del usuario y la contraseña seleccionada. Tal y como se puede ver en la imagen, se preguntará por un encoder después de introducir los datos anteriores.

Figura 6: Generación de shellcode con creación  de un usuario administrador

Se nos preguntará si queremos almacenar los resultados en un fichero assembly o de Lenguaje C. Por otro lado, podremos mostrar la shellcode directamente en pantalla. En la imagen se puede ver un ejemplo de esto. Al final obtenemos una serie de OpCodes, los cuales forman nuestra shellcode. Es el momento de introducirlos en el exploit con el objetivo de que el código que se ejecute, una vez comprometida la máquina en el proyecto de Ethical Hacking, sea el que hemos generado.

Figura 7: Selección de encoder para la shellcode

Para finalizar el ejemplo, configuramos la shellcode en un exploit contra la máquina remota. En sitios como exploit-db existen muchos exploits que podéis modificar y, además, tienen la versión del software vulnerable para que descarguéis y configuréis en vuestro laboratorio con el objetivo de poder probar y aprender.

En la imagen, se puede ver como se ha creado un usuario llamado “pepe” con privilegios de Administrador y que tiene como contraseña “1234”. En este instante, el pentester puede lograr acceso a la máquina a través de este código ejecutado aprovechando la vulnerabilidad.

Figura 8: Creación de usuario con la shellcode

Sin duda, OWASP ZSC es una herramienta que debemos llevar en la mochila del pentesting, ya que es un gran complemento a msfvenom. Además, el listado de shellcodes proporcionado desde Shell Storm ayuda a enriquecer el proceso. Si no lo has probado, te recomendamos que la pruebas.

Autor: Pablo González Pérez (@pablogonzalezpe), escritor de los libros "Metasploit para Pentesters", "Ethical Hacking", "Got Root" y “Pentesting con Powershell”, Microsoft MVP en Seguridad y Security Researcher en ElevenPaths

martes, septiembre 19, 2017

"Chema Alonso al final no ha podido venir"

... y puede que sea así, que al final no pudiera ir. Pero también hay otras veces en las que no he podido ir desde el primer minuto o ni tan siquiera era consciente de que tenía que ir. Es por eso que mis amigos muchas veces me preguntan directamente cuando les dicen que yo voy a estar una determinada conferencia, en un evento o en un acto. Y en muchas ocasiones se ríen cuando contesto algo como "¿en dónde?".

Figura 1: "Chema Alonso al final no ha podido venir"

Hoy quiero aprovechar el espacio que me brindo cada día para comunicaros algo a través de mi post, para hablaros de este hecho que a veces es intencionado, otras por entusiasmo, otras por exceso de "overselling", y otras por simple confusión, pero que me ha generado más de un problema en mi vida.

Algunas veces hay gente que hace una agenda para un determinado evento y pone en ella una serie de ponentes con los que se ha contactado, con los que se espera contactar, o con los que aún no se ha contactado, y se pone dentro de un documento que se comparte de manera privada. Ese documento puede ser un dossier que se utiliza para enviar información a otros ponentes a los que se quiere invitar, para enviar a posibles organismos de financiación e incluso empresas sponsor.

En mi caso, me he visto involucrado en eventos de los que nunca he oído hablar, he aparecido en agendas públicas de charlas a las que dije desde el minuto uno que no podía ir, y en otras a las que aún no he dicho ni que sí ni que no. No sería un problema, si ningún asistente se sintiese enfadado o triste porque al final "Chema Alonso no ha podio venir". 

Yo intento publicar en mi agenda de eventos en este blog todos los eventos en los que sí voy a participar, aunque es verdad que no están todos a los que voy a ir. Así que si me ves en alguno que no aparezca, puedes ponerme un comentario, o un twitt (@chemaalonso), o lo que sea, que yo te lo confirmo tranquilamente.

Dicho esto, si estás organizando un evento en el que cuentas con poder traer a alguien, no lo pongas en documentos como si fuera a venir o lo publicites en Internet  si esa persona aún no ha confirmado. Mucho menos, inventarse el título de la charla, la biografía o la descripción de la misma, que no es la mejor forma de tratar a un ponente al que quieres tener en tu evento.

Para terminar, os confirmo que mañana voy a estar en con los antiguos alumnos de la Singularity University en Madrid, y el jueves en el desayuno ESADE. Luego, ya os pasaré mi agenda de Octubre.

Saludos Malignos!

Entrada destacada

Hacking IA: Jailbreak, Prompt Injection, Hallucinations & Unalignment. Nuestro nuevo libro en 0xWord

Pocas veces me ha hecho tanta ilusión que saliera un nuevo libro en 0xWord como con este libro de " Hacking IA: Jailbreak, Prompt Inje...

Entradas populares