Uma das coisas que preciso fazer de vez em quando é encontrar subdomínios de um site, por exemplo.
Começando com example.com
- sub1. example.com
- other.example.com
- another.example.com
Estou procurando outras maneiras de realizar o reconhecimento desses alvos e quero obter uma lista de todos os subdomínios de um domínio.
No momento, estou fazendo várias coisas, incluindo
- usando maltego para rastrear informações
- Usando mecanismos de pesquisa para pesquisar subdomínios
- rastreando links de sites
- Examinando registros DNS
- Examinar certificados SSL configurados incorretamente
- Adivinhar coisas como “vpn.example.com”
Acho que há mais do que aqueles que encontrei até agora, mas agora estou sem ideias.
Comentários
Resposta
Como um pentester, ser capaz de encontrar os subdomínios de um site surge frequentemente. Então, eu escrevi uma ferramenta, SubBrute que faz isso muito bem se eu disser eu mesmo. Resumindo, é melhor do que outras ferramentas (fierce2) porque é muito mais rápido, mais preciso e mais fácil de trabalhar com . Esta ferramenta vem com uma lista de subdomínios reais obtida de spidering na web. Esta lista de subdomínios é mais de 16 vezes o tamanho de fierce2 e o subbrute levará cerca de 15 minutos para esgotar esta lista em uma conexão doméstica. A saída é uma lista limpa separada por nova linha, que é fácil de usar como entrada para outras ferramentas como nmap ou um scanner de vulnerabilidade de aplicativo da web.
Comentários
- Ótimo, ‘ vou dar uma olhada. Alguma ideia de como ele se compara a ‘ knock ‘?
- @ D3C4FF knock é uma porcaria.
- Toda a glória seja para Rook. Eu usei a ferramenta em um teste ao vivo hoje e funcionou como um encanto. Só faltou um de duas dúzias de subdomínios com o nome mywebreading
- @ D3C4FF, sim, eu ‘ fico feliz que tenha o truque;)
- @Rook apenas uma ideia rápida sobre o subbrute, adicione a opção de resolver (e imprimir) o endereço IP dos nomes de host encontrados também. Fiz essa alteração e ela ajudou em alguns testes em que certos intervalos estavam fora do escopo, embora fossem subdomínios. Obrigado novamente!
Resposta
1. Transferência de zona
Alguns servidores de nomes permitem transferências de zona DNS para qualquer pessoa na Internet, geralmente de forma não intencional. Nesta pergunta, é explicado em mais detalhes: Ataque de transferência de zona DNS .
Ferramentas para transferências de zona
O a segunda resposta a essa pergunta menciona como testá-la para Windows e Linux:
Windows:
nslookup > server <DNS you are querying> > set type=any > ls -d <target>
Unix (nslookup está obsoleto no Unix):
dig -t axfr @<DNS you are querying> <target>
(Eu editei o Unix, porque -axfr
não parece funcionar. Eu precisava especificar -t axfr
.)
2. DNSSEC zone walk
DNSSEC assina registros DNS, então você pode ter certeza de receber a resposta correta (bem, dadas algumas raízes de confiança e intermediários). Mas como você prova que algo não existe, por ex. ao procurar por nonexistentsub.example.com
, como o servidor de nomes de example.com
prova a inexistência de um subdomínio? Ele não contém a chave de assinatura (a assinatura é feita ao atualizar a zona pelos administradores).
Em sua resposta a Como funciona o DNSSec? Existem limitações ou problemas conhecidos?, / u / tylerl explica:
Obviamente, essa resposta precisa para ser assinado, mas geralmente o próprio servidor DNS não tem acesso à sua chave de assinatura e não pode assinar a resposta imediatamente; as assinaturas são todas criadas ” offline ” com antecedência. Isso evita que sua chave seja exposta se o servidor DNS ficar comprometido.
Então, em vez disso, você coloca seus subdomínios em ordem alfabética e diz ” para cada nome entre mail.example. com e pop.example.com, nenhum outro subdomínio existe ” e assina essa declaração. Então, quando alguém perguntar por nachos.example.com, você pode simplesmente dar essa resposta (que já foi assinada) e o cliente saberá disso porque nachos.example.com fica alfabeticamente entre mail.example.com e pop.example.com, então a ” este domínio não existe ” a resposta é considerada corretamente assinada e realmente veio de você.
O lugar onde isso se torna problemático é que, por ter um conjunto dessas respostas negativas que afirmam explicitamente que ” não existem respostas entre X e Y, você pode facilmente mapear exatamente quais domínios existe para a zona inteira. Você sabe que ” X ” existe e você sabe que ” Y ” existe, e você sabe que não há mais nada entre eles. Basta mexer um pouco mais aleatoriamente e rapidamente será capaz de compilar uma lista de todos os registros que existem.
O registro que especifica ” até pop.example.com não há nada ” é chamado NSEC (Próximo registro SECure).
Uma solução alternativa foi projetada para isso: NSEC3. Faz hashes de nomes, então mail
se transforma em b83a88...
e pop
se transforma em b21afc...
. Imagine que esses são os dois únicos subdomínios, então a resposta assinada dirá ” nenhum registro existe entre b21afc...
e b83a88...
“. Novamente, ele funciona em ordem alfabética e você pode obter todos eles, mas desta vez você precisará quebrar cada hash antes de aprender o que são os subdomínios.
Na minha experiência, a maioria tem a extensão NSEC3 habilitada.
Ferramentas para caminhar por zona
NSEC3Walker faz a enumeração e o cracking. Não posso garantir a eficiência do cracking, mas é definitivamente baseado apenas em CPU. Como o NSEC3 usa SHA1 (pelo menos originalmente), provavelmente existem programas de cracking melhores.
dnsrecon
também parece ser capaz de fazer isso: dnsrecon -z -d example.com
. Não sei se existe um site oficial com informações, mas em Debian Stretch, Buster e Bullseye eu posso apt install dnsrecon
.
3. Pesquisas reversas em uma sub-rede
Adivinhando algumas, você frequentemente encontrará respostas em uma faixa semelhante. Se você sabe que www.
existe e mail.
existe, e ambos resolvem 192.168.3.x
, pode ser mais. Tente fazer uma pesquisa reversa para todos os endereços no intervalo 192.168.3.0-255
(o /24
), e você provavelmente encontrará mais subdomínios. Você também pode tentar uma consulta WHOIS no endereço IP para encontrar os limites do intervalo (se eles tiverem seu próprio bloco).
Ferramentas para pesquisas reversas
dnsrecon
pode fazer isso:
dnsrecon -t rvl -r 192.168.1.0/24
Onde -t rvl
significa ” digite lookup reverso ” e -r
passa um intervalo de IP em notação CIDR. Eu não sei se houver um site oficial com informações, mas no Debian Stretch, Buster e Bullseye eu posso apt install dnsrecon
.
4. Registros de serviço DNS
É possível definir registros SRV (serviço) para descoberta de serviço, por exemplo _sip._tcp.example.com
poderia apontar para sipserver.example.com
na porta 5060. Como os nomes dos serviços (” sip
” no exemplo) são normalmente os padrões registrados com IANA, podemos iterar por meio deles.
Ferramentas para consultar registros srv
dnsrecon
pode fazer isso:
dnsrecon -t srv -d example.com
Levará um subconjunto dos nomes de serviço existentes, selecionados por um desconhecido método, conforme mencionado em sua página de manual (man dnsrecon
).
5. Outros métodos
Você já mencionou alguns deles.Não vou entrar em detalhes, porque eles são bastante autoexplicativos e dependem de um aplicativo em execução no destino (como FTP), dependem de terceiros ou simplesmente não há muito a dizer sobre eles .
-
Os resultados da pesquisa podem revelar subdomínios. Novamente,
dnsrecon
pode fazer isso com a opção-t goo
(usa o Google especificamente). -
Verificar outros TLDs para o mesmo nome pode revelar algumas outras variantes ou endereços IP. Por exemplo. se
example.com
existe,example.org
pode existir também.dnsrecon
também pode fazer isso comdnsrecon -t tld -d example.com
. -
Rastrear um site ou encontrar referências em outro lugar pode dar dicas. (Precisa-se de ajuda: qual ferramenta usar?)
-
Examinar os certificados TLS geralmente produz resultados. Certifique-se de verificar as portas para HTTPS, SMTP (S), FTP (S), etc. e use STARTTLS.
-
Existem ferramentas de terceiros que podem listar subdomínios em um domínio. Seus métodos são menos claros, mas rastrear a Internet e os registros históricos (talvez uma transferência de domínio já tenha sido possível?) Geralmente fazem parte disso. (Procura-se ajuda: alguma recomendação? Só me lembro de ver que ela existe.)
6. Adivinhando.
A última opção é apenas adivinhar, seja por um dicionário (eu recomendo) ou pela força bruta. Isso é dificultado por curingas, embora muitas ferramentas tentem detectar e resolver isso.
Ferramentas para adivinhação / força bruta
O Fierce foi criado para fazer isso: https://github.com/mschwager/fierce
Ele é instalado por padrão no Kali Linux.
Como / u / rook mencionado em outra resposta neste tópico , eles escreveram Subbrute para este propósito: https://github.com/TheRook/subbrute
dnsrecon
pode fazer isso com dnsrecon -t brt -d example.com
. Use -f
para ” Filtrar registros de pesquisa de domínio de força bruta que resolvem para o endereço IP definido por curinga ao salvar registros ” (citando sua página de manual). Você pode passar -D
para um arquivo de dicionário.
Apêndice: dict ionários
Ainda estou procurando bons dicionários (para adivinhação / força bruta), mas aqui estão alguns que eu conheço. Por favor me ajude a completar esta lista! Quanto maior, melhor, desde que sejam classificados por probabilidade.
- O repositório do Fierce contém alguns dicionários: https://github.com/mschwager/fierce / tree / master / lists
- ” Bitquark “realizou uma análise dos subdomínios mais comumente usados que resultou nessas listas: https://github.com/bitquark/dnspop/tree/master/results . As postagens do blog parecem ter alguns resultados estranhos, então eu não tenho certeza da qualidade dessas listas.
-
dnsrecon
vem com uma lista, simplesmente chamada denamelist.txt
.dpkg -L dnsrecon
revela onde está instalado. É classificado em ordem alfabética. - Subbrute tem uma lista curta e uma longa: https://github.com/TheRook/subbrute
Resposta
Jason Haddix escreveu minha ferramenta favorita de descoberta de subdomínio / nome de host que depende de uma versão muito recente de recon-ng – disponível aqui –
https://github.com/jhaddix/domain
o subbruto é decente, fierce -dns <domain>
funciona muito bem, dnsmap <domain> -r file.txt
também é válido, e não vejo razão para não gostar de knock -wc <domain>
(embora os outros recursos de batida possam ser suspeito). Todas essas ferramentas usam técnicas que mostram sua idade, no entanto. O truque para algumas dessas melhorias de ataque é criar um arquivo personalizado com nomes de host que sejam voltados especificamente para o alvo.
No entanto, a motosserra para descoberta de DNS é dnsrecon. Ele faz tudo.
Você também pode considerar uma oferta comercial, como RiskIQ, que pode fazer muito mais do que todas essas ferramentas. Suas técnicas incluem muitas pesquisas que a maioria de vocês não pensaria.
[ATUALIZAÇÃO] Outro favorito (para nomes de host, não principalmente subdomínios – o OP está interessado em ambos?) É – https://github.com/tomsteele/blacksheepwall
Resposta
Eu tentaria com knock , mas cuidado: há o risco de ser colocado na lista negra.
Infelizmente, não há maneira de contornar força bruta se uma transferência de zona não funcionar.
Comentários
- Esta ferramenta é de baixa qualidade; SubBrute é muito melhor.
Resposta
No Stack Overflow , Paul Melici sugeriu usando WolframAlpha .(Capturas de tela por mim mesmo)
Insira o domínio na caixa de pesquisa e execute a pesquisa. (Por exemplo,
stackexchange.com
)Na 3ª seção a partir do topo (chamada “Estatísticas da Web para todos os stackexchange. com “) clique em Subdomínios
Na seção Subdomínios, clique em Mais
Você poderá ver uma lista de subdomínios lá. Embora eu suspeite que ele não mostra TODOS os subdomínios.
Comentários
- isso é mencionado no primeiro comentário
Resposta
Dê uma olhada em http://ha.ckers.org/fierce/ . Pode ser usado tanto um arquivo de dicionário quanto força bruta. Ele também está incluído no Kali.
Resposta
Inicialmente, costumo usar banco de dados dns passivo para encontrar subdomínios para um site. A desvantagem desse método é que você só pode encontrar sites listados no banco de dados. Mas a vantagem é que você pode encontrar sites que não estão listados em nenhuma lista de palavras.
Alguns bancos de dados para referência:
https://www.virustotal.com/en/domain/stackexchange.com/information/
Resposta
Fácil. Escreva o endereço do site para wolframalpha. E clique no botão “subdomínios”.
Um exemplo; https://www.wolframalpha.com/input/?i=www.imdb.com
Clique em “Subdomínios” para visualizar os subdomínios do site.
Além disso, wolfram alpha tem api se você quiser alcançá-lo e usá-lo. Espero que ajude …
Comentários
- Perdido – se você puder expandir isso, explicando o que Wolfram faz, esta resposta pode receber votos positivos.
- O link ” subdomínios ” parece estar presente apenas para alguns domínios?
usage()
de qualquer maneira). A julgar pelo código-fonte, o que ele faz é agrupar dados de três grandes mecanismos de pesquisa (yahoo, msn, google) e para mim um site obscuropgp.rediris.es
que parece ser um scrapper de e-mail.