diff --git a/src/network-services-pentesting/pentesting-ntp.md b/src/network-services-pentesting/pentesting-ntp.md index 83ddeba1a..046d38947 100644 --- a/src/network-services-pentesting/pentesting-ntp.md +++ b/src/network-services-pentesting/pentesting-ntp.md @@ -4,59 +4,154 @@ ## Podstawowe informacje -**Protokół Czasu Sieciowego (NTP)** zapewnia, że komputery i urządzenia sieciowe w sieciach o zmiennej latencji synchronizują swoje zegary dokładnie. Jest to kluczowe dla utrzymania precyzyjnego pomiaru czasu w operacjach IT, bezpieczeństwie i logowaniu. Dokładność NTP jest istotna, ale niesie również ryzyko bezpieczeństwa, jeśli nie jest odpowiednio zarządzana. +**Protokół Czasu Sieciowego (NTP)** zapewnia, że komputery i urządzenia sieciowe w sieciach o zmiennej latencji synchronizują swoje zegary dokładnie. Jest to kluczowe dla utrzymania precyzyjnego pomiaru czasu w operacjach IT, bezpieczeństwie i logowaniu. Ponieważ czas jest używany w niemal każdym procesie uwierzytelniania, protokole kryptograficznym i procesie kryminalistycznym, **atakujący, który może wpływać na NTP, często może obejść kontrole bezpieczeństwa lub utrudnić badanie ataków.** -### Podsumowanie i wskazówki dotyczące bezpieczeństwa: +### Podsumowanie i wskazówki dotyczące bezpieczeństwa - **Cel**: Synchronizuje zegary urządzeń w sieciach. -- **Znaczenie**: Krytyczne dla bezpieczeństwa, logowania i operacji. +- **Znaczenie**: Krytyczne dla bezpieczeństwa, logowania, protokołów kryptograficznych i systemów rozproszonych. - **Środki bezpieczeństwa**: -- Używaj zaufanych źródeł NTP z autoryzacją. -- Ogranicz dostęp do serwera NTP w sieci. -- Monitoruj synchronizację w poszukiwaniu oznak manipulacji. +- Używaj zaufanych źródeł NTP lub NTS (Network Time Security) z uwierzytelnieniem. +- Ogranicz, kto może zapytywać/komendować demon (``restrict default noquery``, ``kod`` itp.). +- Wyłącz kontrolne zapytania w trybie 6/7 (``monlist``, ``ntpdc``) lub ogranicz ich częstotliwość. +- Monitoruj dryf synchronizacji/stan sekund przestępnych pod kątem manipulacji. +- Utrzymuj demona w aktualizacji (zobacz ostatnie CVE poniżej). + +**Domyślne porty** +``` +123/udp NTP (data + legacy control) +4460/tcp NTS-KE (RFC 8915) – TLS key-establishment for NTP +``` -**Domyślny port:** 123/udp ``` PORT STATE SERVICE REASON 123/udp open ntp udp-response ``` +--- ## Enumeracja -```bash -ntpq -c readlist -ntpq -c readvar -ntpq -c peers -ntpq -c associations -ntpdc -c monlist -ntpdc -c listpeers -ntpdc -c sysinfo -``` +### Klasyczny 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 (w większości nowoczesnych dystrybucji Linuksa) + +Tylko garstka poleceń monitorujących jest akceptowana z zdalnych adresów IP, gdy ``cmdallow`` jest włączone: +```bash +chronyc -a -n tracking -h +chronyc -a -n sources -v -h +chronyc -a -n sourcestats -h +``` +Zobacz stronę podręcznika chronyc, aby poznać znaczenie flag **M/S** i innych pól (stratum, reach, jitter itp.). + +### 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 ``` -## Examine configuration files - -- ntp.conf - -## NTP Amplification Attack - -[**How NTP DDoS Attack Works**](https://resources.infosecinstitute.com/network-time-protocol-ntp-threats-countermeasures/#gref) - -Protokół **NTP**, używający UDP, pozwala na działanie bez potrzeby procedur handshake, w przeciwieństwie do TCP. Ta cecha jest wykorzystywana w **atakach amplifikacyjnych DDoS NTP**. Tutaj napastnicy tworzą pakiety z fałszywym adresem IP źródłowym, sprawiając, że wydaje się, iż żądania ataku pochodzą od ofiary. Te pakiety, początkowo małe, powodują, że serwer NTP odpowiada znacznie większymi wolumenami danych, amplifikując atak. - -Polecenie _**MONLIST**_, mimo rzadkiego użycia, może zgłosić ostatnich 600 klientów połączonych z usługą NTP. Chociaż samo polecenie jest proste, jego niewłaściwe użycie w takich atakach podkreśla krytyczne luki w zabezpieczeniach. +### Skanowanie masowe/Internetowe ```bash -ntpdc -n -c monlist +# Check if MONLIST is enabled (zgrab2 module) +zgrab2 ntp --monlist --timeout 3 --output-file monlist.json -f "zmap_results.csv" ``` -## Shodan +--- +## Zbadaj pliki konfiguracyjne -- `ntp` +- ``/etc/ntp.conf`` (ntpd) +- ``/etc/chrony/chrony.conf`` (chrony) +- ``/etc/systemd/timesyncd.conf`` (timesyncd – tylko klient) -## HackTricks Automatyczne Komendy +Zwróć szczególną uwagę na linie ``restrict``, ustawienia ``kod`` (Kiss-o'-Death), ``disable monitor``/``includefile /etc/ntp/crypto`` oraz czy *NTS* jest włączone (``nts enable``). + +--- +## Ostatnie luki (2023-2025) + +| Rok | CVE | Komponent | Wpływ | +|-----|-----|-----------|-------| +| 2023 | **CVE-2023-26551→26555** | ntp 4.2.8p15 (libntp *mstolfp*, *praecis_parse*) | Wiele zapisów poza zakresem dostępnych poprzez odpowiedzi **ntpq**. Łatka w **4.2.8p16** 🡒 zaktualizuj lub wprowadź poprawki. citeturn1search1turn1search2turn1search0| +| 2023 | **CVE-2023-33192** | **ntpd-rs** (implementacja w Rust) | Źle sformatowane ciasteczko **NTS** powoduje zdalny **DoS** przed wersją v0.3.3 – wpływa na port 123 nawet gdy NTS **wyłączone**. citeturn4view0| +| 2024 | aktualizacje dystrybucji | **chrony 4.4 / 4.5** – kilka poprawek zabezpieczeń i NTS-KE (np. SUSE-RU-2024:2022) citeturn2search2| +| 2024 | Rekord DDoS | Cloudflare zgłasza atak **5.6 Tbps UDP reflection** (NTP wśród używanych protokołów). Utrzymuj *monitor* i *monlist* wyłączone na hostach wystawionych na Internet. citeturn5search0| + +> **Zestawy exploitów**: Dowody koncepcji dla serii OOB-write ntpq z 2023 roku są dostępne na GitHubie (zobacz opis Meinberga) i mogą być wykorzystane do phishingu po stronie klienta w celu ataku na administratorów systemów. citeturn1search4 + +--- +## Zaawansowane ataki + +### 1. Wzmocnienie / Odbicie NTP + +Zapytanie w trybie 7 ``monlist`` zwraca do **600 adresów hostów** i wciąż jest obecne na tysiącach hostów w Internecie. Ponieważ odpowiedź (428-468 bajtów/wejście) jest *~ 200×* większa niż 8-bajtowe zapytanie, atakujący może osiągnąć współczynniki wzmocnienia w trzech cyfrach. Środki zaradcze: + +- Zaktualizuj do ntp 4.2.8p15+ i **dodaj** ``disable monitor``. +- Ogranicz przepustowość UDP/123 na krawędzi lub włącz *sessions-required* na urządzeniach DDoS. +- Włącz filtrowanie egress *BCP 38*, aby zablokować fałszowanie źródła. + +Zobacz artykuł w centrum wiedzy Cloudflare dla szczegółowego opisu krok po kroku. citeturn5search1 + +### 2. Ataki na przesunięcie czasu / opóźnienie (badania Khronos / Chronos) + +Nawet przy uwierzytelnieniu, atakujący na ścieżce może cicho **przesunąć zegar klienta** poprzez gubienie/opóźnianie pakietów. Projekt IETF **Khronos (dawniej Chronos)** proponuje zapytanie do różnorodnego zestawu serwerów w tle i sprawdzanie wyników, aby wykryć przesunięcie > 𝚡 ms. Nowoczesny chrony (4.4+) już implementuje podobny filtr sanity (``maxdistance`` / ``maxjitter``). citeturn9search1 + +### 3. Nadużycie NTS i ekspozycja 4460/tcp + +NTS przenosi ciężką kryptografię do osobnego **kanału TLS 1.3 na 4460/tcp** (``ntske/1``). Słabe implementacje (zobacz CVE-2023-33192) zawieszają się podczas analizy ciasteczek lub pozwalają na słabe szyfry. Pentesterzy powinni: +```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 ``` -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 +Szukaj certyfikatów samopodpisanych lub wygasłych oraz słabych zestawów szyfrujących (non-AEAD). Referencja: RFC 8915 §4. citeturn11search0 + +--- +## Wzmacnianie / Najlepsze aktualne praktyki (BCP-233 / RFC 8633) + +*Operatorzy POWINNI:* + +1. Używać **≥ 4** niezależnych, różnorodnych źródeł czasu (publiczne pule, GPS, mosty PTP), aby uniknąć zanieczyszczenia z jednego źródła. +2. Włączyć ograniczenia ``kod`` oraz ``limited``/``nomodify``, aby klienci nadużywający otrzymywali pakiety **Kiss-o'-Death** z ograniczeniem prędkości zamiast pełnych odpowiedzi. +3. Monitorować logi demona pod kątem zdarzeń **panic** lub dostosowań kroków > 1000 s. (Podpisy ataku zgodnie z RFC 8633 §5.3.) +4. Rozważyć **leap-smear**, aby uniknąć przerw związanych z sekundą przestępną, ale upewnić się, że *wszyscy* klienci downstream używają tego samego okna smarowania. +5. Utrzymywać polling ≤24 h, aby nie przegapić flag sekund przestępnych. + +Zobacz RFC 8633, aby uzyskać kompleksową listę kontrolną. citeturn8search0turn8search1 + +--- +## Shodan / Censys Dorks +``` +port:123 "ntpd" # Version banner +udp port:123 monlist:true # Censys tag for vulnerable servers +port:4460 "ntske" # NTS-KE +``` +--- +## Przydatne Narzędzia + +| Narzędzie | Cel | Przykład | +|-----------|-----|----------| +| ``ntpwn`` | Wrapper dla script-kiddie do rozprzestrzeniania zapytań monlist i peers | ``python ntpwn.py --monlist targets.txt`` | +| **zgrab2 ntp** | Masowe skanowanie / wyjście JSON z flagą monlist | Zobacz powyższe polecenie | +| ``chronyd`` z ``allow`` | Uruchomienie nieautoryzowanego serwera NTP w laboratorium pentestowym | ``chronyd -q 'server 127.127.1.0 iburst'`` | +| ``BetterCap`` | Wstrzykiwanie pakietów NTP do ataku MITM na Wi-Fi z przesunięciem czasowym | ``set arp.spoof.targets ; set ntp.time.delta 30s; arp.spoof on`` | + +--- +## Automatyczne Komendy 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}} +--- +## Odniesienia + +- RFC 8915 – *Bezpieczeństwo Czasu Sieciowego dla Protokółu Czasu Sieciowego* (port 4460) citeturn11search0 +- RFC 8633 – *Protokół Czasu Sieciowego BCP* citeturn8search0 +- Raport Cloudflare DDoS 2024 Q4 (5.6 Tbps) citeturn5search0 +- Artykuł Cloudflare *Atak Amplifikacji NTP* citeturn5search1 +- NTP 4.2.8p15 seria CVE 2023-04 citeturn1search4 +- Wpisy NVD **CVE-2023-26551–55**, **CVE-2023-33192** citeturn1search1turn1search2turn1search0turn4view0 +- Aktualizacja zabezpieczeń SUSE chrony 2024 (chrony 4.5) citeturn2search2 +- Projekt Khronos/Chronos (łagodzenie przesunięcia czasowego) citeturn9search1 +- Podręcznik chronyc/przykłady do zdalnego monitorowania citeturn3search0turn10search1 +- Dokumentacja modułu ntp zgrab2 citeturn7search0 +{{#include /banners/hacktricks-training.md}}