# 123/udp - Pentesting NTP {{#include ../banners/hacktricks-training.md}} ## Osnovne informacije **Network Time Protocol (NTP)** osigurava da računari i mrežni uređaji širom mreža sa promenljivom latencijom tačno sinhronizuju svoje satove. To je od vitalnog značaja za održavanje preciznog merenja vremena u IT operacijama, bezbednosti i logovanju. Pošto se vreme koristi u gotovo svakoj autentifikaciji, kripto-protokolu i forenzičkom procesu, **napadač koji može da utiče na NTP često može da zaobiđe bezbednosne kontrole ili oteža istraživanje napada.** ### Sažetak i saveti za bezbednost - **Svrha**: Sinhronizuje satove uređaja preko mreža. - **Značaj**: Kritično za bezbednost, logovanje, kripto-protokole i distribuirane sisteme. - **Bezbednosne mere**: - Koristite pouzdane NTP ili NTS (Network Time Security) izvore sa autentifikacijom. - Ograničite ko može da upita/naredi demon (``restrict default noquery``, ``kod`` itd.). - Onemogućite nasleđene Mode-6/7 kontrolne upite (``monlist``, ``ntpdc``) ili ih ograničite po brzini. - Pratite pomeranje sinhronizacije/stanje skakanja sekundi za manipulaciju. - Održavajte demona ažuriranim (vidite nedavne CVE-ove ispod). **Podrazumevani portovi** ``` 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 ``` --- ## Enumeracija ### Klasični ntpd / ntpq / ntpdc ```bash # Information & variables ntpq -c rv ntpq -c readvar ntpq -c peers ntpq -c associations # Legacy mode-7 (often disabled >=4.2.8p9) ntpdc -c monlist ntpdc -c listpeers ntpdc -c sysinfo ``` ### chrony / chronyc (u većini modernih Linux distribucija) Samo mali broj komandi za nadgledanje se prihvata sa udaljenih IP adresa kada je ``cmdallow`` omogućen: ```bash chronyc -a -n tracking -h chronyc -a -n sources -v -h chronyc -a -n sourcestats -h ``` Pogledajte stranicu sa uputstvima za chronyc za značenje **M/S** oznaka i drugih polja (stratum, reach, jitter, itd.). ### Nmap ```bash # Safe discovery & vuln detection nmap -sU -sV --script "ntp* and (discovery or vuln) and not (dos or brute)" -p 123 # Explicit monlist check nmap -sU -p123 --script ntp-monlist ``` ### Masovno/Internet skeniranje ```bash # Check if MONLIST is enabled (zgrab2 module) zgrab2 ntp --monlist --timeout 3 --output-file monlist.json -f "zmap_results.csv" ``` --- ## Istražite konfiguracione datoteke - ``/etc/ntp.conf`` (ntpd) - ``/etc/chrony/chrony.conf`` (chrony) - ``/etc/systemd/timesyncd.conf`` (timesyncd – samo klijent) Obratite posebnu pažnju na ``restrict`` linije, ``kod`` (Kiss-o'-Death) podešavanja, ``disable monitor``/``includefile /etc/ntp/crypto`` i da li je *NTS* omogućen (``nts enable``). --- ## Nedavne ranjivosti (2023-2025) | Godina | CVE | Komponenta | Uticaj | |--------|-----|------------|--------| | 2023 | **CVE-2023-26551→26555** | ntp 4.2.8p15 (libntp *mstolfp*, *praecis_parse*) | Više izlaznih pisanja koja se mogu dostići putem **ntpq** odgovora. Zakrpa u **4.2.8p16** 🡒 nadogradite ili vratite ispravke. | | 2023 | **CVE-2023-33192** | **ntpd-rs** (Rust implementacija) | Neispravan **NTS** kolačić uzrokuje udaljeni **DoS** pre v0.3.3 – utiče na port 123 čak i kada je NTS **onemogućen**. | | 2024 | ažuriranja distribucije | **chrony 4.4 / 4.5** – nekoliko bezbednosnih poboljšanja i NTS-KE ispravki (npr. SUSE-RU-2024:2022) | | 2024 | Rekord DDoS | Cloudflare izveštava o **5.6 Tbps UDP refleksivnom** napadu (NTP među korišćenim protokolima). Držite *monitor* i *monlist* onemogućenim na hostovima koji su izloženi internetu. | > **Eksploatacione kitove**: Dokazi o konceptu za seriju 2023 ntpq OOB-pisanja su na GitHub-u (vidi Meinberg izveštaj) i mogu se iskoristiti za phishing na klijentskoj strani sysadmina. --- ## Napredni napadi ### 1. NTP amplifikacija / refleksija Nasleđeni Mode-7 ``monlist`` upit vraća do **600 adresa hostova** i još uvek je prisutan na hiljadama internet hostova. Budući da je odgovor (428-468 bajtova/unos) *~ 200×* veći od 8-bajtne zahteva, napadač može dostići trocifrene faktore amplifikacije. Mogućnosti ublažavanja: - Nadogradite na ntp 4.2.8p15+ i **dodajte** ``disable monitor``. - Ograničite UDP/123 na ivici ili omogućite *sessions-required* na DDoS uređajima. - Omogućite *BCP 38* filtriranje izlaza da blokirate lažno predstavljanje izvora. Pogledajte članak Cloudflare-ovog centra za učenje za detaljno objašnjenje. ### 2. Napadi pomeranja vremena / kašnjenja (Khronos / Chronos istraživanje) Čak i sa autentifikacijom, napadač na putu može tiho **pomeriti klijentski sat** tako što će odbaciti/odložiti pakete. IETF **Khronos (ranije Chronos) nacrt** predlaže upit raznovrsnom skupu servera u pozadini i proveru rezultata kako bi se otkrilo pomeranje > 𝚡 ms. Moderni chrony (4.4+) već implementira sličan filter za proveru (``maxdistance`` / ``maxjitter``). ### 3. Zloupotreba NTS i izloženost 4460/tcp NTS premesta tešku kriptografiju na poseban **TLS 1.3 kanal na 4460/tcp** (``ntske/1``). Loše implementacije (vidi CVE-2023-33192) se ruše prilikom parsiranja kolačića ili dozvoljavaju slabe šifre. Pentesteri bi trebali: ```bash # TLS reconnaissance nmap -sV -p 4460 --script ssl-enum-ciphers,ssl-cert # Grab banner & ALPN openssl s_client -connect :4460 -alpn ntske/1 -tls1_3 -ign_eof ``` Look for self-signed or expired certificates and weak cipher-suites (non-AEAD). Reference: RFC 8915 §4. --- ## Hardening / Best-Current-Practice (BCP-233 / RFC 8633) *Operateri TREBA da:* 1. Koriste **≥ 4** nezavisna, raznolika vremenska izvora (javne grupe, GPS, PTP-bridževe) kako bi izbegli trovanje jednim izvorom. 2. Omoguće ``kod`` i ``limited``/``nomodify`` ograničenja tako da zlonamerni klijenti dobijaju **Kiss-o'-Death** pakete sa ograničenjem brzine umesto punih odgovora. 3. Prate dnevnike demona za **panic** događaje ili prilagođavanja koraka > 1000 s. (Potpisi napada prema RFC 8633 §5.3.) 4. Razmotre **leap-smear** kako bi izbegli prekide zbog skoka sekundi, ali osiguraju da *svi* klijenti nizvodno koriste isti prozor za razmazivanje. 5. Održavaju polling ≤24 h kako ne bi propustili oznake za skok sekundi. Pogledajte RFC 8633 za sveobuhvatan kontrolni spisak. --- ## Shodan / Censys Dorks ``` port:123 "ntpd" # Version banner udp port:123 monlist:true # Censys tag for vulnerable servers port:4460 "ntske" # NTS-KE ``` --- ## Korisni alati | Alat | Svrha | Primer | |------|---------|---------| | ``ntpwn`` | Script-kiddie omotač za slanje monlist & peers upita | ``python ntpwn.py --monlist targets.txt`` | | **zgrab2 ntp** | Masovno skeniranje / JSON izlaz uključujući monlist zastavicu | Pogledajte komandu iznad | | ``chronyd`` sa ``allow`` | Pokrenite rogue NTP server u pentest laboratoriji | ``chronyd -q 'server 127.127.1.0 iburst'`` | | ``BetterCap`` | Umetnite NTP pakete za MITM napad sa pomeranjem vremena na Wi-Fi | ``set arp.spoof.targets ; set ntp.time.delta 30s; arp.spoof on`` | --- ## HackTricks Automatske komande ``` 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} ``` --- ## References - RFC 8915 – *Sigurnost mrežnog vremena za protokol mrežnog vremena* (port 4460) - RFC 8633 – *Protokol mrežnog vremena BCP* - Cloudflare DDoS izveštaj 2024 Q4 (5.6 Tbps) - Cloudflare *NTP amplifikacioni napad* članak - NTP 4.2.8p15 CVE serija 2023-04 - NVD unosi **CVE-2023-26551–55**, **CVE-2023-33192** - SUSE chrony bezbednosna ažuriranja 2024 (chrony 4.5) - Khronos/Chronos nacrt (ublažavanje pomeranja vremena) - chronyc priručnik/primeri za daljinsko praćenje - zgrab2 ntp modul dokumentacija {{#include ../banners/hacktricks-training.md}}