
Explota la configuración predeterminada de IPv6 en Windows para suplantar DNS a través de DHCPv6, redirigiendo el tráfico de la víctima para el relay de credenciales y ataques de intermediario (man-in-the-middle) durante pruebas de penetración.
mitm6 es una herramienta de pentesting que explota la configuración predeterminada de Windows para tomar el control del servidor DNS predeterminado. Lo hace respondiendo a mensajes DHCPv6, proporcionando a las víctimas una dirección IPv6 de enlace local y estableciendo el host del atacante como servidor DNS predeterminado. Como servidor DNS, mitm6 responderá selectivamente a las consultas DNS que el atacante elija y redirigirá el tráfico de las víctimas a la máquina del atacante en lugar del servidor legítimo. Para una explicación completa del ataque, consulte nuestro blog sobre mitm6. Mitm6 está diseñado para funcionar junto con ntlmrelayx de impacket para la suplantación de WPAD y la retransmisión de credenciales.
mitm6 es compatible con Python 2.7 y 3.x. Puede instalar los requisitos para su versión con pip install -r requirements.txt. En ambos casos, mitm6 utiliza los siguientes paquetes:
Para python 2.7, utiliza el módulo de backport ipaddress.
Puede instalar la última versión desde PyPI con , o la última versión desde el código fuente con después de clonar este repositorio de git.
pip install mitm6python setup.py installDespués de la instalación, mitm6 estará disponible como un programa de línea de comandos llamado mitm6. Dado que utiliza captura de paquetes sin procesar con Scapy, debe ejecutarse como root. mitm6 debería detectar su configuración de red por defecto y usar su interfaz principal para su suplantación. La única opción que probablemente necesitará especificar es el domain de AD que está suplantando. Para ajustes avanzados, las siguientes opciones están disponibles:
usage: mitm6 [-h] [-i INTERFACE] [-l LOCALDOMAIN] [-4 ADDRESS] [-6 ADDRESS] [-m ADDRESS] [-a] [-r TARGET] [-v] [--debug]
[-d DOMAIN] [-b DOMAIN] [-hw DOMAIN] [-hb DOMAIN] [--ignore-nofqdn]
mitm6 - pwning IPv4 via IPv6
For help or reporting issues, visit https://github.com/dirkjanm/mitm6
optional arguments:
-h, --help show this help message and exit
-i INTERFACE, --interface INTERFACE
Interface to use (default: autodetect)
-l LOCALDOMAIN, --localdomain LOCALDOMAIN
Domain name to use as DNS search domain (default: use first DNS domain)
-4 ADDRESS, --ipv4 ADDRESS
IPv4 address to send packets from (default: autodetect)
-6 ADDRESS, --ipv6 ADDRESS
IPv6 link-local address to send packets from (default: autodetect)
-m ADDRESS, --mac ADDRESS
Custom mac address - probably breaks stuff (default: mac of selected interface)
-a, --no-ra Do not advertise ourselves (useful for networks which detect rogue Router Advertisements)
-r TARGET, --relay TARGET
Authentication relay target, will be used as fake DNS server hostname to trigger Kerberos auth
-v, --verbose Show verbose information
--debug Show debug information
Filtering options:
-d DOMAIN, --domain DOMAIN
Domain name to filter DNS queries on (Allowlist principle, multiple can be specified.)
-b DOMAIN, --blocklist DOMAIN, --blacklist DOMAIN
Domain name to filter DNS queries on (Blocklist principle, multiple can be specified.)
-hw DOMAIN, -ha DOMAIN, --host-allowlist DOMAIN, --host-whitelist DOMAIN
Hostname (FQDN) to filter DHCPv6 queries on (Allowlist principle, multiple can be specified.)
-hb DOMAIN, --host-blocklist DOMAIN, --host-blacklist DOMAIN
Hostname (FQDN) to filter DHCPv6 queries on (Blocklist principle, multiple can be specified.)
--ignore-nofqdn Ignore DHCPv6 queries that do not contain the Fully Qualified Domain Name (FQDN) option.
Puede anular manualmente la mayoría de las opciones de detección automática (aunque anular la dirección MAC romperá cosas). Si la red tiene algún hardware que bloquea o detecta mensajes de Anuncio de Enrutador (Router Advertisement) maliciosos, puede agregar la opción --no-ra para no transmitirlos. Los Anuncios de Enrutador no son necesarios para que mitm6 funcione, ya que depende principalmente de mensajes DHCPv6.
Hay varias opciones de filtrado disponibles para seleccionar a qué hosts desea atacar y suplantar. Primero están las opciones --host-allowlist y --host-blocklist (o -hw y -hb para abreviar), que toman un dominio (parcial) como argumento. Las solicitudes DHCPv6 entrantes se filtrarán contra esta lista. La propiedad verificada es la opción FQND de DHCPv6, en la cual el cliente proporciona su nombre de host.
Lo mismo aplica para las solicitudes DNS, para esto está disponible la opción --domain (o -d), donde puede indicar qué dominio(s) desea suplantar. También es posible bloquear dominios específicos con --blocklist/-b. Ambos parámetros se pueden especificar varias veces para incluir/bloquear múltiples dominios (por ejemplo -d domain.local -d otherdomain.local -b somehost.domain.local -b somehost.otherdomain.local).
Tanto para el filtrado de host como de DNS, se realiza una coincidencia simple de cadenas. Por lo tanto, si elige responder a wpad, también responderá a consultas por wpad.corpdomain.com. Si desea un filtrado más específico, use ambas opciones de lista de permitidos y lista de bloqueados, ya que la lista de bloqueados tiene prioridad sobre la lista de permitidos.
Por defecto, el primer dominio especificado se usará como dominio de búsqueda DNS; si desea especificar este dominio explícitamente, use la opción --localdomain.
mitm6 está diseñado como una herramienta de pruebas de penetración y, por lo tanto, debe impactar lo menos posible en la red. Esta es la razón principal por la que mitm6 no implementa un ataque de intermediario completo actualmente, como vemos por ejemplo en el ataque SLAAC. Para minimizar aún más el impacto, las direcciones IP asignadas tienen valores bajos de tiempo de vida (TTL). La concesión caducará dentro de 5 minutos cuando se detenga mitm6, lo que eliminará el servidor DNS de la configuración de las víctimas. Para evitar que las respuestas DNS se almacenen en caché, todas las respuestas se envían con un TTL de 100 segundos, lo que asegura que la caché se limpie en minutos después de que la herramienta termine.
mitm6 está diseñado para usarse con ntlmrelayx. Debe ejecutar las herramientas una al lado de la otra; en este escenario, mitm6 suplantará el DNS, haciendo que las víctimas se conecten a ntlmrelayx para conexiones HTTP y SMB. Para esto, debe asegurarse de ejecutar ntlmrelayx con la opción -6, que hará que escuche tanto en IPv4 como en IPv6. Para obtener credenciales para WPAD, especifique el nombre de host WPAD a suplantar con -wh HOSTNAME (cualquier nombre de host inexistente en el dominio local funcionará ya que mitm6 es el servidor DNS). Opcionalmente, también puede usar el parámetro -wa N con un número de intentos para solicitar autenticación para el archivo WPAD en sí, en caso de que sospeche que las víctimas no tienen aplicado el parche MS16-077.
También puede usar mitm6 para retransmitir autenticación Kerberos, especialmente a través de DNS. Para hacer esto, use el parámetro --relay y especifique un host al que desee retransmitir. Este host será suplantado, y mitm6 intentará convencer a sus víctimas de que envíen actualizaciones dinámicas autenticadas usando autenticación Kerberos a krbrelayx. Más información sobre este ataque está disponible en el siguiente blog: https://dirkjanm.io/relaying-kerberos-over-dns-with-krbrelayx-and-mitm6/
El equipo de Fox-IT Security Research Team ha lanzado firmas de Snort y Suricata para detectar tráfico DHCPv6 malicioso y respuestas WPAD sobre IPv6. Las firmas están disponibles aquí: https://gist.github.com/fox-srt/98f29051fe56a1695de8e914c4a2373f