
Motor de permutación de nombres de dominio para detectar ataques de phishing homógrafos, typosquatting y suplantación de marca.

Descubre en qué tipo de problemas pueden meterse los usuarios al intentar escribir tu nombre de dominio. Encuentra dominios similares que los adversarios pueden usar para atacarte. Puede detectar typosquatters, ataques de phishing, fraude y suplantación de marca. Útil como fuente adicional de inteligencia de amenazas dirigida.

El fuzzing de DNS es un flujo de trabajo automatizado que tiene como objetivo descubrir dominios potencialmente maliciosos que apuntan a tu organización. Esta herramienta genera una lista exhaustiva de permutaciones basada en un nombre de dominio proporcionado y, posteriormente, verifica si alguna de estas permutaciones está en uso. Además, puede generar hashes difusos de páginas web para detectar ataques de phishing en curso o suplantación de marca, ¡y mucho más!
¿Tienes prisa? Pruébalo en tu navegador web: dnstwist.it
Python PIP
$ pip install dnstwist[full]
Alternativamente, instala el mínimo indispensable y añade otros requisitos manualmente según tus necesidades:
$ pip install dnstwist
Git
Si quieres ejecutar la versión más reciente del código, puedes instalarla desde Git:
$ git clone https://github.com/elceef/dnstwist.git
$ cd dnstwist
$ pip install .
Debian/Ubuntu/Kali Linux
Ejecuta el siguiente comando para instalar la herramienta con todos los paquetes adicionales:
$ sudo apt install dnstwist
Fedora Linux
$ sudo dnf install dnstwist
Arch Linux User Repository (yay)
$ yay -S dnstwist
macOS
Esto instalará dnstwist junto con todas las dependencias, y el binario se añadirá a $PATH.
$ brew install dnstwist
Docker
Descarga y ejecuta la imagen oficial desde Docker Hub:
$ docker run -it elceef/dnstwist
Alternativamente, puedes crear tus propias imágenes locales:
$ docker build -t dnstwist .
$ docker build -t dnstwist:phash --build-arg phash=1 .
La herramienta procesará el nombre de dominio proporcionado mediante sus algoritmos de fuzzing y generará una lista de posibles dominios de phishing junto con los registros DNS.
Normalmente se generan miles de permutaciones de dominios, especialmente para dominios de entrada más largos. En tales casos, puede ser práctico mostrar solo aquellos que están registrados:
$ dnstwist --registered domain.name
Asegúrate de que tu servidor DNS pueda manejar miles de solicitudes en un período corto de tiempo. De lo contrario, puedes especificar un servidor DNS externo o DNS sobre HTTPS con el argumento --nameservers.
Si las permutaciones de dominios generadas por los algoritmos de fuzzing son insuficientes, proporciona a dnstwist un archivo de diccionario. Se incluyen algunas muestras de diccionarios con una lista de las palabras más comunes utilizadas en campañas de phishing.
$ dnstwist --dictionary dictionaries/english.dict domain.name
Si necesitas comprobar si existen dominios con diferentes TLD, simplemente proporciona un archivo de diccionario con la lista de TLD.
$ dnstwist --tld dictionaries/common_tlds.dict domain.name
Por otro lado, si solo se necesitan utilizar algoritmos seleccionados, está disponible el argumento --fuzzers, que acepta una lista separada por comas.
$ dnstwist --fuzzers "homoglyph,hyphenation" domain.name
Además de la colorida salida en terminal, la herramienta permite exportar resultados a CSV y JSON:
$ dnstwist --format csv domain.name | column -t -s,
$ dnstwist --format json domain.name | jq
En caso de que necesites solo las permutaciones básicas sin realizar ninguna consulta DNS, usa el argumento --format list:
$ dnstwist --format list domain.name
La herramienta puede realizar consultas en tiempo real para devolver la ubicación geográfica (aproximada al país) de las direcciones IPv4.
$ dnstwist --geoip domain.name
La librería GeoIP2 se utiliza por defecto. La ubicación de la base de datos de países debe especificarse con la variable de entorno $GEOLITE2_MMDB. Si la librería o la base de datos no están presentes, la herramienta recurrirá a la versión anterior GeoIP Legacy.
Para mostrar todas las opciones disponibles con breves descripciones, simplemente ejecuta la herramienta sin ningún argumento.
Verificar manualmente cada nombre de dominio para determinar si sirve un sitio de phishing puede llevar mucho tiempo. Para abordar esto, dnstwist utiliza los llamados hashes difusos (hash de sensibilidad local, LSH) y hashes perceptuales (pHash). El hashing difuso es un concepto que implica la capacidad de comparar dos entradas (código HTML) y determinar un nivel fundamental de similitud, mientras que el hash perceptual es una huella digital derivada de las características visuales de una imagen (captura de pantalla de una página web).
Hashing difuso
La característica única de detectar código fuente HTML similar se puede activar con el argumento --lsh. Para cada dominio generado, dnstwist obtendrá el contenido del servidor HTTP que responda (siguiendo posibles redirecciones), normalizará el código HTML y comparará su hash difuso con el del dominio original (inicial). El nivel de similitud se expresa como un porcentaje.
En los casos en que la URL efectiva es la misma que la del dominio original, el hash difuso no se calcula en absoluto para rechazar indicaciones de falsos positivos.
Nota: Ten en cuenta que es bastante improbable obtener una coincidencia del 100%, incluso con frameworks de ataques MITM, y que un sitio de phishing puede tener un código fuente HTML completamente diferente.
$ dnstwist --lsh domain.name
En algunos casos, los sitios de phishing se sirven desde una URL específica. Si proporcionas una dirección URL completa o parcial como argumento, dnstwist la analizará y la aplicará a cada variante de nombre de dominio generada. Usa --lsh-url para sobrescribir la URL desde la que se obtiene la página web original.
$ dnstwist --lsh https://domain.name/owa/
$ dnstwist --lsh --lsh-url https://different.domain/owa/ domain.name
Por defecto, ssdeep se utiliza como algoritmo LSH, pero TLSH también está disponible y se puede activar de la siguiente manera:
$ dnstwist --lsh tlsh domain.name
Hashing perceptual
Si el navegador Chromium está instalado, dnstwist puede utilizar su modo headless, que opera sin interfaz gráfica de usuario, para capturar capturas de pantalla de páginas web, renderizarlas y calcular los valores de pHash. Estos valores de pHash se comparan luego para evaluar la similitud visual, expresada como un porcentaje.
$ dnstwist --phash domain.name
Además, es posible guardar las capturas de pantalla en formato PNG en la ubicación que elijas:
$ dnstwist --phash --screenshots /tmp/domain domain.name
Nota: Debido al uso de múltiples hilos de un navegador web completamente funcional, se debe disponer de una cantidad adecuada de recursos libres (principalmente memoria).
Soporte de proxy