Scan di una rete

Tempo di lettura: 8 minuti
Data pubblicazione: March 16, 2016

Il Network scanning è l’insieme delle procedure che si attuano al fine di identificare gli host connessi, le porte aperte e i servizi attivi su di essi. Gli obbiettivi di questa operazione sono di trovare:

  • gli host attivi e i loro ip;
  • i sistemi operativi utilizzati;
  • i servizi attivi sulle macchine identificate (detto anche fingerprint);
  • possibili vulnerabilità presenti.

Visto che questo articolo vuole essere prettamente pratico, cercherò di dare delle spiegazioni più semplici possibili, e rimandare a eventuali approfondimenti per chi vuole anche studiare le basi.

Uno dei software più utilizzati per questa operazione è Nmap, esiste anche una versione con interfaccia grafica se la preferite, Zenmap.

Determinare il proprio ip interno e il range della rete

Per prima cosa, bisogna ottenere l’ip del proprio dispositivo. In modo molto semplice basta digitare:

per Linux e Mac

ifconfig

per Windows

ipconfig

Il sistema darà una risposta simile a questa

root@kali:~$ ifconfig 
eth0      Link encap:Ethernet  HWaddr bd:7p:f4:18:03:8f  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:292 errors:0 dropped:0 overruns:0 frame:0
          TX packets:292 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:44348 (44.3 KB)  TX bytes:44348 (44.3 KB)

wlan0     Link encap:Ethernet  HWaddr d3:6l:97:f6:b9:89  
          inet addr:192.168.1.101  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::f27d:68ff:fef5:b900/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:32942 errors:0 dropped:0 overruns:0 frame:0
          TX packets:19042 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:33729351 (33.7 MB)  TX bytes:2374041 (2.3 MB)

dove:

  • eth0 si riferisce alla connessione Ethernet;
  • lo: intende il loopback, è una speciale interfaccia che il computer utilizza per comunicare con se stesso. Se volete approfondire, qui è presente un ottima spiegazione;
  • wlan0 si riferisce alla connessione Wi-Fi.

E nel dettaglio:

  • flags: il tipo di flag settata per quel pacchetto, ce ne possono essere diverse tra cui SYN, ACK, RST;
  • mtu: è l’Unità massima di trasmissione, ossia indica la dimensione massima (in byte) di un pacchetto dati che può essere inviato;
  • inet: l’indirizzo ip del vostro computer (interno alla rete, non quello pubblico);
  • netmask: è la Maschera di rete, per approfondire.
  • broadcast: l’indirizzo di broadcast;
  • inet6: indirizzo ipv6 interno;
  • RX packets: numero di pacchetti ricevuti durante la connessione;
  • TX packets: numero di pacchetti trasmessi durante la connessione;
  • RX errors e TX errors: i pacchetti persi durante la ricezione o la trasmissione;
  • ether: mac address del vostro dispositivo (lo identifica univocamente).

Per trovare il range della rete, basterebbe fare un piccolo calcolo, ma per semplicità riporto la tabella tratta da Wikipedia

Nel mio caso, avendo come netmask 255.255.255.0 e come broadcast 192.168.1.255, so che la mia rete ha 256 indirizzi disponibili, quindi il primo indirizzo sarà 192.168.1.1, e infatti effettuando un ping

root@kali:~$ ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=0.991 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=1.27 ms
64 bytes from 192.168.1.1: icmp_seq=3 ttl=64 time=0.940 ms
64 bytes from 192.168.1.1: icmp_seq=4 ttl=64 time=0.926 ms
64 bytes from 192.168.1.1: icmp_seq=5 ttl=64 time=2.04 ms
--- 192.168.1.1 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4001ms
rtt min/avg/max/mdev = 0.926/1.233/2.040/0.423 ms

è online e nessun pacchetto viene perso.

Trovare gli host online

Utilizzando nmap per trovare chi è online nella rete, basta digitare (sempre nel mio caso)

