Come effettuare un PenTest – Parte 4: Enumerazione dei target

Siamo arrivati alla fase definita “Enumerating Target”. Tale fase è il processo per il quale vengono raccolte informazioni sulla macchina target come:

  • Elenco di Porte aperte (Port Scan);
  • Identificazione OS (fingerprint);
  • Servizi Applicativi Attivi.

Prima di affrontare questi tre punti, provando a descrivere alcuni approcci utili, è opportuno definire in maniera chiara la definizione di Port Scanning:

Port Scanning è un’attività che permette di determinare lo stato delle porte TCP o UDP su una macchina vittima. Una porta aperta significa che un host è in ascolto e dunque vi è un servizio accessibile. Al contrario una porta chiusa sta ad indicare che il target non è in ascolto su quella specifica porta.

Un esempio pratico di port scanning e il suo possibile risultato può essere questo:

Un attaccante, interrogando una porta aperta (dunque un servizio attivo su una potenziale vittima), è in grado di recuperare la versione di un Web Server (Esempio molto banale ma chiarificatore).

Se la versione del Web Server risulta vulnerabile, secondo le ultime scoperte, potrebbe essere possibile sfruttare la vulnerabilità.

Prima di affrontare una simulazione di scansione, occorre ricordare due concetti base a livello di trasporto nello STACK TCP/IP:

  • Il protocollo TCP è considerato statefull in quanto ha dei controlli interni inerenti la ritrasmissione dei pacchetti; utilizza il concetto del Three Way-HandShake ed è utilizzato, data la sua affidabilità, per trasmettere dati come HTTP, FTP o SSH.

  • Il protocollo UDP è al contrario Stateless. I pacchetti inviati non sono controllati e qualora un pacchetto vada perso, dovrà essere ritrasmesso dall’applicazione.

    Un modo per poter identificare porte aperte e relativi servizi, è utilizzando il network tool NMAP. La possibilità di conoscere la versione dei servizi esposti può essere un buon punto di partenza per ricercare eventuali vulnerabilità o exploit pubblici.

Nmap risulta essere uno dei tools più famosi e completi presenti nel panorama dell’IT security. Oltre al semplice port scan può essere usato anche per:

  • Host Discovery;
  • Identificazione di Host/Servizi;
  • Os (Operating System) Fingerprint;
  • Network Traceroute;
  • Custom Nmap Script.

Per installare NMAP basta eseguire il comando:

# apt-get update

# apt-get install nmap

# nmap

Nell’interrogare una porta, essa potrebbe rispondere in più modi, a seconda del suo stato. NMAP si preoccupa di interpretare le risposte e fornirci un riscontro User-Friendly.

Le porte possono essere:

  • Open: significa che ha la porta in ascolto ha accettato un pacchetto TCP o un UDP datagram;
  • Closed: significa che anche se la porta risulta accessibile, non vi è nessun servizio esposto;
  • Filtered: sta ad indicare che il tool non è in grado di identificare se la porta è aperta o no, in quanto vi può essere un packet-filter
  • Unfiltered: non riesce ad identificare se la porta è aperta o chiusa;
  • Open | Filtered: è solito ricevere questo stato quando nmap non è in grado di capire se la porta è aperta o filtrata. Accade quando vi è un drop dei pacchetti;
  • Closed | Filtered: in quest’ultimo caso, il tool non è in grado di determinare se la porta è filtrata o chiusa.

L’utilizzo basilare di Nmap è stato già affrontato in un precedente articolo che vi invito a leggere prima di proseguire la lettura di questo articolo: https://www.ictpower.it/sicurezza/testare-la-sicurezza-della-propria-rete-utilizzando-nmap.htm

Tipologie di Scansione: una per ogni occasione

