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

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

Demostración en vídeo del post

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

Comandos básicos

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

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

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

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

Carga dinámica de DLLs y binarios

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

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

Carga y ejecución de «Donuts»

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

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

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

Un saludo y Happy Hack!
Adastra.

 

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

Técnicas y herramientas para ataques de Phishing con MalDocs – Parte 2 de 2

Demostración en vídeo del post

En el post anterior se ha mencionado algunas de las herramientas básicas a la hora de crear documentos ofimáticos maliciosos, los cuales evidentemente pretenden comprometer un sistema objetivo. Este tipo de ataques entran en la categoría de «client-side» dado que es necesaria la interacción con una víctima para que «ejecute» el payload que se le ha enviado y para ello, normalmente son necesarias técnicas de ingeniería social. En este post, se mencionará otras herramientas útiles que servirán para demostrar el impacto de este tipo de ataques.

Captura de Hashes con NTLM_Theft

Hace algunos meses Jesús Rufo nos hablaba en este blog sobre la herramienta NTLM_Theft, la cual se encuentra desarrollada en Python y se enfoca en la generación de diferentes tipos de ficheros maliciosos, entre los que se incluyen documentos en formato DOCX y XLS. Una de las novedades que incorpora esta herramienta es que cada uno de los documentos generados implementa y se aprovecha de características propias del software que procesa el documento con el objetivo de extraer hashes NTLM. Por ejemplo, en el caso de generar un documento DOCX, la herramienta se encarga de hacer una petición SMB a un sistema remoto en busca de una imagen y para esto, se intenta llevar a cabo el típico proceso de «reto-respuesta» del protocolo NTLM. La herramienta permite generar un documento que hace referencia a una supuesta imagen en una IP que, evidentemente, es controlada por el atacante. En el caso de generar un documento XLS se sigue la misma dinámica, pero en ese caso crea una hoja de cálculo e  introduce una celda en ella que tiene la instrucción «externalcell://» la cual obliga a Excel a ejecutar la petición NTLM inicial para el proceso de autenticación en el servidor SMB y nuevamente, el atacante podrá capturar dicha petición utilizando Impacket, Responder.py, Metasploit Framework o cualquier otra utilidad similar.

Cuando el documento XLSX creado se abra en el sistema de la víctima, se podrá ver en la terminal de responder cómo se reciben los hashes del usuario y en ese momento, sería posible aplicar un proceso de cracking con el objetivo de romper dicho hash.

Automatización del ataque con Python

Lo que hace NTLM_Theft está muy bien por varias razones, pero la más interesante de todas es que es difícil de detectar ese tipo de ataques y mejor aún, dada su simplicidad se puede crear un script en cualquier lenguaje que automatice el proceso con pocas instrucciones. Por este motivo he creado un script simple que automáticamente levanta el módulo de captura SMB disponible en Metasploit Framework y gracias a la librería xlswritter, se crea un fichero XLS con una celda que contiene la instrucción «external://». Dicha instrucción hace referencia al servidor donde se está ejecutando el módulo de Metasploit Framework así que cuando se transfiera dicho documento y la víctima lo abra, se recibirán automáticamente los hashes NTLM.

Es un script que he creado en pocos minutos mientras escribía este post y por supuesto, se pueden hacer muchas más cosas pero se trata de una simple prueba de concepto que ayudará a entender la facilidad con la que se pueden ejecutar estos ataques y el impacto que puede suponer para la seguridad.

Si este post y el anterior te han gustado, deja un comentario y si despierta vuestro interés, escribiré más sobre este tipo de técnicas ya que hay muchas más herramientas y alternativas para «jugar» con MalDocs.

Un saludo y Happy Hack!
Adastra.

Categorías
Explotación de Software Hacking MetaSploit Networking

Técnicas y herramientas para ataques de Phishing con MalDocs – Parte 1 de 2

Demostración en vídeo de este post

Las campañas de Red Team suelen tener un componente de Phishing que típicamente brinda el acceso inicial a uno o varios sistemas en el entorno comprometido. Cuando se crea un «Phishing assessment» hay una serie de técnicas y herramientas que apoyan en todo el proceso y cuando todo esto se monta sobre una infraestructura bien pensada y con pretextos orientados al target en cuestión, los resultados suelen ser muy satisfactorios. En este post se proporciona un listado de algunas técnicas y herramientas habituales para campañas de Phishing, concretamente enfocadas al uso de MalDocs (documentos ofimáticos maliciosos).

Gophish

