183 lines
8.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 123/udp - Pentesting NTP
{{#include ../banners/hacktricks-training.md}}
## 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. 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ć dochodzenia w sprawie ataków.**
### Podsumowanie i wskazówki dotyczące bezpieczeństwa
- **Cel**: Synchronizuje zegary urządzeń w sieciach.
- **Znaczenie**: Krytyczne dla bezpieczeństwa, logowania, protokołów kryptograficznych i systemów rozproszonych.
- **Środki bezpieczeństwa**:
- 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 zapytania kontrolne w trybie 6/7 (``monlist``, ``ntpdc``) lub ogranicz ich częstotliwość.
- Monitoruj dryf synchronizacji/stan sekund przestępnych w celu wykrywania 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
```
```
PORT STATE SERVICE REASON
123/udp open ntp udp-response
```
---
## Enumeracja
### Klasyczny ntpd / ntpq / ntpdc
```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 (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 <IP>
chronyc -a -n sources -v -h <IP>
chronyc -a -n sourcestats -h <IP>
```
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 <IP>
# Explicit monlist check
nmap -sU -p123 --script ntp-monlist <IP>
```
### Skanowanie masowe/Internetowe
```bash
# Check if MONLIST is enabled (zgrab2 module)
zgrab2 ntp --monlist --timeout 3 --output-file monlist.json -f "zmap_results.csv"
```
---
## Zbadaj pliki konfiguracyjne
- ``/etc/ntp.conf`` (ntpd)
- ``/etc/chrony/chrony.conf`` (chrony)
- ``/etc/systemd/timesyncd.conf`` (timesyncd tylko klient)
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** 🡒 aktualizacja lub przeniesienie poprawek. |
| 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**. |
| 2024 | aktualizacje dystrybucji | **chrony 4.4 / 4.5** kilka poprawek zabezpieczeń i NTS-KE (np. SUSE-RU-2024:2022) |
| 2024 | Rekordowy 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. |
> **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.
---
## Zaawansowane ataki
### 1. Wzmacnianie / 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.
### 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. **Khronos (dawniej Chronos)** IETF 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``).
### 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 <IP>
# Grab banner & ALPN
openssl s_client -connect <IP>:4460 -alpn ntske/1 -tls1_3 -ign_eof
```
Szukaj certyfikatów samopodpisanych lub wygasłych oraz słabych zestawów szyfrujących (non-AEAD). Odniesienie: RFC 8915 §4.
---
## 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ą.
---
## 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 polecenie powyżej |
| ``chronyd`` z ``allow`` | Uruchomienie nieautoryzowanego serwera NTP w laboratorium pentestowym | ``chronyd -q 'server 127.127.1.0 iburst'`` |
| ``BetterCap`` | Wstrzykiwanie pakietów NTP dla ataku MITM z przesunięciem czasowym na Wi-Fi | ``set arp.spoof.targets <victim>; 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
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}
```
---
## Odniesienia
- RFC 8915 *Bezpieczeństwo Czasu Sieciowego dla Protokółu Czasu Sieciowego* (port 4460)
- RFC 8633 *Protokół Czasu Sieciowego BCP*
- Raport Cloudflare DDoS 2024 Q4 (5.6 Tbps)
- Artykuł Cloudflare *Atak Amplifikacyjny NTP*
- NTP 4.2.8p15 seria CVE 2023-04
- Wpisy NVD **CVE-2023-2655155**, **CVE-2023-33192**
- Aktualizacja zabezpieczeń SUSE chrony 2024 (chrony 4.5)
- Projekt Khronos/Chronos (łagodzenie przesunięcia czasowego)
- Podręcznik chronyc/przykłady do zdalnego monitorowania
- Dokumentacja modułu ntp zgrab2
{{#include ../banners/hacktricks-training.md}}