
Strumento di rete, ricognizione e sicurezza offensiva per Linux.
Hawk è un'utilità di rete e di pentest che ho sviluppato per poter eseguire diversi tipi di attività utilizzando la stessa suite, invece di passare da uno strumento all'altro.
Attualmente, questo script può eseguire una varietà di attività come ifconfig, ping, traceroute, scansioni delle porte (inclusa SYN, TCP, UDP, ACK, scansione completa, host discovery (scansione dei dispositivi attivi su una rete locale), rilevamento dell'indirizzo MAC (ottieni l'indirizzo MAC di un IP host su una rete locale), banner grabbing, controlli DNS (con informazioni di geolocalizzazione), WHOIS, enumerazione dei sottodomini, ricognizione delle vulnerabilità, packet sniffing, MAC spoofing, IP spoofing, SYN flooding, attacco deauth e attacco brute-force (beta).
Altre funzionalità sono ancora in fase di implementazione. Le implementazioni future potrebbero includere rilevamento WAF, enumerazione DNS, analisi del traffico, scanner di vulnerabilità XSS, avvelenamento della cache ARP, avvelenamento della cache DNS, MAC flooding, ping of death, attacco di disassociazione di rete (non attacco deauth), OSINT, spoofing email, exploit, alcune attività automatizzate e altro.

Nota che attualmente questo script funziona bene solo su Linux. Se lo provi su Windows o macOS, potrebbe funzionare, ma appariranno numerosi errori.
Questo script è stato testato su:
Per installare i pacchetti necessari affinché lo script funzioni senza problemi, esegui semplicemente lo script setup.sh con privilegi di root. Attualmente, questo script di installazione è supportato solo su distribuzioni basate su Debian, Red Hat e Arch che hanno rispettivamente il gestore di pacchetti apt, dnf e 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, ecc.). Sulla maggior parte dei sistemi, per installare Hawk esegui semplicemente i seguenti comandi:
git clone https://github.com/medpaf/hawk.git
cd hawk
sudo sh setup.sh
Quindi, segui semplicemente le istruzioni. Ignora i messaggi di errore che compaiono durante l'installazione.
Tuttavia, se stai utilizzando qualsiasi altra distribuzione Linux con un gestore di pacchetti diverso, installa manualmente i pacchetti usando il gestore di pacchetti della tua distribuzione. A seconda della distribuzione specifica utilizzata, alcuni dei pacchetti richiesti per eseguire questo script potrebbero essere già installati sulla tua macchina.
Se desideri conoscere i pacchetti necessari, guarda il file setup.sh.
Dopo l'installazione, per eseguire il programma, basta andare nella directory del progetto ed eseguire il file hawk.py usando python. Si consiglia di eseguire lo script come root per ottenere prestazioni migliori ed evitare errori di autorizzazione. Il comando utilizzato è il seguente:
sudo python3 hawk.py
Per effettuare le configurazioni, basta andare al file di configurazione in files/conf.py e modificarlo.
Se vuoi visualizzare la configurazione di rete TCP/IP attuale del tuo sistema, digita il seguente comando:
-ifconfig

Per inviare pacchetti ICMP a uno o più host per verificare la connettività, digita semplicemente:
-ping <HOST(s) IP/FQDN>

Per diagnosticare i percorsi di rotta e misurare i ritardi di transito, usa il comando -traceroute:
-traceroute <HOST IP/FQDN>

La scansione delle porte aiuta a rilevare potenziali violazioni della sicurezza identificando gli host connessi alla tua rete e i servizi in esecuzione.
Sono supportati più tipi di scansione, tra cui TCP SYN (-scansyn) [nota anche come scansione stealth], TCP Connect (-scantcp), UDP (-scanudp), TCP ACK (-scanack) e scansione completa (-scan).
-scan -host <HOST(s) IP/FQDN>
-scan -host <HOST(s) IP/FQDN> -p <PORT(s)>
Se desideri scansionare un intervallo di IP e/o un intervallo di porte, usa uno dei seguenti comandi:
-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>

Dopo questa scansione, è possibile vedere che sia la porta 22 (SSH) che la 80 (HTTP) sono aperte.
Per cercare i dispositivi attualmente attivi su una determinata rete, digita il seguente comando:
-scanlan
Poi digita la rete che vuoi scansionare.

Per ottenere l'indirizzo MAC di uno o più host attivi sulla LAN, usa il comando:
-getmac -host <HOST(s) IP>

Il rilevamento della versione, o banner grabbing, è una tecnica di ricognizione che recupera le informazioni del banner di un software. Questo banner di solito contiene informazioni importanti su un servizio di rete, inclusi, a titolo esemplificativo, il nome e la versione del software. I server FTP, Web, SSH e SMTP spesso espongono nel loro banner informazioni vitali sul software che eseguono.
Un attacco banner di solito inizia con una scansione di enumerazione per trovare le porte aperte. Una volta identificato un servizio che vuoi prendere di mira, puoi inviare pacchetti specifici e ispezionare il traffico per le informazioni indicate.
Per eseguire il banner grabbing, a seconda delle tue esigenze specifiche, digita uno dei seguenti comandi:
-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)>

Questa funzionalità è simile al noto comando nslookup usato sui sistemi UNIX. Se vuoi eseguire un controllo DNS, digita quanto segue:
-ns <HOST(s) IP/FQDN>

Disclaimer: Nota che questa funzionalità usa l'API di IPinfo. Si consiglia di sostituire la chiave API con la tua, poiché la chiave fornita potrebbe essere utilizzata da altre persone. Per cambiare le chiavi API, vai al file di configurazione in files/conf.py.
WHOIS è un protocollo TCP che ha lo scopo di consultare i contatti e il DNS. Per richiedere il WHOIS di una o più pagine, basta digitare:
-whois <HOST(s) IP/PQDN>

L'enumerazione dei sottodomini è il processo di ricerca di sottodomini validi per uno o più domini.
L'enumerazione dei sottodomini può rivelare molti domini/sottodomini che rientrano nell'ambito di una valutazione della sicurezza, aumentando così le possibilità di trovare vulnerabilità.
Se desideri cercare sottodomini comuni di un dominio, digita semplicemente:
-sdenum <PQDN>
Questo comando usa una wordlist predefinita per cercare sottodomini. Tuttavia, se vuoi usare la tua wordlist, digita:
-sdenum <PQDN> -wordlist <WORDLIST PATH>

Il directory busting è il processo di ricerca delle directory all'interno di un server web.
Per eseguire questa attività digita:
-dirbust <HOST IP/FQDN>
Questo comando usa una wordlist predefinita per cercare sottodomini. Tuttavia, se vuoi usare la tua wordlist, digita:
-dirbust <HOST IP/FQDN> -wordlist <WORDLIST PATH>

Per scansionare uno o più host alla ricerca di vulnerabilità, usa il seguente comando:
-vulnscan -host <HOST(s) IP/FQDN>

Disclaimer: Nota che questa funzionalità usa l'API di Shodan. Si consiglia di sostituire la chiave API con la tua, poiché la chiave fornita potrebbe essere utilizzata da altre persone. Per cambiare le chiavi API, vai al file di configurazione in files/conf.py.
Per eseguire il packet sniffing, digita:
-sniff

Disclaimer: Se vuoi sniffare tutti i dati che passano attraverso una rete, porta prima la tua scheda o adattatore wireless in modalità monitor.
Il MAC spoofing è la generazione di frame con un indirizzo MAC diverso dall'indirizzo della NIC mittente. Per cambiare l'indirizzo MAC di un'interfaccia, esegui il comando:
-macspoof -source <SOURCE MAC> -iface <INTERFACE>

Come puoi vedere nello screenshot qui sotto, l'indirizzo MAC dell'interfaccia è stato cambiato con successo.

L'obiettivo dell'IP spoofing è modificare il corretto indirizzo IP di origine in modo che il sistema a cui è diretto un pacchetto non possa identificare correttamente il mittente.
Nota che questo comando funziona solo su macchine con vulnerabilità non patchate. Per eseguire l'IP spoofing su una porta specifica di un host, usa il seguente comando:
-ipspoof -source <SOURCE IP> <SOURCE PORT> -target <TARGET IP/FQDN> <TARGET PORT>
Se vuoi usare un IP di origine casuale, digita il seguente comando:
-ipspoof -source r <SOURCE PORT> -target <TARGET IP/FQDN> <TARGET PORT>
Puoi anche usare una porta di origine casuale:
-ipspoof -source <SOURCE IP> r -target <TARGET IP/FQDN> <TARGET PORT>

