macOS & Windows: Pentesting it with iBombshell (Part 2 de 2)
Continuando con la primera parte de este artículo, evolucionamos las ideas que ahí se muestran comenzando con una pregunta. ¿Y si luego perdemos la conexión a Internet desde la máquina y no podemos descargar las funciones? Si más adelante no tengo Internet el sistema está preparado para ello y se puede hacer uso de la funcionalidad savefunctions que consta, de dos funciones.
La primera vuelca todas las funciones cargadas en memoria en el registro de Windows en la ruta HKCU:\Software\Classes\ibombshell. La segunda función verifica la existencia de dicha ruta y recupera las funciones y las mete en memoria.
En este caso, no habría necesidad de descargarlas de Internet. Hay que tener en cuenta que ibombshell no descarga una función de Internet que ya tiene, aunque dispone de una función llamada clearfunction, la cual se puede encontrar en la ruta system/clearfunction, que permite borrar una función de memoria. Si esto ocurre, la siguiente vez que se pida la función se descargará del repositorio.
Si hacemos uso de la función savefunctions podemos ver que en la ruta HKCU:\Software\Classes\ibombshell se crean entradas con el nombre de cada función. Dentro se crea una clave por cada línea de la función, por lo que, si la función tiene 1000 líneas, habrá 1000 claves, tal y como se puede ver en la imagen superior.
Figura 13: PoC iBombShell savefunctions
La nueva idea: ibombshell silently mode
La segunda idea era aprovechar este prompt de forma remota, por lo que se introdujo un parámetro que permite ejecutar el prompt en modo silencioso. Es decir, el código Powershell se ejecutará de forma que no debiera ser visible y hará llamadas a una URI, primero para registrarse y después para descargar y ejecutar funciones e instrucciones. Por último, reportará los resultados. Esto es lo que hemos denominado Warrior y nos sirve para disponer de una gran posibilidad en la post-explotación dentro de un Ethical Hacking haciendo uso de Pentesting con PowerShell.
En el comienzo de la función console, el prompt de ibombshell, se dispone de una serie de parámetros $Silently, $uriConsole e $id. Al menos a día de hoy. Estos parámetros marcan el modo de ejecución, la URI a la que tiene que llamar el warrior y el ID para diferenciar un warrior de otro. El esquema quedaría como se puede ver en la siguiente imagen:
Para finalizar queríamos enseñaros vídeos, aunque la herramienta no está disponible aún porque debemos pulir algunas cosas. Queremos liberarla como OpenSource y que cualquiera pueda mejorarla y ampliar su funcionalidad. Todavía tenemos un largo camino, pero queríamos compartir con nuestros amigos de EuskalHack lo que estábamos trabajando.
Figura 16: PoC Metasploit con iBombshell warrior
Os dejamos la última demo que se hizo en la charla del sábado. El sábado introducíamos nuestro warrior en la máquina Windows 7 gracias a explotación con Metasploit y el uso del módulo de Powershell de Meterpreter. En el video esto no aparece. El resto es igual, se realiza un bypass de UAC y se ejecuta un nuevo warrior en un nivel de integridad alto, para obtener los hashes de la máquina y realiza PtH contra una máquina Windows 10 ejecutando nuestro warrior en la nueva máquina, tal y como vemos en este ataque desde Kali Linux.
Figura 17: PoC Warrior + Bypass UAC + Pass the hash
Por último, os dejamos este video de ibombshell funcionando en macOS, ejecutando la función Invoke-Portscan. Esto refleja que se puede crear un gran número de funciones de post-explotación para macOS y Linux y se abren nuevas posibilidades al Hacking de macOS.
Figura 18: PoC de iBombShell en macOS
Una de las preguntas que me hizo ilusión ver era el parecido con Powershell Empire, pero no es comparable. La primera diferencia es obvia, y es el prompt everywhere, además de la posibilidad de utilizar el loaderext en el warrior lo cual amplía mucho la posibilidad de utilizar cualquier código en el entorno del warrior. Sea como sea, es un orgullo que las comparen, pero no son herramientas, a día de hoy, comparables. Esperamos seguir avanzando, tenemos algunas ideas e iremos compartiendo y comentando. Esperamos poder subir una primera versión en poco tiempo.
Autor: Pablo González Pérez (@pablogonzalezpe), escritor de los libros "Metasploit para Pentesters", "Hacking con Metasploit: Advance Pentesting" "Hacking Windows", "Ethical Hacking", "Got Root" y “Pentesting con Powershell”, Microsoft MVP en Seguridad y Security Researcher en ElevenPaths
Figura 10: macOS & Windows: Pentesting it with iBombshell (Part 2 de 2) |
La primera vuelca todas las funciones cargadas en memoria en el registro de Windows en la ruta HKCU:\Software\Classes\ibombshell. La segunda función verifica la existencia de dicha ruta y recupera las funciones y las mete en memoria.
Figura 11: función savefunctions |
En este caso, no habría necesidad de descargarlas de Internet. Hay que tener en cuenta que ibombshell no descarga una función de Internet que ya tiene, aunque dispone de una función llamada clearfunction, la cual se puede encontrar en la ruta system/clearfunction, que permite borrar una función de memoria. Si esto ocurre, la siguiente vez que se pida la función se descargará del repositorio.
Figura 12: Claves en el registro para la función savefunctions |
Si hacemos uso de la función savefunctions podemos ver que en la ruta HKCU:\Software\Classes\ibombshell se crean entradas con el nombre de cada función. Dentro se crea una clave por cada línea de la función, por lo que, si la función tiene 1000 líneas, habrá 1000 claves, tal y como se puede ver en la imagen superior.
Figura 13: PoC iBombShell savefunctions
La nueva idea: ibombshell silently mode
La segunda idea era aprovechar este prompt de forma remota, por lo que se introdujo un parámetro que permite ejecutar el prompt en modo silencioso. Es decir, el código Powershell se ejecutará de forma que no debiera ser visible y hará llamadas a una URI, primero para registrarse y después para descargar y ejecutar funciones e instrucciones. Por último, reportará los resultados. Esto es lo que hemos denominado Warrior y nos sirve para disponer de una gran posibilidad en la post-explotación dentro de un Ethical Hacking haciendo uso de Pentesting con PowerShell.
Figura 14: parámetros de invocación del Silently mode |
En el comienzo de la función console, el prompt de ibombshell, se dispone de una serie de parámetros $Silently, $uriConsole e $id. Al menos a día de hoy. Estos parámetros marcan el modo de ejecución, la URI a la que tiene que llamar el warrior y el ID para diferenciar un warrior de otro. El esquema quedaría como se puede ver en la siguiente imagen:
Figura 15: Esquema de funcionamiento |
Para finalizar queríamos enseñaros vídeos, aunque la herramienta no está disponible aún porque debemos pulir algunas cosas. Queremos liberarla como OpenSource y que cualquiera pueda mejorarla y ampliar su funcionalidad. Todavía tenemos un largo camino, pero queríamos compartir con nuestros amigos de EuskalHack lo que estábamos trabajando.
Figura 16: PoC Metasploit con iBombshell warrior
Os dejamos la última demo que se hizo en la charla del sábado. El sábado introducíamos nuestro warrior en la máquina Windows 7 gracias a explotación con Metasploit y el uso del módulo de Powershell de Meterpreter. En el video esto no aparece. El resto es igual, se realiza un bypass de UAC y se ejecuta un nuevo warrior en un nivel de integridad alto, para obtener los hashes de la máquina y realiza PtH contra una máquina Windows 10 ejecutando nuestro warrior en la nueva máquina, tal y como vemos en este ataque desde Kali Linux.
Figura 17: PoC Warrior + Bypass UAC + Pass the hash
Por último, os dejamos este video de ibombshell funcionando en macOS, ejecutando la función Invoke-Portscan. Esto refleja que se puede crear un gran número de funciones de post-explotación para macOS y Linux y se abren nuevas posibilidades al Hacking de macOS.
Figura 18: PoC de iBombShell en macOS
Una de las preguntas que me hizo ilusión ver era el parecido con Powershell Empire, pero no es comparable. La primera diferencia es obvia, y es el prompt everywhere, además de la posibilidad de utilizar el loaderext en el warrior lo cual amplía mucho la posibilidad de utilizar cualquier código en el entorno del warrior. Sea como sea, es un orgullo que las comparen, pero no son herramientas, a día de hoy, comparables. Esperamos seguir avanzando, tenemos algunas ideas e iremos compartiendo y comentando. Esperamos poder subir una primera versión en poco tiempo.
Autor: Pablo González Pérez (@pablogonzalezpe), escritor de los libros "Metasploit para Pentesters", "Hacking con Metasploit: Advance Pentesting" "Hacking Windows", "Ethical Hacking", "Got Root" y “Pentesting con Powershell”, Microsoft MVP en Seguridad y Security Researcher en ElevenPaths
No hay comentarios:
Publicar un comentario