
Un script bash pour la reconnaissance et les attaques DOS
Un menu de sélection bash pour des reconnaissances réseau et des attaques DOS rapides et faciles
Sudo est implémenté lorsque cela est nécessaire. Testé sur Debian et Arch.
Les contributions et les pull requests sont les plus bienvenues !
bash
sudo
curl
netcat (doit supporter l'option '-k', la variante openbsd est recommandée)
hping3 (ou nping peut être utilisé comme substitut pour les attaques par inondation)
openssl
stunnel
nmap
whois (pas essentiel mais préféré)
nslookup (ou 'host')
ike-scan
bind-tools (souvent inclus dans le paquet 'bind', nécessaire pour "host" et "nslookup")
$ wget https://raw.githubusercontent.com/GinjaChris/pentmenu/master/pentmenu
$ chmod +x ./pentmenu
$ ./pentmenu
Sinon, téléchargez la dernière version depuis https://github.com/GinjaChris/pentmenu/releases, extrayez-la et exécutez le script. Ou utilisez git clone :
git clone https://github.com/GinjaChris/pentmenu
MODULES DE RECONNAISSANCE
Show IP - utilise curl pour effectuer une recherche de votre IP externe. Exécute ip a ou ifconfig (selon le cas) pour afficher les IP des interfaces locales.
DNS Recon - reconnaissance passive, effectue une recherche DNS (directe ou inverse selon la cible saisie) et une recherche whois de la cible. Si whois n'est pas disponible, il effectue une recherche sur ipinfo.io (fonctionne uniquement pour les IP, pas pour les noms d'hôtes).
Ping Sweep - utilise nmap pour effectuer une requête ICMP echo (ping) contre l'hôte ou le réseau cible.
Quick Scan - Scanner de ports TCP utilisant nmap pour détecter les ports ouverts avec un scan TCP SYN. Nmap n'effectue pas de ping sweep avant de lancer le scan TCP SYN. Ce module analyse les 1 000 ports les plus courants. Ce module peut bien sûr être utilisé pour scanner un seul hôte ou un réseau complet, mais il est conçu pour identifier les cibles sur une plage d'adresses IP. Ce scan peut prendre beaucoup de temps, veuillez patienter.
Detailed Scan - utilise nmap pour identifier les hôtes actifs, les ports ouverts, tente l'identification du système d'exploitation, récupère les bannières/identifie la version du logiciel en cours d'exécution. Nmap n'effectue pas de ping sweep préalable dans le cadre de ce scan. La chaîne User-Agent par défaut de nmap est remplacée par celle du navigateur Microsoft Edge dans ce mode, pour aider à éviter la détection via HTTP. Tous les ports TCP de la cible (nom d'hôte/IP/sous-réseau) sont scannés. Bien que ce module puisse scanner un seul hôte ou plusieurs hôtes, son utilisation prévue est de réaliser un scan de collecte d'informations sur un seul système. Ce scan peut prendre beaucoup de temps, veuillez patienter.
UDP scan - utilise nmap pour scanner les ports UDP ouverts. Tous les ports UDP sont scannés.
Check Server Uptime - estime la disponibilité de la cible en interrogeant un port TCP ouvert avec hping3. La précision des résultats varie d'une machine à l'autre ; cela ne fonctionne pas contre tous les serveurs.
IPsec Scan - tente d'identifier la présence d'un serveur VPN IPsec à l'aide de ike-scan et de diverses propositions Phase 1. Tout texte produit par ce module, qu'il s'agisse de "handshake" ou de "no proposal chosen", indique la présence d'un serveur VPN IPsec. Voir http://nta-monitor.com/wiki/index.php/Ike-scan_User_Guide pour un excellent aperçu de ike-scan et de la phase 1 VPN.
MODULES DOS
ICMP Echo Flood - utilise hping3 pour lancer une inondation ICMP Echo traditionnelle contre la cible. Sur un système moderne, vous ne réaliserez probablement pas grand-chose, mais c'est utile pour tester les pare-feu et observer leur comportement. Utilisez 'Ctrl C' pour arrêter l'inondation. L'adresse source des paquets d'inondation est configurable. Notez que la cible peut être une IP (ex : 127.0.0.1) ou un nom d'hôte (ex : localhost.localnet.com). N'incluez PAS le protocole dans la cible (ex : http://localhost.localnet.com).
ICMP Blacknurse Flood - utilise hping3 pour lancer une inondation ICMP contre la cible. Les paquets ICMP sont de type "Destination Unreachable, Port Unreachable". Cette attaque peut provoquer une utilisation élevée du CPU sur de nombreux systèmes. Utilisez 'Ctrl C' pour arrêter l'attaque. Voir http://blacknurse.dk/ pour plus d'informations. L'adresse source des paquets d'inondation est configurable.
TCP SYN Flood - envoie une inondation de paquets TCP SYN en utilisant hping3. Si hping3 n'est pas trouvé, il tente d'utiliser l'utilitaire nmap-nping à la place. Hping3 est préféré car il envoie les paquets aussi vite que possible. Des options sont fournies pour utiliser une IP source de votre interface, ou spécifier (usurper) une IP source, ou usurper une IP source aléatoire pour chaque paquet.
Optionnellement, vous pouvez ajouter des données au paquet SYN. Tous les paquets SYN ont le bit de fragmentation défini et utilisent le MTU virtuel de 16 octets de hping, garantissant la fragmentation.
Revenir à nmap-nping signifie envoyer X paquets par seconde jusqu'à ce que Y paquets soient envoyés et permet uniquement l'utilisation de l'IP de l'interface ou d'une IP source spécifiée (usurpée).
Une inondation TCP SYN est peu susceptible de faire tomber un serveur, mais c'est un bon moyen de tester l'infrastructure des commutateurs/routeurs/pare-feu et les tables d'état.
Notez que bien que hping indique l'interface et l'IP de sortie, ce qui pourrait vous faire penser que le script ne fonctionne pas comme prévu, l'IP source sera définie comme spécifié ; examinez une capture de paquets du trafic en cas de doute !
Étant donné que la source est définissable, il est simple de lancer une attaque LAND par exemple (voir https://en.wikipedia.org/wiki/LAND). La capacité de définir la source permet également, par exemple, d'envoyer des paquets SYN vers une cible et de forcer les réponses SYN-ACK vers une deuxième cible.
TCP ACK Flood - offre les mêmes options que l'inondation SYN, mais définit le drapeau TCP ACK (Acknowledgement) à la place. Certains systèmes passeront des cycles CPU excessifs à traiter de tels paquets. Si l'IP source est définie sur celle d'une connexion établie, il est possible qu'une connexion établie soit perturbée par cette inondation TCP ACK 'aveugle'. Cette attaque est considérée comme 'aveugle' car elle ne prend en compte aucun détail d'une connexion établie (comme les numéros de séquence ou d'accusé de réception).
Les défenses contre cette attaque incluent (sans s'y limiter) :
Limiter le nombre de connexions TCP par client ; cela empêchera une seule machine de rendre le serveur indisponible, mais n'est pas efficace si, par exemple, 10 000 clients lancent l'attaque simultanément. De plus, une telle mesure défensive peut avoir un impact négatif sur plusieurs clients (légitimes) opérant derrière un serveur proxy direct.
Limiter le temps disponible pour envoyer une requête HTTP complète ; cela est efficace car l'attaque repose sur l'envoi lent d'en-têtes au serveur (le serveur doit attendre tous les en-têtes du client avant de répondre). Si le serveur limite le temps de réception de tous les en-têtes d'une requête à 10 secondes (par exemple), cela limitera sévèrement l'efficacité de l'attaque. Il est possible qu'une telle mesure empêche des clients légitimes sur des connexions lentes/avec pertes d'accéder au site.
IPsec DOS - utilise ike-scan pour tenter d'inonder l'IP spécifiée avec des paquets Phase 1 en mode Principal et Agressif provenant d'IP sources aléatoires. Utilisez le module IPsec Scan pour identifier la présence d'un serveur VPN IPsec.
Distraction Scan - ce n'est pas vraiment une attaque DOS mais lance simplement plusieurs scans TCP SYN, en utilisant hping3, depuis une IP usurpée de votre choix (comme l'IP de votre pire ennemi). Il est conçu pour être un scan évident afin de déclencher tout IDS/IPS que la cible pourrait avoir et ainsi espérer obscurcir tout scan réel ou autre action que vous pourriez mener.
DNS NXDOMAIN Flood - cette attaque utilise netcat et est conçue pour stresser votre serveur DNS en envoyant une inondation de requêtes DNS pour des domaines (principalement) inexistants ainsi que quelques requêtes DNS malformées. Lorsqu'elle est exécutée contre un serveur DNS récursif, elle tente de monopoliser le serveur et de remplir le cache de réponses négatives, ralentissant/empêchant les requêtes légitimes. Fonctionne mieux lorsqu'elle est lancée depuis plusieurs clients attaquants. Utilisez 'Ctrl C' pour arrêter l'attaque.
MODULES D'EXTRACTION
Send File - Ce module utilise netcat pour envoyer des données via TCP ou UDP. Il peut être extrêmement utile pour extraire des données. Une somme de contrôle md5 et sha512 est calculée et affichée avant l'envoi du fichier. Le fichier peut être envoyé à un serveur de votre choix ; le Listener est conçu pour recevoir ces fichiers.
Listener - utilise netcat pour ouvrir un écouteur sur un port TCP ou UDP configurable. Cela peut être utile pour tester la connectivité syslog, recevoir des fichiers ou vérifier les scans actifs sur le réseau. Tout ce qui est reçu par l'écouteur est écrit dans ./pentmenu.listener.out ou dans un fichier de votre choix. Lors de la réception de fichiers via UDP, l'écouteur doit être fermé manuellement avec 'Ctrl C'. Cela est dû au fait que nous devons forcer netcat à rester ouvert pour recevoir plusieurs paquets, car UDP est un protocole sans connexion. Lors de la réception de fichiers via TCP, la connexion se ferme automatiquement après que le client a fermé sa connexion (une fois le fichier transféré) et les sommes de contrôle md5 et sha512 sont calculées pour le fichier reçu.
Ce script est uniquement destiné à un usage responsable et autorisé. Vous êtes responsable de vos propres actions et ce script est fourni sans garantie d'aucune sorte. Les auteurs déclinent toute responsabilité en votre nom.
Pentmenu est disponible en tant que paquet sur Arch Linux. Un grand merci à ArchStrike et Parrot Linux.
Aucun nécessaire, veuillez simplement créditer correctement l'auteur s'il vous plaît :)
TCP RST Flood - offre les mêmes options que l'inondation SYN, mais définit le drapeau TCP RST (Reset) à la place. Une telle attaque pourrait interrompre des connexions établies si l'IP source est définie sur celle d'une connexion établie. Voir https://en.wikipedia.org/wiki/TCP_reset_attack par exemple.
TCP XMAS Flood - similaire aux inondations SYN et ACK, avec les mêmes options, mais envoie des paquets avec tous les drapeaux TCP définis (CWR, ECN, URG, ACK, PSH, RST, SYN, FIN). Le paquet est considéré comme 'illuminé comme un arbre de Noël'. Théoriquement au moins, un tel paquet nécessite plus de ressources de la part du récepteur pour être traité qu'un paquet standard. Cependant, de tels paquets sont assez révélateurs d'un comportement inhabituel (comme une attaque) et sont généralement facilement identifiés par les IDS/IDP.
UDP Flood - très similaire à l'inondation TCP SYN mais envoie à la place des paquets UDP vers l'hôte:port spécifié. Comme pour la fonction d'inondation TCP SYN, hping3 est utilisé mais s'il n'est pas trouvé, il tente d'utiliser nmap-nping à la place. Toutes les options sont les mêmes que pour l'inondation TCP SYN, sauf que vous devez spécifier les données à envoyer dans les paquets UDP. Encore une fois, c'est un bon moyen de vérifier le débit des commutateurs/routeurs ou de tester les systèmes VOIP.
SSL DOS - utilise OpenSSL pour tenter de DOS un hôte:port cible. Il le fait en ouvrant de nombreuses connexions et en obligeant le serveur à effectuer des calculs de handshake coûteux. Ce n'est pas un code joli ou élégant, ne vous attendez pas à ce qu'il s'arrête immédiatement après avoir appuyé sur 'Ctrl C', mais il peut être brutalement efficace.
L'option de renégociation client est donnée ; si le serveur cible prend en charge la renégociation initiée par le client, cette option doit être choisie.
Même si le serveur cible ne prend pas en charge la renégociation client (par exemple CVE-2011-1473), il est toujours possible d'impacter/DOS le serveur avec cette attaque.
Il est très utile de lancer cela contre des équilibreurs de charge/proxies/serveurs activés SSL (pas seulement HTTPS, mais tout service chiffré SSL ou TLS !) pour voir comment ils réagissent sous la pression.
Slowloris - utilise netcat pour envoyer lentement des en-têtes HTTP à l'hôte:port cible dans le but de l'affamer en ressources. Cela est efficace contre de nombreux serveurs HTTP, bien que pas tous, à condition que les connexions puissent être maintenues ouvertes suffisamment longtemps. Par conséquent, cette attaque n'est efficace que si le serveur ne limite pas le temps disponible pour envoyer une requête HTTP complète. Certaines implémentations de cette attaque utilisent des en-têtes clairement identifiables, ce qui n'est pas le cas ici. Le nombre de connexions à ouvrir vers la cible est configurable. L'intervalle entre l'envoi de chaque ligne d'en-tête est configurable, avec une valeur par défaut aléatoire entre 5 et 15 secondes. L'idée est d'envoyer les en-têtes lentement, mais pas si lentement que le délai d'inactivité du serveur ferme la connexion. Par exemple, si nous envoyons une ligne d'en-tête toutes les 900 secondes, il est probable que le serveur aura fermé la connexion bien avant que nous n'envoyions une deuxième ligne d'en-tête. L'option d'utiliser SSL (SSL/TLS) est donnée, ce qui nécessite stunnel et permet d'utiliser l'attaque contre un serveur HTTPS. Vous n'utilisez pas l'option SSL contre un serveur HTTP standard.