Outil réseau, de reconnaissance et de sécurité offensive pour Linux.
Hawk est un utilitaire réseau et de pentest que j'ai développé afin de pouvoir effectuer différents types de tâches en utilisant la même suite, plutôt que de passer d'un outil à un autre.
Actuellement, ce script peut effectuer une variété de tâches telles que ifconfig, ping, traceroute, analyses de ports (y compris SYN, TCP, UDP, ACK, analyse complète, découverte d'hôtes (recherche d'appareils actifs sur un réseau local), détection d'adresse MAC (obtention de l'adresse MAC d'une IP d'hôte sur un réseau local), capture de bannières, vérifications DNS (avec informations de géolocalisation), WHOIS, énumération de sous-domaines, reconnaissance de vulnérabilités, reniflage de paquets, usurpation MAC, usurpation IP, inondation SYN, attaque de désauthentification et attaque par force brute (bêta).
D'autres fonctionnalités sont encore en cours de développement. Les implémentations futures pourraient inclure la détection de WAF, l'énumération DNS, l'analyse du trafic, le scanner de vulnérabilités XSS, l'empoisonnement du cache ARP, l'empoisonnement du cache DNS, l'inondation MAC, le ping de la mort, l'attaque de dissociation du réseau (et non l'attaque de désauthentification), l'OSINT, l'usurpation d'e-mail, des exploits, certaines tâches automatisées et d'autres.

Notez qu'actuellement, ce script ne fonctionne correctement que sous Linux. Si vous l'essayez sur Windows ou macOS, il peut s'exécuter, mais de nombreuses erreurs apparaîtront.
Ce script a été testé sur :
Pour installer les paquets nécessaires afin que le script fonctionne sans aucun problème, exécutez simplement le script setup.sh avec les privilèges root. Actuellement, ce script d'installation n'est pris en charge que sur les distributions basées sur Debian, Red Hat et Arch qui disposent respectivement des gestionnaires de paquets apt, dnf et pacman (Ubuntu, Kali Linux, Parrot OS, Debian, Pop!_OS, Linux Mint, Deepin, Zorin OS, MX Linux, Elementary OS, Fedora, CentOS, Red Hat Enterprise Linux, Rocky Linux, AlmaLinux, Oracle Linux, ClearOS, Arch, Black Arch, Manjaro, etc). Sur la plupart des systèmes, pour installer Hawk, exécutez simplement les commandes suivantes :
git clone https://github.com/medpaf/hawk.git
cd hawk
sudo sh setup.sh
Ensuite, suivez simplement les instructions. Veuillez ignorer les messages d'erreur qui apparaissent pendant l'installation.
Cependant, si vous utilisez une autre distribution Linux avec un gestionnaire de paquets différent, veuillez installer les paquets manuellement à l'aide du gestionnaire de paquets de votre distribution. Selon la distribution utilisée, certains des paquets requis pour exécuter ce script peuvent déjà être installés sur votre machine.
Si vous souhaitez connaître les paquets nécessaires, consultez le fichier setup.sh.
Après l'installation, pour exécuter le programme, il suffit de naviguer vers le répertoire du projet et d'exécuter le fichier hawk.py avec python. Il est recommandé d'exécuter le script en tant que root pour de meilleures performances et pour éviter les erreurs de permission. La commande utilisée est la suivante :
sudo python3 hawk.py
Pour effectuer des configurations, il suffit d'aller dans le fichier de configuration files/conf.py et de le modifier.
Si vous souhaitez afficher la configuration réseau TCP/IP actuelle de votre système, saisissez la commande suivante :
-ifconfig

Pour envoyer des paquets ICMP à un ou plusieurs hôtes afin de vérifier la connectivité, tapez simplement :
-ping <HOST(s) IP/FQDN>

Pour diagnostiquer les chemins de routage et mesurer les délais de transit, utilisez la commande -traceroute :
-traceroute <HOST IP/FQDN>

L'analyse des ports aide à détecter d'éventuelles failles de sécurité en identifiant les hôtes connectés à votre réseau et les services en cours d'exécution.
Plusieurs types d'analyse sont pris en charge, notamment TCP SYN (-scansyn) [également connu sous le nom d'analyse furtive], TCP Connect (-scantcp), UDP (-scanudp), TCP ACK (-scanack) et l'analyse complète (-scan).
-scan -host <HOST(s) IP/FQDN>
-scan -host <HOST(s) IP/FQDN> -p <PORT(s)>
Si vous souhaitez analyser une plage d'adresses IP et/ou une plage de ports, utilisez l'une des commandes suivantes :
-scan -host <HOST(s) IP/FQDN> -prange <START PORT> <END PORT>
-scan -iprange <START IP> <END IP> -p <PORT(s)>
-scan -iprange <START IP> <END IP> -prange <START PORT> <END PORT>

