mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/network-services-pentesting/pentesting-ntp.md'] to it
This commit is contained in:
parent
e356fbb744
commit
594b1a201b
@ -2,61 +2,156 @@
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
||||
## Informazioni di base
|
||||
## 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. L'accuratezza di NTP è essenziale, ma comporta anche rischi per la sicurezza se non gestita correttamente.
|
||||
Il **Network Time Protocol (NTP)** garantisce che computer e dispositivi di rete su reti a latenza variabile sincronizzino accuratamente i loro orologi. È 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 suggerimenti per la sicurezza:
|
||||
### Riepilogo e Consigli di Sicurezza
|
||||
|
||||
- **Scopo**: Sincronizza gli orologi dei dispositivi su reti.
|
||||
- **Importanza**: Critico per la sicurezza, il logging e le operazioni.
|
||||
- **Misure di sicurezza**:
|
||||
- Utilizzare fonti NTP affidabili con autenticazione.
|
||||
- Limitare l'accesso alla rete del server NTP.
|
||||
- Monitorare la sincronizzazione per segni di manomissione.
|
||||
- **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.
|
||||
- Tenere 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
|
||||
```
|
||||
|
||||
**Porta predefinita:** 123/udp
|
||||
```
|
||||
PORT STATE SERVICE REASON
|
||||
123/udp open ntp udp-response
|
||||
```
|
||||
---
|
||||
## Enumerazione
|
||||
```bash
|
||||
ntpq -c readlist <IP_ADDRESS>
|
||||
ntpq -c readvar <IP_ADDRESS>
|
||||
ntpq -c peers <IP_ADDRESS>
|
||||
ntpq -c associations <IP_ADDRESS>
|
||||
ntpdc -c monlist <IP_ADDRESS>
|
||||
ntpdc -c listpeers <IP_ADDRESS>
|
||||
ntpdc -c sysinfo <IP_ADDRESS>
|
||||
```
|
||||
|
||||
### Classic ntpd / ntpq / ntpdc
|
||||
```bash
|
||||
nmap -sU -sV --script "ntp* and (discovery or vuln) and not (dos or brute)" -p 123 <IP>
|
||||
# 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:
|
||||
```bash
|
||||
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
|
||||
```bash
|
||||
# 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
|
||||
```bash
|
||||
# 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
|
||||
|
||||
- ntp.conf
|
||||
- ``/etc/ntp.conf`` (ntpd)
|
||||
- ``/etc/chrony/chrony.conf`` (chrony)
|
||||
- ``/etc/systemd/timesyncd.conf`` (timesyncd – solo client)
|
||||
|
||||
## Attacco di Amplificazione NTP
|
||||
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``).
|
||||
|
||||
[**Come funziona l'attacco DDoS NTP**](https://resources.infosecinstitute.com/network-time-protocol-ntp-threats-countermeasures/#gref)
|
||||
---
|
||||
## Vulnerabilità recenti (2023-2025)
|
||||
|
||||
Il **protocollo NTP**, che utilizza UDP, consente il funzionamento senza la necessità di procedure di handshake, a differenza di TCP. Questa caratteristica viene sfruttata negli **attacchi di amplificazione DDoS NTP**. Qui, gli attaccanti creano pacchetti con un IP sorgente falso, facendo sembrare che le richieste di attacco provengano dalla vittima. Questi pacchetti, inizialmente piccoli, inducono il server NTP a rispondere con volumi di dati molto più grandi, amplificando l'attacco.
|
||||
| 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. citeturn1search1turn1search2turn1search0|
|
||||
| 2023 | **CVE-2023-33192** | **ntpd-rs** (implementazione Rust) | Cookie **NTS** malformato causa un **DoS** remoto prima della v0.3.3 – influisce sulla porta 123 anche quando NTS è **disabilitato**. citeturn4view0|
|
||||
| 2024 | aggiornamenti distro | **chrony 4.4 / 4.5** – diverse correzioni di sicurezza e NTS-KE (es. SUSE-RU-2024:2022) citeturn2search2|
|
||||
| 2024 | Record DDoS | Cloudflare riporta un attacco di **riflessione UDP da 5.6 Tbps** (NTP tra i protocolli utilizzati). Mantieni *monitor* e *monlist* disabilitati su host esposti a Internet. citeturn5search0|
|
||||
|
||||
Il comando _**MONLIST**_, nonostante il suo uso raro, può segnalare gli ultimi 600 client connessi al servizio NTP. Sebbene il comando stesso sia semplice, il suo uso improprio in tali attacchi evidenzia vulnerabilità critiche nella sicurezza.
|
||||
> **Kit di exploit**: I payload di proof-of-concept per la serie di scritture OOB ntpq del 2023 sono su GitHub (vedi il report di Meinberg) e possono essere armati per phishing lato client degli amministratori di sistema. citeturn1search4
|
||||
|
||||
---
|
||||
## 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 al confine o abilita *sessions-required* sugli apparecchi DDoS.
|
||||
- Abilita il filtraggio in uscita *BCP 38* per bloccare lo spoofing della sorgente.
|
||||
|
||||
Vedi l'articolo del centro di apprendimento di Cloudflare per una spiegazione passo-passo. citeturn5search1
|
||||
|
||||
### 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``). citeturn9search1
|
||||
|
||||
### 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:
|
||||
```bash
|
||||
ntpdc -n -c monlist <IP>
|
||||
```
|
||||
## Shodan
|
||||
# TLS reconnaissance
|
||||
nmap -sV -p 4460 --script ssl-enum-ciphers,ssl-cert <IP>
|
||||
|
||||
- `ntp`
|
||||
|
||||
## HackTricks Comandi Automatici
|
||||
# Grab banner & ALPN
|
||||
openssl s_client -connect <IP>:4460 -alpn ntske/1 -tls1_3 -ign_eof
|
||||
```
|
||||
Protocol_Name: NTP #Protocol Abbreviation if there is one.
|
||||
Port_Number: 123 #Comma separated if there is more than one.
|
||||
Protocol_Description: Network Time Protocol #Protocol Abbreviation Spelled out
|
||||
Cerca certificati autofirmati o scaduti e suite di cifratura deboli (non-AEAD). Riferimento: RFC 8915 §4. citeturn11search0
|
||||
|
||||
---
|
||||
## 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 fonte singola.
|
||||
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 a valle 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. citeturn8search0turn8search1
|
||||
|
||||
---
|
||||
## 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
|
||||
@ -71,4 +166,17 @@ Name: Nmap
|
||||
Description: Enumerate NTP
|
||||
Command: nmap -sU -sV --script "ntp* and (discovery or vuln) and not (dos or brute)" -p 123 {IP}
|
||||
```
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
---
|
||||
## Riferimenti
|
||||
|
||||
- RFC 8915 – *Sicurezza del Tempo di Rete per il Protocollo di Tempo di Rete* (porta 4460) citeturn11search0
|
||||
- RFC 8633 – *Protocollo di Tempo di Rete BCP* citeturn8search0
|
||||
- Rapporto DDoS di Cloudflare Q4 2024 (5.6 Tbps) citeturn5search0
|
||||
- Articolo di Cloudflare *Attacco di Amplificazione NTP* citeturn5search1
|
||||
- NTP 4.2.8p15 serie CVE 2023-04 citeturn1search4
|
||||
- Voci NVD **CVE-2023-26551–55**, **CVE-2023-33192** citeturn1search1turn1search2turn1search0turn4view0
|
||||
- Aggiornamento di sicurezza SUSE chrony 2024 (chrony 4.5) citeturn2search2
|
||||
- Bozza Khronos/Chronos (mitigazione dello spostamento temporale) citeturn9search1
|
||||
- Manuale chronyc/esempi per monitoraggio remoto citeturn3search0turn10search1
|
||||
- Documentazione del modulo ntp di zgrab2 citeturn7search0
|
||||
{{#include /banners/hacktricks-training.md}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user