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

Network Hacking con Impacket – Parte 5

En esta quinta parte de la serie se explicarán otros scripts interesantes en Impacket que se aprovechan de SMB/MSRPC. Los post correspondientes a las partes anteriores se encuentran en los siguientes enlaces.

Network Hacking con Impacket – Parte 1
Network Hacking con Impacket – Parte 2
Network Hacking con Impacket – Parte 3
Network Hacking con Impacket – Parte 4

 

Manipulación del registro de Windows con reg.py

El registro de Windows es una pieza fundamental en la arquitectura del sistema operativo y por ese motivo es también uno de los puntos sobre los que se debe prestar más atención cuando se trata de enumerar un sistema Windows para post-explotación. En este sentido, conviene leer el post sobre 10 Subclaves interesantes en el registro de Windows para Hacking. El objetivo de este script es utilizar SMB y paquetes DCERPC cuidadosamente diseñados para proveer de una funcionalidad similar a la que se encuentra disponible en la herramienta REG.EXE en sistemas Windows.

En la imagen anterior se puede comprobar que aparecen cada una de los valores y su correspondiente tipo para la subclave «HKLM\SOFTWARE\MICROSOFT\WINDOWS NT\CURRENTVERSION\WINLOGON». Hay que tener en cuenta que el script requiere que se especifique la forma abreviada de la clave raíz, en este caso HKLM ya que si se envía el nombre completo HKEY_LOCAL_MACHINE el script lanzará un error indicado que no la encuentra. Por otro lado, tal como ocurría con otros scripts como el wmiexec.py, se encarga de habilitar el servicio de RemoteRegistry en el sistema si no está habilitado y cuando termina su ejecución restablece el estado del servicio a como estaba anteriormente.

Implementación de un servidor SMB en la máquina del atacante con smbserver.py

Se trata de una herramienta muy útil que sirve para levantar un servidor SMB para transferir ficheros entre la máquina objetivo y el servidor. Utilizar el servicio SMB para la transferencia de ficheros tiene varios beneficios, probablemente el más llamativo de cara al atacante es que podría llevarse a cabo la ejecución de payloads sin escribir en disco, es decir, realizar la ejecución del payload «fileless». Esto de hecho ya se ha explicado anteriormente en el post Enumeración en Windows para Post-Explotación – Parte 5.

En la imagen anterior se puede apreciar cómo utilizar el script «smbserver.py» implementando un mecanismo de autenticación basado en usuario y contraseña. También se puede ver que se crea una unidad compartida con el nombre «METAFISICAMENTEIMPOSIBLE» y la cual se encuentra físicamente ubicada en el directorio «/tmp/Clasicos». En la terminal inferior se puede ver cómo se produce la autenticación con dicho servidor gracias al comando «net use» y luego, cómo se listan las unidades compartidas con «net view».

Enumeración de SIDs con lookupsid.py

Se trata de un script que se conecta a la máquina objetivo y utilizando la named pipe «\pipe\lsarpc» consigue enumerar usuarios locales y de dominio. Es una utilidad muy simple pero cuya implementación resulta interesante.  Al ver el código fuente se puede apreciar que se utiliza el componente lsad.hLsarQueryInformationPolicy2 el cual se encuentra incluido en el módulo dcerpc.v5 de Impacket y que precisamente se encarga de obtener información sobre el dominio, en este caso concreto su SID. A continuación crea un bucle y comienza a realizar peticiones contra el Domain Controller con el objetivo de obtener usuarios que coincidan con el SID solicitado en cada iteración del bucle y finalmente enseña un listado con aquellos que coinciden. Dicho bucle se puede controlar por medio del parámetro «maxRid«del script, su valor por defecto es 4000, lo que a efectos prácticos significa que se ejecutarán 4 iteraciones en el bucle.

Los resultados se enseñan en la terminal en un formato fácil de entender. Dicha información se obtiene precisamente del objeto de respuesta devuelto por lsad.hLsarQueryInformationPolicy2 que es una estructura bastante completa y permite acceder al tipo de SID, nombre e identificador.