Disclaimer: Usalo solo per scopi di test e prendi di mira le tue stesse macchine.
Il SYN Flood è un metodo di attacco DDoS che causa un overhead diretto nel livello di trasporto (livello 4) e un overhead indiretto nel livello applicativo (livello 7).
Per tentare il SYN flooding, digita:
-synflood -source <SOURCE PORT> -target <TARGET IP/FQDN> <TARGET PORT>
Se vuoi usare una porta di origine casuale, digita il seguente comando:
-synflood -source r -target <TARGET IP/FQDN> <TARGET PORT>

Disclaimer: Usalo solo per scopi di test e prendi di mira le tue stesse macchine.
Un attacco deauth è un tipo di attacco wireless che prende di mira la comunicazione tra un router e uno o più dispositivi connessi a quel router, costringendo di fatto la macchina vittima a disconnettersi dall'access point.
Per eseguire questo attacco, usa il seguente comando:
-deauth -target <TARGET MAC> -gateway <GATEWAY MAC> -iface <INTERFACE>
Se hai intenzione di attaccare tutti i client di un gateway, digita:
-deauth -target a -gateway <GATEWAY MAC> -iface <INTERFACE>
Puoi anche scegliere la tua interfaccia wireless predefinita (configurata in files/conf.py) per eseguire l'attacco:
-deauth -target <TARGET MAC> -gateway <GATEWAY MAC> -iface d

Dopo il comando mostrato nello screenshot qui sopra, tutti i dispositivi connessi a quell'access point sono stati disconnessi e non hanno potuto riconnettersi mentre questo script era in esecuzione.
Disclaimer: Per eseguire questo attacco, assicurati di avere una scheda o un adattatore wireless che supporti la modalità monitor e attivala prima di tentare un attacco deauth. Usalo solo per scopi di test e prendi di mira le tue stesse macchine.
Un attacco brute-force è un tentativo di violare una password o un nome utente.
Per eseguire un attacco brute-force e trovare credenziali comuni/deboli, digita:
-bruteforce <SERVICE> -target <TARGET IP/FQDN> -user <USERNAME>
Se desideri usare una wordlist personalizzata, usa il comando:
-bruteforce <SERVICE> -target <TARGET IP/FQDN> -user <USERNAME> -wordlist <WORDLIST PATH>
Per il momento, è supportato solo il servizio SSH.
Disclaimer: Nota che il server di destinazione potrebbe avere meccanismi difensivi contro questo tipo di attacco e bloccare i tentativi dell'attaccante di indovinare la password. Usalo solo per scopi di test e prendi di mira le tue stesse macchine.
Questo comando automatizza alcune delle tecniche di ricognizione disponibili in questo script. Per farlo, digita:
-autoscan <HOST(s) IP/FQDN>
La maggior parte degli utenti wireless usa le proprie schede wireless solo come stazione verso un AP. In modalità managed, la scheda wireless e il software del driver si affidano a un AP locale in modalità managed per fornire la connettività alla rete wireless.
Alcune schede wireless supportano anche la funzionalità di modalità monitor. Quando è configurata in modalità monitor, la scheda wireless smette di trasmettere dati e sniffa il canale attualmente configurato, riportando il contenuto di tutti i pacchetti osservati al sistema operativo host.
Per portare un'interfaccia in modalità monitor, usa il seguente comando:
-mode monitor -iface <INTERFACE>
Puoi anche impostare l'interfaccia sull'interfaccia wireless predefinita (configurata in files/conf.py):
-mode monitor -iface d

Come puoi vedere nello screenshot qui sotto, la modalità dell'interfaccia è stata cambiata con successo.

Tuttavia, se desideri riportare l'interfaccia in modalità managed, digita:
-mode managed -iface <INTERFACE>
Puoi anche impostare l'interfaccia sull'interfaccia wireless predefinita (configurata in files/conf.py):
-mode managed -iface d

Come puoi vedere nello screenshot qui sotto, la modalità dell'interfaccia è stata cambiata con successo.

Apri una issue o una pull request, oppure inviami un'email a [email protected].
Questa repository è sotto la Licenza MIT.