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
Hacking Networking Services - Software

Entornos C2 sobre sistemas Windows con Shad0w: Uso de Beacons – Parte 2 de 2.

Este es el último post sobre el análisis a la herramienta Shad0w en el que se verá en más detalle el uso de los Beacons sobre sistemas Windows Server 2019 debidamente actualizados. Las referencias a los post anteriores se listan a continuación para entender lo que se ha hecho anteriormente y seguir el hilo de este artículo:

Entornos C2 sobre sistemas Windows con Shad0w: Evasión de mecanismos de seguridad – Parte 1 de 2.

Entornos C2 sobre sistemas Windows con Shad0w: Evasión de mecanismos de seguridad – Parte 2 de 2.

Entornos C2 sobre sistemas Windows con Shad0w: Uso de Beacons – Parte 1 de 2.

El Beacon de Shad0w sobre Windows Server 2019 actualizado.

Curiosamente en sistemas Windows Server 2019 los Beacons generados por Shad0w funcionan correctamente, tal como he explicado en post Entornos C2 sobre sistemas Windows con Shad0w: Evasión de mecanismos de seguridad – Parte 2 de 2. Partiendo de una sesión activa en dicho sistema se ha procedido a realizar pruebas con los comandos disponibles.

Comandos básicos de enumeración

Como ocurre con prácticamente todas las herramientas de post-explotación orientadas al «Command and Control», Shad0w cuenta con un conjunto de instrucciones que permiten enumerar el sistema rápidamente. Estos comandos permiten moverse por el sistema de archivos, crear directorios o ficheros y consultar información básica sobre la cuenta de usuario que se está utilizando para acceder al sistema.

Son comandos muy simples e intuitivos, pero hay que recordar que la herramienta responde de forma «asíncrona» a los comandos enviados, lo que significa que para no hacerse un lío con los resultados que devuelve la herramienta es conveniente esperar un poco, darle tiempo para que devuelva la salida correspondiente al último comando ejecutado.

Comandos para gestión de procesos y migración del Beacon

También cuenta con algunas instrucciones básicas para listar los procesos en ejecución y ver el proceso en el sistema comprometido que corresponde al Beacon.

Se trata de comandos simples y directos que permiten conocer el estado del sistema en ese momento y por supuesto, ver si existe la posibilidad de migrar a un proceso más estable o robusto. Esto último recuerda a Meterpreter ya que el Beacon de Shad0w también depende completamente de un proceso activo en el sistema y se ejecuta completamente en memoria, si dicho proceso muere la sesión también lo hará. En Shad0w existen algunos comandos que permiten: Migrar a otro proceso (migrate), Inyectar una copia del Beacon a otro proceso (binject) o inyectar un shellcode crudo (shinject) o una DLL en un proceso (dllinject). Para cada una de estas opciones hay un comando disponible en el interprete del Beacon.

Comandos para Post-explotación

Algunas instrucciones ayudan en el proceso de post-explotación en sistemas Windows que se debe llevar a cabo una vez se consigue acceso al sistema. Entre otras cosas, se encuentra disponible el comando «elevate» que incluye un exploit que intenta comprobar si la cuenta de usuario cuenta con el token SeImpersonate y si es el caso, intentar aprovecharse de dicha situación para elevar privilegios. A la fecha de redactar este post solamente está disponible dicho exploit y lo cierto es que no funciona siempre.


Por otro lado el comando «meterpreter» permite ejecutar en la memoria del proceso donde se ejecuta el Beacon un payload de Metasploit Framework, concretamente alguno de los de Meterpreter. Es una buena forma de obtener una sesión meterpreter y poder interactuar con el sistema utilizando todas las herramientas disponibles en Metasploit Framework, además el comando es bastante sencillo ya que basta con seleccionar el payload adecuado, establecer el host y puerto en donde se encuentra el handler de MSF en ejecución, lanzar y recibir la conexión.


Shad0w también cuenta con un soporte muy interesante a PowerShell, no solo para crear y/o ejecutar modulos o instrucciones en el sistema comprometido, sino que además se han implementado las herramientas disponibles en el proyecto GhostPack

Otro comando que resulta interesante y que nuevamente, se encuentra integrado en muchas herramientas similares a Shad0w es «mimikatz» el cual hace referencia a la herramienta del mismo nombre. Evidentemente, se trata de una herramienta que funcionará mejor si se cuenta con los privilegios adecuados para acceder a procesos y secciones de memoria sensibles.

Existen otras instrucciones adicionales que apoyan en cosas tan interesantes como la descarga o subida de ficheros o movimientos laterales por medio del establecimiento de servidor proxy y en el caso de Windows Server 2019, lo mejor de todo ha sido que no se ha quejado en ningún momento. Se han podido ejecutar todas y cada una de las instrucciones sin que los mecanismos de seguridad incluidos en el sistema detectarán la intrusión o interrumpieran la interacción del atacante.

Espero que el análisis de esta herramienta te haya parecido interesante o útil. Si es el caso, dale a compartir y escribe un comentario. 🙂

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.

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

10 Subclaves interesantes en el registro de Windows para Hacking

Uno de los elementos más importantes en un sistema Windows es el registro, de hecho, es probablemente el más importante. En él se almacena información que utiliza el sistema operativo para garantizar su correcto funcionamiento, además suele ser empleado también por parte de aplicaciones que necesitan acceder a información de todo tipo durante su ejecución. Desde el punto de vista del pentesting/hacking hay algunas subclaves que son importantes y que merece la pena conocer ya que pueden ser vitales en un proceso de post-explotación. En este post se listarán solamente algunas dichas claves y su utilidad.

  1. HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS NT\CURRENTVERSION\WINLOGON
    Se trata de una conocida subclave que almacena información sobre el proceso de login para cada usuario en el sistema. Es especialmente útil a la hora de establecer mecanismos de persistencia pero también es posible consultar  las credenciales que se encuentran cacheadas (en el caso de que haya alguna, obviamente).
  2. HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\POLICIES\SYSTEM\
    En esta subclave se almacenan valores relacionados con las configuraciones y políticas definidas en el sistema. Puede resultar especialmente interesante saber si el mecanismo UAC se encuentra habilitado en el sistema o no. Para ello se consulta el valor de EnableLUA y en el caso de que sea 0x1 indica que se encuentra activo y se solicita usuario y contraseña para ejecutar el binario con privilegios altos y si es 0x0 significa que no lo está. No obstante, también puede ser 0x2 (Always notify me), 0x3 (igual que 0x1 pero no necesita Secure Desktop), 0x4 (igual que 0x2 pero no necesita Secure Desktop), 0x05 (pide confirmación al administrador para ejecutar). Otros valores que resultan interesantes con el objetivo de entender la política de seguridad definida en el sistema son EnableInstallerDetection, ValidateAdminCodeSignatures y PromptOnSecureDesktop. Como siempre, la documentación de Microsoft ayuda a entender el funcionamiento de estas y otras claves del registro: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-gpsb/958053ae-5397-4f96-977f-b7700ee461ec
  3. HKLM\SYSTEM\CURRENTCONTROLSET\SERVICES
    En esta subclave se almacena información sobre servicios que se encuentran registrados en el sistema. La lista de subclaves y valores que cuelgan de esta puede es bastante extensa, por ese motivo conviene filtrar por aquellos elementos sensibles, como por ejemplo los servicios cuyas subclaves pueden ser manipuladas directamente, lo que permitiría hacer cosas como modificar el binario que ejecutan (ImagePath). Por ejemplo, el siguiente comando intenta guardar cada subclave en un fichero y a continuación intenta restaurar dicho fichero. Si la operación se lleva a cabo sin errores de permisos en alguna de dichas subclaves, indica que para esas subclaves concretamente se podrá manipular su configuración.
    for /f %a in (‘reg query hklm\system\currentcontrolset\services’) do del %temp%\reg.hiv 2>nul & reg save %a %temp%\reg.hiv 2>nul && reg restore %a %temp%\reg.hiv 2>nul && echo La subclave %a se puede manipular
  4. HKEY_LOCAL_MACHINE\SOFTWARE
    En esta subclave queda registro de los programas instalados en el sistema y una de las actividades típicas en post-explotación es la de verificar los permisos sobre los directorios en donde se encuentran los binarios o librerías DLL con el objetivo de o bien, sustituir un binario legitimo por otro malicioso o sustituir alguna DLL, lo que también se conoce como «DLL Hijaking».  Una forma rápida y cómoda de hacer esta consulta se encuentra en el comando icacls

  5. HKCU\SOFTWARE\MICROSOFT\TERMINAL SERVER CLIENT\SERVERS
    Se trata de una clave en la que se pueden consultar las conexiones RDP que se han guardado previamente. Esta información también puede quedar almacenada en HKEY_USERS\<SID>\Software\Microsoft\Terminal Server Client\Servers\  evidentemente es algo que se debe consultar en post-explotación ya que puede ser interesante de cara a comprometer otros sistemas en el entorno de red u obtener información sensible.
  6. HKCU\SOFTWARE\SIMONTATHAM\PUTTY
    Si en el sistema comprometido se encuentra instalado PuTTY es una buena idea explorar algunas de las subclaves que este software suele instalar en el registro. Concretamente es conveniente ver HKCU\Software\SimonTatham\PuTTY\Sessions y HKCU\Software\SimonTatham\PuTTY\SshHostKeys para verificar las conexiones que se han establecido anteriormente y a lo mejor, usuarios y contraseñas/claves que se han utilizado para el proceso de autenticación.
  7. HKCU\Software\OpenSSH\Agent
    En Windows 10 ya es posible tener un servidor OpenSSH que se encontrará integrado en el sistema operativo como cualquier otro servicio y que será útil para acceder de forma remota via SSH, esto es posible gracias a las «Windows Capabilities» de «OpenSSH Server» y «OpenSSH Client». Del mismo modo que ocurre en sistemas Linux, en sistemas Windows se almacena información sobre dicho servicio y las conexiones que se han establecido anteriormente y que puede ser sensible, solamente que en el caso de Linux dicha información queda guardada en <USER>/.ssh y en el caso de Windows queda en esta subclave del registro. Si se cuenta con privilegios sobre el sistema se puede acceder a «HKLM» en lugar de «HKCU» en donde posiblemente se podrá acceder a más información almacenada.
  8. HKEY_LOCAL_MACHINE\SYSTEM\CURRENTCONTROLSET\CONTROL\LSA
    Desde la versión 8.1 de Windows se han implementado algunas mejoras que impiden que un atacante pueda leer información sensible del LSASS o incluso inyectar código. En esta subclave se encuentran algunos valores interesantes de cara a proteger el LSASS principalmente diseñados para evitar que cualquier proceso malicioso o no confiable pueda leer valores sensibles que se encuentran almacenados en dicho proceso, como pueden ser credenciales cacheadas. En este sentido hay dos que resultan especialmente interesantes: RunAsPPL y LsaCfgFlags. La primera habilita la protección LSA como proceso protegido en un único equipo, si se desea hacerlo a nivel de directiva de grupo se debe abrir la consola GPMC. La segunda es una característica introducida en Windows 10 que se encarga de proteger las credenciales en la máquina local e imposibilitar la aplicación de técnicas PTH (Pass The Hash).

  9. HKLM\SYSTEM\CURRENTCONTROLSET\CONTROL\SECURITYPROVIDERS\WDIGEST
    WDigest es un protocolo que ha estado presente en Windows desde hace más de una década y ha sido utilizado para realizar el proceso de autenticación de usuarios vía HTTP, almacenando en texto plano las credenciales de los usuarios en el LSASS (Local Security Authority Subsystem Service). Esta «característica» ha sido explotada durante años con herramientas como Mimikatz o Lazagne aunque en versiones recientes de Windows (a partir de Windows 8.1) se trata de un comportamiento que viene desactivado por defecto, es decir, que las credenciales ya no se guardan en texto plano en en el LSASS. No obstante, la subclave indicada en este punto tiene un par de valores que permiten activar o desactivar esta característica. Si tienen el valor 0x0 indicará que no se almacenará dicha información sensible en el LSASS, por lo tanto en post-explotación se puede editar estas claves (con los privilegios adecuados) y después de reiniciar el sistema se activará nuevamente esta característica.
  10. HKCU\SOFTWARE\POLICIES\MICROSOFT\WINDOWS\INSTALLER
    En esta clave se encuentra un valor llamado AlwaysInstallElevated que resulta interesante para la elevación de privilegios, ya que cuando se encuentra activado (valor 0x01) indica que cualquier usuario sin importar sus privilegios en el sistema, puede ejecutar binarios msi como NT AUTHORITY\SYSTEM. Por lo tanto, si al consultar este valor resulta que se encuentra activo, sería posible crear un binario msi malicioso y a continuación, ejecutarlo en dicho sistema sabiendo que las instrucciones de ese binario se lanzarán con privilegios de administrador.

