Categorías
Cracking Explotación de Software Hacking Services - Software

10 Herramientas esenciales para pentesting en Active Directory – Parte 1 de 2

Demostración en vídeo de éste post:

Hay una gran cantidad y variedad de herramientas que apoyan en el proceso de pentesting sobre sistemas Windows y muy concretamente, sobre entornos de Active Directory. En este post y el siguiente enumeraré 10 herramientas que en mi experiencia, son esenciales cuando se realiza una auditoría de seguridad en éste tipo de entornos. Obviamente hay bastantes más, pero creo que éstas representan un buen punto de partida para tener un «arsenal» lo suficientemente sólido a la hora de ejecutar auditorías sobre sistemas Windows.

1. Evil-WinRM

Evil-WinRM es, con diferencia, una de las herramientas más útiles cuando se trata de realizar labores de post-explotación sobre un sistema Windows. Utiliza el protocolo WinRM para el establecimiento de conexiones remotas con sistemas Windows y genera una shell interactiva. Cuenta con varios comandos que permiten subir y descargar ficheros, ejecutar assemblies de C# en memoria, importar scripts de Powershell, entre muchas otras cosas. Si quieres aprender en detalle cómo funciona, te recomiendo los siguientes vídeos publicados en el canal de YouTube:

Evil WinRM Shell sobre WinRM para pentesting en sistemas Windows Parte 1 de 2
Evil WinRM Shell sobre WinRM para pentesting en sistemas Windows Parte 2 de 2

2. GhostPack

Se trata de un conjunto de herramientas muy potente para labores de pentesting sobre sistemas Windows. Cuenta con utilidades tan conocidas como Rubeus, Seatbelt, SharpDPAPI y SharpUp. Estas herramientas se encuentran desarrolladas en C# y es necesario descargar el código del proyecto y compilar la solución DotNet, lo cual no es nada complejo de hacer aunque puede llevar algo de tiempo. Ya se ha escrito sobre estas herramientas en el blog, así que te recomiendo su lectura en los siguientes posts:

Post-explotación en sistemas Windows con GhostPack – Parte 1 de 3
Post-explotación en sistemas Windows con GhostPack – Parte 2 de 3
Post-explotación en sistemas Windows con GhostPack – Parte 3 de 3

3. CrackMapExec

En este caso es una herramienta que últimamente está ganando popularidad y no es para menos. Permite la ejecución de pruebas sobre servicios comunes en un entorno de Active Directory, tales como SMB, RDP, MSSQL, entre otros. Es una utilidad que se puede ejecutar desde la máquina del atacante y funciona perfectamente. Aunque no hace falta un usuario para que las pruebas se lleven a cabo correctamente, la herramienta permite indicar un usuario y contraseña (local o de dominio) para lanzar pruebas sobre el sistema objetivo de la forma más completa posible. Si quieres aprender un poco más sobre el uso de ésta herramienta, puedes leer el siguiente post y ver el vídeo que le acompaña en YouTube.

4. ADReaper

Es una utilidad orientada a la enumeración remota, permite extraer información variada de un sistema Windows ejecutando consultas LDAP. Tal y como ocurre con CrackMapExec, es posible ejecutar la herramienta sin indicar un usuario de dominio, sin embargo, podrá extraer mucha más información si se especifica uno y por este motivo, puede ser vista como una herramienta orientada a la post-explotación.

5. Certify y Certipy

Estas dos utilidades se han vuelto muy populares tras la aparición de las múltiples vulnerabilidades que afectan a la PKI diseñada por Microsoft para sistemas Windows Server, también conocida como AD CS (Active Directory Certificate Services). Son herramientas que de hecho, no explotan ninguna vulnerabilidad, simplemente realizan consultas sobre los servicios de AD CS y permiten detectar malas configuraciones que le permiten a un atacante la explotación del entorno. La principal diferencia es que Cerify se encuentra desarrollada en C# y es necesario subir el programa a una estación de trabajo unida al dominio o ejecutarla desde memoria con Invoke-Binary de Evil-WinRM, mientras que Certipy es un script en Python que se puede ejecutar desde la máquina del atacante, en donde solamente es necesario indicar las credenciales de un usuario de dominio para su ejecución.

En éste post se han mencionado cinco herramientas fundamentales para entornos de Active Directory, en el siguiente post se mencionarán cinco más que también considero fundamentales.

Un saludo y Happy Hack!
Adastra.

Categorías
Explotación de Software Hacking Networking Services - Software

Evil-WinRM: Shell sobre WinRM para pentesting en sistemas Windows – Parte 2 de 2

Demostración en vídeo del post

En el post anterior sobre Evil-WinRM he mencionado cómo funciona, los mecanismos de autenticación que se podrían emplear sobre un sistema Windows y cómo hacerlo con la herramienta. En esta segunda parte es un buen momento para explorar algunas de las características que a mi juicio, son las más interesantes y por las que la herramienta destaca en un proceso de post-explotación sobre sistemas Windows.

