
Motor de permutação de nomes de domínio para detecção de ataques de phishing homógrafo, typosquatting e falsificação de marca.

Veja que tipo de problemas os usuários podem ter ao tentar digitar o nome do seu domínio. Encontre domínios semelhantes que adversários podem usar para atacá-lo. Pode detectar typosquatters, ataques de phishing, fraudes e falsificação de marca. Útil como uma fonte adicional de inteligência de ameaças direcionada.

O fuzzing de DNS é um fluxo de trabalho automatizado que visa descobrir domínios potencialmente maliciosos que visam a sua organização. Esta ferramenta gera uma lista abrangente de permutações com base em um nome de domínio fornecido e, em seguida, verifica se alguma dessas permutações está em uso. Além disso, pode gerar hashes difusos (fuzzy hashes) de páginas da web para detectar ataques de phishing em andamento ou falsificação de marca, e muito mais!
Com pressa? Experimente no seu navegador: dnstwist.it
Python PIP
$ pip install dnstwist[full]
Alternativamente, instale o mínimo necessário e adicione outros requisitos manualmente dependendo das suas necessidades:
$ pip install dnstwist
Git
Se quiser executar a versão mais recente do código, pode instalá-lo a partir do Git:
$ git clone https://github.com/elceef/dnstwist.git
$ cd dnstwist
$ pip install .
Debian/Ubuntu/Kali Linux
Execute o seguinte comando para instalar a ferramenta com todos os pacotes extras:
$ sudo apt install dnstwist
Fedora Linux
$ sudo dnf install dnstwist
Arch Linux User Repository (yay)
$ yay -S dnstwist
macOS
Isto instalará o dnstwist juntamente com todas as dependências, e o binário será
adicionado ao $PATH.
$ brew install dnstwist
Docker
Baixe e execute a imagem oficial do Docker Hub:
$ docker run -it elceef/dnstwist
Alternativamente, pode criar as suas imagens locais:
$ docker build -t dnstwist .
$ docker build -t dnstwist:phash --build-arg phash=1 .
A ferramenta executará o nome de domínio fornecido através dos seus algoritmos de fuzzing e gerará uma lista de domínios de phishing potenciais juntamente com os registros DNS.
Normalmente, milhares de permutações de domínio são geradas - especialmente para domínios de entrada mais longos. Nesses casos, pode ser prático exibir apenas aqueles que estão registrados:
$ dnstwist --registered domain.name
Certifique-se de que o seu servidor DNS consegue lidar com milhares de solicitações em um curto período
de tempo. Caso contrário, pode especificar um servidor DNS externo ou DNS-over-HTTPS
com o argumento --nameservers.
Se as permutações de domínio geradas pelos algoritmos de fuzzing forem insuficientes,
forneça ao dnstwist um arquivo de dicionário. Alguns exemplos de dicionários com
uma lista das palavras mais comuns usadas em campanhas de phishing estão incluídos.
$ dnstwist --dictionary dictionaries/english.dict domain.name
Se precisar verificar se existem domínios com TLDs diferentes, basta fornecer um arquivo de dicionário com a lista de TLDs.
$ dnstwist --tld dictionaries/common_tlds.dict domain.name
Por outro lado, se apenas algoritmos selecionados precisarem ser usados, o argumento
--fuzzers está disponível, que aceita uma lista separada por vírgulas.
$ dnstwist --fuzzers "homoglyph,hyphenation" domain.name
Além da saída colorida no terminal, a ferramenta permite exportar resultados para CSV e JSON:
$ dnstwist --format csv domain.name | column -t -s,
$ dnstwist --format json domain.name | jq
Caso precise apenas das permutações simples, sem fazer nenhuma consulta DNS, use
o argumento --format list:
$ dnstwist --format list domain.name
A ferramenta pode realizar consultas em tempo real para retornar a localização geográfica (aproximada ao país) de endereços IPv4.
$ dnstwist --geoip domain.name
A biblioteca GeoIP2 é usada por padrão. A localização do banco de dados de países deve ser
especificada com a variável de ambiente $GEOLITE2_MMDB. Se a biblioteca ou o
banco de dados não estiverem presentes, a ferramenta recorrerá ao GeoIP Legacy mais antigo.
Para exibir todas as opções disponíveis com breves descrições, basta executar a ferramenta sem nenhum argumento.
Verificar manualmente cada nome de domínio quanto à exibição de um site de phishing pode ser
demorado. Para resolver isso, o dnstwist utiliza os chamados hashes difusos
(locality-sensitive hash, LSH) e hashes perceptuais (pHash). O hashing difuso é
um conceito que envolve a capacidade de comparar duas entradas (código HTML) e
determinar um nível fundamental de similaridade, enquanto o hash perceptual é
uma impressão digital derivada de características visuais de uma imagem (captura de tela de página web).
Hashing difuso
O recurso exclusivo de detectar código-fonte HTML semelhante pode ser ativado com
o argumento --lsh. Para cada domínio gerado, o dnstwist buscará o conteúdo
do servidor HTTP que responder (seguindo possíveis redirecionamentos), normalizará o código HTML
e comparará seu hash difuso com o do domínio original (inicial). O
nível de similaridade é expresso em porcentagem.
Nos casos em que a URL efetiva é a mesma do domínio original, o hash difuso não é calculado de forma alguma, a fim de rejeitar indicações falso-positivas.
Nota: Tenha em mente que é bastante improvável obter 100% de correspondência, mesmo para frameworks de ataque MITM, e que um site de phishing pode ter um código-fonte HTML completamente diferente.
$ dnstwist --lsh domain.name
Em alguns casos, sites de phishing são servidos a partir de uma URL específica. Se você fornecer um
endereço de URL completo ou parcial como argumento, o dnstwist o analisará e o aplicará
a cada variante de nome de domínio gerada. Use --lsh-url para substituir a URL da qual
buscar a página da web original.
$ dnstwist --lsh https://domain.name/owa/
$ dnstwist --lsh --lsh-url https://different.domain/owa/ domain.name
Por padrão, o ssdeep é usado como algoritmo LSH, mas o TLSH também está disponível e pode ser ativado da seguinte forma:
$ dnstwist --lsh tlsh domain.name
Hashing perceptual
Se o navegador Chromium estiver instalado, o dnstwist pode utilizar o modo headless,
que opera sem interface gráfica de usuário, para capturar capturas de tela de páginas web,
renderizá-las e calcular valores de pHash. Esses valores de pHash são
então comparados para avaliar a similaridade visual, expressa em porcentagem.
$ dnstwist --phash domain.name
Além disso, é possível salvar as capturas de tela em formato PNG em um local de sua escolha:
$ dnstwist --phash --screenshots /tmp/domain domain.name
Nota: Devido ao uso multi-thread de um navegador web totalmente funcional, uma quantidade adequada de recursos livres (principalmente memória) deve ser fornecida.
Suporte a proxy