123/udp - Pentesting NTP

Reading time: 7 minutes

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

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 배포판에서)

cmdallow가 활성화되면 원격 IP에서 허용되는 모니터링 명령은 극히 일부입니다:

bash
chronyc -a -n tracking   -h <IP>
chronyc -a -n sources -v -h <IP>
chronyc -a -n sourcestats -h <IP>

M/S 플래그와 기타 필드(스트라텀, 리치, 지터 등)의 의미는 chronyc 매뉴얼 페이지를 참조하세요.

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/cryptoNTS가 활성화되어 있는지 (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가 사용된 프로토콜 중 하나). 인터넷에 노출된 호스트에서 monitormonlist를 비활성화하십시오.

익스플로잇 키트: 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 참조)은 쿠키를 파싱할 때 충돌하거나 약한 암호를 허용합니다. 펜테스터는:

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

자체 서명된 인증서나 만료된 인증서 및 약한 암호화 스위트(비 AEAD)를 찾아보세요. 참조: RFC 8915 §4.


강화 / 최선의 현재 관행 (BCP-233 / RFC 8633)

운영자는 다음을 권장합니다:

  1. ≥ 4개의 독립적이고 다양한 시간 소스(공개 풀, GPS, PTP-브리지)를 사용하여 단일 소스 오염을 피하십시오.
  2. kodlimited/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 지원하기