Metodi diversi per effettuare un Network Scanning

Tempo di lettura: 11 minuti
Data pubblicazione: March 18, 2016

In questo articolo entrerò nel dettaglio di un Network Scanning, in modo da poter capire a fondo come funziona e come effettuare uno scan specifico.

L’handshake a 3 vie

Il protocollo TCP usa il cosiddetto handshake a 3 vie per stabilire una connessione tra un client e un server. L’operazione esegue questi tre passi:

  1. Il computer A inizializza una connessione inviando al server un pacchetto con il solo SYN flag settato;
  2. Il server (se online e la porta richiesta è aperta) risponde con un pacchetto con il SYN flag e l’ACK settati;
  3. Il computer A rimanda al server il flag settato.

Semplificando, A chiede al server: _“Vorrei parlare con te su questa porta, sei aperta?”, _lui risponde: “Si, è aperta. Parliamo pure”, e il computer A lo ringrazia mandando di nuovo un pacchetto. Se i tre step sono completati, la connessione TCP viene stabilita.

I flag possono essere diversi tipi, tra cui:

  • URG (urgente): i dati contenuti nel pacchetto sono urgenti e devono essere processati immediamente;
  • PSH (push): invia tutti i dati nel buffer subito;
  • FIN (finish): dopo questo pacchetto non ci saranno più trasmissioni;
  • ACK (acknowledgment): ringrazia per aver ricevuto il pacchetto (conferma la ricezione);
  • RST (reset): resetta la connessione;
  • **SYN (synchronize):**inizializza una connessione o sequenza;

Un tool che ci viene d’aiuto per assemblare ed analizzare i diversi tipi di pacchetti è hping3. Con esso si ha la possibilità di:

  1. Testare il firewall dell’obbiettivo;
  2. Scansionare le porte;
  3. Testare la performance della rete tramite i diversi protocolli;
  4. Trovare il percorso dell’MTU;
  5. Effettuare un traceroute tramite i diversi protocolli;
  6. Rilevare il sistema operativo dell’obbiettivo;
  7. È un ottimo tool per imparare a fondo il protocollo TCP/IP.

Tecniche di scansione TCP

Ogni tecnica è diversa e specifica per rilevare determinate informazioni, sulla base di ciò che ci può servire. La lista delle porte con i più importanti servizi la potete trovare qui.

  • Connessione TCP: è una delle tecniche più affidabili, serve per vedere se la connessione con un host può essere stabilita (tramite l’handhshake a tre vie). Se la porta è aperta, il flag di ritorno è SYN+ACK, mentre se è chiusa sarà RST+ACK. È possibile effettuarla tramite nmap, con il comando

      nmap -sT -v IP
    

dove -sT sta ad indicare il tentativo di connessione con il servizio attivo sulla porta.

  • Scansione nascosta (stealth): invia un singolo frame alla porta TCP senza effettuare nessun handshake. In questo modo non si viene rilevati dall’host. Viene chiamata anche SYN scan in quanto invia pacchetti solo con il flag SYN. Il comando è

      nmap -sS -v IP
    
  • Xmas scan: invia i pacchetti con il flag SYN,ACK,RST,URG,PSH e FIN. Serve per osservare la reazione dell’host, ma purtroppo non funziona con nessun sistema Windows (se la si effettua rileverà tutte le porte aperte) poiché è un metodo basato sul networking BSD. Il comando è

      nmap -sX -v IP
    
  • Fin scan: come sopra, ma manda solo pacchetti con il flag FIN (funziona solo con sistemi UNIX)

      nmap -sF -v IP
    
  • NULL scan: come sopra, ma manda solo pacchetti con nessun flag settato (funziona solo con sistemi UNIX)

      nmap -sN -v IP
    
  • Idle scan: serve a scansionare le porte attive di un host, e la sua particolarità è che ci rende nascosti in quanto impersoniamo un altro computer o ip scelto da noi. Ci sono tre requisiti che devono essere soddisfatti per questo scan e sono:

    1. Lo zombie deve essere inattivo (idle);
    2. Deve avere la porta 80 aperta;
    3. Bisogna avere i permessi di root.

Si effettua con questo comando:

    nmap -Pn -p- -sI IPzombie IPtarget