Como se puede ver en este corto listado de subclaves, la importancia que tiene el registro de Windows es evidente y no solamente para llevar a cabo procesos de post-explotación del sistema sino también para gestionar algunas de sus características vitales. No obstante, hay que saber qué tocar ya que editar algunos valores del registro pueden hacer que el sistema deje de funcionar correctamente. Aquí se han listado solamente 10 subclaves que son importantes o relevantes para post-explotación, pero hay muchas más, así que si conoces alguna otra que merezca la pena incluir, comparte y deja un comentario en este post. 🙂

Un saludo y Happy Hack.

Adastra.

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

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

Siguiendo con lo que se ha explicado durante la primera parte de estas entradas sobre enumeración y post-explotación básica en sistemas Windows, se listan a continuación otros detalles interesantes que hay que explorar, teniendo en cuenta que aunque hay scripts y herramientas que ya hacen este tipo de labores de forma automática, resulta conveniente saber cómo llevar a cabo el proceso y seguir la metodología manualmente. Hacerlo así le permite al pentester analizar de una forma más detallada la información, evitar cualquier descuido o pasar por alto algún detalle interesante/importante.

Búsqueda de ficheros y directorios.

En sistemas Linux es común ejecutar comandos como «find» o «locate» con el objetivo de encontrar ficheros con permisos o características especiales, por ejemplo aquellos cuyo usuario es root y tienen permisos demasiado abiertos o que tienen el SUID habilitado, entre otras cosas. Esto en Windows también se tiene en cuenta durante el proceso de enumeración. Se cuenta con los comandos dir, icacls o find.
El comando dir permite realizar búsquedas muy especificas sobre un directorio concreto y listar aquellos contenidos que pueden resultar de interés. La sintaxis es simple, el siguiente comando permite buscar por un fichero concreto en la estructura de directorios:
C:\> dir /b /s [Directorio]\[NombreFichero]

Por ejemplo, algunas instrucciones útiles con dir incluyen:

dir /s *pass* == *cred* == *vnc* == *.config*
findstr /si password *.xml *.ini *.txt

El comando «find» en Windows es similar al «grep» en Linux y permitirá filtrar los resultados, por ejemplo se podrá simplemente contar el número de resultados devueltos por el comando «dir» sin enseñar los resultados con un comando como el siguiente:
C:\> [ComandoDIR] | find /c /v «»

Con la opción /c se cuenta el número de líneas devueltas y con /v indica que enseñe las lineas que no contienen nada («»).

El comando icacls también resulta útil para obtener información sobre permisos débiles en ficheros almacenados en el sistema. Por ejemplo:

icacls «C:\Program Files\*» | findstr «(F)» | findstr «Everyone»
icacls «C:\Program Files (x86)\*» | findstr «(F)» | findstr «Everyone»

Permitirá listar aquellos ficheros en los directorios indicados que tienen todos los permisos habilitados para todos los usuarios.

Entorno de red

En la etapa de post-explotación y enumeración del sistema también interesa obtener detalles sobre el entorno de red, por ejemplo, conexiones que se encuentran establecidas con otros sistemas, puertos abiertos e interfaces de red. Esto último es especialmente interesante de cara a aplicar técnicas de pivoting y port-forwarding. Para ello se cuenta con los típicos comandos ipconfig, netstat, arp y route

El comando netsh también resulta útil en esta etapa con el objetivo de ver el estado del firewall e incluso, en algunos casos, para crear túneles que permitan pivotar en un entorno de red local que podría no ser accesible para el atacante.

Netsh en sistemas Windows es muy flexible y potente a la hora de configurar el entorno de red. Permite establecer el modo de asignación de IPs, ya sea vía DHCP o asignación manual. También permite habilitar o deshabilitar el Firewall de Windows, si se cuenta con los privilegios adecuados como resulta evidente.

Por otro lado, el comando route también es importante para entender el entorno de red en el que se encuentra el sistema comprometido.

 

Tareas programadas.

Otro elemento importante de la lista de pruebas que se deben efectuar en la etapa de enumeración del sistema consiste en obtener información sobre las tareas programadas que se encuentran en ejecución. Ver detalles como por ejemplo el usuario con el que se ejecutan dichas tareas, la periodicidad o si se puede cambiar su configuración son cuestiones de gran interés a la hora de elevar privilegios. Nuevamente, existen comandos en sistemas Windows que permiten obtener este tipo de información de cara a un proceso de elevación de privilegios o de post-explotación.

Por otro lado, aunque lo siguiente realmente se probaría en la etapa del listado de servicios y características, es importante detectar aquellos servicios que pueden ser vulnerables a Unquoted Service Path. Para ello se puede utilizar WMIC y listar aquellos servicios que se encuentran habilitados en el sistema y se prestan a dicha situación.

En este caso, se puede ver concretamente un servicio cuyo binario no se ha especificado con las comillas dobles, si se ubica un programa malicioso en «C:\\Program.exe», ¿qué hará Windows? 🙂

En este post se han listado algunas otras pruebas que se llevan a cabo en post-explotación de sistemas Windows, siendo aún cuestiones muy básicas y tal como se ha mencionado en la entrada anterior, este tipo de operaciones también se pueden realizar con Powershell o incluso con herramientas automatizadas como Metasploit Framework, Empire Framework (del que ya se ha hablado en este blog) o incluso IBombShell, de la que se hablará próximamente.

Un saludo y Happy Hack!
Adastra.