nmap  -sn -PE 192.168.1.1/24

dove:

  • -sn effettua un Ping scan;
  • -PE: effettua una richiesta di ICMP echo da parte dell’host a cui facciamo il ping (non è obbligatorio, potete anche ometterlo).

Trovare delle porte aperte e il sistema operativo

Nmap ha un comando che racchiude al suo interno 4 diversi comandi. Include trovare il sistema operativo, la versione, scansione delle porte aperte e il traceroute. Digitando:

nmap -A 192.168.1.1/24

scansioniamo tutta la rete alla ricerca di informazioni. Attenzione: vi consiglio di non effettuarlo su una rete molto grande (università, lavoro, etc.) poiché è abbastanza lento. Cercate di farlo su reti piccole (e con le dovute autorizzazioni soprattutto).

Il risultato sarà simile a questo:

root@kali:~$ nmap -A 192.168.1.1/24

Starting Nmap 7.01 ( https://nmap.org ) at 2016-03-16 18:04 CET
Nmap scan report for 192.168.1.1
Host is up (0.020s latency).
Not shown: 993 closed ports
PORT      STATE SERVICE     VERSION
21/tcp    open  ftp         vsftpd 2.0.8 or later
23/tcp    open  telnet      TP-LINK ADSL2+ router telnetd
80/tcp    open  http        TP-LINK http admin
|_http-title: Site doesn't have a title (text/html; charset=utf-8).
139/tcp   open  netbios-ssn Samba smbd 3.X (workgroup: WORKGROUP)
445/tcp   open  netbios-ssn Samba smbd 3.X (workgroup: WORKGROUP)
1900/tcp  open  upnp        Portable SDK for UPnP devices 1.6.6 (Linux 2.6.32.32; UPnP 1.0)
20005/tcp open  btx?
Service Info: Host: TP-LINK; OS: Linux; Device: WAP; CPE: cpe:/h:tp-link:td-w8968, cpe:/o:linux:linux_kernel:2.6.32.32

Host script results:
| smb-os-discovery: 
|   OS: Unix (Samba 3.0.14a)
|   NetBIOS computer name: 
|   Workgroup: WORKGROUP
|_  System time: 2016-03-16T18:05:37+01:00
| smb-security-mode: 
|   account_used: guest
|   challenge_response: supported

Nmap scan report for 192.168.1.101
Host is up (0.000074s latency).
Not shown: 997 closed ports
PORT    STATE SERVICE VERSION
22/tcp  open  ssh     OpenSSH 6.6.1p1 Ubuntu 2ubuntu2.6 (Ubuntu Linux; protocol 2.0)
80/tcp  open  http    nginx 1.4.6 (Ubuntu)
|_http-server-header: nginx/1.4.6 (Ubuntu)
111/tcp open  rpcbind 2-4 (RPC #100000)
| rpcinfo: 
|   program version   port/proto  service
|   100000  2,3,4        111/tcp  rpcbind
|   100000  2,3,4        111/udp  rpcbind
|   100024  1          37231/tcp  status
|_  100024  1          45783/udp  status
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Nmap scan report for 192.168.1.103
Host is up (0.022s latency).
Not shown: 999 closed ports
PORT      STATE SERVICE    VERSION
62078/tcp open  tcpwrapped

Nmap scan report for 192.168.1.106
Host is up (0.0037s latency).
All 1000 scanned ports on 192.168.1.106 are closed
---probabilmente è presente un firewall---

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 256 IP addresses (4 hosts up) scanned in 98.14 seconds

Se volete approfondire le diverse tecniche di scansione, potete leggere l'articolo di approfondimento. Prima di effettuare qualsiasi scansione vi consiglio di cambiare l’indirizzo mac del vostro dispositivo, in modo da poter non essere riconosciuti (a meno che non siate in una rete in cui vi è stato chiesto di inserire mail/numero di telefono, in quel caso sarete riconosciuti comunque).