Comandos básicos

Para empezar, la herramienta cuenta con algunas funciones que ayudan en los movimientos de ficheros entre el atacante y la víctima. Estas funciones permiten subir o descargar ficheros con facilidad y son upload y download respectivamente.

Otros comandos básicos también permiten lanzar scripts en Powershell que se encuentran en el «path» indicado en la opción «-s». Esto es especialmente útil para ejecutar rutinas de enumeración sobre el sistema comprometido sin necesidad de subir manualmente el script y lanzarlo en la máquina, además son rutinas que se ejecutan en memoria, lo que facilita en algunos casos la evasión de AVs.

El comando «menu» enseña los comandos disponibles de forma «nativa» en la herramienta y los que se cargan por medio de scripts Powershell. Es una buena manera de ver rápidamente cuáles son los comandos que se encuentran disponibles. Además, cuando se carga un script como el de PowerView entre otros, los módulos (cmdlets) de dichas utilidades aparecen en el listado de comandos, lo que también permite apreciar cuáles son los elementos que se encuentran disponibles en los scripts que se van cargando. El comando services también es útil, ya que permite ver los servicios que se encuentran en ejecución en ese momento y además, enseña el path correspondiente del binario lo que permite ver si hay algún servicio que sea vulnerable a Unquoted Service Path.