Après cette analyse, il est possible de constater que les ports 22 (SSH) et 80 (HTTP) sont tous deux ouverts.
Pour rechercher les appareils actuellement actifs sur un réseau donné, tapez la commande suivante :
-scanlan
Saisissez ensuite le réseau que vous souhaitez analyser.

Pour obtenir l'adresse MAC d'un ou plusieurs hôtes actifs sur le réseau local, utilisez la commande :
-getmac -host <HOST(s) IP>

La détection de version, ou capture de bannières, est une technique de reconnaissance qui récupère les informations d'une bannière logicielle. Cette bannière contient généralement des informations importantes sur un service réseau, notamment, sans s'y limiter, le nom et la version du logiciel. Les serveurs FTP, Web, SSH et SMTP exposent souvent des informations vitales sur le logiciel qu'ils exécutent dans leur bannière.
Une attaque par bannière commence généralement par une analyse d'énumération pour trouver les ports ouverts. Une fois que vous avez identifié un service que vous souhaitez cibler, vous pouvez envoyer des paquets spécifiques et inspecter le trafic pour obtenir les informations recherchées.
Pour effectuer une capture de bannières, selon vos besoins spécifiques, tapez l'une des commandes suivantes :
-grab -host <HOST(s) IP/FQDN> -p <PORT(s)>
-grab -iprange <START IP> <END IP> -prange <START PORT> <END PORT>
-grab -host <HOST(s) IP/FQDN> -prange <START PORT> <END PORT>
-grab -iprange <START IP> <END IP> -p <PORT(s)>

Cette fonctionnalité est similaire à la commande bien connue nslookup utilisée sur les systèmes UNIX. Si vous souhaitez effectuer une vérification DNS, tapez ce qui suit :
-ns <HOST(s) IP/FQDN>

Avertissement : Notez que cette fonctionnalité utilise l'API IPinfo. Il est recommandé de remplacer la clé API par la vôtre, car la clé fournie est peut-être utilisée par d'autres personnes. Pour modifier les clés API, rendez-vous dans le fichier de configuration files/conf.py.
WHOIS est un protocole TCP qui vise à consulter les contacts et le DNS. Pour demander le WHOIS d'une ou plusieurs pages, tapez simplement :
-whois <HOST(s) IP/PQDN>

L'énumération de sous-domaines est le processus qui consiste à trouver des sous-domaines valides pour un ou plusieurs domaines.
L'énumération de sous-domaines peut révéler de nombreux domaines/sous-domaines qui entrent dans le cadre d'une évaluation de sécurité, ce qui augmente par la même occasion les chances de trouver des vulnérabilités.
Si vous souhaitez rechercher les sous-domaines courants d'un domaine, tapez simplement :
-sdenum <PQDN>
Cette commande utilise une liste de mots par défaut pour rechercher des sous-domaines. Cependant, si vous souhaitez utiliser votre propre liste de mots, tapez :
-sdenum <PQDN> -wordlist <WORDLIST PATH>

La recherche de répertoires (directory busting) est le processus qui consiste à trouver des répertoires au sein d'un serveur web.
Pour effectuer cette tâche, tapez :
-dirbust <HOST IP/FQDN>
Cette commande utilise une liste de mots par défaut pour rechercher des sous-domaines. Cependant, si vous souhaitez utiliser votre propre liste de mots, tapez :
-dirbust <HOST IP/FQDN> -wordlist <WORDLIST PATH>

Pour analyser un ou plusieurs hôtes à la recherche de vulnérabilités, utilisez la commande suivante :
-vulnscan -host <HOST(s) IP/FQDN>

Avertissement : Notez que cette fonctionnalité utilise l'API Shodan. Il est recommandé de remplacer la clé API par la vôtre, car la clé fournie est peut-être utilisée par d'autres personnes. Pour modifier les clés API, rendez-vous dans le fichier de configuration files/conf.py.
Pour effectuer un reniflage de paquets, tapez :
-sniff

Avertissement : Si vous souhaitez renifler toutes les données qui transitent par un réseau, mettez d'abord votre carte ou adaptateur sans fil en mode moniteur.
L'usurpation MAC consiste à générer des trames avec une adresse MAC différente de l'adresse de la carte réseau émettrice. Pour modifier l'adresse MAC d'une interface, exécutez la commande :
-macspoof -source <SOURCE MAC> -iface <INTERFACE>

Comme vous pouvez le voir sur la capture d'écran ci-dessous, l'adresse MAC de l'interface a été modifiée avec succès.

