123/udp - Pentesting NTP
Tip
AWS ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training AWS Red Team Expert (ARTE)
GCP ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:HackTricks Training GCP Red Team Expert (GRTE)
Azure ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks ์ง์ํ๊ธฐ
- ๊ตฌ๋ ๊ณํ ํ์ธํ๊ธฐ!
- **๐ฌ ๋์ค์ฝ๋ ๊ทธ๋ฃน ๋๋ ํ ๋ ๊ทธ๋จ ๊ทธ๋ฃน์ ์ฐธ์ฌํ๊ฑฐ๋ ํธ์ํฐ ๐ฆ @hacktricks_live๋ฅผ ํ๋ก์ฐํ์ธ์.
- HackTricks ๋ฐ HackTricks Cloud ๊นํ๋ธ ๋ฆฌํฌ์งํ ๋ฆฌ์ PR์ ์ ์ถํ์ฌ ํดํน ํธ๋ฆญ์ ๊ณต์ ํ์ธ์.
๊ธฐ๋ณธ ์ ๋ณด
**๋คํธ์ํฌ ์๊ฐ ํ๋กํ ์ฝ (NTP)**๋ ๊ฐ๋ณ ๋๊ธฐ ์๊ฐ ๋คํธ์ํฌ์์ ์ปดํจํฐ์ ๋คํธ์ํฌ ์ฅ์น๊ฐ ์๊ณ๋ฅผ ์ ํํ๊ฒ ๋๊ธฐํํ๋๋ก ๋ณด์ฅํฉ๋๋ค. IT ์ด์, ๋ณด์ ๋ฐ ๋ก๊น ์์ ์ ํํ ์๊ฐ ์ ์ง์ ํ์์ ์ ๋๋ค. ์๊ฐ์ ๊ฑฐ์ ๋ชจ๋ ์ธ์ฆ, ์ํธ ํ๋กํ ์ฝ ๋ฐ ํฌ๋ ์ ํ๋ก์ธ์ค์์ ์ฌ์ฉ๋๊ธฐ ๋๋ฌธ์, 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
# 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 ๋ฐฐํฌํ์์)
cmdallow๊ฐ ํ์ฑํ๋๋ฉด ์๊ฒฉ IP์์ ํ์ฉ๋๋ ๋ชจ๋ํฐ๋ง ๋ช
๋ น์ ๊ทนํ ์ผ๋ถ์
๋๋ค:
chronyc -a -n tracking -h <IP>
chronyc -a -n sources -v -h <IP>
chronyc -a -n sourcestats -h <IP>
M/S ํ๋๊ทธ์ ๊ธฐํ ํ๋(์คํธ๋ผํ , ๋ฆฌ์น, ์งํฐ ๋ฑ)์ ์๋ฏธ๋ chronyc ๋งค๋ด์ผ ํ์ด์ง๋ฅผ ์ฐธ์กฐํ์ธ์.
Nmap
# 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>
๋๋/์ธํฐ๋ท ์ค์บ๋
# 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 ์ฟ ํค๋ก ์ธํด v0.3.3 ์ด์ ์ ์๊ฒฉ DoS ๋ฐ์ โ NTS๊ฐ ๋นํ์ฑํ๋ ๊ฒฝ์ฐ์๋ ํฌํธ 123์ ์ํฅ์ ๋ฏธ์นจ. |
| 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 ์ฆํญ / ๋ฐ์ฌ
๊ตฌ์ Mode-7 monlist ์ฟผ๋ฆฌ๋ ์ต๋ 600๊ฐ์ ํธ์คํธ ์ฃผ์๋ฅผ ๋ฐํํ๋ฉฐ ์ฌ์ ํ ์์ฒ ๊ฐ์ ์ธํฐ๋ท ํธ์คํธ์ ์กด์ฌํฉ๋๋ค. ์๋ต (428-468 ๋ฐ์ดํธ/ํญ๋ชฉ)์ด 8๋ฐ์ดํธ ์์ฒญ๋ณด๋ค ~ 200๋ฐฐ ๋ ํฌ๊ธฐ ๋๋ฌธ์ ๊ณต๊ฒฉ์๋ ์ธ ์๋ฆฌ ์ฆํญ ๊ณ์๋ฅผ ๋ฌ์ฑํ ์ ์์ต๋๋ค. ์ํ ์กฐ์น:
- ntp 4.2.8p15+๋ก ์
๊ทธ๋ ์ด๋ํ๊ณ
disable monitor๋ฅผ ์ถ๊ฐํ์ญ์์ค. - ์ฃ์ง์์ UDP/123์ ์๋๋ฅผ ์ ํํ๊ฑฐ๋ DDoS ์ฅ๋น์์ sessions-required๋ฅผ ํ์ฑํํ์ญ์์ค.
- ์ถ๊ตฌ ํํฐ๋ง์ ์ํด BCP 38๋ฅผ ํ์ฑํํ์ฌ ์์ค ์คํธํ์ ์ฐจ๋จํ์ญ์์ค.
๋จ๊ณ๋ณ ๋ถ์์ ์ํด Cloudflare์ ํ์ต ์ผํฐ ๊ธฐ์ฌ๋ฅผ ์ฐธ์กฐํ์ญ์์ค.
2. ์๊ฐ ์ด๋ / ์ง์ฐ ๊ณต๊ฒฉ (Khronos / Chronos ์ฐ๊ตฌ)
์ธ์ฆ์ด ์๋๋ผ๋, ๊ฒฝ๋ก ๊ณต๊ฒฉ์๋ ํจํท์ ๋๋กญํ๊ฑฐ๋ ์ง์ฐ์์ผ ํด๋ผ์ด์ธํธ ์๊ณ๋ฅผ ์กฐ์ฉํ ์ด๋์ํฌ ์ ์์ต๋๋ค. IETF Khronos (์ด์ Chronos) ์ด์์ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๋ค์ํ ์๋ฒ๋ฅผ ์ฟผ๋ฆฌํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ์ ์ ํ์ธํ์ฌ ๐ก ms ์ด์์ ์ด๋์ ๊ฐ์งํ ๊ฒ์ ์ ์ํฉ๋๋ค. ์ต์ chrony (4.4+)๋ ์ด๋ฏธ ์ ์ฌํ ์ ์ ํํฐ (maxdistance / maxjitter)๋ฅผ ๊ตฌํํ๊ณ ์์ต๋๋ค.
3. NTS ๋จ์ฉ ๋ฐ 4460/tcp ๋ ธ์ถ
NTS๋ ๋ฌด๊ฑฐ์ด ์ํธํ๋ฅผ ๋ณ๋์ TLS 1.3 ์ฑ๋์ธ 4460/tcp (ntske/1)๋ก ์ด๋ํฉ๋๋ค. ์๋ชป๋ ๊ตฌํ (CVE-2023-33192 ์ฐธ์กฐ)์ ์ฟ ํค๋ฅผ ํ์ฑํ ๋ ์ถฉ๋ํ๊ฑฐ๋ ์ฝํ ์ํธ๋ฅผ ํ์ฉํฉ๋๋ค. ํํ
์คํฐ๋:
# 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
์์ฒด ์๋ช ๋ ์ธ์ฆ์๋ ๋ง๋ฃ๋ ์ธ์ฆ์ ๋ฐ ์ฝํ ์ํธํ ์ค์ํธ(๋น AEAD)๋ฅผ ์ฐพ์๋ณด์ธ์. ์ฐธ์กฐ: RFC 8915 ยง4.
๊ฐํ / ์ต์ ์ ํ์ฌ ๊ดํ (BCP-233 / RFC 8633)
์ด์์๋ ๋ค์์ ๊ถ์ฅํฉ๋๋ค:
- โฅ 4๊ฐ์ ๋ ๋ฆฝ์ ์ด๊ณ ๋ค์ํ ์๊ฐ ์์ค(๊ณต๊ฐ ํ, GPS, PTP-๋ธ๋ฆฌ์ง)๋ฅผ ์ฌ์ฉํ์ฌ ๋จ์ผ ์์ค ์ค์ผ์ ํผํ์ญ์์ค.
kod๋ฐlimited/nomodify์ ํ์ ํ์ฑํํ์ฌ ์ ์์ ์ธ ํด๋ผ์ด์ธํธ๊ฐ ์ ์ฒด ์๋ต ๋์ Kiss-oโ-Death ์๋ ์ ํ ํจํท์ ๋ฐ๋๋ก ํ์ญ์์ค.- panic ์ด๋ฒคํธ ๋๋ 1000์ด ์ด์์ ๋จ๊ณ ์กฐ์ ์ ์ํด ๋ฐ๋ชฌ ๋ก๊ทธ๋ฅผ ๋ชจ๋ํฐ๋งํ์ญ์์ค. (RFC 8633 ยง5.3์ ๋ฐ๋ฅธ ๊ณต๊ฒฉ์ ์งํ.)
- ๋์ฝ ์ด ์ค๋จ์ ํผํ๊ธฐ ์ํด leap-smear๋ฅผ ๊ณ ๋ คํ๋, ๋ชจ๋ ํ๋ฅ ํด๋ผ์ด์ธํธ๊ฐ ๋์ผํ ์ค๋ฏธ์ด ์๋์ฐ๋ฅผ ์ฌ์ฉํ๋๋ก ํ์ญ์์ค.
- ๋์ฝ ์ด ํ๋๊ทธ๊ฐ ๋๋ฝ๋์ง ์๋๋ก ํด๋ง์ โค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 | ๋๋ ์ค์บ / monlist ํ๋๊ทธ๋ฅผ ํฌํจํ JSON ์ถ๋ ฅ | ์์ ๋ช ๋ น ์ฐธ์กฐ |
chronyd with allow | ํํ ์คํธ ์คํ์ค์์ ์ ์ฑ NTP ์๋ฒ ์คํ | chronyd -q 'server 127.127.1.0 iburst' |
BetterCap | Wi-Fi์์ ์๊ฐ ์ด๋ MITM์ ์ํ NTP ํจํท ์ฃผ์ | 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}
References
- RFC 8915 โ Network Time Security for the Network Time Protocol (port 4460)
- RFC 8633 โ Network Time Protocol BCP
- Cloudflare DDoS report 2024 Q4 (5.6 Tbps)
- Cloudflare NTP Amplification Attack article
- NTP 4.2.8p15 CVE series 2023-04
- NVD entries CVE-2023-26551โ55, CVE-2023-33192
- SUSE chrony security update 2024 (chrony 4.5)
- Khronos/Chronos draft (time-shift mitigation)
- chronyc manual/examples for remote monitoring
- zgrab2 ntp module docs
Tip
AWS ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training AWS Red Team Expert (ARTE)
GCP ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:HackTricks Training GCP Red Team Expert (GRTE)
Azure ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks ์ง์ํ๊ธฐ
- ๊ตฌ๋ ๊ณํ ํ์ธํ๊ธฐ!
- **๐ฌ ๋์ค์ฝ๋ ๊ทธ๋ฃน ๋๋ ํ ๋ ๊ทธ๋จ ๊ทธ๋ฃน์ ์ฐธ์ฌํ๊ฑฐ๋ ํธ์ํฐ ๐ฆ @hacktricks_live๋ฅผ ํ๋ก์ฐํ์ธ์.
- HackTricks ๋ฐ HackTricks Cloud ๊นํ๋ธ ๋ฆฌํฌ์งํ ๋ฆฌ์ PR์ ์ ์ถํ์ฌ ํดํน ํธ๋ฆญ์ ๊ณต์ ํ์ธ์.