Se volete approfondire potete leggere la guida ufficiale.

Scansione tramite UDP

Le tecniche viste precedentemente sono per il protocollo TCP, ma chi ci dice che ci danno tutte le informazioni possibili? Con il protocollo UDP non si può determinare quale host è attivo, è un protocollo di tipo connectionless, non gestisce il riordinamento dei pacchetti né la ritrasmissione di quelli persi, ed è perciò generalmente considerato di minore affidabilità. Quindi in che modo possiamo utilizzarla se non ci sa dire se è attivo o meno? Dopo aver trovato un obbiettivo con un semplice ping alla rete, questo tipo di scansione ci può essere utile per determinare quale porta è attiva, specialmente sui sistemi Windows. Il comando con nmap è:

nmap -sU -v IP

Output

Nmap permette diversi tipi di output, in modo da salvare le scansioni e guardarle con calma. I due metodi che preferisco sono:

  1. -oN: salva in formato testo;
  2. -oX: lo trovo il migliore, salva in formato XML;

Dopo aver salvato in formato XML, lo converto il HTML tramite il tool xsltproc, con il comando

xsltproc input.xml -o output.html

In rete è presente una lista di indirizzi IP da evitare quando si effettuano scansioni. Non l’ho controllata tutta, ma so che buona parte di essa è presente nel corso di CEH, quindi la posto per farvi presente che sarebbe meglio evitare di scansionare quegli IP.

Esempio pratico

Per prima cosa effettuo uno scan generico della rete, per capire quali sono i dispositivi connessi

root@kali:~# nmap -sn 192.168.1.1/24

