
Una herramienta de seguridad para la recopilación de información y enumeración de servicios mediante múltiples hilos, mientras construye estructuras de directorio para almacenar resultados, junto con la redacción de recomendaciones para pruebas adicionales.

Una herramienta de reconocimiento creada para los laboratorios OSCP para automatizar la recopilación de información y la enumeración de servicios mientras crea una estructura de directorios para almacenar resultados, hallazgos y exploits utilizados para cada host, comandos recomendados para ejecutar y estructuras de directorios para almacenar botín y banderas.
¡Las contribuciones son más que bienvenidas!
Reconnoitre, aunque es una herramienta muy apreciada que he mantenido durante algunos años, en mi opinión, palidece en funcionalidad en comparación con la construcción de tu propio enfoque de enumeración dentro de Interlace. Recomiendo encarecidamente a cualquiera que quiera llevar Infosec más allá del OSCP que dedique tiempo a investigar este proyecto.
Esta herramienta se basa en gran medida en el trabajo hecho público en la revisión de OSCP de Mike Czumak (T_v3rn1x) (enlace) junto con una influencia considerable y código tomado de mix-recon de Re4son (enlace). El escaneo de hosts virtuales está adaptado originalmente del trabajo de teknogeek, que está fuertemente influenciado por el script de descubrimiento de hosts virtuales de jobertabma (enlace). Se ha adaptado más código de escaneo de hosts virtuales de un proyecto de Tim Kent y yo, disponible aquí (enlace).
Para instalar Reconnoitre, primero haz una copia local del repositorio ejecutando lo siguiente donde desees que se ubique:
git clone https://github.com/codingo/Reconnoitre.git
Después de hacer esto, ejecuta setup.py con lo siguiente:
python3 setup.py install
Después de que setup se ejecute, Reconnoitre estará en tu PATH (como reconnoitre) y podrás lanzarlo desde cualquier lugar usando:
reconnoitre <args>
Esta herramienta se puede usar y copiar libremente para uso personal, sin embargo, se debe ofrecer atribución y crédito a Mike Czumak, quien originalmente comenzó el proceso de automatización de este trabajo.
Ten en cuenta que estos son algunos ejemplos para darte una idea de los casos de uso potenciales de esta herramienta. Se pueden agregar o quitar líneas de comando según lo que desees lograr con tu escaneo.
reconnoitre -t 192.168.1.5 -o /root/Documents/labs/ --services
Un ejemplo de salida se vería así:
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
Lo cual también escribiría el siguiente archivo de recomendaciones en la carpeta scans para cada objetivo:
[*] 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
Esto escaneará todos los servicios dentro de un rango objetivo para crear una estructura de archivos de hosts activos, así como escribir recomendaciones para otros comandos a ejecutar basados en los servicios descubiertos en estas máquinas. Eliminar --quick hará un sondeo adicional pero alargará considerablemente los tiempos de ejecución.
reconnoitre -t 192.168.1.1-252 -o /root/Documents/testing/ --pingsweep --services
El requisito mínimo para el escaneo de hosts y servicios de esta herramienta es tener tanto nbtscan como nmap instalados. Si no estás usando escaneo de hosts y solo deseas realizar un barrido de ping y escaneo de servicios, puedes arreglártelas con solo instalar nmap. El archivo findings.txt de salida a menudo recomendará herramientas adicionales que quizás no tengas disponibles en tu distribución si no estás usando Kali Linux. Todos los requisitos y recomendaciones son nativos de Kali Linux, que es la distribución recomendada (aunque no obligatoria) para usar esta herramienta.
Además de estos requisitos, las salidas a menudo harán referencia a listas de palabras (wordlists) que puedas necesitar encontrar. Si estás realizando el OSCP, estas se pueden encontrar en el hilo "List of Recommended Tools" de g0tmilk. Si no, puedes encontrar la mayoría de ellas en línea o ya dentro de una instalación de Kali Linux.
El primer paso es instalar Docker si aún no lo tienes instalado. Instalación de Docker
Uso básico:
cd <Reconnoitre Directory>
docker build -t reconnoitre .
docker run reconnoitre -o outputdir -t 127.0.0.1
Si deseas que los archivos existan localmente, puedes montar un directorio en el contenedor Docker
cd <Reconnoitre Directory>
docker build -t reconnoitre .
mkdir /path/to/dir
docker run -v /path/to/dir:/outputdir --services -o outputdir -t 127.0.0.1
| Argumento | Descripción |
|---|
| -h, --help | Muestra el mensaje de ayuda y sale |
| -t TARGET_HOSTS | Establece un rango de direcciones objetivo o un solo host como objetivo. También puede ser un archivo que contenga hosts. |
| -o OUTPUT_DIRECTORY | Establece el directorio de destino donde se deben escribir los resultados. |
| -w WORDLIST | Opcionalmente especifica tu propia wordlist para usar en comandos precompilados o ataques ejecutados. |
| --pingsweep | Escribe un nuevo archivo target.txt en el OUTPUT_DIRECTORY realizando un barrido de ping y descubriendo hosts activos. |
| --dns, --dnssweep | Encuentra servidores DNS de la lista de objetivos. |
| --snmp | Encuentra hosts que responden a solicitudes SNMP de la lista de objetivos. |
| --services | Realiza un escaneo de servicios sobre los objetivos y escribe recomendaciones para comandos adicionales a ejecutar. |
| --hostnames | Intenta descubrir nombres de host objetivo y escribe en hostnames.txt. |
| --virtualhosts | Intenta descubrir hosts virtuales usando la wordlist especificada. Esto se puede expandir mediante nombres de host descubiertos. |
| --ignore-http-codes | Lista separada por comas de códigos HTTP a ignorar en escaneos de hosts virtuales. |
| --ignore-content-length | Ignora longitudes de contenido de una cantidad específica. Esto puede ser útil cuando un servidor devuelve una página estática en cada intento de host virtual. |
| --quiet | Suprime el banner y los encabezados y limita la retroalimentación a resultados grepables. |
| --quick | Pasa al siguiente objetivo después de realizar un escaneo rápido y escribir las recomendaciones de primera ronda. |
| --no-udp | Desactiva el escaneo de servicios UDP, que está activado por defecto. |