diff --git a/src/network-services-pentesting/pentesting-ntp.md b/src/network-services-pentesting/pentesting-ntp.md index 258b1c0e5..e145dbca3 100644 --- a/src/network-services-pentesting/pentesting-ntp.md +++ b/src/network-services-pentesting/pentesting-ntp.md @@ -4,59 +4,154 @@ ## Основна інформація -**Протокол мережевого часу (NTP)** забезпечує синхронізацію годинників комп'ютерів та мережевих пристроїв через мережі з різною затримкою. Це важливо для підтримки точної облікової інформації в ІТ-операціях, безпеці та веденні журналів. Точність NTP є суттєвою, але вона також несе в собі ризики безпеки, якщо не управляти нею належним чином. +**Протокол синхронізації часу в мережі (NTP)** забезпечує синхронізацію годинників комп'ютерів та мережевих пристроїв через мережі з різною затримкою. Це важливо для підтримки точного обліку часу в ІТ-операціях, безпеці та веденні журналів. Оскільки час використовується практично в кожному процесі аутентифікації, криптопротоколі та судово-медичному розслідуванні, **зловмисник, який може впливати на NTP, часто може обійти засоби безпеки або ускладнити розслідування атак.** -### Резюме та поради з безпеки: +### Резюме та поради з безпеки - **Мета**: Синхронізує годинники пристроїв через мережі. -- **Важливість**: Критично важливо для безпеки, ведення журналів та операцій. +- **Важливість**: Критично важливо для безпеки, ведення журналів, криптопротоколів та розподілених систем. - **Заходи безпеки**: -- Використовуйте надійні джерела NTP з автентифікацією. -- Обмежте доступ до мережі NTP-сервера. -- Моніторте синхронізацію на предмет ознак підробки. +- Використовуйте надійні джерела NTP або NTS (Network Time Security) з аутентифікацією. +- Обмежте, хто може запитувати/керувати демоном (``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 +``` -**Порт за замовчуванням:** 123/udp ``` PORT STATE SERVICE REASON 123/udp open ntp udp-response ``` +--- ## Перерахування -```bash -ntpq -c readlist -ntpq -c readvar -ntpq -c peers -ntpq -c associations -ntpdc -c monlist -ntpdc -c listpeers -ntpdc -c sysinfo -``` +### Класичний 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 (в більшості сучасних дистрибутивів Linux) + +Лише кілька команд моніторингу приймаються з віддалених IP-адрес, коли ``cmdallow`` увімкнено: +```bash +chronyc -a -n tracking -h +chronyc -a -n sources -v -h +chronyc -a -n sourcestats -h +``` +Дивіться сторінку 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 + +# 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) - -Протокол **NTP**, що використовує UDP, дозволяє працювати без необхідності в процедурах рукопожаття, на відміну від TCP. Ця характеристика експлуатується в **NTP DDoS amplification attacks**. Тут зловмисники створюють пакети з підробленою IP-адресою джерела, що створює враження, ніби запити атаки надходять від жертви. Ці пакети, спочатку невеликі, змушують NTP-сервер відповідати значно більшими обсягами даних, посилюючи атаку. - -Команда _**MONLIST**_, незважаючи на рідкісне використання, може повідомити про останні 600 клієнтів, підключених до служби NTP. Хоча сама команда є простою, її зловживання в таких атаках підкреслює критичні вразливості безпеки. +### Масове/Інтернет-сканування ```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 +--- +## Перевірка конфігураційних файлів -- `ntp` +- ``/etc/ntp.conf`` (ntpd) +- ``/etc/chrony/chrony.conf`` (chrony) +- ``/etc/systemd/timesyncd.conf`` (timesyncd – тільки клієнт) -## HackTricks Автоматичні Команди +Зверніть особливу увагу на рядки ``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** 🡒 оновлення або зворотне портування виправлень. citeturn1search1turn1search2turn1search0| +| 2023 | **CVE-2023-33192** | **ntpd-rs** (реалізація на Rust) | Неправильно сформований **NTS** cookie викликає віддалений **DoS** до v0.3.3 – впливає на порт 123 навіть коли NTS **вимкнено**. citeturn4view0| +| 2024 | оновлення дистрибутивів | **chrony 4.4 / 4.5** – кілька виправлень безпеки та NTS-KE (наприклад, SUSE-RU-2024:2022) citeturn2search2| +| 2024 | Запис DDoS | Cloudflare повідомляє про **5.6 Tbps UDP відображення** атаки (NTP серед використаних протоколів). Тримайте *monitor* та *monlist* вимкненими на хостах, що виходять в Інтернет. citeturn5search0| + +> **Експлойт-кити**: Патчі для концептуальних навантажень серії 2023 ntpq OOB-write доступні на GitHub (див. опис Meinberg) і можуть бути використані для фішингу з боку клієнта для системних адміністраторів. citeturn1search4 + +--- +## Розширені атаки + +### 1. Посилення / Відображення NTP + +Запит старого режиму-7 ``monlist`` повертає до **600 адрес хостів** і все ще присутній на тисячах Інтернет-хостів. Оскільки відповідь (428-468 байт/запис) *~ 200×* більша за 8-байтовий запит, зловмисник може досягти тризначних коефіцієнтів посилення. Заходи пом'якшення: + +- Оновіть до ntp 4.2.8p15+ та **додайте** ``disable monitor``. +- Обмежте швидкість UDP/123 на краю або увімкніть *sessions-required* на пристроях DDoS. +- Увімкніть *BCP 38* фільтрацію виходу, щоб заблокувати підробку джерела. + +Дивіться статтю навчального центру Cloudflare для покрокового розбору. citeturn5search1 + +### 2. Атаки на зсув часу / затримку (дослідження Khronos / Chronos) + +Навіть з автентифікацією, зловмисник на шляху може безшумно **зсунути годинник клієнта**, скидаючи/затримуючи пакети. Проект IETF **Khronos (раніше Chronos)** пропонує запитувати різноманітний набір серверів у фоновому режимі та перевіряти результати на наявність зсуву > 𝚡 мс. Сучасний chrony (4.4+) вже реалізує подібний фільтр перевірки (``maxdistance`` / ``maxjitter``). citeturn9search1 + +### 3. Зловживання NTS та експозиція 4460/tcp + +NTS переміщує важку криптографію на окремий **TLS 1.3 канал на 4460/tcp** (``ntske/1``). Погані реалізації (див. CVE-2023-33192) аварійно завершуються при парсингу cookie або дозволяють слабкі шифри. Pentesters повинні: +```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 +Шукайте самопідписані або прострочені сертифікати та слабкі шифри (non-AEAD). Посилання: RFC 8915 §4. citeturn11search0 + +--- +## Укріплення / Найкраща поточна практика (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**, щоб уникнути простоїв через стрибки секунд, але переконатися, що *всі* клієнти нижнього рівня використовують одне й те саме вікно розмиття. +5. Зберігати опитування ≤24 год, щоб не пропустити прапори стрибка секунд. + +Дивіться RFC 8633 для всебічного контрольного списку. 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 +``` +--- +## Корисні інструменти + +| Інструмент | Призначення | Приклад | +|------------|-------------|---------| +| ``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 ; set ntp.time.delta 30s; arp.spoof on`` | + +--- +## Автоматичні команди HackTricks +``` +Protocol_Name: NTP +Port_Number: 123 +Protocol_Description: Network Time Protocol Entry_1: Name: Notes @@ -71,6 +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}} +- RFC 8915 – *Безпека часу мережі для протоколу часу мережі* (порт 4460) citeturn11search0 +- RFC 8633 – *Протокол часу мережі BCP* citeturn8search0 +- Звіт Cloudflare про DDoS 2024 Q4 (5.6 Tbps) citeturn5search0 +- Стаття Cloudflare про *Атаку посилення NTP* citeturn5search1 +- NTP 4.2.8p15 серія CVE 2023-04 citeturn1search4 +- Записи NVD **CVE-2023-26551–55**, **CVE-2023-33192** citeturn1search1turn1search2turn1search0turn4view0 +- Оновлення безпеки SUSE chrony 2024 (chrony 4.5) citeturn2search2 +- Чернетка Khronos/Chronos (зменшення зсуву часу) citeturn9search1 +- Посібник chronyc/приклади для віддаленого моніторингу citeturn3search0turn10search1 +- Документація модуля ntp zgrab2 citeturn7search0 +{{#include /banners/hacktricks-training.md}}