
Ferramenta de enumeração de subdomínios de múltiplas fontes com mais de 50 módulos de coleta, força bruta de DNS, análise passiva de DNS, transparência de certificados, raspagem de mecanismos de busca e detecção de tomada de subdomínio para reconhecimento.
👊OneForAll é uma ferramenta poderosa de coleta de subdomínios 📝Documento em Inglês
📢 Por favor, reserve um tempo para ler este documento, isso ajudará você a se familiarizar rapidamente com o OneForAll!
OneForAll é desenvolvido e testado com base no Python 3.6.0. OneForAll requer uma versão superior ao Python 3.6.0 para funcionar. Para instalar o ambiente Python, consulte o Guia de Instalação do Python 3. Execute os seguintes comandos para verificar as versões do Python e pip3:
python -V
pip3 -V
Se você vir uma saída semelhante à abaixo, significa que o ambiente Python está correto:
Python 3.6.0
pip 19.2.2 from C:\Users\shmilylty\AppData\Roaming\Python\Python36\site-packages\pip (python 3.6)
Como este projeto está em desenvolvimento, haverá atualizações e iterações contínuas. Ao baixar, use git clone para clonar o repositório de código mais recente, o que também facilita atualizações futuras. Não é recomendado baixar dos Releases, pois as versões nos Releases são atualizadas lentamente e não são convenientes para atualização. Este projeto já foi espelhado no Gitee (Gitee). Para usuários na China, recomenda-se clonar do Gitee, que é mais rápido:
git clone https://gitee.com/shmilylty/OneForAll.git
Ou:
git clone https://github.com/shmilylty/OneForAll.git
Você pode instalar as dependências do OneForAll via pip3. Abaixo está um exemplo de instalação de dependências usando pip3 no sistema Windows: Nota: Se o seu Python3 estiver instalado no diretório Program Files do sistema, como C:\Program Files\Python36, execute o prompt de comando cmd como administrador e execute os seguintes comandos!
cd OneForAll/
python3 -m pip install -U pip setuptools wheel -i https://mirrors.aliyun.com/pypi/simple/
pip3 install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
python3 oneforall.py --help
Para outras plataformas, consulte Instalação de Dependências. Se você encontrar problemas ao compilar alguma biblioteca de dependência durante a instalação, consulte as soluções no documento . Se o problema persistir, sinta-se à vontade para entrar no grupo e relatar o problema.
Primeiro, baixe e edite o arquivo de configuração, adicione suas próprias api e configurações personalizadas, e mantenha a estrutura de arquivos original
config
├── api.py
├── default.py
├── __init__.py
├── log.py
└── setting.py
Puxe a imagem e execute, substituindo ~/.config pelo caminho da pasta onde estão seus arquivos de configuração
docker pull shmilylty/oneforall
docker run -it --rm -v ~/results:/OneForAll/results -v ~/.config:/OneForAll/config shmilylty/oneforall --target example.com run
Os parâmetros são adicionados diretamente no final do comando. Os resultados serão gerados no diretório local ~/results. Se desejar salvar em outro local, você pode modificar conforme necessário.
Se você instalou as dependências via pip3, use os seguintes comandos para executar o exemplo:
python3 oneforall.py --target example.com run
python3 oneforall.py --targets ./example.txt run
Tomando o comando python3 oneforall.py --target example.com run como exemplo, quando o OneForAll é executado normalmente com parâmetros padrão, ele gera os resultados correspondentes no diretório results:

example.com.csv é o resultado da coleta de subdomínios para cada domínio principal.
all_subdomain_result_1583034493.csv é o resumo dos subdomínios coletados em cada execução do OneForAll, incluindo example.com.csv, facilitando a obtenção de todos os resultados em cenários de coleta em lote.
result.sqlite3 é o banco de dados SQLite3 que armazena os subdomínios coletados em cada execução do OneForAll. Sua estrutura de banco de dados é mostrada na figura abaixo:

A tabela com nome como example_com_origin_result armazena os resultados iniciais da coleta de subdomínios de cada módulo.
A tabela com nome como example_com_resolve_result armazena os resultados após a resolução dos subdomínios.
A tabela com nome como example_com_last_result armazena os resultados da última coleta de subdomínios (gerada somente após duas ou mais coletas).
Os parâmetros de linha de comando fornecem apenas alguns parâmetros comuns. Para configurações de parâmetros mais detalhadas, consulte setting.py. Se você achar que alguns parâmetros são usados com frequência na interface de linha de comando ou se faltam alguns parâmetros, etc., sinta-se à vontade para fornecer feedback. Por razões conhecidas, se você precisar usar algumas interfaces de coleta bloqueadas, configure o proxy primeiro em setting.py. Alguns módulos de coleta exigem o fornecimento de API (a maioria pode ser obtida gratuitamente registrando-se em uma conta). Se precisar usá-los, configure as informações da API em api.py. Se não for usar, ignore os avisos de erro relacionados. (Para detalhes dos módulos, leia Explicação dos Módulos de Coleta)
A interface de linha de comando do OneForAll é baseada em Fire. Para usos mais avançados do Fire, consulte Usando a CLI do Fire.
oneforall.py é o ponto de entrada principal. O oneforall.py pode chamar módulos como brute.py, takerover.py e dbexport.py. Para facilitar a realização de força bruta de subdomínios, o brute.py foi separado; para facilitar a verificação de riscos de takeover de subdomínios, o takerover.py foi separado; para facilitar a exportação do banco de dados, o dbexport.py foi separado. Esses módulos podem ser executados de forma independente e aceitam parâmetros um pouco mais ricos. Se você quiser usá-los separadamente, consulte Ajuda de Uso
❗Nota: Quando você encontrar algum problema ou dúvida durante o uso, primeiro use a função de pesquisa em Issues para encontrar respostas. Você também pode consultar Perguntas Frequentes e Respostas.
Endereço do projeto: https://github.com/shmilylty/OneForAll
A importância da coleta de informações em testes de penetração é evidente. A coleta de subdomínios é uma parte indispensável e muito importante da coleta de informações. Atualmente, muitas ferramentas de coleta de subdomínios foram disponibilizadas como código aberto na internet, mas sempre existem alguns dos seguintes problemas:
Para resolver esses problemas, este projeto nasceu. Como o nome sugere, espero que o OneForAll seja uma ferramenta definitiva para coleta rápida e abrangente de subdomínios, combinando as vantagens de várias ferramentas🔨.
Atualmente, o OneForAll ainda está em desenvolvimento, certamente há muitos problemas e áreas que precisam ser melhoradas. Sinta-se à vontade para enviar Issues e PRs. Se você achar útil, dê uma estrela✨. Atualmente, existe um grupo QQ dedicado para comunicação e feedback sobre o OneForAll👨👨👦👦: 824414244 (Verificação do grupo: coleta de informações).
censys_api, certspotter, crtsh, entrust, google, spyse_api)axfr, verificação de arquivo de política entre origens cdx, verificação de certificado HTTPS cert, verificação de política de segurança de conteúdo csp, verificação de arquivo robots robots, verificação de arquivo sitemap sitemap, enumeração de domínios DNS via registro NSEC ; módulos adicionais como NSEC3 serão adicionados posteriormente)Se você tiver outras ideias interessantes, não hesite em me contar!😎
Para mais informações, consulte Explicação da Estrutura de Diretórios.
O diretório docs deste projeto também fornece algumas ajudas e explicações, como Fonte dos Dicionários de Subdomínios, Processo de Identificação de Resolução Curinga.
Agradecimentos a essas excelentes bibliotecas Python!
Este projeto usa o formato de versionamento semântico SemVer. Consulte o Registro de Alterações para histórico de alterações.
Para mais informações, consulte Planos de Desenvolvimento Futuro.
Todos os contribuidores são muito bem-vindos para ajudar a melhorar este projeto!
Você pode ver todos os contribuidores e suas contribuições no Documento de Contribuidores. Agradecemos a eles por tornar o OneForAll mais poderoso e fácil de usar.
Se você acha que este projeto o ajudou, pode nos pagar um café como incentivo:)

Este projeto está licenciado sob a licença GPL-3.0. Para mais detalhes, consulte LICENSE.
Agradecimentos a todos os projetos de coleta de subdomínios de código aberto na internet!
Agradecimentos aos colegas da A-Team pelo apoio entusiástico e esclarecimento de dúvidas!
Esta ferramenta deve ser usada apenas na construção de segurança empresarial com autorização legal suficiente. Ao usar esta ferramenta, você deve garantir que todas as suas ações estejam em conformidade com as leis e regulamentos locais. Caso você realize qualquer ação ilegal ao usar esta ferramenta, você assumirá todas as consequências. Todos os desenvolvedores e contribuidores desta ferramenta não assumem qualquer responsabilidade legal ou solidária. A menos que você tenha lido completamente, entendido plenamente e aceitado todos os termos deste acordo, por favor, não instale nem use esta ferramenta. Seu uso ou qualquer outra forma explícita ou implícita de aceitação deste acordo será considerado como sua leitura e concordância com os termos deste acordo.
Execute os seguintes comandos para atualizar o projeto (as modificações em /config/setting.py e /config/api.py podem ser preservadas):
git stash # Armazena temporariamente as modificações locais
git fetch --all # Obtém as atualizações do projeto
git pull # Baixa e mescla
git stash pop # Libera as modificações locais
A tabela com nome como example_com_now_result armazena os resultados atuais da coleta de subdomínios. Em geral, basta focar nesta tabela.
Para mais informações, consulte Explicação dos Campos.
Ajuda de uso do oneforall.py
As informações de ajuda abaixo podem não ser as mais recentes. Use python oneforall.py --help para obter a ajuda mais atualizada.
python oneforall.py --help
NAME
oneforall.py - Informações de ajuda do OneForAll
SYNOPSIS
oneforall.py COMMAND | --target=TARGET <flags>
DESCRIPTION
OneForAll é uma ferramenta poderosa de coleta de subdomínios
Example:
python3 oneforall.py version
python3 oneforall.py --target example.com run
python3 oneforall.py --targets ./domains.txt run
python3 oneforall.py --target example.com --valid None run
python3 oneforall.py --target example.com --brute True run
python3 oneforall.py --target example.com --port small run
python3 oneforall.py --target example.com --fmt csv run
python3 oneforall.py --target example.com --dns False run
python3 oneforall.py --target example.com --req False run
python3 oneforall.py --target example.com --takeover False run
python3 oneforall.py --target example.com --show True run
Note:
O parâmetro alive pode ser True ou False, indicando exportar apenas subdomínios ativos ou todos os resultados
O parâmetro port pode ser 'default', 'small', 'large', consulte config.py para detalhes
O parâmetro fmt pode ser 'csv', 'json'
O parâmetro path, se None, usa o diretório de resultados padrão do OneForAll
ARGUMENTS
TARGET
Um único domínio (parâmetro obrigatório, escolha um dos dois)
TARGETS
Caminho do arquivo com um domínio por linha (parâmetro obrigatório, escolha um dos dois)
FLAGS
--brute=BRUTE
Força bruta de subdomínios (padrão True)
--dns=DNS
Resolução DNS de subdomínios (padrão True)
--req=REQ
Requisições HTTP a subdomínios (padrão True)
--port=PORT
Faixa de portas para verificar subdomínios (padrão apenas porta 80)
--valid=VALID
Exportar apenas resultados de subdomínios ativos (padrão False)
--fmt=FMT
Formato de salvamento dos resultados (padrão csv)
--path=PATH
Caminho para salvar os resultados (padrão None)
--takeover=TAKEOVER
Verificar takeover de subdomínios (padrão False)
dnssecarchivecrawl, commoncrawl; este módulo ainda está em调试, e novos módulos serão adicionados e aprimorados)bevigil_api, binaryedge_api, bufferover, cebaidu, chinaz, chinaz_api, circl_api, cloudflare, dnsdb_api, dnsdumpster, hackertarget, ip138, ipv4info_api, netcraft, passivedns_api, ptrarchive, qianxun, rapiddns, riddler, robtex, securitytrails_api, sitedossier, threatcrowd, wzpc, ximcx))srv, e consulta de registros MX, NS, SOA, TXT do DNS do domínio para coleta de subdomínios)alienvault, riskiq_api, threatbook_api, threatminer, virustotal, virustotal_api; este módulo ainda está para ser adicionado e aprimorado)ask, baidu, bing, bing_api, duckduckgo, exalead, fofa_api, gitee, github, github_api, google, google_api, shodan_api, so, sogou, yahoo, yandex, zoomeye_api). Nos módulos de busca, com exceção de mecanismos de busca especiais, os mecanismos de busca gerais suportam exclusão automática, busca completa e busca recursiva.txt, csv, json.