In questa puntata parleremo di enumeration e scanning due tecniche molto rilevanti durante i penetration testing. Gli obiettivi primari di questo approccio e quello di scoprire più informazioni possibili riguardo i servizi che girano su un determinato host target e le relative versioni, le porte di comunicazione di questi ultimi verso internet e la versione di sistema operativo utilizzato. Questa fase si potrebbe definire un estensione dell’information gathering (uno dei punti che abbiamo trattato nei precedenti post) in quanto ci aiuta a definire meglio quella che è la struttura e la tipologia di rete che stiamo analizzando.

Una poca attenzione nello strutturare le fasi di information gathering e enumeration scanning porta alla riduzione delle possibilità di successo del testing. Detto questo addentriamoci meglio nei dettagli.
Durante questa fase, bisogna cercare di reperire più informazioni possibili riguardo il nostro target, all’inizio cerchermo di concentrarci specialmente su:
Sono due punti importanti che meritano di essere sviscerati nel migliore dei modi, inoltre è indispensabile tenere bene a mente che il “tempo è denaro” quindi dev’essere utilizzato nel migliore dei modi concentrandosi solo su host che sono disponibili e che offrono servizi verso l’esterno. In fin dei conti non ci pagano per giocare ma per fornire un report dettagliato su quelle che sono le possibili vulnerabilità.
Uno scanner lavora scandagliando una rete e cercando di capire quali host sono attivi e rispondono a “stimoli esterni”. Un modo per sapere se un host è attivo e può essere raggiunto dall’esterno è quello di usare pacchetti ICMP, questo perchè molte volte nelle aziende di piccolo e medio calibro il protocollo ICMP non viene disabilitato in quanto utile per testare eventuali anomalie di comunicazione da parte degli host facenti parte della rete. Naturalmente non tutti i team di rete applicano questo tipo di politica, quindi molte delle volte lo sfruttare questa tipologia di scansione non porta a risultati sperati. A questo punto se ci accorgiamo che ICMP è bloccato si può ovviare al problema utilizzando pacchetti TCP ACK, si sollecita l’host target con TCP ACK e si aspetta un TCP RST, solitamente questa tecnica permette di capire se l’host è attivo anche se nel mezzo vi sono dei firewall in quanto tendenzialmente il flusso su questa porta non viene bloccato. A questo punto dovreste aver segnato tutti gli host che hanno risposto alle vostre richieste e quindi poter sapere chi sono attivi e rispondono e chi invece sono inattivi e/o non raggiungibili.
Esistono diversi tipi di port scanning, quello più utilizzato ma non esente da falsi positivi ( vuol dire che viene rilevato un servizio o un sistema operativo che non sono quelli installati sul host target) è il SYN SCAN.

Il SYN SCAN funziona in questo modo: si inoltra un pacchetto con il flag SYN impostato all’host target e si aspetta una risposta. A questo punto possono verificarsi due cose: riceviamo come risposta un pacchetto con i flag SYN/ACK settatti che indica che la porta e quindi il servizio in ascolto sono attivi e raggiungibili mentre la seconda può essere un pacchetto di ritorno con settato il flag RST, indica che la porta contattata non risponde. Questo tipo di tecnica e molto veloce e abbastanza invisibile ai log di sistema in quanto non termina la fase di handshaking (inzio di una comunicazione bidirezionale tra due host).

Altre tecniche, che analizzeremo più avanti, utilizzate per la scansione di un sistema possono essere realizzate settando ad arte i flag FIN, PUSH, URG etc. Nel prossimo articolo parleremo meglio di come poter sfruttare nmap, uno degli scanner di rete più utilizzati, per capire quali servizi e quali porte sono disponibili su un host target.
Articoli che potrebbero interessarti: