
Uno script bash per ricognizione e attacchi DoS
Un menu bash select per recon di rete e attacchi DOS rapidi e facili
Sudo è implementato dove necessario. Testato su Debian e Arch.
Contributi e pull request sono benvenuti!
bash
sudo
curl
netcat (deve supportare l'opzione '-k', raccomandata la variante openbsd)
hping3 (o nping può essere usato come sostituto per attacchi flood)
openssl
stunnel
nmap
whois (non essenziale ma preferito)
nslookup (o 'host')
ike-scan
bind-tools (spesso parte del pacchetto 'bind', necessario per "host" e "nslookup")
$ wget https://raw.githubusercontent.com/GinjaChris/pentmenu/master/pentmenu
$ chmod +x ./pentmenu
$ ./pentmenu
In alternativa, scarica l'ultima release da https://github.com/GinjaChris/pentmenu/releases, estraila ed esegui lo script. Oppure usa git clone:
git clone https://github.com/GinjaChris/pentmenu
MODULI RECON
Mostra IP - usa curl per eseguire una ricerca del tuo IP esterno. Esegue ip a o ifconfig (a seconda dei casi) per mostrare gli IP delle interfacce locali.
DNS Recon - recon passivo, esegue una ricerca DNS (forward o reverse a seconda dell'input del target) e una ricerca whois del target. Se whois non è disponibile, esegue una ricerca su ipinfo.io (funziona solo per IP, non per hostname).
Ping Sweep - usa nmap per eseguire un ICMP echo (ping) contro l'host o la rete target.
Quick Scan - scanner di porte TCP usando nmap per scansionare le porte aperte con scansione TCP SYN. Nmap non esegue un ping sweep prima della scansione TCP SYN. Questo modulo scansiona le 1.000 porte più comuni. Questo modulo può, naturalmente, essere usato per scansionare un singolo host o un'intera rete, ma è progettato principalmente per identificare target su un intervallo di indirizzi IP. Questa scansione può richiedere molto tempo per terminare, per favore sii paziente.
Detailed Scan - usa nmap per identificare host vivi, porte aperte, tenta l'identificazione del sistema operativo, cattura banner/identifica la versione del software in esecuzione. Nmap non esegue un ping sweep prima di questa scansione. La stringa User-Agent predefinita di nmap viene cambiata a quella del browser Microsoft Edge in questa modalità, per aiutare a evitare il rilevamento tramite HTTP. Vengono scansionate tutte le porte TCP sul target (hostname/IP/subnet). Sebbene il modulo possa scansionare un singolo host o molti host, il suo uso previsto è eseguire una scansione di raccolta informazioni contro un singolo sistema. Questa scansione può richiedere molto tempo per terminare, per favore sii paziente.
UDP scan - usa nmap per scansionare le porte UDP aperte. Vengono scansionate tutte le porte UDP.
Check Server Uptime - stima l'uptime del target interrogando una porta TCP aperta con hping3. L'accuratezza dei risultati varia da una macchina all'altra; non funziona contro tutti i server.
IPsec Scan - tenta di identificare la presenza di un server VPN IPsec usando ike-scan e varie proposte Phase 1. Qualsiasi output di testo da questo modulo, riguardante "handshake" o "no proposal chosen", indica la presenza di un server VPN IPsec. Vedi http://nta-monitor.com/wiki/index.php/Ike-scan_User_Guide per un'ottima panoramica di ike-scan e VPN phase 1.
MODULI DOS
ICMP Echo Flood - usa hping3 per lanciare un tradizionale flood ICMP Echo contro il target. Su un sistema moderno è improbabile ottenere molto, ma è utile per testare i firewall per osservarne il comportamento. Usa 'Ctrl C' per terminare il flood. L'indirizzo sorgente dei pacchetti flood è configurabile. Nota che il target può essere un IP (es. 127.0.0.1) o un hostname (es. localhost.localnet.com). NON includere il protocollo come parte del target (es. http://localhost.localnet.com).
ICMP Blacknurse Flood - usa hping3 per lanciare un flood ICMP contro il target. I pacchetti ICMP sono di tipo "Destination Unreachable, Port Unreachable". Questo attacco può causare un alto utilizzo della CPU su molti sistemi. Usa 'Ctrl C' per terminare l'attacco. Vedi http://blacknurse.dk/ per maggiori informazioni. L'indirizzo sorgente dei pacchetti flood è configurabile.
TCP SYN Flood - invia un flood di pacchetti TCP SYN usando hping3. Se hping3 non viene trovato, tenta di usare l'utilità nmap-nping. Hping3 è preferito perché invia pacchetti il più velocemente possibile. Sono fornite opzioni per usare un IP sorgente della tua interfaccia, o specificare (spoofare) un IP sorgente, o spoofare un IP sorgente casuale per ogni pacchetto. Opzionalmente, puoi aggiungere dati al pacchetto SYN. Tutti i pacchetti SYN hanno il bit di frammentazione impostato e usano il MTU virtuale di hpings di 16 byte, garantendo la frammentazione. Il fallback a nmap-nping significa inviare X numeri di pacchetti al secondo fino a quando Y numero di pacchetti viene inviato e consente solo l'uso dell'IP dell'interfaccia o di un IP sorgente specificato (spoofato). Un flood TCP SYN è improbabile che danneggi un server, ma è un buon modo per testare l'infrastruttura di switch/router/firewall e le tabelle di stato. Nota che mentre hping riporterà l'interfaccia e l'IP in uscita che potrebbero farti pensare che lo script non funzioni come previsto, l'IP sorgente sarà impostato come specificato; controlla una cattura di pacchetti del traffico in caso di dubbio! Poiché la sorgente è definibile, è semplice lanciare un attacco LAND per esempio (vedi https://en.wikipedia.org/wiki/LAND). La capacità di impostare la sorgente consente anche, ad esempio, di inviare pacchetti SYN a un target e forzare le risposte SYN-ACK a un secondo target.
TCP ACK Flood - offre le stesse opzioni del SYN flood, ma imposta il flag TCP ACK (Acknowledgement) invece. Alcuni sistemi spenderanno cicli CPU eccessivi elaborando tali pacchetti. Se l'IP sorgente è impostato su quello di una connessione stabilita, è possibile che una connessione stabilita possa essere interrotta da questo 'blind' TCP ACK Flood. Questo attacco è considerato 'blind' perché non tiene conto di alcun dettaglio di alcuna connessione stabilita (come i numeri di sequenza o di acknowledgement).
Le difese contro questo attacco includono (ma non sono limitate a):
Limitare il numero di connessioni TCP per client; questo impedirà a una singola macchina di rendere il server non disponibile, ma non è efficace se, ad esempio, 10.000 client lanciano l'attacco simultaneamente. Inoltre, tale misura difensiva potrebbe influenzare negativamente più client (legittimi) che operano dietro un server proxy forward.
Limitare il tempo disponibile per inviare una richiesta HTTP completa; questo è efficace poiché l'attacco si basa sull'invio lento di intestazioni al server (il server dovrebbe attendere tutte le intestazioni dal client prima di rispondere). Se il server limita il tempo per ricevere tutte le intestazioni di una richiesta a 10 secondi (ad esempio), limiterà severamente l'efficacia dell'attacco. È possibile che tale misura impedisca a client legittimi su connessioni lente/con perdita di accesso al sito.
IPsec DOS - usa ike-scan per tentare di inondare l'IP specificato con pacchetti Main mode e Aggressive mode Phase 1 da IP sorgente casuali. Usa il modulo IPsec Scan per identificare la presenza di un server VPN IPsec.
Distraction Scan - questo non è realmente un attacco DOS ma semplicemente lancia multiple scansioni TCP SYN, usando hping3, da un IP spoofato di tua scelta (come l'IP del tuo peggior nemico). È progettato per essere una scansione ovvia al fine di attivare qualsiasi IDS/IPS che il target possa avere e quindi, si spera, oscurare qualsiasi scansione reale o altra azione che potresti eseguire.
DNS NXDOMAIN Flood - questo attacco usa netcat ed è progettato per stress testare il tuo server DNS inviando un flood di query DNS per domini (per lo più) inesistenti, oltre ad alcune richieste DNS malformate. Quando eseguito contro un server DNS ricorsivo, cerca di impegnare il server e riempire la cache con risposte negative, rallentando/impedendo le query legittime. Funziona meglio se lanciato da più client attaccanti. Usa 'Ctrl c' per fermare l'attacco.
MODULI DI ESTRAZIONE
Invia File - Questo modulo usa netcat per inviare dati con TCP o UDP. Può essere estremamente utile per estrarre dati. Un checksum md5 e sha512 viene calcolato e visualizzato prima di inviare il file. Il file può essere inviato a un server di tua scelta; il Listener è progettato per ricevere questi file.
Listener - usa netcat per aprire un listener su una porta TCP o UDP configurabile. Può essere utile per testare la connettività syslog, ricevere file o verificare la presenza di scansioni attive sulla rete. Qualsiasi cosa ricevuta dal listener viene scritta in ./pentmenu.listener.out o in un file a tua scelta. Quando si ricevono file tramite UDP, il listener deve essere chiuso manualmente con 'Ctrl C'. Questo perché dobbiamo forzare netcat a rimanere aperto per ricevere più pacchetti, poiché UDP è un protocollo senza connessione. Quando si ricevono file tramite TCP, la connessione si chiude automaticamente dopo che il client chiude la sua connessione (una volta trasferito il file) e vengono calcolati i checksum md5 e sha512 per il file ricevuto.
Questo script è solo per uso responsabile e autorizzato. Sei responsabile delle tue azioni e questo script è fornito senza garanzia di alcun tipo. Gli autori non accettano alcuna responsabilità per tuo conto.
Pentmenu è disponibile come pacchetto su Arch Linux. Grande amore a ArchStrike e Parrot linux.
Non necessarie, si prega solo di attribuire correttamente l'autore :)
TCP RST Flood - offre le stesse opzioni del SYN flood, ma imposta il flag TCP RST (Reset) invece. Un tale attacco potrebbe interrompere connessioni stabilite se l'IP sorgente è impostato su quello di una connessione stabilita. Vedi https://en.wikipedia.org/wiki/TCP_reset_attack per esempio.
TCP XMAS Flood - simile ai flood SYN e ACK, con le stesse opzioni, ma invia pacchetti con tutti i flag TCP impostati (CWR,ECN,URG,ACK,PSH,RST,SYN,FIN). Il pacchetto è considerato 'illuminato come un albero di Natale'. Teoricamente almeno, un tale pacchetto richiede più risorse per essere elaborato dal ricevitore rispetto a un pacchetto standard. Tuttavia, tali pacchetti sono abbastanza indicativi di comportamento insolito (come un attacco) e sono solitamente facilmente identificati da IDS/IDP.
UDP Flood - molto simile al TCP SYN Flood ma invia invece pacchetti UDP all'host:porta specificato. Come la funzione TCP SYN Flood, viene usato hping3 ma se non viene trovato, tenta di usare nmap-nping. Tutte le opzioni sono le stesse del TCP SYN Flood, tranne che devi specificare i dati da inviare nei pacchetti UDP. Ancora, questo è un buon modo per verificare il throughput di switch/router o per testare sistemi VOIP.
SSL DOS - usa OpenSSL per tentare un DOS contro un host:porta target. Lo fa aprendo molte connessioni e causando al server di fare costosi calcoli di handshake. Questo non è un codice bello o elegante, non aspettarti che si fermi immediatamente premendo 'Ctrl c', ma può essere brutalmente efficace. Viene data l'opzione per la rinegoziazione client; se il server target supporta la rinegoziazione avviata dal client, questa opzione dovrebbe essere scelta. Anche se il server target non supporta la rinegoziazione client (ad esempio CVE-2011-1473), è comunque possibile influenzare/DOS il server con questo attacco. È molto utile eseguirlo contro loadbalancer/proxy/servers con SSL (non solo HTTPS, ma qualsiasi servizio crittografato SSL o TLS!) per vedere come reagiscono sotto sforzo.
Slowloris - usa netcat per inviare lentamente intestazioni HTTP all'host:porta target con l'intenzione di esaurirne le risorse. Questo è efficace contro molti, anche se non tutti, i server HTTP, purché le connessioni possano essere tenute aperte abbastanza a lungo. Pertanto questo attacco è efficace solo se il server non limita il tempo disponibile per inviare una richiesta HTTP completa. Alcune implementazioni di questo attacco usano intestazioni chiaramente identificabili, cosa che non accade qui. Il numero di connessioni da aprire al target è configurabile. L'intervallo tra l'invio di ogni riga di intestazione è configurabile, con il valore predefinito che è un valore casuale tra 5 e 15 secondi. L'idea è di inviare le intestazioni lentamente, ma non così lentamente che il timeout di inattività del server chiuda la connessione. Ad esempio, se inviamo una riga di intestazione ogni 900 secondi, è probabile che il server abbia chiuso la connessione molto prima che inviamo una seconda riga di intestazione. Viene data l'opzione di usare SSL (SSL/TLS), che richiede stunnel e permette di usare l'attacco contro un server HTTPS. Non usare l'opzione SSL contro un server HTTP semplice.