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 ์ง€์›ํ•˜๊ธฐ

๊ธฐ๋ณธ ์ •๋ณด

**๋„คํŠธ์›Œํฌ ์‹œ๊ฐ„ ํ”„๋กœํ† ์ฝœ (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๊ตฌ์„ฑ ์š”์†Œ์˜ํ–ฅ
2023CVE-2023-26551โ†’26555ntp 4.2.8p15 (libntp mstolfp, praecis_parse)ntpq ์‘๋‹ต์„ ํ†ตํ•ด ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ฒฝ๊ณ„ ์ดˆ๊ณผ ์“ฐ๊ธฐ. 4.2.8p16์—์„œ ํŒจ์น˜ ๐Ÿก’ ์—…๊ทธ๋ ˆ์ด๋“œ ๋˜๋Š” ๋ฐฑํฌํŠธ ์ˆ˜์ •.
2023CVE-2023-33192ntpd-rs (Rust ๊ตฌํ˜„)์ž˜๋ชป๋œ ํ˜•์‹์˜ NTS ์ฟ ํ‚ค๋กœ ์ธํ•ด v0.3.3 ์ด์ „์— ์›๊ฒฉ DoS ๋ฐœ์ƒ โ€“ NTS๊ฐ€ ๋น„ํ™œ์„ฑํ™”๋œ ๊ฒฝ์šฐ์—๋„ ํฌํŠธ 123์— ์˜ํ–ฅ์„ ๋ฏธ์นจ.
2024๋ฐฐํฌํŒ ์—…๋ฐ์ดํŠธchrony 4.4 / 4.5 โ€“ ์—ฌ๋Ÿฌ ๋ณด์•ˆ ๊ฐ•ํ™” ๋ฐ NTS-KE ์ˆ˜์ • (์˜ˆ: SUSE-RU-2024:2022)
2024๊ธฐ๋ก DDoSCloudflare๋Š” 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)

์šด์˜์ž๋Š” ๋‹ค์Œ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค:

  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์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.


Shodan / Censys Dorks

port:123 "ntpd"          # Version banner
udp port:123 monlist:true # Censys tag for vulnerable servers
port:4460 "ntske"         # NTS-KE

์œ ์šฉํ•œ ๋„๊ตฌ

๋„๊ตฌ๋ชฉ์ ์˜ˆ์‹œ
ntpwnmonlist ๋ฐ peers ์ฟผ๋ฆฌ๋ฅผ ์Šคํ”„๋ ˆ์ดํ•˜๊ธฐ ์œ„ํ•œ ์Šคํฌ๋ฆฝํŠธ ํ‚ค๋“œ ๋ž˜ํผpython ntpwn.py --monlist targets.txt
zgrab2 ntp๋Œ€๋Ÿ‰ ์Šค์บ” / monlist ํ”Œ๋ž˜๊ทธ๋ฅผ ํฌํ•จํ•œ JSON ์ถœ๋ ฅ์œ„์˜ ๋ช…๋ น ์ฐธ์กฐ
chronyd with allowํŽœํ…Œ์ŠคํŠธ ์‹คํ—˜์‹ค์—์„œ ์•…์„ฑ NTP ์„œ๋ฒ„ ์‹คํ–‰chronyd -q 'server 127.127.1.0 iburst'
BetterCapWi-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 ์ง€์›ํ•˜๊ธฐ