Nmap utilizza numerose tipologie di scansioni: ognuna di esse ha una funzione specifica e con finalità ben precise.

  • TCP Connect scan (-sT): questa scansione va a stabilire un three-way handshake su tutte le porte specificate dall’attaccante. Risulta essere molto intrusiva, lenta e loggabile dalla vittima;
  • SYN Scan (-sS): è la tipologia di scansione utilizzata da Nmap per default, veloce e non intrusiva. Definita anche half-open in quanto vengono inviati pacchetti TCP con FLAG SYN, senza completare il three-way Handshake.

    In base alla risposta della vittima è facile capire se un servizio risulta essere in ascolto.

  1. Se la risposta ad un pacchetto SYN risulta essere SYN/ACK siamo in presenza di una porta aperta e con un servizio attivo;
  2. nel caso di risposta RST/ACK, significa che la porta non è in ascolto.
  3. Se dovessimo ricevere un pacchetto ICMP di tipo “destination unreacheble” potrebbe trovarci di fronte ad una porta filtrata.
  • TCP NULL Scan (-sN), FIN scan (-sF) o XMAS scan (-sX): sono 3 tipologie di scansione che agiscono sempre sui flag del protocollo TCP. NULL scan tende a non settare nessun bits di controllo. FIN Scan setta il FLAG FIN nel TCP, XMAS Scan setta i FLAG URG, FIN e PSH.
    • Se si riceve un pacchetto con FLAG RST, la porta risulta chiusa; se non si riceve risposta significa che la porta può essere aperta o filtrata.
  • TCP Maimon scan (-sM): è una tecnica di scansione basata sul settare i FLAG TCP con FIN/ACK.
    • Se riceviamo un pacchetto RST la porta risulterà chiusa;
    • se il pacchetto sarà droppato la porta è da considerarsi aperta. (Droppato da DROP, dunque scartato)
  • TCP ACK scan (-sA): Utilizzato prevalentemente per vedere se vi è un firewall di tipo stateful e quali porte sono filtrate.
    • Se riceviamo un pacchetto con FLAG RST la porta non è filtrata;
  • TCP Idle scan (-sI) : è una scansione indiretta, utilizzata per nascondere il vero attaccante. Utilizza infatti uno “Zombie”. Potrebbe essere un buon modo per mascherare alcune tracce.

Fino ad ora abbiamo descritto le scansioni più utilizzate con il protocollo TCP. Per il protocollo UDP le performance di scansione tendono ad essere molto inferiori.

Dunque mettetevi comodi…

Un buon consiglio potrebbe essere quello di concentrarsi su le porte standard o condurre una scansione in modo distribuito.

# nmap -sU 8.8.8.8 -p 53

[UDP scan sulla porta 53, host 8.8.8.8]

Ricorda: Nmap, per default, scansiona le top 1000 porte. Per specificare le porte usa il comando -p.

Bypass delle protezioni

Esistono alcune tecniche molto utili per Bypassare controlli basati su IDS o Firewall:

  • Fragment packets (-f): nmap si preoccuperà di dividerà i pacchetti in 8 byte o meno dopo l’header IP;
  • (–mtu): permette di specificare la dimensione della frammentazione di un pacchetto. Il Maximum Transmission Unit (MTU) deve essere un multiplo di otto o Nmap restituirà errore;
  • –source-port <portnumber> permette di specificare la porta sorgente. È utile per ingannare un firewall qualora esso accetti una determinata porta in ingresso;
  • –data-length: permette di specificare la grandezza dei pacchetti inviati;
  • –max-parallelism: con questa istruzione possiamo specificare quanti tentativi/prove possono esser fatte verso un target in un certo tempo;
  • –scan-delay <time>: può essere utile per ingannare IPS/IDS basati su rilevazione degli eventi con soglia.

Una combinazione tra una scansione ben studiata e delle impostazioni di evasione potrebbe garantirvi un ottimo risultato in poco tempo.

Per chi volesse, esiste la possibilità di avere una GUI per utilizzare Nmap. Parliamo di ZenMap. Oltre ad un’interfaccia più semplice ed intuitiva, vi è la possibilità di salvare profili o configurazioni personalizzate.

Inoltre vi è la possibilità di osservare una possibile topologia di rete scansionata.

Enumerazione SMB

Se stiamo andando a testare un ambiente con prevalenza di macchine Windows, questo approccio può essere molto utile. Si tratta di una enumerazione basata sul collezionare informazioni del protocollo Server Message Block.

Tale protocollo è usato per condividere file e stampanti in rete ed è utilizzato da Sistemi Windows.

Per affrontare un enumerazione SMB è possibile scaricare il tool nbtscan.

Per utilizzarlo, basta digitare:

# nbtscan 192.168.1.1-254

[Si noti come ho specificato un intervallo di IP]

Il risultato del comando restituisce il range di ip con le risposte alle query NetBIOS. La differenza sostanziale tra il comando nbtscan e nbtstat è che nello script nbtscan è possibile inserire un range di Ip.

Tale tipologia di enumerazione resta sconsigliata in quanto facilmente loggabile in una macchina vittima.

Esistono altre tecniche di enumerazione più avanzate come quella basata su SNMP (snmpcheck) o VPN (ike-scan) che non affronteremo. Per ulteriori dettagli vi rimando ai rispettivi tools:

Snmpcheck: https://tools.kali.org/information-gathering/snmp-check

Ike-scan: https://github.com/royhills/ike-scan

Siamo giunti al termine di questo articolo con la consapevolezza e l’abilità di poter identificare servizi esposti e possibilmente vulnerabili. Nel prossimo passo cercheremo di mappare tutte le possibili vulnerabilità presenti sulla macchina target per poi sfruttarle a nostro vantaggio.