Starting Nmap 7.01 ( https://nmap.org ) at 2016-03-18 09:08 CET
Nmap scan report for 192.168.1.1
Host is up (0.0053s latency).
MAC Address: E8:[..]:F9 (Tp-link Technologies)
Nmap scan report for 192.168.1.100
Host is up (0.054s latency).
MAC Address: F0:[..]:00 (D-Link)
Nmap scan report for 192.168.1.101
Host is up (0.054s latency).
MAC Address: 20:[..]:70 (Microsoft)
Nmap scan report for 192.168.1.102
Host is up (0.054s latency).
MAC Address: 48:[..]:10 (Microsoft)
Nmap scan report for 192.168.1.106
Host is up (0.055s latency).
MAC Address: 88:[..]:94 (Huawei Technologies)
Nmap scan report for 192.168.1.105
Host is up.
Nmap done: 256 IP addresses (6 hosts up) scanned in 28.28 seconds

Seleziono 192.168.1.100 (D-Link è una chiavetta wireless, chissà cosa c’è dietro)

root@kali:~# nmap -sT 192.168.1.100

Starting Nmap 7.01 ( https://nmap.org ) at 2016-03-18 11:02 CET
Nmap scan report for 192.168.1.100
Host is up (0.031s latency).
Not shown: 832 closed ports, 161 filtered ports
PORT     STATE SERVICE
135/tcp  open  msrpc
139/tcp  open  netbios-ssn
445/tcp  open  microsoft-ds
902/tcp  open  iss-realsecure
912/tcp  open  apex-mesh
5357/tcp open  wsdapi
6881/tcp open  bittorrent-tracker
MAC Address: F0:[..]:00 (D-Link)

Ci sono diversi servizi attivi sul protocollo TCP, approfondisco

root@kali:~# nmap -sV --version-all 192.168.1.100

Starting Nmap 7.01 ( https://nmap.org ) at 2016-03-18 10:47 CET
Nmap scan report for 192.168.1.100
Host is up (0.086s latency).
Not shown: 993 closed ports
PORT     STATE SERVICE             VERSION
135/tcp  open  msrpc               Microsoft Windows RPC
139/tcp  open  netbios-ssn         Microsoft Windows 98 netbios-ssn
445/tcp  open  microsoft-ds        Microsoft Windows 10 microsoft-ds
902/tcp  open  ssl/vmware-auth     VMware Authentication Daemon 1.10 (Uses VNC, SOAP)
912/tcp  open  vmware-auth         VMware Authentication Daemon 1.0 (Uses VNC, SOAP)
5357/tcp open  http                Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
6881/tcp open  bittorrent-tracker?
MAC Address: F0:[..]:00 (D-Link)
Service Info: OSs: Windows, Windows 98, Windows 10; CPE: cpe:/o:microsoft:windows, cpe:/o:microsoft:windows_98, cpe:/o:microsoft:windows_10
Nmap done: 1 IP address (1 host up) scanned in 446.00 seconds

Cerco degli script compatibili con i miei servizi aperti sul sito di nmap (qui ci sono esempi pratici, mentre la documentazione è qui)

root@kali:~# nmap -sU --script nbstat.nse -p139 192.168.1.100

Starting Nmap 7.01 ( https://nmap.org ) at 2016-03-18 10:58 CET
Nmap scan report for 192.168.1.100
Host is up (0.10s latency).
PORT    STATE  SERVICE
139/udp closed netbios-ssn
MAC Address: F0:[..]:00 (D-Link)

Porta chiusa, passo a un altro servizio

root@kali:~# nmap --script smb-os-discovery.nse -p445 192.168.1.100

Starting Nmap 7.01 ( https://nmap.org ) at 2016-03-18 11:00 CET
Nmap scan report for 192.168.1.100
Host is up (0.046s latency).
PORT    STATE SERVICE
445/tcp open  microsoft-ds
MAC Address: F0:[..]:00 (D-Link)

Host script results:
| smb-os-discovery: 
|   OS: Windows 7 Professional 7601 Service Pack 1 (Windows 7 Professional 6.1)
|   OS CPE: cpe:/o:microsoft:windows_7::sp1:professional
|   Computer name: PC
|   NetBIOS computer name: PC
|   Workgroup: WORKGROUP
|_  System time: 2016-03-18T11:00:34+01:00

Nmap done: 1 IP address (1 host up) scanned in 14.04 seconds

Come vedete è riuscito a determinare in modo preciso il sistema operativo

Provo con una scansione UDP

root@kali:~# nmap -sU -v 192.168.1.100

Starting Nmap 7.01 ( https://nmap.org ) at 2016-03-18 10:55 CET
Initiating ARP Ping Scan at 10:55
Scanning 192.168.1.100 [1 port]
Completed ARP Ping Scan at 10:55, 0.07s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 10:55
Completed Parallel DNS resolution of 1 host. at 10:55, 13.00s elapsed
Initiating UDP Scan at 10:55
Scanning 192.168.1.100 [1000 ports]
Discovered open port 137/udp on 192.168.1.100
Increasing send delay for 192.168.1.100 from 0 to 50 due to max_successful_tryno increase to 4
Increasing send delay for 192.168.1.100 from 400 to 800 due to max_successful_tryno increase to 8
UDP Scan Timing: About 18.69% done; ETC: 10:58 (0:02:15 remaining)
Increasing send delay for 192.168.1.100 from 800 to 1000 due to 11 out of 20 dropped probes since last increase.
UDP Scan Timing: About 20.82% done; ETC: 11:00 (0:03:52 remaining)
UDP Scan Timing: About 95.70% done; ETC: 11:12 (0:00:43 remaining)
Completed UDP Scan at 11:13, 1097.46s elapsed (1000 total ports)
Nmap scan report for 192.168.1.100
Host is up (0.011s latency).
Not shown: 993 closed ports
PORT     STATE         SERVICE
137/udp  open          netbios-ns
138/udp  open|filtered netbios-dgm
500/udp  open|filtered isakmp
1900/udp open|filtered upnp
3702/udp open|filtered ws-discovery
4500/udp open|filtered nat-t-ike
5355/udp open|filtered llmnr
MAC Address: F0:[..]:00 (D-Link)

Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 1110.71 seconds
           Raw packets sent: 1764 (52.465KB) | Rcvd: 2973 (137.818KB)

E ora potrei cercare altre script per approfondire ancora di più e scovare (possibili) vulnerabilità per poter entrare nel computer.

Conclusioni

Nmap è un ottimo tool per scansionare a fondo un dispositivo, in rete è presente tutta la documentazione possibile per impararlo a fondo e testarlo il più possibile. Ci sono ovviamente altri software molto utili in questi casi, con il tempo vedrò di fare guida specifice per ognuno di essi. Se pensate ci sia altro da aggiungere contattatemi pure.