183 lines
12 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}}
## Основна інформація
**Протокол синхронізації часу в мережі (NTP)** забезпечує синхронізацію годинників комп'ютерів та мережевих пристроїв через мережі з різною затримкою. Це важливо для підтримки точного обліку часу в ІТ-операціях, безпеці та веденні журналів. Оскільки час використовується практично в кожному процесі аутентифікації, криптопротоколі та судово-медичному розслідуванні, **зловмисник, який може впливати на NTP, часто може обійти засоби безпеки або ускладнити розслідування атак.**
### Резюме та поради з безпеки
- **Мета**: Синхронізує годинники пристроїв через мережі.
- **Важливість**: Критично важливо для безпеки, ведення журналів, криптопротоколів та розподілених систем.
- **Заходи безпеки**:
- Використовуйте надійні джерела NTP або NTS (Безпека часу в мережі) з аутентифікацією.
- Обмежте, хто може запитувати/керувати демоном (``restrict default noquery``, ``kod`` тощо).
- Вимкніть запити контролю старих режимів 6/7 (``monlist``, ``ntpdc``) або обмежте їх частоту.
- Моніторте відхилення синхронізації/стан стрибка секунд для виявлення підробок.
- Тримайте демон оновленим (див. останні CVE нижче).
**Порт за замовчуванням**
```
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
```
---
## Перерахунок
### Класичний 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 (в більшості сучасних дистрибутивів Linux)
Лише кілька команд моніторингу приймаються з віддалених IP-адрес, коли ``cmdallow`` увімкнено:
```bash
chronyc -a -n tracking -h <IP>
chronyc -a -n sources -v -h <IP>
chronyc -a -n sourcestats -h <IP>
```
Дивіться сторінку man для chronyc для значення прапорців **M/S** та інших полів (stratum, reach, jitter тощо).
### 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>
```
### Масове/Інтернет-сканування
```bash
# Check if MONLIST is enabled (zgrab2 module)
zgrab2 ntp --monlist --timeout 3 --output-file monlist.json -f "zmap_results.csv"
```
---
## Перевірка конфігураційних файлів
- ``/etc/ntp.conf`` (ntpd)
- ``/etc/chrony/chrony.conf`` (chrony)
- ``/etc/systemd/timesyncd.conf`` (timesyncd тільки клієнт)
Зверніть особливу увагу на рядки ``restrict``, налаштування ``kod`` (Kiss-o'-Death), ``disable monitor``/``includefile /etc/ntp/crypto`` та чи увімкнено *NTS* (``nts enable``).
---
## Останні вразливості (2023-2025)
| Рік | CVE | Компонент | Вплив |
|------|-----|-----------|--------|
| 2023 | **CVE-2023-26551→26555** | ntp 4.2.8p15 (libntp *mstolfp*, *praecis_parse*) | Багаторазові записи за межами допустимого, доступні через відповіді **ntpq**. Патч у **4.2.8p16** 🡒 оновлення або зворотне портування виправлень. |
| 2023 | **CVE-2023-33192** | **ntpd-rs** (реалізація на Rust) | Неправильно сформований **NTS** cookie викликає віддалений **DoS** до v0.3.3 впливає на порт 123 навіть коли NTS **вимкнено**. |
| 2024 | оновлення дистрибутивів | **chrony 4.4 / 4.5** кілька виправлень безпеки та NTS-KE (наприклад, SUSE-RU-2024:2022) |
| 2024 | Запис DDoS | Cloudflare повідомляє про **5.6 Tbps UDP-рефлексій** атаку (NTP серед використаних протоколів). Тримайте *monitor* та *monlist* вимкненими на хостах, що виходять в Інтернет. |
> **Експлойт-кити**: Патчі для концептуальних навантажень серії 2023 ntpq OOB-write доступні на GitHub (див. опис Meinberg) і можуть бути використані для фішингу з боку клієнта для системних адміністраторів.
---
## Розширені атаки
### 1. Посилення / Відображення NTP
Запит старого режиму-7 ``monlist`` повертає до **600 адрес хостів** і все ще присутній на тисячах Інтернет-хостів. Оскільки відповідь (428-468 байт/запис) є *~ 200×* більшою за 8-байтовий запит, зловмисник може досягти тризначних коефіцієнтів посилення. Заходи пом'якшення:
- Оновіть до ntp 4.2.8p15+ та **додайте** ``disable monitor``.
- Обмежте швидкість UDP/123 на краю або увімкніть *sessions-required* на пристроях DDoS.
- Увімкніть *BCP 38* фільтрацію виходу, щоб заблокувати підробку джерела.
Дивіться статтю навчального центру Cloudflare для покрокового розбору.
### 2. Атаки на зсув часу / затримку (дослідження Khronos / Chronos)
Навіть з аутентифікацією, зловмисник на шляху може безшумно **зсунути годинник клієнта**, скидаючи/затримуючи пакети. Проект **Khronos (раніше Chronos)** IETF пропонує запитувати різноманітний набір серверів у фоновому режимі та перевіряти результати на предмет виявлення зсуву > 𝚡 мс. Сучасний chrony (4.4+) вже реалізує подібний фільтр перевірки (``maxdistance`` / ``maxjitter``).
### 3. Зловживання NTS та експозиція 4460/tcp
NTS переміщує важку криптографію на окремий **TLS 1.3 канал на 4460/tcp** (``ntske/1``). Погані реалізації (див. CVE-2023-33192) аварійно завершуються при парсингу cookie або дозволяють слабкі шифри. Тестувальники повинні:
```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
```
Шукайте самопідписані або прострочені сертифікати та слабкі шифри (non-AEAD). Посилання: RFC 8915 §4.
---
## Укріплення / Найкраща поточна практика (BCP-233 / RFC 8633)
*Оператори МАЮТЬ:*
1. Використовувати **≥ 4** незалежні, різноманітні джерела часу (публічні пулі, GPS, PTP-містки), щоб уникнути отруєння з одного джерела.
2. Увімкнути ``kod`` та ``limited``/``nomodify`` обмеження, щоб зловмисні клієнти отримували пакети **Kiss-o'-Death** з обмеженням швидкості замість повних відповідей.
3. Моніторити журнали демонів на предмет **panic** подій або коригувань кроку > 1000 с. (Сигнатури атаки згідно з RFC 8633 §5.3.)
4. Розглянути **leap-smear**, щоб уникнути простоїв через стрибки секунд, але переконатися, що *всі* downstream клієнти використовують одне й те саме вікно розмиття.
5. Зберігати опитування ≤24 год, щоб не пропустити прапори стрибка секунд.
Дивіться RFC 8633 для всебічного контрольного списку.
---
## Shodan / Censys Dorks
```
port:123 "ntpd" # Version banner
udp port:123 monlist:true # Censys tag for vulnerable servers
port:4460 "ntske" # NTS-KE
```
---
## Корисні інструменти
| Інструмент | Призначення | Приклад |
|------------|-------------|---------|
| ``ntpwn`` | Обгортка для скрипт-кідді для спрею запитів monlist & peers | ``python ntpwn.py --monlist targets.txt`` |
| **zgrab2 ntp** | Масове сканування / JSON вихід з включеним прапором monlist | Див. команду вище |
| ``chronyd`` з ``allow`` | Запустити зловмисний NTP сервер у лабораторії пентесту | ``chronyd -q 'server 127.127.1.0 iburst'`` |
| ``BetterCap`` | Впровадження NTP пакетів для MITM з зсувом часу на Wi-Fi | ``set arp.spoof.targets <victim>; set ntp.time.delta 30s; arp.spoof on`` |
---
## Автоматичні команди 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}
```
---
## Посилання
- RFC 8915 *Безпека часу мережі для протоколу часу мережі* (порт 4460)
- RFC 8633 *Протокол часу мережі BCP*
- Звіт Cloudflare про DDoS 2024 Q4 (5.6 Tbps)
- Стаття Cloudflare *Атака посилення NTP*
- NTP 4.2.8p15 серія CVE 2023-04
- Записи NVD **CVE-2023-2655155**, **CVE-2023-33192**
- Оновлення безпеки SUSE chrony 2024 (chrony 4.5)
- Чернетка Khronos/Chronos (зменшення зсуву часу)
- Посібник chronyc/приклади для віддаленого моніторингу
- Документація модуля zgrab2 ntp
{{#include ../banners/hacktricks-training.md}}