123/udp - Pentesting NTP

Reading time: 8 minutes

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks

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

bash
# 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é :

bash
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

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>

Scan de masse/Internet

bash
# 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éeCVEComposantImpact
2023CVE-2023-26551→26555ntp 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.
2023CVE-2023-33192ntpd-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Ă©.
2024mises Ă  jour de distributionchrony 4.4 / 4.5 – plusieurs durcissements de sĂ©curitĂ© & correctifs NTS-KE (par exemple, SUSE-RU-2024:2022)
2024DDoS recordCloudflare 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 :

bash
# 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 :

  1. Utiliser ≄ 4 sources de temps indĂ©pendantes et diverses (pools publics, GPS, ponts PTP) pour Ă©viter le empoisonnement par source unique.
  2. Activer les restrictions kod et limited/nomodify afin que les clients abusifs reçoivent des paquets de limitation de taux Kiss-o'-Death au lieu de réponses complÚtes.
  3. 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.)
  4. 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.
  5. 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

OutilButExemple
ntpwnWrapper pour script-kiddie pour pulvĂ©riser les requĂȘtes monlist & peerspython ntpwn.py --monlist targets.txt
zgrab2 ntpScan de masse / sortie JSON incluant le drapeau monlistVoir la commande ci-dessus
chronyd avec allowExécuter un serveur NTP rogue dans un laboratoire de pentestchronyd -q 'server 127.127.1.0 iburst'
BetterCapInjecter des paquets NTP pour un MITM de décalage horaire sur Wi-Fiset 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

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks