
Uma ferramenta rápida e abrangente para varredura de rede organizacional
Funcionalidades • Uso • Instalação • Uso • Contribuição • Notas Adicionais
Domainim é uma ferramenta rápida de reconhecimento de domínios para varredura de rede organizacional. A ferramenta visa fornecer uma visão geral da estrutura de uma organização usando técnicas como OSINT, força bruta, resolução DNS etc.
Funcionalidades atuais (v1.0.1)-

Enumeração de hostnames virtuais
Consulta DNS reversa
Detecta subdomínios curinga (para força bruta)
Varredura básica de portas TCP
Subdomínios são aceitos como entrada
Exportar resultados para arquivo JSON
Algumas funcionalidades estão em desenvolvimento. Veja Funcionalidades planejadas para mais detalhes.
O projeto é inspirado por Sublist3r. O módulo de varredura de portas é fortemente baseado em NimScan.
Você pode compilar este repositório a partir do código-fonte-
git clone [email protected]:pptx704/domainim
nimble build
./domainim <domínio> [--ports=<portas>]
Ou, você pode baixar o binário diretamente da página de releases. Lembre-se de que o binário foi testado apenas em sistemas baseados em Debian.
./domainim <domínio> [--ports=<portas> | -p:<portas>] [--wordlist=<arquivo> | l:<arquivo> [--rps=<int> | -r:<int>]] [--dns=<dns> | -d:<dns>] [--out=<arquivo> | -o:<arquivo>]
<domínio> é o domínio a ser enumerado. Pode ser também um subdomínio.--ports | -p é uma string que especifica as portas a serem varridas. Pode ser uma das seguintes-
all - Varre todas as portas (1-65535)none - Ignora a varredura de portas (padrão)t<n> - Varre as n portas mais comuns (igual ao nmap). Exemplo: t100 varre as 100 portas mais comuns. Valor máximo é 5000. Se n for maior que 5000, será ajustado para 5000.80 varre a porta 8080-100 varre as portas 80 a 10080,443,8080 varre as portas 80, 443 e 808080,443,8080-8090,t500 varre as portas 80, 443, 8080 a 8090 e as 500 portas mais comuns--dns | -d é o endereço do servidor DNS. Deve ser um IPv4 válido e pode opcionalmente conter o número da porta-
a.b.c.d - Usa o servidor DNS em a.b.c.d na porta 53a.b.c.d#n - Usa o servidor DNS em a.b.c.d na porta e--wordlist | -l - Caminho para o arquivo de wordlist. Usado para força bruta de subdomínios. Se o arquivo for inválido, a força bruta será ignorada. Você pode obter uma wordlist no SecLists. Uma wordlist também é fornecida na página de releases.--rps | -r - Número de requisições por segundo durante a força bruta. O valor padrão é 1024 req/s. Note que as consultas DNS são feitas em lotes e o próximo lote só é iniciado após o término do anterior. Como as consultas podem ser limitadas (rate limited), aumentar o valor nem sempre garante resultados mais rápidos.--out | -o - Caminho para o arquivo de saída. A saída será salva no formato JSON. O nome do arquivo deve terminar com .json.Exemplos
./domainim nmap.org --ports=all./domainim google.com --ports=none --dns=8.8.8.8#53./domainim pptx704.com --ports=t100 --wordlist=wordlist.txt --rps=1500./domainim pptx704.com --ports=t100 --wordlist=wordlist.txt --outfile=results.json./domainim mysite.com --ports=t50,5432,7000-9000 --dns=1.1.1.1O menu de ajuda pode ser acessado usando ./domainim --help ou ./domainim -h.
Uso:
domainim <domínio> [--ports=<portas> | -p:<portas>] [--wordlist=<arquivo> | l:<arquivo> [--rps=<int> | -r:<int>]] [--dns=<dns> | -d:<dns>] [--out=<arquivo> | -o:<arquivo>]
domainim (-h | --help)
Opções:
-h, --help Mostra esta tela.
-p, --ports Portas a varrer. [padrão: `none`]
Pode ser `all`, `none`, `t<n>`, valor único, intervalo, combinação
-l, --wordlist Wordlist para força bruta de subdomínios. A força bruta é ignorada se o arquivo for inválido.
-d, --dns IP e Porta para o resolvedor DNS. Deve ser um IPv4 válido com porta opcional [padrão: sistema padrão]
-r, --rps Consultas DNS por segundo [padrão: 1024 req/s]
-o, --out Arquivo JSON onde a saída será salva. O nome do arquivo deve terminar com `.json`
Exemplos:
domainim domainim.com -p:t500 -l:wordlist.txt --dns:1.1.1.1#53 --out=results.json
domainim sub.domainim.com --ports=all --dns:8.8.8.8 -t:1500 -o:results.json
O esquema JSON para os resultados é o seguinte-
[
{
"subdomain": string,
"data": [
"ipv4": string,
"vhosts": [string],
"reverse_dns": string,
"ports": [int]
]
}
]
Exemplo de JSON para nmap.org pode ser encontrado aqui.
Contribuições são bem-vindas. Sinta-se à vontade para abrir um pull request ou uma issue.
Este projeto ainda está em estágios iniciais. Existem várias limitações que tenho conhecimento.
Os dois mecanismos que estou usando (estou chamando de mecanismos porque o Sublist3r faz o mesmo) atualmente possuem algum tipo de limite de resposta. O dnsdumpster pode buscar até 100 subdomínios. O crt.sh também randomiza os resultados em caso de muitos resultados. Outro problema com o crt.sh é que ele retorna algum erro SQL às vezes. Portanto, para alguns domínios, os resultados podem ser diferentes em execuções diferentes. Estou planejando adicionar mais mecanismos no futuro (pelo menos um mecanismo de força bruta).
O varredor de portas possui apenas o tempo limite de tempo de resposta ping + 750ms. Isso pode levar a falsos negativos. Como o domainim não é destinado a varredura de portas, mas sim a fornecer uma visão geral rápida, esses casos são aceitáveis. No entanto, estou planejando adicionar uma opção para aumentar o tempo limite. Pelo mesmo motivo, portas filtradas não são exibidas. Para varredura de portas mais abrangente, recomendo usar o Nmap. O Domainim também não contorna limitação de taxa (se houver).
Pode parecer que a forma como os vhostnames são exibidos apenas traz repetição à tona.