Es una buena práctica leer el código fuente de estas utilidades ya que es la mejor forma de entender qué es lo que hacen, además de que ayudan a aprender mejor sobre cómo utilizar los componentes disponibles en Impacket que por supuesto, pueden ser utilizados por un pentester para crear sus propias herramientas o extender las que ya se encuentran en este proyecto. En los siguientes posts se seguirán explorando otras funcionalidades interesantes de Impacket.

Un saludo y Happy Hack!
Adastra.

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

Network Hacking con Impacket – Parte 4

Una de las cosas que más sorprende de Impacket es la cantidad de clases Python que permiten interactuar con SMB o MSRPC, algo que no solamente se ha visto en los post anteriores, sino que además es evidente por la cantidad de herramientas disponibles que utilizan estos protocolos. En este post se explicarán algunas de estas utilidades no sin antes recordarte que puedes leer las entradas anteriores a esta en los siguientes enlaces.

Network Hacking con Impacket – Parte 1
Network Hacking con Impacket – Parte 2
Network Hacking con Impacket – Parte 3

MiniImpacketShell con SMBClient.py

Esta utilidad aprovecha las clases disponibles en Impacket sobre SMB para establecer una conexión con el servicio remoto y desplegar un interprete liviano que también está incluido en Impacket llamado MiniImpacketShell. Permite ejecutar comandos directos contra el sistema comprometido y resulta bastante cómodo de utilizar.

Tal como se aprecia en la imagen anterior, se trata de una shell simple que permite moverse por el sistema de ficheros de la máquina comprometida y ejecutar acciones típicas en un proceso de post-explotación en Windows como puede ser subir o eliminar ficheros/directorios, listar y montar unidades compartidas, establecer una nueva conexión SMB a un host distinto para ejecutar movimientos laterales, etc.

Obtener la arquitectura de un sistema con getArch.py

Probablemente este es uno de los scripts más sencillos que hay en Impacket ya que simplemente recibe un objetivo o lista de direcciones IP/dominios y se encarga de obtener la arquitectura de dichos sistemas. Es una característica del protocolo MSRPC que ha sido descubierta hace varios años y que Microsoft ha decidido incorporar a los apéndices correspondientes a las características del producto. En otras palabras, no se considera un bug sino una «feature». El apéndice concreto es el 53 y se puede leer aquí. Por otro lado, no hace falta contar con credenciales validas en ninguno de los sistemas consultados.

Listado de sesiones abiertas en el objetivo con netview.py

Se trata de un script que se encarga de listar todas las sesiones abiertas en un dominio u objetivo concreto y enseña los detalles básicos de dichas sesiones. Es necesario introducir un usuario y una contraseña validos para una cuenta de dominio. El script se queda en estado de escucha atendiendo a todos los eventos que se van produciendo (inicios de sesión).

También es posible indicar un objetivo concreto en lugar del dominio completo con la opción «-target», de esa manera el script únicamente obtendrá información sobre los inicios de sesión en esa máquina y no en todo el dominio.

Gestión de servicios utilizando MSRPC con services.py

Por otro lado, el script «services.py» permite la gestión de servicios en el sistema remoto, de esta manera es posible listar, iniciar, detener o reiniciar cualquier servicio, siempre y cuando la cuenta utilizada para acceder a dicho sistema tenga los privilegios adecuados.


Este script es similar a ejecutar la utilidad «SC.EXE» en un sistema Windows, ya que como se puede ver en la imagen anterior, se puede ejecutar cualquier operación sobre los servicios del sistema, incluyendo su creación y borrado. Evidentemente, con esto sería posible establecer un mecanismo de persistencia típico basado en la creación de un servicio malicioso.

En el siguiente post de la serie se profundizará un poco más sobre las utilidades disponibles en Impacket y cómo emplearlas adecuadamente.

Un saludo y Happy Hack!
Adastra.

 

Categorías
automatizacion Explotación de Software Hacking Hacking Python Networking Programacion

Network Hacking con Impacket – Parte 3

Demostración en vídeo de este post

En los dos post anteriores sobre Impacket se han mencionado algunas herramientas disponibles en el proyecto para la ejecución remota utilizando SMB, DCOM, WMI, etc. Las puedes ver en los siguientes enlaces.

Network Hacking con Impacket – Parte 1
Network Hacking con Impacket – Parte 2

En esta ocasión se explicarán otras herramientas adicionales interesantes incluidas en Impacket.

Volcado de «Windows Secrets» con secretsdump.py