Se trata de un framework opensource para el establecimiento y creación de todo el circuito del que está compuesto una campaña de Phishing. Permite establecer los servidores SMTP que se utilizarán para el envío de los correos electrónicos, definición el mensaje con otros elementos como ficheros adjuntos y enlaces que pueden contener sitios clonados, agrupaciones de los correos a los que se van a enviar los mensajes de phishing y un seguimiento completo de cada campaña. Como ocurre con otras herramientas similares a ésta, el objetivo es el de proporcionar un entorno de pruebas para poder evaluar el riesgo de este tipo de ataques en cualquier empresa y no está diseñada para apoyar en las actividades de un ciberdelincuente. Gophish está desarrollado en GO y como muchos otros proyectos que se han ido creado últimamente en este lenguaje, es posible descargar un binario de la herramienta en diferentes sistemas operativos (Windows, Linux y MacOS).
Una vez se ejecuta el binario correspondiente, aparecerá en la terminal el puerto utilizado para la administración web de la herramienta.

El usuario por defecto es «admin» y la contraseña «gophish», sin embargo esto se puede cambiar en la gestión de usuarios de la aplicación. La herramienta se caracteriza por su simplicidad y lo bien diseñada que se encuentra. Las opciones disponibles en el panel lateral izquierdo ayudan a entender el funcionamiento de la herramienta. Probablemente la opción más importante es precisamente la de «Sending Profiles» ya que es ahí donde se definen los detalles de conexión a los servidores SMTP que utilizará GoPhish para el envío de los correos electrónicos. Las demás opciones permiten definir enlaces maliciosos, los mensajes que se van a enviar (con texto, imágenes, enlaces y adjuntos) y los grupos de emails a los que se dirige la campaña. Finalmente, en la opción  «Campaigns» es en donde se configura todo y gracias a un asistente muy simple, es posible seleccionar el servidor SMTP, grupo de emails, el mensaje a utilizar y planificación de la campaña. Una vez  todos los detalles se encuentran definidos y se lanza la campaña, en la opción «Dashboard» se pueden apreciar todos los detalles.

SI bien es cierto que no es una herramienta orientada a MalDocs, es fundamental en la etapa de «Delivery» de dichos documentos, por ese motivo merece la pena mencionarla.

Macros generadas con Unicorn y Macro_Pack

Una vez se tiene planificado cómo enviar el documento malicioso a la víctima, es el momento de prepararlo. Para ello es posible que el mejor enfoque sea crear una muestra maliciosa desde cero y no utilizar herramientas muy extendidas, con esto la rutina maliciosa tendrá mejores capacidades de evasión ante los mecanismos de seguridad implantados en el objetivo. No obstante resulta interesante conocer algunas de las utilidades que se encuentran disponibles para la generación de documentos maliciosos, tales como Unicorn y Macro_Pack.

Unicorn es una herramienta muy simple que se puede dominar rápidamente leyendo la documentación que se encuentra disponible en el repositorio. Los ejemplos que se encuentran descritos en la documentación son los mismos que aparecen cuando se ejecuta el script «unicorn.py» con la opción «–help» y como se puede apreciar, todos ellos están orientados a ataques «client-side». Se puede ver, entre otras cosas, la generación de macros maliciosas que se pueden incrustar en documentos para Microsoft Office y la generación de instrucciones en PowerShell. Es cualquier caso, es posible incluir un payload de Metasploit Framework, Cobalt Strike o una rutina maliciosa personalizada.

