mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
183 lines
12 KiB
Markdown
183 lines
12 KiB
Markdown
# 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-26551–55**, **CVE-2023-33192**
|
||
- Оновлення безпеки SUSE chrony 2024 (chrony 4.5)
|
||
- Чернетка Khronos/Chronos (зменшення зсуву часу)
|
||
- Посібник chronyc/приклади для віддаленого моніторингу
|
||
- Документація модуля zgrab2 ntp
|
||
{{#include ../banners/hacktricks-training.md}}
|