11 may 2016

PayDay, Veil & The Shellter: Generando binarios con payloads de manera automática

El año pasado coincidí con Pedro Sánchez en Gsick Minds, congreso que se celebra en A Coruña hacia finales de año. Siempre es un placer para mí coincidir con este Señor de la profesión que tanto nos apasiona. Siempre aprendo con Pedro, él tiene esa facilidad. Su charla me llamó la atención, hizo que algo que para muchos pueda ser complejo, resultara sencillo. Ahí está el gran mérito de Pedro en esa charla. 

Me gustó como utilizó herramientas que facilitaban mucho la vida a la hora de evadir, sobretodo, antivirus. En aquel momento me dije tienes que mirar más dichas herramientas y hacer tus propios “juguetes”, pero por desgracia en aquel momento el trabajo apretaba y el fin de año estaba cerca. Ha pasado el tiempo y he podido ir probando diferentes herramientas, quizá las más famosas Veil-Framework, el cual tiene un módulo para Powershell denominado PowerView, y Shellter, la cual es una de las más potentes a la hora de rebajar el ratio de detección. Como curiosidad decir que Shellter tiene el código fuente cerrado, aunque como dice el autor en su sitio web puede ser comprado.

En el artículo de hoy veremos una serie de comparativa básica respecto a los resultados que podemos sacar con estas herramientas automáticas de generación de binarios con payloads. El objetivo es sencillo: cuanto menor ratio de detección, más sencillo será poder evadir mecanismos de protección. Las herramientas que trataremos serán:
  • Veil-Evasion de Veil-Framework.
  • Shellter.
  • PayDay.

Quizá la menos conocida sea PayDay, la cual es una script en Python que nos facilita la interacción con Metasploit y con Veil-Framework para la generación de los binarios. Como se puede ver siempre hay una nueva capa de abstracción que simplifica, aún más, el proceso. Generaremos diferentes binarios y los subiremos a Virus Total, con el objetivo de poder comparar en qué casos tendríamos más éxitos. Está claro que si profundizásemos con Veil-Evasion y Shellter podríamos obtener unos binarios aún mejores, en lo que a evasión se refiere, aunque puede que el resultado fuera el mismo en algunos casos. Es decir, puede que generemos diferentes binarios y ambos nos dieran el mismo ratio de detección, aunque uno es, a posteriori, más fácilmente detectable. 

Para estos pequeños ejemplos utilizaremos el handler de Metasploit para recibir las conexiones de los binarios maliciosos creados. Os dejo simplemente su configuración en Metasploit, ya que las ejecuciones como tal no las veremos. 


En el sitio web de Shellter podemos encontrar un listado de tricks y tips que os recomiendo que echéis un ojo. Es un listado que el autor de la herramienta ha ido recopilando de su experiencia y de los emails que ha ido recibiendo de los usuarios de la herramienta. 


Veil-Evasion

La primera de las versiones que veremos será Veil-Evasion. Veil-Evasio es una herramienta diseñada para generar payloads de Metasploit con los que bypassear soluciones antivirus comunes. Veil proporciona diferentes payloads con diferente ranking, el cual indica la eficiencia o el éxito que se presupone con cada payload. Por supuesto, se pueden añadir característica a Veil, es un framework que está creciendo bastante. 


Desde Github se puede descargar, aunque sus dependencias son muchas. El proceso de instalación puede ser largo, pero claramente merece la pena. Tal y como se puede ver en la imagen superior Veil-Evasion proporciona una serie de comandos. En la versión utilizada para el ejemplo se han cargado 50 payloads. Con el comando “list” podemos listarlos y obtener algo más de información. El listado se proporciona por categorías, podemos ver payloads generados para C, C#, Go, Powershell, Python, Ruby, etcétera. Se elige un meterpreter en python inverso TCP.  


Una vez queremos generar el EXE utilizamos el comando generate, entonces nos preguntarán por la ruta dónde almacenarlo, con qué crear el ejecutable, en el caso de Python: Pyinstaller, Pwnstaller, Py2Exe. Pwnstaller es Pyinstaller ofuscado. 


El mensaje de no enviar ejemplos a los escáneres online nos lo dice todo. Yo haré como Pedro en su charla y solo para esta pequeña prueba lo haré ;) Los resultados son muy interesantes, no hemos utilizado funcionalidades o técnicas complejas. Todo ha sido “siguiente… siguiente… siguiente…”. El potencial de Veil radica en las diferentes plataformas para crear payloads y cómo Python, Ruby o Powershell ayuda a que los códigos pasen mucho más desapercibido. El resultado es que 12 motores de antivirus nos han detectado el binario, teniendo en cuenta que hemos utilizado un camino básico y un payload “clásico”. El resultado es 12 de 56, lo cual es aceptable.

Shellter

Como comenté anteriormente, la herramienta tiene muchas opciones y solo nos centraremos en una ejecución sencilla y básica. Lo primero que nos preguntará la herramienta al ser ejecutada es si queremos un modo de operación automático o manual. Lo hacemos lo más sencillo posible, que cualquiera con los mínimos conocimientos pudiera hacerlo, como dijo en la charla de Gsick Minds Pedro Sánchez. 


Shellter nos preguntará si queremos activar el modo sigiloso y le decimos que sí. En este instante deberemos elegir entre los payloads disponibles para que se inyecten en el binario. Si nos fijamos tenemos diferentes tipos de Meterpreter, la típica shell inversa TCP y la shell bindeada TCP. Además, un payload inline como es WinExec. Lo que nos preguntará Shellter es si queremos utilizar el listado que nos proporciona o queremos utilizar un listado personalizado, mediante importación de shellcodes. En este caso elegimos la opción básica y el payload de Meterpreter inverso TCP. 


La primera etapa pesa unos pocos bytes como se puede ver en la lectura de Shellter. El payload es encodeado automáticamente, y posteriormente nos muestra más información sobre los métodos de la API a utilizar, sobre la ofuscación o el código polimórfico denominado basura. Justo después de esto, se configura la segunda etapa, y es que Meterpreter no es un payload de tipo inline. En la segunda etapa se pasan por fases similares. La salida por pantalla de Shellter es interminable, pero nos proporciona mucha información. Hay que recordar que esto es todo con valores por defecto.


El binario que hemos utilizado, el cual se pide al principio es el de Putty. El famoso cliente para conexiones SSH, telnet, puerto serie, etcétera. Shellter hace un backup del binario e inyecta, en este caso, un Meterpreter dentro del bibario, tal y como vimos. Los resultados con las opciones por defecto de Shellter cuando se lo pasamos a Virus Total son muy sorprendentes. Ningún motor antivirus ha detectado el binario como malicioso, obteniendo un 0 de 55. 

PayDay

PayDay es un script escrito en Python cuyo objetivo es crear un binario con un Meterpreter inverso TCP inyectado. El script se puede encontrar en Github. La sintaxis es sencilla y para generar un binario que utilice Metasploit (msfvenom) y Veil simplemente hay que ejecutar python payday.py –veil –msf –ip [dirección IP atacante]. 


Los resultados obtenidos para el binario creado con PayDay pueden sorprender, ya que el uso del script es realmente sencillo. 39 motores AV han detectado el binario como malicioso de 56 que analizaron el fichero. Los resultados no fueron buenos.

Tras la comparativa se puede observar que hay herramientas que facilitan la evasión de AV y que con opciones básicas o por defecto se consiguen resultados muy potentes. Shellter es sin duda el que más sorpresas causa, por su sencillez y el poderío de los resultados que ha conseguido. ¿Cuál es tu favorito?

No hay comentarios:

Publicar un comentario