Este script se encarga de realizar un volcado completo de los SAM/LSA Secrets, credenciales cacheadas, información sensible almacenada en el registro y los hashes NTLM del sistema. Todo esto lo hace sin necesidad de desplegar ningún tipo de utilidad en el sistema objetivo. Su funcionamiento consiste en habilitar el servicio de Remote Registry en el caso de que no se encuentre habilitado y utilizarlo para el acceso al registro de la máquina objetivo. La información que consigue obtener se almacena en el directorio %SYSTEM_ROOT%/Temp para posteriormente, consultarla y enseñarla en la terminal del atacante. Una vez termina el proceso, la herramienta es capaz de revertir los cambios que se han aplicado y devolver la sistema a su estado inicial.

Como se puede apreciar, la información que permite obtener puede ser útil para realizar ataques de cracking  con herramientas como John The Ripper o Hashcat.

Implementación de Mimikatz con Impacket: mimikatz.py:

Se trata de una utilidad que permite conectarse a un servicio RPC levantado desde Mimikatz en la máquina comprometida. Para ello, en el sistema objetivo se debe ejecutar Mimikatz y posteriormente lanzar el comando «rpc::server». A continuación, desde la máquina del atacante se podrá ejecutar el script «mimikatz.py» para establecer la conexión.

A partir de este punto, se podrán ejecutar los comandos habituales disponibles en Mimikatz desde la máquina del atacante gracias al servidor RPC que se encuentra en ejecución en la víctima.

Utilidades para WMI wmiquery.py y wmipersist.py

WMI es un componente muy potente para administración de un sistema windows y se encuentran disponible en prácticamente todas las versiones del sistema operativo, por lo tanto es un buen recurso a la hora de llevar a cabo un proceso de Enumeración en Windows para post-explotación. Es bastante común utilizar herramientas como WMIC para realizar consultas y obtener información general del sistema, sin embargo cuenta con otras interfaces que permiten la interacción con WMI como es el caso de WQL. Se trata de una implementación del estándar ANSI SQL adaptada a WMI, lo que significa que conociendo la sintaxis de las consultas SQL y sabiendo qué elementos se pueden consultar, será suficiente para sacarle el máximo provecho a WQL, lo cual resulta mucho más beneficioso y potente que solamente usar WMIC. La herramienta «wmiquery.py» que se encuentra disponible en Impacket permite abrir una shell para ejecutar instrucciones WQL contra el sistema comprometido.

La sintaxis de las consultas es similar a cualquier consulta SQL ejecutada contra una base de datos relacional, simplemente es necesario saber cuáles son los elementos que se pueden consultar y cuales son sus campos para poder filtrar si es necesario. La documentación oficial de Microsoft ofrece información abundante en los siguientes enlaces:

WQL FOR WMI

Querying with WQL

En un próximo artículo se hablará sobre las consultas WQL que se pueden ejecutar para procesos de enumeración sobre sistemas windows.

Por otro lado, la utilidad «wmipersist.py» implementa un mecanismo de persistencia interesante que se basa en la creación de una suscripción WMI que responderá a un evento concreto, siguiendo el patrón de diseño Observer. La utilidad recibe un parámetro llamado «-vbs» al que se le debe indicar la ubicación de un fichero con instrucciones Visual Basic Script, las cuales se ejecutarán cuando se active el filtro correspondiente al evento, que puede ser por ejemplo, cuando el usuario ejecuta un programa concreto o con una periodicidad fija, similar a cualquier tarea programada que se ejecuta en el sistema.

Como se puede apreciar en la imagen anterior, se establece como filtro una consulta WQL la cual indica que cuando el usuario ejecute el proceso «calc.exe» se debe ejecutar el código incluido en el fichero «test.vbs». Como se ha mencionado anteriormente, también es posible indicar una periodicidad concreta, en ese caso se debe sustituir la opción «-filter» por «-timer» e indicar cada cuánto se ejecutará el script VBS en milisegundos.