L'objectif de l'usurpation IP est de modifier l'adresse IP source réelle afin que le système auquel un paquet est destiné ne puisse pas identifier correctement l'expéditeur.
Notez que cette commande ne fonctionne que sur les machines présentant des vulnérabilités non corrigées. Pour effectuer une usurpation IP sur un port spécifique d'un hôte, utilisez la commande suivante :
-ipspoof -source <SOURCE IP> <SOURCE PORT> -target <TARGET IP/FQDN> <TARGET PORT>
Si vous souhaitez utiliser une adresse IP source aléatoire, tapez la commande suivante :
-ipspoof -source r <SOURCE PORT> -target <TARGET IP/FQDN> <TARGET PORT>
Vous pouvez également utiliser un port source aléatoire :
-ipspoof -source <SOURCE IP> r -target <TARGET IP/FQDN> <TARGET PORT>

Avertissement : Veuillez n'utiliser ceci qu'à des fins de test et cibler vos propres machines.
L'inondation SYN (SYN Flood) est une méthode d'attaque DDoS qui provoque une surcharge directe au niveau de la couche transport (couche 4) et une surcharge indirecte au niveau de la couche application (couche 7).
Pour tenter une inondation SYN, tapez :
-synflood -source <SOURCE PORT> -target <TARGET IP/FQDN> <TARGET PORT>
Si vous souhaitez utiliser un port source aléatoire, tapez la commande suivante :
-synflood -source r -target <TARGET IP/FQDN> <TARGET PORT>

Avertissement : Veuillez n'utiliser ceci qu'à des fins de test et cibler vos propres machines.
Une attaque de désauthentification est un type d'attaque sans fil qui cible la communication entre un routeur et un ou plusieurs appareils connectés à ce routeur, forçant ainsi la machine cible à se déconnecter du point d'accès.
Pour effectuer cette attaque, utilisez la commande suivante :
-deauth -target <TARGET MAC> -gateway <GATEWAY MAC> -iface <INTERFACE>
Si vous prévoyez d'attaquer tous les clients d'une passerelle, tapez :
-deauth -target a -gateway <GATEWAY MAC> -iface <INTERFACE>
Vous pouvez également choisir votre interface sans fil par défaut (configurée dans files/conf.py) pour effectuer l'attaque :
-deauth -target <TARGET MAC> -gateway <GATEWAY MAC> -iface d

Après la commande exécutée sur la capture d'écran ci-dessus, tous les appareils connectés à ce point d'accès ont été déconnectés et incapables de se reconnecter pendant que ce script était en cours d'exécution.
Avertissement : Pour effectuer cette attaque, assurez-vous de disposer d'une carte ou d'un adaptateur sans fil prenant en charge le mode moniteur et activez-le avant de tenter une attaque de désauthentification. Veuillez n'utiliser ceci qu'à des fins de test et cibler vos propres machines.
Une attaque par force brute est une tentative de craquer un mot de passe ou un nom d'utilisateur.
Pour effectuer une attaque par force brute et trouver des identifiants courants/faibles, tapez :
-bruteforce <SERVICE> -target <TARGET IP/FQDN> -user <USERNAME>
Si vous souhaitez utiliser une liste de mots personnalisée, utilisez la commande :
-bruteforce <SERVICE> -target <TARGET IP/FQDN> -user <USERNAME> -wordlist <WORDLIST PATH>
Pour le moment, seul le service SSH est pris en charge.
Avertissement : Notez que le serveur cible peut disposer de mécanismes de défense contre ce type d'attaque et bloquer les tentatives de l'attaquant de deviner le mot de passe. Veuillez n'utiliser ceci qu'à des fins de test et cibler vos propres machines.
Cette commande automatisera certaines des techniques de reconnaissance disponibles dans ce script. Pour ce faire, tapez :
-autoscan <HOST(s) IP/FQDN>
La plupart des utilisateurs sans fil n'utilisent leur carte sans fil que comme station vers un point d'accès. En mode géré, la carte sans fil et le pilote s'appuient sur un point d'accès local en mode géré pour fournir la connectivité au réseau sans fil.
Certaines cartes sans fil prennent également en charge le mode moniteur. Lorsqu'elle est configurée en mode moniteur, la carte sans fil cesse de transmettre des données et renifle le canal actuellement configuré, rapportant le contenu des paquets observés au système d'exploitation hôte.
Pour passer une interface en mode moniteur, utilisez la commande suivante :
-mode monitor -iface <INTERFACE>
Vous pouvez également configurer votre interface sur l'interface sans fil par défaut (configurée dans files/conf.py) :
-mode monitor -iface d

Comme vous pouvez le voir sur la capture d'écran ci-dessous, le mode de l'interface a été modifié avec succès.

Cependant, si vous souhaitez repasser votre interface en mode géré, tapez :
-mode managed -iface <INTERFACE>
Vous pouvez également configurer votre interface sur l'interface sans fil par défaut (configurée dans files/conf.py) :
-mode managed -iface d

Comme vous pouvez le voir sur la capture d'écran ci-dessous, le mode de l'interface a été modifié avec succès.

Créez une issue ou une pull request, ou envoyez-moi un e-mail à [email protected].
Ce dépôt est sous licence MIT.