8.6 KiB
Raw Blame History

123/udp - Pentesting NTP

{{#include ../banners/hacktricks-training.md}}

Informazioni di Base

Il Network Time Protocol (NTP) garantisce che computer e dispositivi di rete su reti a latenza variabile sincronizzino i loro orologi in modo accurato. È fondamentale per mantenere una precisa misurazione del tempo nelle operazioni IT, nella sicurezza e nel logging. Poiché il tempo è utilizzato in quasi ogni processo di autenticazione, protocollo crittografico e forense, un attaccante che può influenzare l'NTP può spesso eludere i controlli di sicurezza o rendere più difficile l'indagine sugli attacchi.

Riepilogo e Consigli di Sicurezza

  • Scopo: Sincronizza gli orologi dei dispositivi su reti.
  • Importanza: Critico per la sicurezza, il logging, i protocolli crittografici e i sistemi distribuiti.
  • Misure di Sicurezza:
  • Utilizzare fonti NTP o NTS (Network Time Security) affidabili con autenticazione.
  • Limitare chi può interrogare/comandare il demone (restrict default noquery, kod ecc.).
  • Disabilitare le query di controllo legacy Mode-6/7 (monlist, ntpdc) o limitarle in base al tasso.
  • Monitorare la deriva di sincronizzazione/stato del secondo intercalare per manomissioni.
  • Mantenere il demone aggiornato (vedere i recenti CVE di seguito).

Porte predefinite

123/udp   NTP            (data + legacy control)
4460/tcp  NTS-KE (RFC 8915)  TLS key-establishment for NTP
PORT    STATE SERVICE REASON
123/udp open  ntp     udp-response

Enumerazione

Classic ntpd / ntpq / ntpdc

# Information & variables
ntpq -c rv <IP>
ntpq -c readvar <IP>
ntpq -c peers <IP>
ntpq -c associations <IP>

# Legacy mode-7 (often disabled >=4.2.8p9)
ntpdc -c monlist <IP>
ntpdc -c listpeers <IP>
ntpdc -c sysinfo  <IP>

chrony / chronyc (nelle moderne distribuzioni Linux)

Solo un numero limitato di comandi di monitoraggio è accettato da IP remoti quando cmdallow è abilitato:

chronyc -a -n tracking   -h <IP>
chronyc -a -n sources -v -h <IP>
chronyc -a -n sourcestats -h <IP>

Vedi la pagina man di chronyc per il significato delle flag M/S e altri campi (stratum, reach, jitter, ecc.).

Nmap

# Safe discovery & vuln detection
nmap -sU -sV --script "ntp* and (discovery or vuln) and not (dos or brute)" -p 123 <IP>

# Explicit monlist check
nmap -sU -p123 --script ntp-monlist <IP>

Scansione di massa/Internet

# Check if MONLIST is enabled (zgrab2 module)
zgrab2 ntp --monlist --timeout 3 --output-file monlist.json -f "zmap_results.csv"

Esaminare i file di configurazione

  • /etc/ntp.conf (ntpd)
  • /etc/chrony/chrony.conf (chrony)
  • /etc/systemd/timesyncd.conf (timesyncd solo client)

Presta particolare attenzione alle righe restrict, alle impostazioni kod (Kiss-o'-Death), a disable monitor/includefile /etc/ntp/crypto e se NTS è abilitato (nts enable).


Vulnerabilità recenti (2023-2025)

Anno CVE Componente Impatto
2023 CVE-2023-26551→26555 ntp 4.2.8p15 (libntp mstolfp, praecis_parse) Scritture multiple fuori dai limiti raggiungibili tramite risposte ntpq. Patch in 4.2.8p16 🡒 aggiorna o riporta le correzioni.
2023 CVE-2023-33192 ntpd-rs (implementazione Rust) Cookie NTS malformato causa DoS remoto prima della v0.3.3 influisce sulla porta 123 anche quando NTS è disabilitato.
2024 aggiornamenti distro chrony 4.4 / 4.5 diverse correzioni di sicurezza e NTS-KE (es. SUSE-RU-2024:2022)
2024 Record DDoS Cloudflare riporta un attacco di riflessione UDP da 5.6 Tbps (NTP tra i protocolli utilizzati). Mantieni monitor e monlist disabilitati sugli host esposti a Internet.

Kit di exploit: I payload di proof-of-concept per la serie di scritture OOB di ntpq del 2023 sono su GitHub (vedi il report di Meinberg) e possono essere armati per phishing lato client degli amministratori di sistema.


Attacchi avanzati

1. Amplificazione / Riflessione NTP

La query legacy Mode-7 monlist restituisce fino a 600 indirizzi host ed è ancora presente su migliaia di host Internet. Poiché la risposta (428-468 byte/voce) è ~ 200× più grande della richiesta di 8 byte, un attaccante può raggiungere fattori di amplificazione a tre cifre. Mitigazioni:

  • Aggiorna a ntp 4.2.8p15+ e aggiungi disable monitor.
  • Limita il rate UDP/123 sul bordo o abilita sessions-required sugli apparecchi DDoS.
  • Abilita il filtraggio in uscita BCP 38 per bloccare lo spoofing della sorgente.

Consulta l'articolo del centro di apprendimento di Cloudflare per una spiegazione passo-passo.

2. Attacchi di spostamento/ritardo del tempo (ricerca Khronos / Chronos)

Anche con l'autenticazione, un attaccante in percorso può silenziosamente spostare l'orologio del client eliminando/ritardando pacchetti. La bozza Khronos (ex Chronos) dell'IETF propone di interrogare un insieme diversificato di server in background e controllare la sanità del risultato per rilevare uno spostamento > 𝚡 ms. Il moderno chrony (4.4+) implementa già un filtro di sanità simile (maxdistance / maxjitter).

3. Abuso di NTS e esposizione 4460/tcp

NTS sposta la pesante crittografia su un canale separato TLS 1.3 su 4460/tcp (ntske/1). Implementazioni scadenti (vedi CVE-2023-33192) si bloccano durante l'analisi dei cookie o consentono cifrari deboli. I pentester dovrebbero:

# TLS reconnaissance
nmap -sV -p 4460 --script ssl-enum-ciphers,ssl-cert <IP>

# Grab banner & ALPN
openssl s_client -connect <IP>:4460 -alpn ntske/1 -tls1_3 -ign_eof

Cerca certificati autofirmati o scaduti e suite di cifratura deboli (non-AEAD). Riferimento: RFC 8915 §4.


Indurimento / Migliori Pratiche Correnti (BCP-233 / RFC 8633)

Gli operatori DOVREBBERO:

  1. Utilizzare ≥ 4 fonti di tempo indipendenti e diverse (pool pubblici, GPS, ponti PTP) per evitare il avvelenamento da una singola fonte.
  2. Abilitare le restrizioni kod e limited/nomodify in modo che i client abusivi ricevano pacchetti di limitazione della velocità Kiss-o'-Death invece di risposte complete.
  3. Monitorare i log del demone per eventi di panic o aggiustamenti di passo > 1000 s. (Firme di attacco secondo RFC 8633 §5.3.)
  4. Considerare leap-smear per evitare interruzioni di secondo intercalare, ma assicurarsi che tutti i client downstream utilizzino la stessa finestra di smear.
  5. Mantenere il polling ≤24 h in modo che i flag di secondo intercalare non vengano persi.

Vedi RFC 8633 per un elenco di controllo completo.


Shodan / Censys Dorks

port:123 "ntpd"          # Version banner
udp port:123 monlist:true # Censys tag for vulnerable servers
port:4460 "ntske"         # NTS-KE

Strumenti Utili

Strumento Scopo Esempio
ntpwn Wrapper per script-kiddie per spruzzare query monlist e peers python ntpwn.py --monlist targets.txt
zgrab2 ntp Scansione di massa / output JSON incluso flag monlist Vedi comando sopra
chronyd con allow Esegui server NTP malevolo nel laboratorio di pentest chronyd -q 'server 127.127.1.0 iburst'
BetterCap Inietta pacchetti NTP per MITM a cambio di tempo su Wi-Fi set arp.spoof.targets <victim>; set ntp.time.delta 30s; arp.spoof on

Comandi Automatici HackTricks

Protocol_Name: NTP
Port_Number: 123
Protocol_Description: Network Time Protocol

Entry_1:
Name: Notes
Description: Notes for NTP
Note: |
The Network Time Protocol (NTP) ensures computers and network devices across variable-latency networks sync their clocks accurately. It's vital for maintaining precise timekeeping in IT operations, security, and logging. NTP's accuracy is essential, but it also poses security risks if not properly managed.

https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-ntp.html

Entry_2:
Name: Nmap
Description: Enumerate NTP
Command: nmap -sU -sV --script "ntp* and (discovery or vuln) and not (dos or brute)" -p 123 {IP}

Riferimenti

  • RFC 8915 Sicurezza del Tempo di Rete per il Protocollo di Tempo di Rete (porta 4460)
  • RFC 8633 Protocollo di Tempo di Rete BCP
  • Rapporto DDoS di Cloudflare Q4 2024 (5.6 Tbps)
  • Articolo di Cloudflare Attacco di Amplificazione NTP
  • NTP 4.2.8p15 serie CVE 2023-04
  • Voci NVD CVE-2023-2655155, CVE-2023-33192
  • Aggiornamento di sicurezza chrony SUSE 2024 (chrony 4.5)
  • Bozza Khronos/Chronos (mitigazione dello spostamento temporale)
  • Manuale chronyc/esempi per monitoraggio remoto
  • Documentazione del modulo ntp di zgrab2 {{#include ../banners/hacktricks-training.md}}