El funcionamiento en ambos casos es similar y tal como se puede apreciar en las trazas de ambas imágenes lo único que cambia es que en el segundo caso se añade un «IntervalTimerInstruction» al «ScriptEventConsumer».
En ambos ejemplos se ha partido de un script VBS que se encuentra en los comentarios de la utilidad wmipersist.py pero evidentemente, puede ser cualquier otro tipo de instrucción maliciosa, como por ejemplo un payload de Cobalt Strike, Metasploit, Core Impact, etc.
Por último, si quieres aprender más sobre la potencia de WMI para operaciones de Red Team te sugiero que leas el siguiente post de duouyinsu o si lo prefieres puedes esperar a una serie de posts que estoy preparando sobre este tema. 🙂

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
automatizacion Explotación de Software Hacking Hacking Python Networking Programacion

Network Hacking con Impacket – Parte 2

En la primera parte sobre Network Hacking con Impacket se ha explicado para qué sirve esta librería y un par de utilidades interesantes que explotan sus características, concretamente smbexec.py y wmiexec.py. Ambas utilidades entran en la categoría de «ejecución remota» en donde es posible generar una shell o ejecutar comandos contra un sistema Windows siempre y cuando se tenga una cuenta valida en dicho sistema y se cumplan las condiciones necesarias. Por ejemplo, tal como se ha mencionado en dicho post, la cuenta de usuario debe tener permisos de administrador en dicha máquina, ya sea una cuenta local o de dominio, pero tiene que tener un nivel de privilegios lo suficientemente alto como para crear un servicio en dicha máquina. Hay otras utilidades disponibles en Impacket que cumplen con el mismo objetivo pero empleando otras técnicas a las mencionadas en el post anterior con WMI y SMB que se explicarán a continuación.

Ejecución mediante PSEXEC.

En la utilidad psexec.py se revive el proyecto RemCom el cual lleva detenido más de 10 años y que en su momento fue creado con el objetivo de extender las funcionalidades incluidas en la herramienta pstools de Sysinternals pero con un enfoque más orientado a la ejecución remota de instrucciones y generación de una shell totalmente funcional que permite operar de forma remota con el sistema. psexec.py sigue el mismo flujo de funcionamiento de RemCom, en primer lugar establece una conexión con el servicio SMB y el intercambio de información entre cliente y servidor se lleva a cabo por medio de Named Pipes y protocolo RPC. Una vez se establece la conexión, sube un fichero muy liviano que representa un servicio que se creará en el sistema el cual permitirá la generación de una shell entre cliente y servidor. Una vez finaliza la interacción, el servicio y las trazas sobre su existencia se borran, haciendo de esta manera una limpieza del entorno. Como se puede apreciar es muy similar a la utilidad smbexec.exe explicada en el post anterior y por lo tanto también se deben cumplir con varias premisas como por ejemplo, la cuenta de usuario que se utilice debe tener permisos suficientes y debe existir un recurso compartido en el que se pueda subir el ejecutable para el servicio.

En las trazas se puede apreciar lo explicado anteriormente y queda bastante más claro el funcionamiento del script, el cual basa su comportamiento en el RemCom. Se podría decir que es un script que representa la migración Python e Impacket de la herramienta RemCom.

Ejecución mediante AT – Task Scheduler.

El script «atexec.py» es otra de las utilidades disponibles en Impacket para la ejecución remota y como las anteriores que se han explicado, es necesario contar con una cuenta y credenciales validas así como permisos suficientes para la creación de una tarea programada. En este caso el script intenta ejecutar un comando contra el sistema remoto utilizando el servicio de Task Scheduler disponible en Windows. No genera una shell como las herramientas mencionadas anteriormente, pero permite la ejecución de un comando arbitrario.

Como se puede apreciar en la imagen, si el script se ejecuta con las credenciales de un usuario sin privilegios suficientes para crear una tarea programada, se produce un acceso denegado.

Ejecución mediante DCOM.

La especificación COM de Microsoft es un elemento fundamental en la estructura de muchos de sus productos, incluyendo evidentemente el sistema Windows. Se trata de una serie de reglas que deben seguir los componentes desplegados en el sistema para poder interactuar entre ellos. Esto significa que COM no es un lenguaje de programación o una tecnología concreta, es la representación de un modelo o protocolo deben seguir los objetos creados para que puedan interactuar correctamente, estos objetos son conocidos como componentes y pueden ser binarios ejecutables, programas en algún lenguaje concreto, librerías DLL, utilidades en Powershell, etc.  Por otro lado,  DCOM representa un protocolo para el acceso a objetos COM utilizando el protocolo MS-RPC. Existe una buena cantidad de objetos COM que se pueden utilizar de forma remota utilizando DCOM y que en algunos casos, pueden ser útiles para la ejecución remota de comandos e incluso para llevar a cabo movimientos laterales sobre un sistema. La utilidad dcomexec.py en Impacket permite precisamente la ejecución los componentes COM MMC20.Application, ShellWindows y ShellBrowserWindow solamente hay que indicar cuál se debe utilizar con la opción «-object».

