
Uma ferramenta de segurança para coleta de informações multithread e enumeração de serviços, enquanto constrói estruturas de diretório para armazenar resultados, juntamente com a escrita de recomendações para testes adicionais.

Uma ferramenta de reconhecimento feita para os laboratórios OSCP para automatizar a coleta de informações e enumeração de serviços, criando uma estrutura de diretórios para armazenar resultados, descobertas e exploits usados para cada host, comandos recomendados para executar e estruturas de diretórios para armazenar saques e bandeiras.
Contribuições são mais do que bem-vindas!
Reconnoitre, embora seja uma ferramenta muito querida que mantive por alguns anos, na minha opinião, empalidece em funcionalidade em comparação com construir sua própria abordagem de enumeração dentro do Interlace. Recomendo fortemente que qualquer pessoa que queira levar a Infosec além do OSCP dedique um tempo para explorar este projeto.
Esta ferramenta é fortemente baseada no trabalho tornado público na revisão de Mike Czumak (T_v3rn1x) sobre o OSCP (link), juntamente com considerável influência e código retirado do mix-recon do Re4son (link). A varredura de hosts virtuais é originalmente adaptada do trabalho de teknogeek, que é fortemente influenciado pelo script de descoberta de hosts virtuais de jobertabma (link). Mais código de varredura de hosts virtuais foi adaptado de um projeto meu e de Tim Kent, disponível aqui (link).
Para instalar o Reconnoitre, primeiro faça uma cópia local do repositório executando o seguinte no local desejado:
git clone https://github.com/codingo/Reconnoitre.git
Depois de fazer isso, execute setup.py com o seguinte:
python3 setup.py install
Após a execução do setup, o Reconnoitre estará no seu PATH (como reconnoitre) e você poderá iniciá-lo de qualquer lugar usando:
reconnoitre <args>
Esta ferramenta pode ser usada e copiada para uso pessoal livremente, no entanto, atribuição e crédito devem ser oferecidos a Mike Czumak, que originalmente iniciou o processo de automatização deste trabalho.
Observe que estes são alguns exemplos para dar uma ideia de possíveis casos de uso para esta ferramenta. Linhas de comando podem ser adicionadas ou removidas com base no que você deseja realizar com sua varredura.
reconnoitre -t 192.168.1.5 -o /root/Documents/labs/ --services
Um exemplo de saída seria:
root@kali:~/# reconnoitre -t 192.168.1.5 --services -o /root/Documents/labs/
__
|"""\-= RECONNOITRE
(____) An OSCP scanner
[#] Performing service scans
[*] Loaded single target: 192.168.1.5
[+] Creating directory structure for 192.168.1.5
[>] Creating scans directory at: /root/Documents/labs/192.168.1.5/scans
[>] Creating exploit directory at: /root/Documents/labs/192.168.1.5/exploit
[>] Creating loot directory at: /root/Documents/labs/192.168.1.5/loot
[>] Creating proof file at: /root/Documents/labs/192.168.1.5/proof.txt
[+] Starting quick nmap scan for 192.168.1.5
[+] Writing findings for 192.168.1.5
[>] Found HTTP service on 192.168.1.5:80
[>] Found MS SMB service on 192.168.1.5:445
[>] Found RDP service on 192.168.1.5:3389
[*] TCP quick scan completed for 192.168.1.5
[+] Starting detailed TCP/UDP nmap scans for 192.168.1.5
[+] Writing findings for 192.168.1.5
[>] Found MS SMB service on 192.168.1.5:445
[>] Found RDP service on 192.168.1.5:3389
[>] Found HTTP service on 192.168.1.5:80
[*] TCP/UDP Nmap scans completed for 192.168.1.5
O que também escreveria o seguinte arquivo de recomendações na pasta scans para cada alvo:
[*] Found HTTP service on 192.168.1.50:80
[>] Use nikto & dirb / dirbuster for service enumeration, e.g
[=] nikto -h 192.168.1.50 -p 80 > /root/Documents/labs/192.168.1.50/scans/192.168.1.50_nikto.txt
[=] dirb http://192.168.1.50:80/ -o /root/Documents/labs/192.168.1.50/scans/192.168.1.50_dirb.txt -r -S -x ./dirb-extensions/php.ext
[=] java -jar /usr/share/dirbuster/DirBuster-1.0-RC1.jar -H -l /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -r /root/Documents/labs/192.168.1.50/scans/192.168.1.50_dirbuster.txt -u http://192.168.1.50:80/
[=] gobuster -w /usr/share/seclists/Discovery/Web_Content/common.txt -u http://192.168.1.50:80/ -s '200,204,301,302,307,403,500' -e > /root/Documents/labs/192.168.1.50/scans/192.168.1.50_gobuster_common.txt -t 50
[=] gobuster -w /usr/share/seclists/Discovery/Web_Content/cgis.txt -u http://192.168.1.50:80/ -s '200,204,301,307,403,500' -e > /root/Documents/labs/192.168.1.50/scans/192.168.1.50_gobuster_cgis.txt -t 50
[>] Use curl to retreive web headers and find host information, e.g
[=] curl -i 192.168.1.50
[=] curl -i 192.168.1.50/robots.txt -s | html2text
[*] Found MS SMB service on 192.168.1.5:445
[>] Use nmap scripts or enum4linux for further enumeration, e.g
[=] nmap -sV -Pn -vv -p445 --script="smb-* -oN '/root/Documents/labs/192.168.1.5/nmap/192.168.1.5_smb.nmap' -oX '/root/Documents/labs/192.168.1.5/scans/192.168.1.5_smb_nmap_scan_import.xml' 192.168.1.5
[=] enum4linux 192.168.1.5
[*] Found RDP service on 192.168.1.5:3389
[>] Use ncrackpassword cracking, e.g
[=] ncrack -vv --user administrator -P /root/rockyou.txt rdp://192.168.1.5
reconnoitre -t 192.168.1.1-252 -o /root/Documents/testing/ --pingsweep --hostnames
reconnoitre -t 192.168.1.1-252 -o /root/Documents/testing/ --pingsweep --services --quick
Isso escaneará todos os serviços dentro de um intervalo de alvos para criar uma estrutura de arquivos de hosts ativos, bem como escrever recomendações para outros comandos a serem executados com base nos serviços descobertos nessas máquinas. Remover o --quick fará uma sonda mais aprofundada, mas aumentará bastante os tempos de execução.
reconnoitre -t 192.168.1.1-252 -o /root/Documents/testing/ --pingsweep --services
O requisito básico para varredura de hosts e serviços nesta ferramenta é ter nbtscan e nmap instalados. Se você não estiver usando varredura de hosts e quiser apenas realizar um ping sweep e varredura de serviços, você pode se virar apenas com a instalação do nmap. O arquivo findings.txt gerado frequentemente recomendará ferramentas adicionais que podem não estar disponíveis em sua distribuição se você não estiver usando Kali Linux. Todos os requisitos e recomendações são nativos do Kali Linux, que é a distribuição recomendada (embora não obrigatória) para uso desta ferramenta.
Além desses requisitos, as saídas frequentemente farão referência a Wordlists que você pode precisar encontrar. Se você estiver fazendo o OSCP, elas podem ser encontradas no tópico "List of Recommended Tools" do g0tmilk. Caso contrário, você pode encontrar a maioria delas online ou já dentro de uma instalação do Kali Linux.
O primeiro passo é instalar o docker, caso ainda não o tenha instalado. Instalação do Docker
Uso básico:
cd <Diretório do Reconnoitre>
docker build -t reconnoitre .
docker run reconnoitre -o outputdir -t 127.0.0.1
Se você quiser que os arquivos existam localmente, pode montar um diretório no contêiner Docker
cd <Diretório do Reconnoitre>
docker build -t reconnoitre .
mkdir /path/to/dir
docker run -v /path/to/dir:/outputdir --services -o outputdir -t 127.0.0.1
| Argumento | Descrição |
|---|
| -h, --help | Exibe a mensagem de ajuda e sai |
| -t TARGET_HOSTS | Define um intervalo de endereços de destino ou um único host para atacar. Também pode ser um arquivo contendo hosts. |
| -o OUTPUT_DIRECTORY | Define o diretório de destino onde os resultados devem ser escritos. |
| -w WORDLIST | Opcionalmente, especifique sua própria wordlist para usar em comandos pré-compilados ou ataques executados. |
| --pingsweep | Escreve um novo arquivo target.txt no OUTPUT_DIRECTORY realizando um ping sweep e descobrindo hosts ativos. |
| --dns, --dnssweep | Encontra servidores DNS a partir da lista de alvos. |
| --snmp | Encontra hosts que respondem a requisições SNMP a partir da lista de alvos. |
| --services | Realiza uma varredura de serviços sobre os alvos e escreve recomendações para comandos adicionais a serem executados. |
| --hostnames | Tenta descobrir nomes de host dos alvos e escreve em hostnames.txt. |
| --virtualhosts | Tenta descobrir hosts virtuais usando a wordlist especificada. Isso pode ser expandido por meio de nomes de host descobertos. |
| --ignore-http-codes | Lista separada por vírgulas de códigos HTTP a serem ignorados nas varreduras de hosts virtuais. |
| --ignore-content-length | Ignora comprimentos de conteúdo de um valor específico. Isso pode ser útil quando um servidor retorna uma página estática em cada palpite de host virtual. |
| --quiet | Suprime banner e cabeçalhos e limita o feedback a resultados greppáveis. |
| --quick | Avança para o próximo alvo após realizar uma varredura rápida e escrever recomendações da primeira rodada. |
| --no-udp | Desativa a varredura de serviços UDP, que está ATIVADA por padrão. |