jueves, 21 de septiembre de 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.

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, se 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.