9.0 KiB
123/udp - Pentesting NTP
{{#include ../banners/hacktricks-training.md}}
Informations de base
Le Network Time Protocol (NTP) garantit que les ordinateurs et les dispositifs réseau sur des réseaux à latence variable synchronisent leurs horloges avec précision. C'est vital pour maintenir une chronométrie précise dans les opérations informatiques, la sécurité et la journalisation. Parce que le temps est utilisé dans presque tous les processus d'authentification, de crypto-protocole et d'analyse judiciaire, un attaquant capable d'influencer NTP peut souvent contourner les contrôles de sécurité ou rendre les attaques plus difficiles à enquêter.
Résumé & Conseils de sécurité
- Objectif : Synchronise les horloges des dispositifs sur les réseaux.
- Importance : Critique pour la sécurité, la journalisation, les crypto-protocoles et les systèmes distribués.
- Mesures de sécurité :
- Utilisez des sources NTP ou NTS (Network Time Security) de confiance avec authentification.
- Restreindre qui peut interroger/commander le démon (
restrict default noquery
,kod
etc.). - Désactiver les requêtes de contrôle Mode-6/7 héritées (
monlist
,ntpdc
) ou les limiter en taux. - Surveiller la dérive de synchronisation/l'état des secondes intercalaires pour détection de falsification.
- Gardez le démon à jour (voir les CVE récents ci-dessous).
Ports par défaut
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
Énumération
ntpd / ntpq / ntpdc classique
# 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 (dans la plupart des distributions Linux modernes)
Seule une poignée de commandes de surveillance sont acceptées depuis des IP distantes lorsque cmdallow
est activé :
chronyc -a -n tracking -h <IP>
chronyc -a -n sources -v -h <IP>
chronyc -a -n sourcestats -h <IP>
Voir la page de manuel de chronyc pour la signification des indicateurs M/S et d'autres champs (stratum, reach, jitter, etc.).
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>
Scan de masse/Internet
# Check if MONLIST is enabled (zgrab2 module)
zgrab2 ntp --monlist --timeout 3 --output-file monlist.json -f "zmap_results.csv"
Examinez les fichiers de configuration
/etc/ntp.conf
(ntpd)/etc/chrony/chrony.conf
(chrony)/etc/systemd/timesyncd.conf
(timesyncd – client uniquement)
Faites particulièrement attention aux lignes restrict
, aux paramètres kod
(Kiss-o'-Death), à disable monitor
/includefile /etc/ntp/crypto
et à savoir si NTS est activé (nts enable
).
Vulnérabilités récentes (2023-2025)
Année | CVE | Composant | Impact |
---|---|---|---|
2023 | CVE-2023-26551→26555 | ntp 4.2.8p15 (libntp mstolfp, praecis_parse) | Écritures hors limites multiples accessibles via les réponses ntpq. Correctif dans 4.2.8p16 🡒 mise à niveau ou correctifs de rétroportage. |
2023 | CVE-2023-33192 | ntpd-rs (implémentation Rust) | Un cookie NTS malformé provoque un DoS à distance avant v0.3.3 – affecte le port 123 même lorsque NTS est désactivé. |
2024 | mises à jour de distribution | chrony 4.4 / 4.5 – plusieurs durcissements de sécurité & correctifs NTS-KE (par exemple, SUSE-RU-2024:2022) | |
2024 | DDoS record | Cloudflare signale une attaque de réflexion UDP de 5,6 Tbps (NTP parmi les protocoles utilisés). Gardez monitor & monlist désactivés sur les hôtes exposés à Internet. |
Kits d'exploitation : Des charges utiles de preuve de concept pour la série d'écritures OOB ntpq 2023 sont sur GitHub (voir l'article de Meinberg) et peuvent être armées pour le phishing côté client des administrateurs système.
Attaques avancées
1. Amplification / Réflexion NTP
La requête Mode-7 monlist
renvoie jusqu'à 600 adresses hôtes et est toujours présente sur des milliers d'hôtes Internet. Comme la réponse (428-468 octets/entrée) est ~ 200× plus grande que la requête de 8 octets, un attaquant peut atteindre des facteurs d'amplification à trois chiffres. Atténuations :
- Mettez à niveau vers ntp 4.2.8p15+ et ajoutez
disable monitor
. - Limitez le débit UDP/123 à la périphérie ou activez sessions-required sur les appareils DDoS.
- Activez le filtrage de sortie BCP 38 pour bloquer le spoofing de source.
Consultez l'article du centre d'apprentissage de Cloudflare pour un décompte étape par étape.
2. Attaques de décalage / retard temporel (recherche Khronos / Chronos)
Même avec authentification, un attaquant sur le chemin peut silencieusement décaler l'horloge du client en supprimant/délai des paquets. Le brouillon IETF Khronos (anciennement Chronos) propose d'interroger un ensemble diversifié de serveurs en arrière-plan et de vérifier la cohérence du résultat pour détecter un décalage > 𝚡 ms. Le chrony moderne (4.4+) implémente déjà un filtre de cohérence similaire (maxdistance
/ maxjitter
).
3. Abus de NTS & exposition 4460/tcp
NTS déplace le lourd cryptage vers un canal TLS 1.3 séparé sur 4460/tcp (ntske/1
). Les mauvaises implémentations (voir CVE-2023-33192) plantent lors de l'analyse des cookies ou permettent des chiffrements faibles. Les pentesters devraient :
# 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
Recherchez des certificats auto-signés ou expirés et des suites de chiffrement faibles (non-AEAD). Référence : RFC 8915 §4.
Renforcement / Meilleures Pratiques Actuelles (BCP-233 / RFC 8633)
Les opérateurs DOIVENT :
- Utiliser ≥ 4 sources de temps indépendantes et diverses (pools publics, GPS, ponts PTP) pour éviter le empoisonnement par source unique.
- Activer les restrictions
kod
etlimited
/nomodify
afin que les clients abusifs reçoivent des paquets de limitation de taux Kiss-o'-Death au lieu de réponses complètes. - Surveiller les journaux du démon pour des événements panic ou des ajustements de pas > 1000 s. (Signatures d'attaque selon RFC 8633 §5.3.)
- Envisager leap-smear pour éviter les pannes de seconde intercalaire, mais s'assurer que tous les clients en aval utilisent la même fenêtre de smear.
- Garder le polling ≤24 h afin que les indicateurs de seconde intercalaire ne soient pas manqués.
Voir RFC 8633 pour une liste de contrôle complète.
Shodan / Censys Dorks
port:123 "ntpd" # Version banner
udp port:123 monlist:true # Censys tag for vulnerable servers
port:4460 "ntske" # NTS-KE
Outils Utiles
Outil | But | Exemple |
---|---|---|
ntpwn |
Wrapper pour script-kiddie pour pulvériser les requêtes monlist & peers | python ntpwn.py --monlist targets.txt |
zgrab2 ntp | Scan de masse / sortie JSON incluant le drapeau monlist | Voir la commande ci-dessus |
chronyd avec allow |
Exécuter un serveur NTP rogue dans un laboratoire de pentest | chronyd -q 'server 127.127.1.0 iburst' |
BetterCap |
Injecter des paquets NTP pour un MITM de décalage horaire sur Wi-Fi | set arp.spoof.targets <victim>; set ntp.time.delta 30s; arp.spoof on |
Commandes Automatiques 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}
Références
- RFC 8915 – Sécurité du temps réseau pour le protocole de temps réseau (port 4460)
- RFC 8633 – Protocole de temps réseau BCP
- Rapport DDoS de Cloudflare Q4 2024 (5,6 Tbps)
- Article de Cloudflare sur l'attaque d'amplification NTP
- NTP 4.2.8p15 série CVE 2023-04
- Entrées NVD CVE-2023-26551–55, CVE-2023-33192
- Mise à jour de sécurité chrony SUSE 2024 (chrony 4.5)
- Projet Khronos/Chronos (atténuation du décalage horaire)
- Manuel chronyc/exemples pour la surveillance à distance
- Docs du module ntp zgrab2 {{#include ../banners/hacktricks-training.md}}