inter-recon
Script para realizar reconhecimento automático inicial de web e vulnerabilidades.
Possui algumas verificações em caso de erros.
Há a possibilidade de pular algumas verificações, reiniciá-las e/ou continuar do último ponto onde parou. (Isso porque às vezes há problemas de rede, como limite de tempo na VPN).
Lembre-se: se você copiar ou linkar o script inter-recon para o caminho bin (ex: /usr/bin/), poderá executá-lo de qualquer lugar. Ele criará a saída no diretório onde você estiver.
IMPORTANTE VER O PROBLEMA DO WFUZZ E SOLUÇÃO NO FINAL DO README (seção Informações adicionais)
Para usar múltiplos domínios/IPs conhecidos, por exemplo:
- Crie o arquivo domains.txt com todos os domínios ou IPs diferentes
- Execute: inter-recon -T $(pwd)/domains.txt -d $(pwd)/known-domains -w /home/kali/Desktop/tools/inter-recon/dictionaries/without-slash/dict-small-without-slash.txt -s all -a true
Para usar em rede/IP, por exemplo:
- Execute: inter-recon -t 10.11.1.1/24 -w /home/kali/Desktop/tools/inter-recon/dictionaries/without-slash/dict-small-without-slash.txt -s all -a true
Como usar:
inter-recon.sh [OPTIONS]
-t {NET OR IP}
-T {Target PATH}
-d {Dictionary Path}
-w {DICT PATH}
-s {scan type}
-a é opcional para scan superautomático, pulando tudo e não perguntando nada no processo wfuzz na primeira execução
Tipos de scan
- all
- portscan
- nmap TCP -> verificação de todas as portas, verificando se o host está ativo se tiver uma das seguintes portas abertas (1025,1028,1029,10443,111,135,139,1521,161,1917,21,22,23,25,2869,3306,3389,443,445,49000,497,5000,515,53,548,5985,5986,6000,79,80,8080,8081,8090,9001,9002,9100,993,995)
- nmap UDP -> 100 principais portas com processo padrão de verificação de host ativo
- vulnscan
- analisar varreduras nmap UDP e TCP para arquivos
- analisar varreduras nmap UDP e TCP na pasta de serviços por serviço
- nmap UDP e TCP para portas abertas executando scripts relacionados a porta/versão
- execução smbmap como convidado -> Para verificar se, sem usuário, podemos escrever/ler algo
- execução enum4linux como convidado -> Para verificar informações obtidas do samba
- execução smbversion -> Para obter a versão do samba (Às vezes, em servidores Linux, é a única maneira de ver a versão do samba)
- webscan
- descoberta HTTP com httpx a partir da execução do nmap
- fuzzing das URLs descobertas com wfuzz
- captura de tela de URLs com Status 200 do fuzzing com aquatone
- técnicas de bypass 403 com byp4xx
- próximos passos -> explicação rápida de coisas a fazer após a execução do script
- Pasta de documentação e estrutura de modelo -> Criar uma pasta para adicionar evidências e adicionar arquivos .md com informações relacionadas às varreduras
- vuln
- portscan (Mesmo que acima)
- vulnscan (Mesmo que acima)
- próximos passos (Mesmo que acima)
- Pasta de documentação e estrutura de modelo
- web
- portscan (Mesmo que acima)
- webscan (Mesmo que acima)
- próximos passos (Mesmo que acima)
- Pasta de documentação e estrutura de modelo
Estrutura:
- Primeira varredura de portas TCP e UDP com versão (nmap, requer sudo)
- Varredura de reconhecimento de vulnerabilidades (comando para analisar portas em um arquivo com formato IP,porta,serviço,versão, analisar em arquivos de serviços, executar nmap com scripts completos relacionados a porta/versão)
- Varredura de fuzzing web se httpx encontrar uma porta HTTP (httpx, wfuzz, aquatone, byp4xx 403 arquivos <- se existir status 403)
Aplicações utilizadas:
- nmap (versão normal e com script nmap-vulners, ambos requerem sudo, usando TCP (todas as portas se o host estiver ativo usando -PS com algumas portas) e UDP (apenas as 100 principais portas))
- httxp (Para obter portas HTTP da execução do nmap)
- aquatone (Para capturar tela de resposta Status 200 encontrada na descoberta HTTP)
- wfuzz (Para fazer fuzzing nas portas HTTP)
- byp4xx (Para tentar bypass de URLs 403 por diferentes métodos)
- smbmap (Para obter privilégios de convidado relacionados à pasta de compartilhamento de rede)
- enum4linux (Para obter informações SMB com privilégios de convidado)
- smbversion (Para obter a versão real do SMB)
- dnsrecon (Para tentar fazer uma transferência de zona para servidores DNS)
- crackmapexec (Para obter nomes relacionados ao servidor)
- host (Obter hostname do servidor DNS)
- dig (Obter hostname do servidor DNS usando o servidor como NS "@")
Estrutura da pasta de saída: (exemplo)
- 192.168.122.1-24/ -> pasta inicial
- nmap/ -> pasta com saída nmap TCP e UDP em XML e formato grepable com versão
- nmap-tcp-target.xml -> saída nmap para importar em algumas ferramentas
- nmap-udp-target.xml -> saída nmap para importar em algumas ferramentas
- nmap-tcp-target.xml -> nmap grepable para analisar e tornar as informações mais legíveis
- nmap-udp-target.xml -> nmap grepable para analisar e tornar as informações mais legíveis
- aux/ -> pasta com controle da execução anterior e URLs de wfuzz ignoradas
- nmap/ -> aqui temos todos os nmaps para httpx, removeremos os arquivos nmap processados no processo httpx, para o caso de haver um erro, continuar com esse arquivo nmap.
- full-initial-files.txt -> aqui removeremos as URLs cuja execução foi correta
- wfuzz-skipped-urls.txt -> aqui adicionaremos as URLs que ignoramos porque houve um erro ((Total de requisições + 1) - Requisições processadas != 0)
- debug/ -> pasta com depuração das execuções
- nmap-tcp-output.txt -> saída da execução do nmap (apenas versão)
- nmap-tcp-cve-output.txt -> nmap com opção -A para executar todos os scripts relacionados
- nmap-udp-output.txt -> saída da execução do nmap (apenas versão)
- nmap-udp-output.txt -> nmap com opção -A para executar todos os scripts relacionados
- wfuzz-output.txt -> saída da execução do wfuzz
- screenshot-output.txt -> saída da execução do aquatone
- fuzzing/ -> pasta com execuções do wfuzz (Importante revisar Status 50* e 40*)
- *.txt -> arquivos de saída do wfuzz
- services/ -> pasta com todos os serviços analisados do nmap
- {SERVICE-NAME}-services.txt -> execução de serviços com saída IP,PORTA,Informações-extras-do-serviço
- cve/ -> pasta com vulnerabilidades por host encontradas pelo script nmap-vulners
- {IPs}.txt -> saída do script nmap-vulners
- http-discover/ -> pasta para salvar e controlar a execução do httpx
- httpx_aux.txt -> arquivo com todos os domínios+portas para executar o httpx
- screenshots/ -> pasta com capturas de tela de URLs status 200 encontradas pelo wfuzz
- screens -> pasta com todas as capturas de tela
- report.html -> relatório com informações estruturadas
- {OTHER} -> outras coisas para report.html
- full-initial-files.txt -> arquivos com URLs encontradas na descoberta HTTP inicial do httpx para fazer fuzzing com wfuzz
- urls-status-{200,401,403,etc}.txt -> URLs de status final encontradas pelo wfuzz, muda dependendo da variável $status que é o status das URLs encontradas
A fazer:
- Adicionar arquivos de status de URLs do wfuzz diretamente na documentação (200, 401, 403, 503 para não esquecer de verificar nada)
- Incluir na varredura de vulnerabilidades a "varredura OPENVAS"
- Incluir na varredura web a captura de URLs e domínios das URLs HTTP encontradas pelo wfuzz
- Incluir um novo tipo de varredura que é OSINT, que pode executar algumas obtenções de informações da web ou de diferentes execuções de scripts.
URLs de instalação de ferramentas:
- O nmap UDP é apenas para as 100 principais portas; se tiver tempo, execute um nmap adicional com todas as portas UDP em segundo plano.
- O nmap TCP está verificando algumas portas para saber se o host está ativo e o escaneia se estiver ativo; se tiver tempo, execute um nmap adicional com todas as portas TCP com -Pn em segundo plano.
- Vi algumas vezes que o wfuzz bloqueia o script; percebi que o wfuzz tem um problema com deadlock quando há um erro nas URLs. Uma solução alternativa para isso, enquanto resolvem o problema, é comentar o th.join() e adicionar um pass no arquivo /usr/local/lib/python3.9/dist-packages/wfuzz/myhttp.py na função "Cleanup".