Impacket no solamente permite la ejecución remota de instrucciones con los scripts vistos en este y en el anterior post, cuenta con muchas más utilidades orientadas a entornos de Active Directory que se explorarán con más detalle en las siguientes partes de esta serie.

Un saludo y Happy Hack!
Adastra.

Categorías
Hacking Networking Programacion Services - Software

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

Puedes ver las cinco partes anteriores de este post aquí:
Enumeración en Linux para Post-Explotación – Parte 1.
Enumeración en Linux para Post-Explotación – Parte 2.
Enumeración en Linux para Post-Explotación – Parte 3.
Enumeración en Linux para Post-Explotación – Parte 4.
Enumeración en Linux para Post-Explotación – Parte 5.

En el sistema comprometido pueden haber utilidades que permitan acceder a características o información sensible y este es uno de los motivos por los que es importante, en un proceso de post-explotación, realizar un análisis de la memoria de los procesos encontrados así como consultar el listado de  GTFOBins para ver si alguno de los binarios disponibles en el sistema pueden ser aprovechados de algún modo. Estos dos puntos serán los que se explorarán en este post.

Análisis de la memoria en procesos.

Una vez se gana acceso al sistema es posible que algunos procesos tengan información sensible almacenada en la memoria, concretamente en la heap del programa. Si el sistema comprometido cuenta con herramientas de depuración como por ejemplo el GNU Dubugger (GDB) es posible que se pueda cargar dicho  proceso con el depurador y a continuación hacer un «dump» de la memoria. Para que esto funcione es necesario que el usuario con el que se está trabajando tenga permisos suficientes para acceder a dicho proceso, lo cual no siempre es posible pero es algo que se debe comprobar. Uno de los focos iniciales que podrían ser interesantes son aquellos procesos que se encuentran asociados a alguna conexión con un servidor remoto, especialmente aquellas que utilizan algún protocolo como FTP, SMTP, POP, IMAP, HTTP, entre otros, ya que en la memoria de dichos procesos se pueden encontrar credenciales de usuario y otros detalles interesantes en texto plano.

Para probar lo anterior, en la imagen se puede apreciar que se establece una conexión contra un servidor FTP y se puede ver que el proceso que está vinculado a dicha conexión es el «1724». A continuación, si es posible acceder al proceso con los permisos asignados a dicho usuario, se puede ejecutar el comando «gdb -p 1724». Una vez abierto el GDB se consultan las direcciones de memoria y a continuación, se ejecuta un volcado de lo que haya en la «heap» del proceso, que es sin duda la parte más interesante ya que es en donde se quedarán guardados algunos detalles sobre el proceso y otros objetos que se van creando sobre la marcha durante la ejecución del programa.

Como se puede apreciar, el volcado se ha generado correctamente gracias al comando «dump memory» de GDB, a continuación solamente hace falta salir del depurador y ejecutar un comando como «strings» para analizar la memoria. En este punto, dependiendo del tamaño del fichero, es posible que sea necesario filtrar con «grep» para entrar información que puede ser sensible, como por ejemplo usuarios y contraseñas. De hecho, para hacerlo de una forma más cómoda, dicho fichero se puede transferir a la máquina del atacante y posteriormente realizar el análisis correspondiente.

Uso de GTFOBins

Hace algunas semanas se ha publicado una serie de posts sobre Enumeración en Windows para Post-explotación y en la parte 6 de dicha serie se ha hablado sobre el proyecto LOLBas y su filosofía. El proyecto GTFOBins es similar pero orientado a sistemas Unix. Cuenta con una colección amplia de binarios y utilidades que se encuentran disponibles en sistemas Unix y que pueden servir para exfiltrar información, acceder a directorios restringidos y en algunos casos elevar privilegios. Algunos de los GTFObins más comunes se listan a continuación.

