
Obtiene credenciales de Active Directory en texto plano si estás en la red interna pero fuera del entorno de AD.
Rompe el hielo con ese adorable entorno de Active Directory que tienes ahí. Cuando estás frío y solo mirando a una fiesta de Active Directory pero no posees ni una sola credencial de AD para unirte a la diversión, esta herramienta es para ti.
Automatiza secuencialmente 5 ataques de red internos contra Active Directory para proporcionarte credenciales en texto plano. Usa la opción --auto para adquirir automáticamente privilegios de administrador de dominio después de obtener un punto de apoyo.
Los siguientes ataques se realizan secuencialmente hasta el cuarto y quinto ataque, que se ejecutan en paralelo e indefinidamente.
Todos los hashes NetNTLMv2 capturados en las técnicas siguientes se descifran automáticamente con JohnTheRipper y una lista de contraseñas específica de AD de 1 millón de longitud.
rpcclient para encontrar hosts que acepten sesiones SMB nulasridenum para encontrar nombres de usuario válidos mediante RID cycling en hosts SMB nulostheHarvester para recopilar nombres de usuario adicionales potenciales desde un dominio de Internet especificadoP@ssw0rd y <temporada_actual><año>, por ejemplo, Spring2018smb-enum-sharesResponder.py para envenenar los protocolos de red de difusión/multidifusión de capa 2 (LLMNR, NBT-NS, mDNS) y capturar hashes NetNTLMv2ntlmrelayx.py y Responder.py para retransmitir hashes SMBRealizará los 5 ataques de red anteriores en orden. La fuerza bruta inversa y las subidas de archivos SCF suelen ser bastante rápidas, luego permanece en el ataque 3, Responder.py, durante 10 minutos por defecto. Después de ese tiempo, o del tiempo especificado por el usuario, pasará a los dos últimos ataques que se ejecutan en paralelo e indefinidamente.
Si se descubre algún host que permita sesiones SMB nulas, icebreaker utilizará ridenum para realizar RID cycling en busca de nombres de usuario válidos. Si usas la opción -d <somedomain.com>, theHarvester extraerá cualquier dirección de correo electrónico del sitio web especificado. Cualquier nombre de usuario de correo electrónico compatible con AD se agregará a la lista de nombres de usuario de fuerza bruta inversa. Icebreaker utiliza la librería asyncio para realizar la fuerza bruta inversa utilizando la herramienta linux rpcclient con 10 workers asíncronos.
El ataque de subida SCF abusa de los archivos Shell Command contra recursos compartidos de red anónimamente escribibles. Los SCF son archivos que pueden realizar acciones básicas como mostrar el escritorio o abrir una ventana del Explorador de archivos. Tienen la curiosa propiedad de permitirte establecer el icono de archivo a una ruta de red. Si estableces esta ruta de red a tu propia máquina, los usuarios que abran el recurso compartido en el Explorador de archivos te enviarán automáticamente su hash de contraseña NetNTLMv2. Icebreaker utiliza el script Nmap smb-enum-shares para encontrar recursos compartidos anónimamente escribibles, luego genera y sube automáticamente el SCF con la carga útil.
El ataque 3 utiliza Responder.py para envenenar protocolos de multidifusión/difusión LLMNR, NBT-NS y mDNS. Cuando los usuarios navegan a una ruta de red inexistente, Responder les dirá que tu máquina atacante es la ruta correcta. El hash de contraseña NetNTLMv2 del usuario ahora es tuyo. Responder capturará los hashes enviados mediante el ataque SCF, pero el siguiente ataque generalmente es más útil para capturar hashes SCF porque tiene el potencial de usar el hash para ejecución de comandos.
El relé SMB es un ataque de red antiguo donde los atacantes se colocan entre el cliente SMB y el servidor SMB. Esto permite a los atacantes capturar y retransmitir hashes NetNTLMv2 a hosts que tienen SMBv1 habilitado y la firma SMB deshabilitada. ntlmrelayx.py de la librería Impacket se utiliza para retransmitir mientras que Responder.py se utiliza para realizar un hombre en el medio de las conexiones SMB. Si el usuario del cliente SMB tiene derechos administrativos en algún host de la red que tenga la firma SMB deshabilitada, ntlmrelayx.py realizará la ejecución de comandos en ese host.
Una vez que ntlmrelayx retransmite un hash capturado, ejecutará un comando de powershell codificado en base64 que primero agrega un usuario administrativo (icebreaker:P@ssword123456) luego ejecuta una versión ofuscada y de omisión de AMSI de Mimikatz, seguida de una versión ofuscada y de omisión de AMSI de Invoke-PowerDump. La salida de Invoke-Mimikatz e Invoke-PowerDump se analiza en busca de contraseñas en texto plano o hashes NTLM y se entrega al usuario en la salida estándar, así como en el archivo found-passwords.txt. Los hashes NTLM, a diferencia de los hashes NetNTLMv2, se pueden usar igual que una contraseña en texto plano para autenticación en otros hosts AD. El único inconveniente es que desde el parche KB2871997 de Microsoft, solo la cuenta de administrador local integrada RID 500 se puede usar en ataques pass-the-hash.
El ataque final utiliza la herramienta mitm6 para realizar un ataque de hombre en el medio de IPv6 DNS contra toda la red. Esto obliga a los hosts de la red a usar la máquina del atacante como su servidor DNS. Una vez establecido como su servidor DNS, el atacante sirve archivos de configuración de proxy WPAD maliciosos a las víctimas y recopila sus hashes NetNTLMv2. Estos hashes se retransmiten usando ntlmrelayx.py para obtener más posibilidades de ejecución remota de código. Una cosa a tener en cuenta es que este ataque es propenso a causar problemas en la red. A menudo causa errores de certificado en las máquinas cliente en el navegador. También probablemente ralentizará la red. Sin embargo, la belleza de este ataque es que los entornos AD de Windows son vulnerables por defecto.
Si icebreaker se ejecuta con la bandera --auto [tmux/xterm], al llegar al ataque 4 icebreaker ejecutará Empire y DeathStar en una sesión de tmux o ventanas xterm. Con esta opción, en lugar de ejecutar mimikatz en el host remoto al que retransmitimos el hash, icebreaker agregará un usuario administrativo y luego ejecutará el código lanzador de powershell de Empire para obtener un agente en la máquina remota. DeathStar usará este agente para automatizar el proceso de conseguir administrador de dominio. Empire y DeathStar no se cerrarán cuando salgas de icebreaker.
El descifrado de contraseñas se realiza con JohnTheRipper y una lista de palabras personalizada. El origen de esta lista es merged.txt, que es cada contraseña de la cuenta de GitHub SecLists combinada. La lista de palabras fue podada e incluye solo contraseñas que no tienen: todo minúsculas, todo mayúsculas, todos símbolos, menos de 7 caracteres, más de 32 caracteres. Estas reglas cumplen con los requisitos de contraseña predeterminados de Active Directory y redujeron la lista de 20 millones a poco más de 1 millón, lo que hace que el descifrado de contraseñas sea extremadamente rápido.
Como root:
./setup.sh
pipenv install --three
pipenv shell
Puede que obtengas un error después de ejecutar pipenv install. Actualiza a una versión de pipenv superior a 11.9.0 si ese es el caso. Puedes clonar pipenv desde GitHub y simplemente apt-get remove python-pipenv && python setup.py install desde la carpeta.
Todavía hay algunos errores que resolver con la imagen Docker, por lo que es probable que esto te dé error, pero casi está listo. Desde el repositorio Git:
docker build --rm -t danmcinerney/icebreaker .
docker run danmcinery/icebreaker
O añade los comandos que normalmente añadirías a icebreaker (no olvides mapear volúmenes):
docker run -v $(pwd)/logs:/icebreaker/logs -v $(pwd)/hashes:/icebreaker/hashes -v $(pwd)/icebreaker-scan.xml:/icebreaker/icebreaker-scan.xml -v $(pwd)/submodules:/icebreaker/submodules -e PYTHONUNBUFFERED=0 danmcinerney/icebreaker -x icebreaker-scan.xml
**Nota: Querrás mapear puertos para los listeners con la bandera -p <host>:<container> de docker.
Ejecutar como root. Leer desde una lista separada por nuevas líneas de direcciones IP (IPs individuales o rangos CIDR) y en lugar de que ntlmrelayx añada un usuario y ejecute mimikatz en la víctima al retransmitir el hash, ejecutar un comando personalizado en la máquina víctima. En este ejemplo, le estamos dando un comando similar a lo que Empire podría darnos para un one-liner de lanzador de powershell.
./icebreaker -l targets.txt -c "powershell -nop -w hidden -exec bypass -enc WwFk..."
Leer desde una lista de hosts, indicar a Responder que use la interfaz eth0 en lugar de la interfaz de puerta de enlace predeterminada, dejar que Responder se ejecute durante 30m en lugar de los 10m habituales, y ejecutar los comandos predeterminados posteriores al relé de ntlmrelayx para volcar la SAM del servidor víctima.
./icebreaker -l targets.txt -i eth0 -t 30 -c default
Usar un archivo de salida XML de Nmap, omitir los cinco ataques y no descifrar hashes automáticamente, y usar una lista de contraseñas personalizada para el ataque de fuerza bruta inversa (nota: dado que este ejemplo omite el ataque 1 con -s rid, la lista de contraseñas especificada ni siquiera se usará; esto es solo un ejemplo)
./icebreaker.py -x nmapscan.xml -s rid,scf,llmnr,relay,dns,crack -p /home/user/password-list.txt
Uso de "disparar y olvidar": ingresar un archivo de objetivos, extraer nombres de usuario de correo electrónico de companydomain.com para agregarlos al ataque de fuerza bruta inversa, omitir el envenenamiento de IPv6 DNS de mitm6, y ejecutar Empire y DeathStar en ventanas tmux o xterm una vez que comience el ataque 4 para obtener administración de dominio automatizada. El objetivo de este uso es lanzar el comando el lunes a las 9 am y luego tomar un descanso corto e ininterrumpido hasta el viernes a las 4:30 pm, momento en el que regresamos a un shell de administrador de dominio esperándonos. Omitimos el ataque 5 (mitm6) porque a veces puede causar problemas de red y no queremos clientes enojados interrumpiendo nuestro merecido descanso.
./icebreaker.py -l targets.txt -d companydomain.com -s dns --auto [tmux/xterm]
smb-security-modeicebreaker:P@ssword123456Invoke-PowerDump para hashes SAMmitm6 y ntlmrelayx.py para envenenar IPv6 DNS con el fin de capturar hashes de usuario NetNTLMv2