Por otro lado, hay una serie de labores que son habituales cuando se ejecutan procedimientos de pentesting sobre entornos Windows, entre las que se encuentran la carga y ejecución dinámica de DLLs y binarios (creados utilizando C#). Nuevamente, Evil-WinRM ayuda en estos procedimientos ya que cuenta con rutinas preparadas para ello. Además, soporta la técnica Donut, la cual permite crear un payload utilizando dicho proyecto y luego «enchufarlo» utilizando Evil-WinRM, evidentemente hacerlo así resulta muy cómodo y ahorra tiempo.

Carga dinámica de DLLs y binarios

Para la carga de una DLL que se encuentra ubicada en el sistema del atacante es posible utilizar la instrucción Dll-Loader. Permite indicar la ubicación de dicha DLL, ya sea en un directorio local, en un servidor HTTP o un recurso compartido SMB. Lo único que hay que tener en cuenta es que no es posible subir cualquier DLL, solamente son admitidas aquellas que se han creado a partir de un programa en C# y compilado con el una herramienta como el Visual Studio .Net o el compilador «dotnet» disponible también para sistemas Linux. Un buen candidato para este tipo de rutinas es precisamente el proyecto GhostPack, el cual incluye herramientas tan potentes e interesantes como Rubeus, Seatbealt, SharpUp o SafetyKatz.

Como se puede apreciar, el binario se ejecuta sin problema y no ha sido necesario transferirlo a la máquina comprometida, se ejecuta en memoria y devuelve el flujo de salida correspondiente. Aunque en la documentación disponible en GitHub se indica que los binarios admiten un máximo de 3 parámetros, tal como se puede comprobar en la imagen anterior se pueden especificar más, todos ellos separados por coma.

Carga y ejecución de «Donuts»

Otra característica interesante que tiene Evil-WinRM es el soporte a los payloads que se pueden generar utilizando la herramienta Donut, la cual cuenta entre sus funcionalidades, la posibilidad de inyectar binarios, DLLs y Assemblies de .Net en la memoria de un proceso seleccionado. Donut es una herramienta muy completa, por ese motivo merece la pena dedicar un post independiente a explicar qué tiene para ofrecer en procesos de pentesting.
La instrucción Donut-Loader disponible en Evil-WinRM es de gran ayuda para simplificar la ejecución de un «Donut» en la máquina comprometida, ya que simplemente recibe el identificador del proceso objetivo y el fichero con el payload generado por Donut, a continuación se encarga de cargar y ejecutar dicho payload en el sistema comprometido, utilizando la memoria del proceso anfitrión.

En la imagen anterior se aprecia cómo se ha se ejecutado un payload de meterpreter utilizando la técnica Donut y Evil-WinRM. No obstante, hay que tener en cuenta que en este caso concreto se ha utilizado el script «donut-maker.py» que permite exporta un fichero «bin» partiendo del ejecutable generado por msfvenom o cualquier otra herramienta.

Sin duda Evil-WinRM ha alcanzado un buen nivel de madurez y se puede utilizar con total confianza en procesos de pentesting, su simplicidad y facilidad de uso le convierten en una herramienta fundamental a la hora de realizar conexiones a sistemas Windows con el servicio de WinRM habilitado. De hecho, como se ha podido comprobar dadas sus características no solamente aplica a procedimientos de pentesting, su uso es perfectamente válido por parte de administradores de sistemas que quieran controlar remotamente un servidor Windows sin necesidad de utilizar un protocolo como RDP.
Merece la pena que aprendas a utilizarla y la adaptes en tus pruebas sobre sistemas Windows.

Un saludo y Happy Hack!
Adastra.

 

Categorías
Explotación de Software Hacking MetaSploit Networking Programacion Services - Software

Post-explotación con Koadic: COM Command and Control basado en Windows Script Host.

Koadic no es una herramienta reciente, de hecho ya lleva cerca de 5 años en continuo desarrollo y aunque no alcanza el reconocimiento y aceptación de otras similares como Metasploit Framework, sin duda merece la pena conocerla en detalle y tenerla en cuenta para operaciones de post-explotación sobre sistemas Windows. Se trata de una herramienta similar a Empire o el payload de Meterpreter, pero tal como se describe en el sitio web oficial de Gitub (https://github.com/zerosum0x0/koadic) su enfoque es distinto ya que utiliza JScript/VBScript para las operaciones que se llevan a cabo entre atacante y víctima. Otra característica que llama la atención es que todo se ejecuta en memoria y funciona en versiones tan antiguas como Windows 2000 hasta versiones modernas de Windows 10. Como muchas otras herramientas de este tipo, su uso resulta común y familiar, solamente es necesario entender los términos y qué hace cada componente:

  1. Zombies. Representa cada uno de los objetivos comprometidos (víctimas). Similar a lo que viene a ser una sesión en Metasploit Framework, un zombie en Pupy/BeEF o un agente en Empire.
  2. Stagers. Representa los módulos que se ejecutarán en la herramienta para la distribución de payloads y el establecimiento de conexiones con los zombies. Todos los stagers disponibles a la fecha de redactar esta entrada se encargan de levantar un servidor en la máquina comprometida y esperan a que la víctima se conecte, descargue y ejecute el payload correspondiente.
  3. Implants. Se trata de aquellas instrucciones que se ejecutan en los zombies y las que realmente permiten la ejecución de un proceso de post-explotación en condiciones sobre el objetivo. Nuevamente, esto es equivalente a lo que se encuentra en Metasploit Framework con los módulos de «post» o los meterpreter scripts (ya deprecados), así como en Empire con los stages.

La instalación de la herramienta tampoco supone ninguna dificultad, se encuentra escrita para Python3 y tiene el fichero «requirements.txt» debidamente configurado para poder ejecutar «PIP3» e instalar todas las dependencias necesarias. Una vez instalado, se pueden ver los comandos disponibles.

El primer paso consiste en iniciar un listener por medio de alguno de los stagers disponibles en la herramienta.

Como se puede apreciar, cuando la víctima intenta acceder al sitio web generado por Koadic se obtiene un nuevo zombie en la terminal de Koadic, sin embargo hay que tener en cuenta que esto dependerá en gran medida del stager utilizado y si la víctima accede al enlace con un cliente compatible a dicho stager. Por otro lado, con una versión actualizada de Windows 10 el AMSI funciona correctamente y detecta el payload como una amenaza lo que impide su correcta ejecución, no obstante las pruebas realizadas indican que funciona correctamente en Windows 8.1 y anteriores incluyendo Windows Server.
Una vez conseguido un zombie, se puede interactuar con él utilizando el comando «zombies» o alguno de los implantes disponibles. El comando «zombies <ID>» permite ver información básica del zombie con el que se ha establecido una conexión.

Por otro lado, si lo que se busca es ejecutar comandos contra el objetivo utilizando una shell, la instrucción «cmdshell <ID>» permite hacerlo.

El uso de los «implantes» es una característica interesante en la herramienta, ya que facilitan el proceso de post-explotación sobre el sistema comprometido. Como se ha mencionado anteriormente en este texto, es muy similar a lo que puede verse en los módulos «post» disponibles en Metasploit Framework, aunque evidentemente MSF es bastante más completo y robusto, pero aún así es interesante ver cómo funcionan los implantes de Koadic.

Como se puede ver en la imagen anterior, todos los implantes siguen una estructura de directorios fácil de entender y se pueden apreciar que cada implante listado es «auto-explicativo» con simplemente leer el nombre. El uso de cualquier implante es muy similar a como se hace en otras herramientas similares como Pupy o Metasploit Framework, basta simplemente con ejecutar el comando «use» e indicar el implante, establecer las opciones que requiere para ejecutarse y posteriormente lanzarlo con un comando como «execute» o «run».

Es una herramienta sencilla y que se puede explorar fácilmente en poco tiempo ya que como se ha dicho antes, es muy similar a otras herramientas del mismo corte. Como siempre, es importante que el «arsenal» de herramientas que se utilizan para pentesting o hacking sea lo más amplio posible y no quedarse con una única solución o alternativa. La variedad y conocer otras opciones en ocasiones puede ser decisivo en una auditoría. Dicho esto, espero que os animéis a probar Koadic si no lo habéis hecho ya.

Un saludo y Happy Hack!

Adastra.