AWK

Uno de los usos más comunes de esta utilidad es precisamente el de ejecutar diferentes tipos de procesamientos sobre la salida que genera algún comando, no obstante tal como se indica en el proyecto de GTFOBins también se puede utilizar para generar una reverse shell.

DMESG

Se trata de una utilidad que en sistemas basados en Unix es de vital importancia para ver los registros, logs y eventos que se han ido produciendo en el sistema, especialmente útil para efectos de depuración de errores o fallos que se producen en el kernel. En algunas versiones de esta herramienta se encuentra disponible la opción -H que permite indicar un comando arbitrario, evidentemente dicho comando puede ser una shell local o una reversa. Otras alternativas para explotar esta herramienta se encuentran detalladas en GTFOBins

FIND

El comando FIND también es una de las utilidades más comunes en los sistemas basados en Unix a la hora de ejecutar búsquedas en el sistema. En algunas versiones de este binario se admite la opción «-exec» la cual permite la ejecución de una instrucción en el caso de que haya una coincidencia en la búsqueda. Por ejemplo, en la imagen que se enseña a continuación, en el momento en el que se encuentra el directorio «tmp» se ejecutan los comandos indicados, primero «/bin/sh» el cual genera una shell simple en el sistema y luego, una shell reversa con netcat. Algo bastante simple pero que permite ver la dinámica de este GTFOBin

Se trata de algunas técnicas que complementan las ya vistas y que evidentemente, también hacen parte de ese «check-list» que se suele llevar a cabo en la etapa de post-explotación en sistemas Linux. Si te ha parecido interesante te invito a que dejes un comentario en este post con tus impresiones.

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
Hacking

Hoy vengo a hablar de TU donación a #UNICEF – período de Febrero

El día 18 de febrero he publicado mi última obra en Amazon titulada «25 Técnicas aplicadas a campañas de Red Team y Hacking» en la que me he fijado dos objetivos, el primero de ellos es el de producir un documento que tenga un contenido útil para el lector, ya sea para su formación académica o como apoyo de su actividad profesional. El segundo, como muchos ya sabéis es el de recaudar fondos para donar a una ONG con la que personalmente me siento muy identificado: UNICEF. Como ya he comentado en el post «Hoy vengo a hablar de TU libro: 25 Técnicas aplicadas a campañas de Red Team y Hacking» las regalías abonadas por parte de Amazon se donarían a dicha ONG y la semana pasada ya se ha producido el primer pago, correspondiente al período de febrero tal y como se puede apreciar en la siguiente imagen

El importe total ha sido de 782,25. Amazon realiza una transferencia con las regalías a la cuenta bancaria de los autores y en cuanto he confirmado el pago en mi cuenta he procedido a realizar la donación.

 

Es una primera aportación que hemos hecho posible entre todos y habrán más en los próximos meses. Por supuesto, quiero agradecer a todas las personas que han comprado el libro y me han enviado sus apreciaciones y comentarios. Quiero agradecer a todas esas personas que como yo, creéis que tenéis a vuestra disposición las herramientas necesarias para ayudar a construir un lugar mejor para vivir. A todos aquellos que creéis que el sufrimiento de un niño no debe estar condicionado por una frontera, nación o raza. A todos aquellos que entendéis que simplemente no es justo y es inaceptable  que una persona en sus primeros años de vida no cuente con los medios mínimos para cubrir sus necesidades básicas. A todos aquellos que hacéis lo que podéis para salir adelante sin importar las dificultades y aún así sois capaces de poneros en el lugar de otras personas. En definitiva, a todas esas personas que aún sois capaces de sentir empatía por aquellos que legítimamente sufren y están oprimidos.

Finalmente, si eres alguien de UNICEF o cualquier otra ONG similar y has llegado hasta aquí, simplemente quiero decirte que soy una persona que cree en tu trabajo y aunque no te conozco de nada quiero que sepas que tienes todo mi respeto y admiración por la labor que haces. Espero que continúes haciéndolo porque aunque sé que es un trabajo duro, tiene impacto en la sociedad y debe seguir siendo así.

花有重开日,人无再少年。
言必信,行必果。

Un saludo y Happy Donation!
Adastra.