martes, diciembre 15, 2020

Pentesting con Powershell e iBombShell en CoronaCON Edición 2

El pasado fin de semana se ha llevado a cabo la segunda edición de CoronaCON, una con benéfica en la que se busca recaudar fondos para la Cruz Roja en diferentes países de habla hispana y que busca ayudar a luchar contra la pandemia que estamos sufriendo. Tal y como ocurrió en la primera edición con la nueva versión de Hidden Networks, estuvimos apoyando la causa benéfica dando una charla sobre iBombShell y las posibilidades que aporta Powershell al pentesting.

Figura 1: Pentesting con Powershell e iBombShell en CoronaCON Edición 2



En la charla se muestra cómo utilizamos las técnicas de Pentesting con Powershell en la parte de post-explotación y cómo surgió la herramienta iBombshell, partiendo de la base de varios proyectos anteriores. Además, comenté que volveríamos a retomar esta herramienta, ya que tal y como nos mostraron los amigos de ‘The MatrixC2’ es una herramienta que ha sido bien recibida por la comunidad.

Figura 2: Pentesting con Powershell 2ª Edición

Los trabajos en los que nos apoyamos hasta llegar a iBombShell fueron dos. En el año 2014 y 2015Give me a Powershell and I will move your world’ mostraba el potencial de utilizar una Powershell. Este trabajo se mostró en Qurtuba 2015 en Córdoba (España)En aquella época no existía AMSI, por lo que ejecutar cualquier código en Powershell era sinónimo de éxito. Años antes, en 2012 y 2013, la aparición de un gran número de repositorios en Github dónde cientos de funcionalidades de pentesting fueron migradas a Powershell nos hacía ver por dónde irían los tiros en lo que a post-explotación se refiere. Y esto tiene mucho sentido, ya que Powershell permite al pentester acceder a cualquier estructura del sistema operativo facilitando, y mucho, la parte de post-explotación. 


Figura 3: PSBot: Dame una PowerShell y moveré el mundo

Un año después, en el año 2016 se trabajó en un nuevo proyecto llamado ‘PSBoT: No tools, but not problem!’. La idea de este nuevo trabajo basado en el uso de Powershell para la parte de post-explotación era utilizar un bot para cargar dinámicamente funciones a memoria, siendo de tipo "Fileless", es decir, que no hubiera descarga de scripts a disco. La idea básica es, ¿Necesitas hacer un pentesting y no tienes herramientas? ¿No puedes instalarlas? ¿Tienes una Powershell? Puedes hacer esto, esto y esto… Además, el bot se podía controlar a través de Twitter y a través de otro script escrito para controlar el bot y enviarle órdenes e instrucciones a través del mecanismo de carga dinámica con "Fileless".


En 2017, empecé a ver el concepto de "Pentesting Everywhere", y ahora se ve de dónde viene. Así nació iBombShell y sus modos de funcionamiento everywhere y silently. iBombShell está disponible en el repositorio de Github de Telefónica. Además, tenemos la rama Dev, donde hemos ido mostrando las cosas nuevas que íbamos incorporando en el proyecto. Al principio, la idea era solo el modo everywhere, como algo innovador. Es decir, proporcionar al pentester un prompt a modo de consola que se descarga las funciones dinámicamente en una Powershell desde repositorios de Github. Es más, hicimos una ‘receta’: 

1. Abrir Powershell 
 
2. Descargar a memoria un prompt 
 
3. Ejecutar prompt 
 
4. Posibilidad de descarga de funciones a memoria y poder ejecutarlas

Antes de hablar de demos y del modo silently, comentamos que iBombShell fue presentada en BlackHat Europe 2018. El equipo de Ideas Locas ha estado presente en alguna edición de los últimos 4 años en BlackHat (3 en Europe y 1 en USA). Esto es algo que mirando con perspectiva sabemos que es el trabajo de todos y el esfuerzo de cada miembro que ha estado en el equipo. No es fácil presentar herramientas e investigaciones en uno de los congresos más importantes del mundo, donde encontramos a los mejores expertos en esta materia. La pandemia nos ha hecho verlo con cierta perspectiva y estamos orgullosos.


