
CVE-1999-0524의 PoC
╔══════════════════════════════════════════════════════════════════╗
║ ██╗ ██████╗███╗ ███╗██████╗ ████████╗███████╗ ║
║ ██║██╔════╝████╗ ████║██╔══██╗ ██╔══╝██╔════╝ ║
║ ██║██║ ██╔████╔██║██████╔╝ ██║ ███████╗ ║
║ ██║██║ ██║╚██╔╝██║██╔═══╝ ██║ ╚════██║ ║
║ ██║╚██████╗██║ ╚═╝ ██║██║ ██║ ███████║ ║
║ ╚═╝ ╚═════╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚══════╝ ║
╠══════════════════════════════════════════════════════════════════╣
║ CVE-1999-0524 · ICMP Timestamp Request/Reply Scanner ║
║ Author : Muhamad Bion Tadavi — VPSI ║
║ Org : Vantage Point Security — Authorized Use Only ║
╚══════════════════════════════════════════════════════════════════╝
빠르고 멀티스레드 방식의 ICMP 타임스탬프 스캐너 — 색상 구분된 16진수 출력 및 상세 타임스탬프 분석 제공.
CVE-1999-0524 (ICMP 타임스탬프 정보 노출)에 취약한 호스트를 탐지합니다. ICMP Type 13 (타임스탬프 요청) 패킷을 전송하여 ICMP Type 14 (타임스탬프 응답) 으로 응답하는 호스트를 취약으로 표시합니다. 이는 내부 시스템 시계가 노출되어 장치 식별 및 시간 기반 공격 연쇄에 도움이 됩니다.
외부 종속성 없이 순수 Python 표준 라이브러리로 제작되었습니다.
공격자 대상
│ │
│──── ICMP Type 13 (Timestamp Request) ──▶│
│ │ [호스트가 요청 처리]
│◀─── ICMP Type 14 (Timestamp Reply) ─────│
│ │
응답에는 세 개의 32비트 타임스탬프 필드가 포함됨 (UTC 자정 이후 ms):
├── Originate Timestamp (요청자가 설정 — 보통 0)
├── Receive Timestamp ◀── 서버 시계 누출됨
└── Transmit Timestamp ◀── 서버 시계 누출됨
python3 --version # 3.8+ 이상이어야 함
git clone https://github.com/<your-username>/CVE-1999-0524-ICMP-Timestamp-Scanner.git
cd CVE-1999-0524-ICMP-Timestamp-Scanner
chmod +x icmp_timestamp_scan.py
sudo python3 icmp_timestamp_scan.py [옵션]
옵션:
-t, --target IP, 쉼표로 구분된 IP 또는 CIDR (터미널 입력)
-f, --file 한 줄에 하나의 IP/CIDR이 있는 파일 경로
--timeout SECS 호스트당 대기 시간 (초) (기본값: 2.0)
--threads N 동시 스레드 수 (기본값: 30)
-v, --verbose 진행 표시줄 + 호스트별 전체 16진수 덤프 표시
-h, --help 도움말 표시
| 모드 | 동작 |
|---|---|
기본 ( -v 없음) | 각 호스트가 응답하면 즉시 결과 출력 — 호스트별 색상 16진수 + 타임스탬프, 이어서 요약 |
상세 ( -v ) | 스캔 중 진행 표시줄, 호스트별 전체 16진수 덤프, 이어서 요약 |
# 단일 호스트
sudo python3 icmp_timestamp_scan.py -t 192.168.1.1
# 여러 호스트
sudo python3 icmp_timestamp_scan.py -t 192.168.1.1,192.168.1.2,192.168.1.3
# CIDR 서브넷 스윕
sudo python3 icmp_timestamp_scan.py -t 192.168.1.0/24
# 파일에서 읽기
sudo python3 icmp_timestamp_scan.py -f hosts.txt
# 상세 모드 — 진행 표시줄 + 전체 16진수 덤프
sudo python3 icmp_timestamp_scan.py -f hosts.txt -v
# 빠른 광범위 스캔
sudo python3 icmp_timestamp_scan.py -t 10.0.0.0/16 --threads 100 --timeout 1
hosts.txt 형식# 한 줄에 하나의 IP 또는 CIDR. #로 시작하는 줄은 무시됩니다.
192.168.1.1
192.168.1.2
192.168.1.3
10.0.0.1
10.0.0.2
10.0.0.0/24
-v 없음) [*] Targets : 4 hosts
[*] Timeout : 2.0s | Threads: 30
[*] Started : 2026-07-14 06:37:25 UTC
[*] Probe : ICMP Type 13 (Timestamp Request)
[*] Expect : ICMP Type 14 (Timestamp Reply) from vulnerable hosts
╔══ VULNERABLE ══════════════════════════════════════════╗
║ Host : 192.168.1.1
║ ICMP Type : 14 — Timestamp Reply (sent Type 13)
║ TTL : 59
║ RTT : 1.84 ms
║ ── Timestamps (ms since midnight UTC) ──────────────
║ Originate : 0 ms → 00:00:00.000 (not set)
║ Receive : 22,974,518 ms → 06:22:54.518 UTC
║ Transmit : 22,974,518 ms → 06:22:54.518 UTC ← server time
║ ── Raw Response (hex) ──────────────────────────────
║ 45 48 00 28 14 76 00 00 3b 01 2d 93 c0 a8 01 01 c0 a8 01 64 0e 00 f9 15 ...
║ Legend: ██=IP header ██=ICMP header ██=ICMP type14 ██=timestamps
╚════════════════════════════════════════════════════════╝
[-] 192.168.1.2 no response (filtered or not vulnerable)
╔══ VULNERABLE ══════════════════════════════════════════╗
║ Host : 192.168.1.3
║ TTL : 59 | RTT : 2.11 ms
║ Transmit : 22,977,926 ms → 06:22:57.926 UTC ← server time
╚════════════════════════════════════════════════════════╝
══════════════════════════════════════════════════════════════════
SCAN SUMMARY
══════════════════════════════════════════════════════════════════
Scanner time : 2026-07-14 13:37:25 WIB (06:37:25 UTC)
Total probed : 4
Vulnerable : 2
No response : 2
Errors : 0
┌─ VULNERABLE HOSTS ────────────────────────────────────────────┐
│ Host TTL RTT Server Time (UTC) Transmit ms │
├───────────────────────────────────────────────────────────────┤
│ 192.168.1.1 59 1.8ms 06:22:54.518 UTC 22,974,518 │
│ 192.168.1.3 59 2.1ms 06:22:57.926 UTC 22,977,926 │
└───────────────────────────────────────────────────────────────┘
── Hex Evidence ─────────────────────────────────────────────
[192.168.1.1] TTL=59 RTT=1.84ms Server→ 06:22:54.518 UTC
45 48 00 28 14 76 00 00 3b 01 2d 93 c0 a8 01 01 c0 a8 01 64 0e 00 f9 15 ...
Legend: ██=IP header ██=ICMP header ██=ICMP type14 ██=timestamps
[192.168.1.3] TTL=59 RTT=2.11ms Server→ 06:22:57.926 UTC
45 48 00 28 1a c3 00 00 3b 01 27 46 c0 a8 01 03 c0 a8 01 64 0e 00 f3 7e ...
Legend: ██=IP header ██=ICMP header ██=ICMP type14 ██=timestamps
Impact : Information Disclosure — server time exposed
CWE : CWE-200 Exposure of Sensitive Information
CVSS v3 : 0.0 (Low) — network access required
Fix : Block ICMP type 13 at perimeter ACL/firewall
Cisco : access-list <ACL> deny icmp any any 13
Byte Field Example Description
───── ───────────────── ─────────── ──────────────────────────────────────
0 IP Version/IHL 45 IPv4, header length = 20 bytes
1 DSCP/ECN 48
2-3 Total Length 0028 40 bytes
4-5 Identification 1476
6-7 Flags/Fragment 0000
8 TTL 3b 59 hops
9 Protocol 01 ICMP
10-11 IP Checksum 2d93
12-15 Source IP c0a80101 192.168.1.1 ← 응답 호스트
16-19 Destination IP c0a80164 192.168.1.100 ← 스캐너
──── ICMP header starts at byte 20 ────────────────────────────────────────
20 ICMP Type 0e 14 = Timestamp Reply ← 취약
21 ICMP Code 00
22-23 ICMP Checksum f915
24-25 Identifier d5bf
26-27 Sequence Number 0001
28-31 Originate TS 00000000 0 ms (requester field, not filled)
32-35 Receive TS 015e9036 22,974,518 ms = 06:22:54 UTC ← 누출됨
36-39 Transmit TS 015e9036 22,974,518 ms = 06:22:54 UTC ← 누출됨
ip access-list extended BLOCK-ICMP-TS
deny icmp any any 13
deny icmp any any 17
permit ip any any
!
interface GigabitEthernet0/0
ip access-group BLOCK-ICMP-TS in
access-list OUTSIDE_IN deny icmp any any 13
access-list OUTSIDE_IN deny icmp any any 17
access-group OUTSIDE_IN in interface outside
iptables -A INPUT -p icmp --icmp-type timestamp-request -j DROP
iptables -A OUTPUT -p icmp --icmp-type timestamp-reply -j DROP
nft add rule inet filter input icmp type timestamp-request drop
nft add rule inet filter output icmp type timestamp-reply drop
netsh advfirewall firewall add rule `
name="Block ICMP Timestamp Request" `
protocol=icmpv4:13,any action=block dir=in
이 도구는 오로지 허가된 침투 테스트, 보안 연구 및 교육 목적으로만 사용됩니다.
시스템 소유자의 명시적인 서면 허가 없이 이 도구를 어떤 시스템에 대해 실행하는 것은 불법이며, 관할 지역의 컴퓨터 범죄 법률을 위반할 수 있습니다.
저자와 Vantage Point Security는 이 도구의 오용으로 인한 어떠한 책임도 지지 않습니다.
Made with ♥ by Muhamad Bion Tadavi — Vantage Point Security (VPSI)
| 필드 | 값 |
|---|
| CVE ID | CVE-1999-0524 |
| CWE | CWE-200 — 민감 정보 노출 |
| CVSS v3 | 0.0 (낮음) |
| 유형 | 정보 노출 |
| 프로토콜 | ICMP Type 13 / Type 14 |
| 영향받는 대상 | Cisco IOS, Cisco ASA, Linux, Windows (설정에 따라 다름) |
| 기능 | 세부 사항 |
|---|
| 멀티스레드 스캔 | 구성 가능한 병렬 프로브 (기본값: 30 스레드) |
| 유연한 입력 | 단일 IP · 쉼표 구분 · CIDR 범위 · 파일 (-t / -f) |
| 색상 구분된 16진수 | IP 헤더 · ICMP 헤더 · Type 바이트 · 타임스탬프 — 각각 고유 색상 |
| 타임스탬프 디코딩 | 원시 밀리초를 HH:MM:SS.mmm UTC로 변환 |
| 요약 내 16진수 증거 | 최종 요약에 취약 호스트별 색상 16진수 + 범례 출력 |
전체 16진수 덤프 (-v) | 각 응답에 대해 오프셋 + 16진수 + ASCII 열 표시 |
진행 표시줄 (-v) | 상세 모드에서만 진행 표시줄 표시 |
| 요약 테이블 | 정렬된 취약 호스트 테이블 (TTL, RTT, 서버 시간 포함) |
| 종속성 제로 | 순수 Python 표준 라이브러리 — pip 설치 불필요 |