Como se puede apreciar, hay un ejemplo para generar una Macro maliciosa en Cobalt Strike y Metasploit Framework. Cuando se ejecuta dicho comando se genera automáticamente un documento «.txt» en el mismo directorio donde se encuentra la herramienta con todo el código de la Macro, el cual ahora basta con incluirlo en un documento de Office y transmitirlo a la víctima. Si el payload utilizado es del tipo «reverse» evidentemente será necesario levantar el «handler» correspondiente en la máquina del atacante (en la misma IP y puerto que se ha indicado en la ejecución de Unicorn».

Una vez que se ejecuta dicho Macro en la máquina de la víctima, se podrá obtener una reverse shell si es este el payload que se ha indicado en la ejecución de Unicorn.

Por otro lado, Macro_pack es una herramienta que si bien está orientada a la generación de MalDocs como Unicorn, funciona de un modo un poco diferente, ya que se encarga de generar directamente el documento partiendo de una macro dada, la cual ha podido ser generada con Metasploit Framework, Cobalt Strike, Empire Framework o incluso manualmente. Una de las características de esta herramienta es que intenta ofuscar algunas de las instrucciones con el fin de mejorar las capacidades de evasión de la muestra maliciosa. Para ello, aplica las técnicas habituales que consisten en la manipulación de los nombres de variables y funciones, cambiar el orden de ciertas instrucciones o definir alias de aquellas funciones que hacen parte de la API de Windows. Si bien hace un par de años las técnicas aplicadas por Macro_pack funcionaban bien para la evasión de AVs en el objetivo, a día de hoy prácticamente cualquier AV es capaz de detectar el código como malicioso.
Para usar Macro_pack basta con descargar el binario (EXE) disponible en el repositorio de GitHub y ejecutarlo indicando la ubicación del código de la macro y el formato que se debe usar.

Como se puede ver, la herramienta ejecuta varias operaciones antes de generar el documento, el cual ahora se puede transmitir a la víctima. Es importante tener en cuenta que la Macro se ejecutará de forma automática si las macros se encuentran habilitadas en el sistema objetivo, por lo tanto es importante tener el «handler» esperando la conexión antes de enviar el documento malicioso.

En el siguiente post se hablará de otras técnicas y herramientas para la generación de documentos maliciosos y ataques client-side.

 

Un saludo y Happy Hack!
Adastra.

Categorías
Hacking Web Applications

HackMyVM: Plataforma web para aprender y practicar Pentesting

HackMyVM es una plataforma web para aprender y practicar Pentesting, nos invita a resolver desafíos de tipo CTF (Capture The Flag) donde la meta es conseguir las banderas o flags. Se creó en verano de 2020, inicialmente la idea era tener una página web donde poder descargar maquinas virtuales (VMs) tanto creadas por la plataforma como por la comunidad, pero fue creciendo y fuimos agregando, modificando, o incluso eliminando cosas tanto por ideas nuestras como sugeridas por la gente que participa con el fin de mejorar día a día la web y la comunidad en general.
Actualmente contamos con unos 1500 usuarios, 130 maquinas vulnerables (VMs) y como novedad Venus con 50 retos.

 

¿Qué hay en HackMyVM?

A dia de hoy tenemos 2 tipos de wargames:

1) Machines: Son las maquinas virtuales vulnerables (VMs), existen varias dificultades (Fácil, Media y Difícil). Todas ellas disponen de vulnerabilidades las cuales se tienen que identificar y explotar para capturar las flags de usuario y de root.
Las maquinas se descargan y se ejecutan de manera local, con lo cual no es necesario utilizar una VPN y todo queda en un entorno controlado por el usuario.

2) HMVLabs: Es un laboratorio (online) donde te conectas vía SSH y vas encontrando retos con sus correspondientes misiones que conforme vas completando avanzas al siguiente nivel y muy orientado a GNU/Linux en cuanto a movilidad se refiere. Actualmente solo está el primer capítulo que sacamos recientemente pero la idea es que surjan más con diferentes temáticas (siempre orientado a la seguridad).

¿Hay que pagar algo?

El registro es gratuito, solo se necesita un nombre de usuario y un password, el email no se requiere. Tanto las maquinas como los HMVLabs también son gratuitos y no existe ningún tipo de plan «Premium/VIP». La plataforma esta hecha sin animo de lucro y solo para compartir y aprender.

¿Privacidad?

Valoramos la privacidad y por ello no guardamos ningún tipo de log del usuario (únicamente 72 horas por tema de posibles debugs/funcionamiento y posteriormente es eliminado). Tampoco guardamos ningún dato personal (por ello tampoco pedimos el email en ningún momento).

¿Quieres colaborar?

Creemos que colaborar es importante, ademas muchas veces nos han propuesto ideas que hemos implementado o incluso nos han ayudado a implementar. Esto es un trabajo en «equipo» y al final, al no ser una empresa sino un grupo de personas interesadas en la seguridad, es mas fácil el discutir ideas y demás.
Cualquiera puede colaborar de muchas formas, por ejemplo, existe la sección «Submit» donde cualquiera puede subir su maquina virtual vulnerable (VM) o sus retos, los cuales una vez los validamos, se comparten con el resto del mundo. También puede compartir su «Writeup» con el paso a paso de la resolución del CTF y así ayudar a otros usuarios.
Y cualquier idea es bien recibida 🙂

Redes sociales

Estamos en Twitter, Mastodon y Discord, recientemente se ha creado un server de Discord para habla hispana.

Escrito por @d4t4s3c

Categorías
Explotación de Software Hacking

Post-explotación en sistemas Windows con WinPEAS

Demostración en vídeo del post