Las demos que se realizaron sobre el modo everywhere de iBombShell fueron la obtención del prompt de la consola de pentesting y el uso en entornos donde no tuviéramos conexión a Internet. Esto último es algo interesante, ya que no siempre dispondremos de conexión a Internet en un escenario de pentesting, por lo que podemos llevar preparado todo lo que necesitamos y almacenado en el registro. Para ello existe la función ‘savefunctions’ que nos permite almacenar en el registro de Windows toda la información sobre las funciones que tenemos descargadas, las funciones de uso interno de iBombShell y su prompt o consola.

Figura 6: iBombshell everywhere in isolated environments

Como se puede ver en la descripción del repositorio, tenemos un código para poder leer del registro las funciones previamente utilizadas, en algún momento, las internas y la consola. Es una forma de hacer persistente a iBombShell, pero sin tener que generar ficheros de tipo script en el disco. Si observamos en la rama HKCU:\Software\Classes\ibombshell encontraremos que por cada función y cada línea de dicha función se crea un valor.

En el transcurso de la charla se habló también del modo silently, el cual permite convertir la consola de iBombShell en un agente o ‘warrior’ de post-explotación que se conectará contra un C2. Por esta funcionalidad iBombShell está dentro del grupo de C2 de The MatrixC2. El esquema de funcionamiento del modo silently es sencillo y es el siguiente:

Figura 7: Modo Silently

En la charla se mostraron algunas demos relacionados con este uso. Primero diferenciamos en cómo se puede lograr ejecutar un ‘warrior’ en una máquina remota. Para ello hacemos uso de un exploit que explote una vulnerabilidad en la máquina remota y como payload le metemos, por ejemplo, una DLL generada con iBombShell, la cual tiene el código asociado para conectarse contra el C2 de iBombShell. Esto es algo que herramientas como Empire tienen y proporcionan una posibilidad de ejecutar el agente de post-explotación desde un exploit de manera sencilla.

Figura 7: Hacking avanzado en el Red Team con Empire & iBombShell

Posteriormente, una vez lograda la ejecución de nuestro agente de post-explotación se explicó cómo hacer una escalada de privilegios y un movimiento lateral con módulos que hay en iBombShell. También hablamos de AMSI para Windows 10, por lo que os dejamos un video de ejemplo de cómo hacer bypass de AMSI con iBombShell.


Figura 8: Cómo saltarse AMSI y desactivar Windows Defender con iBombshell

La última vez que actualizamos el repositorio fue hace unos meses, pero queremos volver a retomarlo y meterle algunas funcionalidades nuevas, por lo que la intención está escrita. Los primeros cambios se verán en la rama ‘Dev’ del repositorio.

Sin duda, una herramienta de la que estamos orgullosos, por cómo se generó, por cómo evolucionó, por su sencillez y flexibilidad, por generar comunidad, por recibir ese apoyo de la comunidad en forma de módulos y funcionalidades y porque nos divierte utilizarla. Pronto, novedades.

 
Saludos,

Pablo González Pérez (@pablogonzalezpe), escritor de los libros "Metasploit para Pentesters: Gold Edition", "Hacking con Metasploit: Advanced Pentesting" "Hacking Windows", "Ethical Hacking", "Got Root",  “Pentesting con Powershell (2ª Edición)”, "Pentesting con Kali Silver Edition" y de "Empire: Hacking Avanzado en el Red Team", Microsoft MVP en Seguridad y Security Researcher en el equipo de "Ideas Locas" de la unidad CDCO de Telefónica.  Para consultas puedes usar el Buzón Público para contactar con Pablo González - Conseguir 100 Tempos Gratis en MyPublicInbox

 Contactar con Pablo González

No hay comentarios:

Entrada destacada

10 maneras de sacarle el jugo a tu cuenta de @MyPublicInbox si eres un Perfil Público

Cuando doy una charla a algún amigo, conocido, o a un grupo de personas que quieren conocer MyPublicInbox , siempre se acaban sorprendiendo ...

Entradas populares