Come effettuare un PenTest – Parte 3: Target Discover
Eccoci qui.
Siamo arrivati alla parte di Target Discover, nonché la terza fase del PenTest. Cercheremo di descrivere dei metodi per identificare un target utilizzando sempre alcuni fantastici Tools. Occorre ricordare che il successo di questa fase e delle prossime dipende solo ed esclusivamente da un buon approccio alla fase 2 (Information Gathering).
I tool che introdurremo, alcuni di uso comunissimo per operazioni di troubleshooting, saranno utilizzati per identificare una host target che dovrà essere sfruttato per condurre le fasi successive del pentest. Prima di condurre la fase di “Identification” è importante rileggere le condizioni di ingaggio assegnate dal cliente: una possibile richiesta di mascherare tutte le nostre attività e renderle non rilevabili da IDS/IPS, deve modificare il nostro approccio in modo da rispettare tale richieste. (es. evasion techniques)
Ping
Chi di voi non conosce il ping?
Per chi non lo conoscesse, il “ping” è un comando universale (Windows/Unix) che permette di comprendere se un host è disponibile o meno. Basato su invio/ricezione di un pacchetto ICMP “Echo Request/ Echo Reply” verso l’host target. Se host è disponibile ed un eventuale FW non blocca i pacchetti ICMP esterni avremo la risposta che l’host è attivo.
#ping 127.0.0.1
In linux, il comando ping non si interrompe mai, fin quando non viene premuta la combinazione CTRL + C.
Il ping può essere usato con ulteriori opzioni che possono essere molto utili come:
-c
corrisponde al numero di pacchetti echo request che devono essere inviati;
-I
permette di identificare su quale Inteface address si vuole agire;
-s
determina la dimensione del pacchetto; Per default un pacchetto echo request è di 56 byte che viene traslato in 64 ICMP byte + 6 byte di header data.
Fping
Variante del comando ping è Fping che viene usato per inviare pacchetti multipli ICMP echo request verso più host contemporaneamente. È possibile specificare una lista di hosts via shell o via file.
Fping invia solo 3 pacchetti echo request e si preoccupa di analizzare le risposte di ogni host. Se un host risposte lo elimina dalla lista target, se non riceve risposta entro un limite di tempo, lo marca come unreacheble.
#fping -h
È possibile anche modificare il numero di tentativi verso il target utilizzando opzione -r (retry limit).
-s
può essere utilizzato per mostrare statistiche cumulative
Arping
Questo comando è molto utile in una LAN, in quanto opera a livello 2 nella pila OSI (network layer) e non può essere direzionato tra routers o gateway. Permette di sfruttare un comando legittimo e difficilmente individuabile da sonde IDS/IPS.
# arping
Hping3
Questo tool permette di generare pacchetti e di analizzare le possibili risposte. La possibilità di creare pacchetti custom permette di essere usato per security test come por scanning, test di firewall, test di performance network, exploit di vulnerabilità nello stack TCP/IP o test su IDS.
# hping3
-0 permette di inviare pacchetti IP raw;
-1 Invia pacchetti ICMP;
-2 Invia pacchetti UDP
-8 Indica la modalità “scan”;
-9 Indica la modalità “listen”.
Tramite questo tool è possibile generare un pacchetto TCP con flag personalizzati come:
-S SYN
-A ACK
-R RST
-F FIN
-P PUSH
-U URG
-X XMAS (Tutti i flag attivi)
-Y YMAS
Un esempio di utilizzo di hping3 è stato già affrontato qui: https://www.ictpower.it/sicurezza/come-funziona-un-attacco-dos-blacknurse.htm
Nbtscan
Un tool utile in caso di target discover dove i target sono prettamente ambienti Windows è nbtscan.
Esso permette di recuperare le informazioni dal NETBIOS. Permette di produrre un report dove vengono raccolte info come IP, Host Name, servizi disponibili, username di chi è loggato e MAC dell’host.
#nbtscan 192.168.x.x (per una scansione di una classe di IP usare -r 192.168.x.x/24)
Per una scansione dei servizi utilizzare l’opzione -hv.
Dopo aver elencato una lista utile per la target discovery, passiamo ad analizzare i target identificati.
Os fingerprint è il processo che determina il sistema operativo usato da un host presente in rete; esistono due metodologie: attiva e passiva:
- Nella modalità attiva, più intrusiva e più veloce, andiamo a generare dei pacchetti e analizzare le risposte;
- nella tecnica passiva, si osserva l’attività di rete dell’host tramite sniffing senza andare a produrre pacchetti. (modalità stealth).
P0f
Il primo tool che analizziamo permette di ottenere un OS fingerprint in maniera passiva. Analizza gli host che scambiano pacchetti TCP con flag (SYN, SYN+ACK, RST).
Nmap
Il tool più famoso per il port scan è NMAP. Anche questo tool possiede la possibilità di ottenere OS fingerprint.
# Nmap -O 192.168.x.x
Per chi volesse approfondire il funzionamento dell’OS fingerprint di Nmap vi rimando al link: https://nmap.org/man/it/man-os-detection.html a mio avviso più completo di qualsiasi altra spiegazione.
Nel prossimo articolo sfrutteremo Nmap per affrontare la fase di enumerazione che consiste nel processo di raccolta di informazioni riguardo porte, sistema operativo e servizi disponibili sull’host target.