
Preuve de concept de CVE-1999-0524
╔══════════════════════════════════════════════════════════════════╗
║ ██╗ ██████╗███╗ ███╗██████╗ ████████╗███████╗ ║
║ ██║██╔════╝████╗ ████║██╔══██╗ ██╔══╝██╔════╝ ║
║ ██║██║ ██╔████╔██║██████╔╝ ██║ ███████╗ ║
║ ██║██║ ██║╚██╔╝██║██╔═══╝ ██║ ╚════██║ ║
║ ██║╚██████╗██║ ╚═╝ ██║██║ ██║ ███████║ ║
║ ╚═╝ ╚═════╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚══════╝ ║
╠══════════════════════════════════════════════════════════════════╣
║ CVE-1999-0524 · Scanner de requête/réponse d'horodatage ICMP ║
║ Auteur : Muhamad Bion Tadavi — VPSI ║
║ Org : Vantage Point Security — Usage autorisé uniquement ║
╚══════════════════════════════════════════════════════════════════╝
Scanner ICMP d'horodatage rapide et multi-threadé avec sortie hexadécimale colorée et analyse détaillée des horodatages.
Détecte les hôtes vulnérables à la CVE-1999-0524 (divulgation d'informations d'horodatage ICMP) en envoyant des paquets ICMP Type 13 (Demande d'horodatage). Les hôtes qui répondent par ICMP Type 14 (Réponse d'horodatage) sont marqués comme vulnérables — ils divulguent leur horloge système interne, ce qui facilite l'empreinte des appareils et l'enchaînement d'attaques temporelles.
Construit sans dépendances externes — stdlib Python pure.
Attaquant Cible
│ │
│──── ICMP Type 13 (Demande d'horodatage) ──▶│
│ │ [hôte traite la demande]
│◀─── ICMP Type 14 (Réponse d'horodatage) ────│
│ │
La réponse contient trois champs d'horodatage 32 bits (ms depuis minuit UTC) :
├── Horodatage d'origine (défini par le demandeur — souvent 0)
├── Horodatage de réception ◀── horloge du serveur divulguée ici
└── Horodatage d'émission ◀── horloge du serveur divulguée ici
python3 --version # doit être 3.8+
git clone https://github.com/<votre-nom-utilisateur>/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 [OPTIONS]
Options :
-t, --target IP, IP séparées par des virgules ou CIDR (saisie terminale)
-f, --file Chemin vers un fichier avec une IP/CIDR par ligne
--timeout SECS Secondes d'attente par hôte (défaut : 2.0)
--threads N Threads concurrents (défaut : 30)
-v, --verbose Affiche la barre de progression + vidage hexadécimal complet par hôte
-h, --help Affiche l'aide
| Mode | Comportement |
|---|---|
Par défaut (pas de -v) | Résultats imprimés immédiatement à chaque réponse d'hôte — hexadécimal coloré + horodatages par hôte, puis résumé |
Verbeux (-v) | Barre de progression en direct pendant le scan, puis vidage hexadécimal complet par hôte, puis résumé |
# Hôte unique
sudo python3 icmp_timestamp_scan.py -t 192.168.1.1
# Plusieurs hôtes
sudo python3 icmp_timestamp_scan.py -t 192.168.1.1,192.168.1.2,192.168.1.3
# Balayage de sous-réseau CIDR
sudo python3 icmp_timestamp_scan.py -t 192.168.1.0/24
# Depuis un fichier
sudo python3 icmp_timestamp_scan.py -f hosts.txt
# Verbeux — barre de progression + vidage hexadécimal complet
sudo python3 icmp_timestamp_scan.py -f hosts.txt -v
# Scan large rapide
sudo python3 icmp_timestamp_scan.py -t 10.0.0.0/16 --threads 100 --timeout 1
hosts.txt# Une IP ou CIDR par ligne. Les lignes commençant par # sont ignorées.
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) [*] Cibles : 4 hôtes
[*] Timeout : 2.0s | Threads : 30
[*] Début : 2026-07-14 06:37:25 UTC
[*] Sonde : ICMP Type 13 (Demande d'horodatage)
[*] Attendu : ICMP Type 14 (Réponse d'horodatage) des hôtes vulnérables
╔══ VULNÉRABLE ════════════════════════════════════════════╗
║ Hôte : 192.168.1.1
║ Type ICMP : 14 — Réponse d'horodatage (Type 13 envoyé)
║ TTL : 59
║ RTT : 1.84 ms
║ ── Horodatages (ms depuis minuit UTC) ────────────────
║ Origine : 0 ms → 00:00:00.000 (non défini)
║ Réception : 22 974 518 ms → 06:22:54.518 UTC
║ Émission : 22 974 518 ms → 06:22:54.518 UTC ← heure serveur
║ ── Réponse brute (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 ...
║ Légende : ██=en-tête IP ██=en-tête ICMP ██=type ICMP 14 ██=horodatages
╚══════════════════════════════════════════════════════════╝
[-] 192.168.1.2 pas de réponse (filtré ou non vulnérable)
╔══ VULNÉRABLE ════════════════════════════════════════════╗
║ Hôte : 192.168.1.3
║ TTL : 59 | RTT : 2.11 ms
║ Émission : 22 977 926 ms → 06:22:57.926 UTC ← heure serveur
╚══════════════════════════════════════════════════════════╝
══════════════════════════════════════════════════════════════════
RÉSUMÉ DU SCAN
══════════════════════════════════════════════════════════════════
Heure du scanneur : 2026-07-14 13:37:25 WIB (06:37:25 UTC)
Total sondés : 4
Vulnérables : 2
Pas de réponse : 2
Erreurs : 0
┌─ HÔTES VULNÉRABLES ──────────────────────────────────────────┐
│ Hôte TTL RTT Heure serveur (UTC) ms émission │
├───────────────────────────────────────────────────────────────┤
│ 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 │
└───────────────────────────────────────────────────────────────┘
── Preuve hexadécimale ─────────────────────────────────────
[192.168.1.1] TTL=59 RTT=1.84ms Serveur→ 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 ...
Légende : ██=en-tête IP ██=en-tête ICMP ██=type ICMP 14 ██=horodatages
[192.168.1.3] TTL=59 RTT=2.11ms Serveur→ 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 ...
Légende : ██=en-tête IP ██=en-tête ICMP ██=type ICMP 14 ██=horodatages
Impact : Divulgation d'informations — heure serveur exposée
CWE : CWE-200 Exposition d'informations sensibles
CVSS v3 : 0.0 (Faible) — accès réseau requis
Correctif : Bloquer le type ICMP 13 au niveau de l'ACL/pare-feu périmétrique
Cisco : access-list <ACL> deny icmp any any 13
Octet Champ Exemple Description
───── ───────────────── ─────────── ──────────────────────────────────────
0 Version/IHL IP 45 IPv4, longueur d'en-tête = 20 octets
1 DSCP/ECN 48
2-3 Longueur totale 0028 40 octets
4-5 Identification 1476
6-7 Drapeaux/Décalage 0000
8 TTL 3b 59 sauts
9 Protocole 01 ICMP
10-11 Somme de contrôle 2d93
12-15 IP source c0a80101 192.168.1.1 ← hôte répondant
16-19 IP destination c0a80164 192.168.1.100 ← scanneur
──── En-tête ICMP commence à l'octet 20 ─────────────────────────────────────
20 Type ICMP 0e 14 = Réponse d'horodatage ← VULNÉRABLE
21 Code ICMP 00
22-23 Somme de contrôle f915
24-25 Identifiant d5bf
26-27 Numéro de séquence 0001
28-31 Horodatage origine 00000000 0 ms (champ du demandeur, non rempli)
32-35 Horodatage récept. 015e9036 22 974 518 ms = 06:22:54 UTC ← divulgué
36-39 Horodatage émission 015e9036 22 974 518 ms = 06:22:54 UTC ← divulgué
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="Bloquer la demande d'horodatage ICMP" `
protocol=icmpv4:13,any action=block dir=in
Cet outil est destiné uniquement aux tests de pénétration autorisés, à la recherche en sécurité et aux fins éducatives.
L'utilisation de cet outil contre tout système sans autorisation écrite explicite du propriétaire du système est illégale et peut enfreindre les lois sur la cybercriminalité de votre juridiction.
L'auteur et Vantage Point Security déclinent toute responsabilité en cas d'utilisation abusive de cet outil.
Fait avec ♥ par Muhamad Bion Tadavi — Vantage Point Security (VPSI)
| Champ | Valeur |
|---|
| ID CVE | CVE-1999-0524 |
| CWE | CWE-200 — Exposition d'informations sensibles |
| CVSS v3 | 0.0 (Faible) |
| Type | Divulgation d'informations |
| Protocole | ICMP Type 13 / Type 14 |
| Affecté | Cisco IOS, Cisco ASA, Linux, Windows (selon configuration) |
| Fonctionnalité | Détail |
|---|
| Scan multi-threadé | Sondes parallèles configurables (défaut : 30 threads) |
| Entrée flexible | IP unique · Séparées par virgules · Plage CIDR · Fichier (-t / -f) |
| Hexadécimal coloré | En-tête IP · En-tête ICMP · Octet de type · Horodatages — chacun coloré de façon unique |
| Décodage d'horodatage | Millisecondes brutes décodées en HH:MM:SS.mmm UTC |
| Preuve hexadécimale dans le résumé | Hexadécimal coloré + légende imprimés par hôte vulnérable dans le résumé final |
Vidage hexadécimal complet (-v) | Colonnes décalage + hex + ASCII pour chaque réponse |
Barre de progression (-v) | Barre de progression en direct affichée uniquement en mode verbeux |
| Tableau récapitulatif | Tableau trié des hôtes vulnérables avec TTL, RTT et heure serveur |
| Zéro dépendance | Stdlib Python pure — pas besoin de pip install |