Existen varias utilidades y herramientas que ayudan en los procesos de post-explotación en sistemas Windows, la mayoría de ellas permiten detectar malas configuraciones o vulnerabilidades para la elevación de privilegios, otras parten de la base que ya se ha llevado a cabo el proceso de elevación y ahora se pretende ejecutar diferentes tipos de ataques como es el caso de Mimikatz, GhostPack o muchos de los módulos disponibles en Empire Framework, sin embargo hay una herramienta muy potente que si bien se ha mencionado anteriormente en este blog, merece un post dedicado. Se trata de WinPEAS. Es una herramienta que permite detectar vulnerabilidades típicas en sistemas Windows que pueden conducir a la elevación de privilegios y aunque en este post se hablará de esta utilidad, en el repositorio de Carlos Polop hay utilidades que siguen esta misma dinámica para sistemas basados en Linux y MacOS.

USO DE WINPEAS

En primer lugar, se debe obtener el binario correspondiente o bien compilando el proyecto o utilizando el que ya se encuentra disponible en el repositorio, concretamente en este enlace. La forma recomendada de trabajar es descargando la solución .NET del proyecto y compilarla luego con el Visual Studio .NET, así se tendrá la última versión disponible con todos los cambios y mejoras que se hayan subido al repositorio, además, tal como se indica en la documentación, de esta forma también se puede instalar y ejecutar la herramienta DotFuscator que se integra en Visual Studio .NET y permite comprimir un poco más el binario y alterar sus instrucciones. Aunque el objetivo de DotFuscator es el de ocultar el código para que sea más difícil de decompilar y acceder al código fuente del programa, un efecto lateral de esto es que precisamente ayuda un poco en la evasión de sistemas de AV que pueden estar instalados en el sistema comprometido. Es una utilidad que simplemente recibe el ejecutable que se quiere «ofuscar» y realiza el proceso. Para instalar este complemento hay que escribir en la barra de búsqueda de componentes (CTR+Q) «dotfuscator» y seguir el asistente que se enseña. El proceso puede tardar varios minutos pero es muy sencillo.

Una vez instalada la aplicación se puede abrir dirigiéndose a «Herramientas -> PreEmptive Protection – Dotfuscator Community». Y ahora, basta simplemente con seleccionar el binario de WinPEAS, ya sea que se haya compilado desde la solución .NET o se utilice la versión precompilada disponible en el repositorio.
Una vez se tiene el binario es necesario ejecutarlo en el sistema comprometido y para ello, o bien se puede subir a dicho sistema o aplicar alguna técnica del tipo fileless. Independientemente de la técnica utilizada, cuando se ejecuta la herramienta lo primero por lo que destaca es por su orden y limpieza. Se puede ver que tiene un esquema de colores que permite ver rápidamente información útil desde la perspectiva de un atacante o del administrador, así aunque se produzcan cientos de trazas será distinguir aquellas que pueden resultar más interesantes.

Cuando se ejecuta la herramienta sin ningún argumento se aplican todas las pruebas disponibles, lo que significa que el proceso puede tardar varios minutos en completarse. La herramienta cuenta con varias opciones que se indican desde la terminal y que permiten obtener información muy concreta sobre procesos, servicios, aplicaciones instaladas, componentes de red, entorno del sistema entre otras cosas.  Para ver la lista de opciones completa se puede consultar el siguiente enlace o ejecutar la herramienta con el parámetro «help»

Simplemente leyendo los parámetros es fácil entender para qué sirven, además se pueden ejecutar varios al mismo tiempo, de esta manera se puede consultar información de elementos concretos del sistema. Si se pretende guardar toda la información que aporta la herramienta en un fichero de log, tal como se puede ver en el listado de opciones es posible indicar «log=<fichero>» para que toda la información quede guardada en un fichero y no aparezca en la terminal.
Por otro lado, hay dos opciones que resultan especialmente interesantes, la primera es «quiet» que deshabilita el banner que aparece cuando se ejecuta la herramienta y el segundo es «wait», el cual permite ir analizando los resultados aportados por la herramienta paso a paso, es decir, cuando la herramienta termina de ejecutar las pruebas para una categoría concreta, espera a que el usuario indique que quiere continuar con las siguientes pruebas.

Como se puede ver es una herramienta que está bien hecha y que facilita los procesos de post-explotación, especialmente en aquellos en los cuales la cantidad de información obtenida por parte de otras herramientas o manualmente es difícil de manejar y es como «buscar una aguja en un pajar». Precisamente, por ese motivo utilizar WinPEAS es una de las mejores formas de ver qué técnicas se pueden aplicar o qué vulnerabilidades se pueden explotar para elevar privilegios en sistemas Windows.

Un saludo y Happy Hack!
Adastra.