NTP è un protocollo client-server designato alla sincronizzazione degli orologi dei computer interni ad una rete. In una rete aziendale è molto probabile trovare un dispositivo che ha il servizio attivo, al fine di sincronizzare gli orologi delle macchine ad esso collegate. Sfortunatamente, molti sistemisti non aggiornano o configurano in maniera adeguata ntpd, il quale sarà in grado di fornire informazioni sul sistema e sulla struttura delle rete aziendale.
La rilevazione funziona come con ogni altra porta in ascolto, ossia scansionando l’indirizzo IP con un software come nmap sul protocollo UDP.
N.B. L’indirizzo IP che utilizzerò nell’articolo sarà sempre nascosto poiché l’ho trovato tramite una ricerca in shodan (quindi potrete farlo con un qualsiasi altro indirizzo che troverete con la ricerca).
┌─[✗]─[mrtouch@parrot]─[~]
└──╼ sudo nmap -sU 1xx.xxx.xxx.x2
Not shown: 997 open|filtered ports
PORT STATE SERVICE
113/udp closed auth
123/udp open ntp
161/udp open snmp
Una volta verificata l’effettiva porta aperta, si possono utilizzare una serie di software per ottenere informazioni. Tra i tanti:
I primi quattro fanno parte del pacchetto ntp, quindi chiunque abbia un dispositivo Linux (Debian) potrà installarlo con un semplice comando.
sudo apt-get install ntp
Ntptrace segue la catena dei server NTP fino ad arrivare alla sorgente. Questo comando è utile solo nel caso si stia utilizzando un dispositivo con NTP attivo.
─[✗]─[mrtouch@parrot]─[~]
└──╼ $ntptrace 1xx.xxx.xxx.x2
1xx.xxx.xxx.x21.abcdefghi.com.br: stratum 16, offset 0.000000, synch distance 0.001620
Viene utilizzato per interrogare il demone ntpd sia in maniera interattiva sia utilizzando i comandi. Alcuni comandi utili possono essere:
ntpdc -c monlist: stampa il traffico passante per la macchina;
ntpdc -c sysinfo: ritorna informazioni più o meno utili in merito al sistema;
ntpdc -c listpeers: lista dei peers connessi alla macchina;
ntpdc -c reslist.
┌─[mrtouch@parrot]─[~] └──╼ $ntpdc -c sysinfo 1xx.xxx.xxx.x2 system peer: 0.0.0.0 system peer mode: unspec leap indicator: 11 stratum: 16 precision: -15 root distance: 0.00000 s root dispersion: 0.00163 s reference ID: [74] reference time: 00000000.00000000 Thu, Feb 7 2036 7:28:16.000 system flags: auth monitor ntp stats jitter: 0.000000 s stability: 0.000 ppm broadcastdelay: 0.000000 s authdelay: 0.000000 s
Molto simile al software appena descritto, ma trovo che la modalità interattiva sia meglio definita e più completa. Per entrare nel host basta digitare
┌─[mrtouch@parrot]─[~]
└──╼ $ntpq 1xx.xxx.xxx.x2
ntpq>help
ntpq commands:
:config
drefid
mreadlist
readvar
.
..
...
....
Come potete notare i comandi sono molti. Alcuni sono:
Per chiunque volesse comprendere gli altri comandi e l’utilizzo degli stessi consiglio il manuale, altrimenti basta digitare help comando e si avranno tutte le informazioni di cui si ha bisogno.
Solo con pochi comandi ho ottenuto circa cinque nuovi indirizzi IP, sia interni che esterni, informazioni in merito al sistema operativo e la versione di NTP utilizzata.
Come per quasi ogni protocollo, nmap ha due script molto utili ai fini di una scansione NTP. Il primo è ntp-info, utilizzato per ottenere la configurazione del servizio attivo sul dispositivo vittima.
┌─[mrtouch@parrot]─[~]
└──╼ $sudo nmap -sU -pU:123 -Pn -n --script=ntp-info 1xx.xxx.xxx.x2
Nmap scan report for 1xx.xxx.xxx.x2
Host is up (0.29s latency).
PORT STATE SERVICE
123/udp open ntp
| ntp-info:
| receive time stamp: 2015-04-10T02:41:02
| version: ntpd 4.2.6p5@1.2349-o Thu Apr 9 10:20:57 UTC 2015 (1)
| processor: mips
| system: Linux/2.6.36
| leap: 3
| stratum: 16
| precision: -15
| rootdelay: 0.000
| rootdisp: 4.305
| refid: INIT
| reftime: 0x00000000.00000000
| clock: 0xd8d1b6bb.7f1b40ec
| peer: 0
| tc: 3
| mintc: 3
| offset: 0.000
| frequency: 0.000
| sys_jitter: 0.000
| clk_jitter: 0.031
|_ clk_wander: 0.000\x0D
Service Info: OS: Linux/2.6.36
Nmap done: 1 IP address (1 host up) scanned in 1.45 seconds
L’altro è invece ntp-monlist. Ogni sistemista dovrebbe disattivarlo, in quanto permette di ricevere informazioni sensibili sugli host interni all’azienda o collegati al demone ntp. L’utilizzo è il solito
┌─[mrtouch@parrot]─[~]
└──╼ $sudo nmap -sU -pU:123 -Pn -n --script=ntp-monlist 1xx.xxx.xxx.x2
[sudo] password for mrtouch:
Nmap scan report for 1xx.xxx.xxx.x2
Host is up (0.29s latency).
PORT STATE SERVICE
123/udp open ntp
| ntp-monlist:
| Public Clients (1)
|_ 9x.xx.xxx.xx0
In questo caso ha trovato solamente un client (pubblico) collegato al server. In altri casi si possono trovare centinaia di server collegati.
Ottenere informazioni non è la sola possibilità nel caso si trovi un demone NTP attivo. Nel caso si trovi una versione non aggiornata del servizio è possibile effettuare attacchi DOS o DDOS, come nel caso dell'attacco a 400 Gb/s di qualche anno fa o in quello da “soli” 100 Gb/s. Ci sono diversi siti che si occupano della sicurezza di NTP; tra i più importanti consiglio: