
Un outil de sécurité pour la collecte d'informations multithread et l'énumération de services tout en construisant des structures de répertoires pour stocker les résultats, ainsi que la rédaction de recommandations pour des tests ultérieurs.

Un outil de reconnaissance conçu pour les laboratoires OSCP pour automatiser la collecte d'informations et l'énumération des services tout en créant une structure de répertoires pour stocker les résultats, les découvertes et les exploits utilisés pour chaque hôte, les commandes recommandées à exécuter et les structures de répertoires pour stocker le butin et les flags.
Les contributions sont plus que bienvenues !
Reconnoitre, bien qu'étant un outil que j'affectionne et que je maintiens depuis quelques années, pâlit à mon avis en termes de fonctionnalités par rapport à la construction de votre propre approche d'énumération au sein de Interlace. Je recommande vivement à toute personne souhaitant aller au-delà de l'OSCP en Infosec de consacrer du temps à étudier ce projet.
Cet outil est fortement basé sur le travail rendu public dans la revue OSCP de Mike Czumak (T_v3rn1x) (lien) ainsi que sur l'influence considérable et le code tirés de mix-recon de Re4son (lien). Le scan d'hôtes virtuels est à l'origine adapté du travail de teknogeek, lui-même fortement influencé par le script de découverte d'hôtes virtuels de jobertabma (lien). D'autres codes de scan d'hôtes virtuels ont été adaptés d'un projet de Tim Kent et moi-même, disponible ici (lien).
Pour installer Reconnoitre, commencez par faire une copie locale du dépôt en exécutant ce qui suit à l'endroit souhaité :
git clone https://github.com/codingo/Reconnoitre.git
Après cela, exécutez setup.py avec la commande suivante :
python3 setup.py install
Une fois l'installation terminée, Reconnoitre sera dans votre PATH (en tant que reconnoitre) et vous pourrez le lancer depuis n'importe où en utilisant :
reconnoitre <args>
Cet outil peut être utilisé et copié librement pour un usage personnel, mais l'attribution et le crédit doivent être accordés à Mike Czumak qui a initialement lancé le processus d'automatisation de ce travail.
Notez que ce sont quelques exemples pour vous donner un aperçu des cas d'utilisation potentiels de cet outil. Les lignes de commande peuvent être ajoutées ou supprimées en fonction de ce que vous souhaitez accomplir avec votre scan.
reconnoitre -t 192.168.1.5 -o /root/Documents/labs/ --services
Un exemple de sortie ressemblerait à :
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
Ce qui écrirait également le fichier de recommandations suivant dans le dossier scans pour chaque cible :
[*] 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
Cela analysera tous les services dans une plage cible pour créer une structure de fichiers des hôtes actifs et écrire des recommandations pour d'autres commandes à exécuter en fonction des services découverts sur ces machines. En supprimant --quick, une analyse plus approfondie sera effectuée mais les temps d'exécution seront considérablement allongés.
reconnoitre -t 192.168.1.1-252 -o /root/Documents/testing/ --pingsweep --services
Le strict minimum pour le scan d'hôtes et de services avec cet outil est d'avoir à la fois nbtscan et nmap installés. Si vous n'utilisez pas le scan d'hôtes et souhaitez seulement effectuer un ping sweep et un scan de services, vous pouvez vous contenter d'installer uniquement nmap. Le fichier findings.txt généré recommandera souvent des outils supplémentaires qui peuvent ne pas être disponibles dans votre distribution si vous n'utilisez pas Kali Linux. Tous les prérequis et recommandations sont natifs de Kali Linux, qui est la distribution recommandée (bien que non obligatoire) pour utiliser cet outil.
En plus de ces prérequis, les sorties feront souvent référence à des listes de mots que vous devrez peut-être trouver. Si vous préparez l'OSCP, celles-ci se trouvent dans le fil "List of Recommended Tools" de g0tmilk. Sinon, vous pouvez trouver la plupart d'entre elles en ligne ou déjà présentes dans une installation Kali Linux.
La première étape consiste à installer Docker si ce n'est pas déjà fait. Installation de Docker
Utilisation de base :
cd <Reconnoitre Directory>
docker build -t reconnoitre .
docker run reconnoitre -o outputdir -t 127.0.0.1
Si vous souhaitez que les fichiers existent localement, vous pouvez monter un répertoire dans le conteneur 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
| Argument | Description |
|---|
| -h, --help | Affiche le message d'aide et quitte. |
| -t TARGET_HOSTS | Définit soit une plage d'adresses cibles, soit un seul hôte cible. Peut aussi être un fichier contenant des hôtes. |
| -o OUTPUT_DIRECTORY | Définit le répertoire cible où les résultats doivent être écrits. |
| -w WORDLIST | Spécifiez éventuellement votre propre liste de mots à utiliser pour les commandes pré-compilées ou les attaques exécutées. |
| --pingsweep | Écrit un nouveau fichier target.txt dans le OUTPUT_DIRECTORY en effectuant un ping sweep et en découvrant les hôtes actifs. |
| --dns, --dnssweep | Trouve les serveurs DNS à partir de la liste des cibles. |
| --snmp | Trouve les hôtes répondant aux requêtes SNMP à partir de la liste des cibles. |
| --services | Effectue un scan de services sur les cibles et écrit des recommandations pour d'autres commandes à exécuter. |
| --hostnames | Tente de découvrir les noms d'hôtes cibles et les écrit dans hostnames.txt. |
| --virtualhosts | Tente de découvrir les hôtes virtuels en utilisant la liste de mots spécifiée. Cela peut être étendu via les noms d'hôtes découverts. |
| --ignore-http-codes | Liste séparée par des virgules des codes HTTP à ignorer lors des scans d'hôtes virtuels. |
| --ignore-content-length | Ignore les longueurs de contenu d'un montant spécifié. Cela peut être utile lorsqu'un serveur renvoie une page statique pour chaque tentative d'hôte virtuel. |
| --quiet | Supprime la bannière et les en-têtes et limite les retours aux résultats greppables. |
| --quick | Passe à la cible suivante après avoir effectué un scan rapide et écrit les recommandations de premier tour. |
| --no-udp | Désactive le scan des services UDP, qui est activé par défaut. |