netstat (Network Statistics) affiche les connexions réseau actives, ports en écoute, tables de routage, statistiques d'interface. Outil natif Windows (CMD/PowerShell), indispensable pour diagnostic réseau, détection malware, analyse ports.
Ouvrir l'invite de commandes
- Win+R →
cmd (ou powershell).
- Pour droits admin (certains switches) : Win+X → « Terminal (Admin) » / « Invite de commandes (Admin) ».
Commandes essentielles (cheat sheet)
| Commande | Description | Usage typique |
netstat | Connexions TCP actives (établi) | Vue rapide |
netstat -a | TOUTES connexions + ports en écoute (LISTENING) | Voir ports ouverts |
netstat -an | Idem -a mais **adresses IP numériques** (pas de résolution DNS = plus rapide) | Diagnostic rapide |
netstat -ano | -an + **PID** (Process ID) → identifie le processus propriétaire | Trouver quel programme utilise un port |
netstat -b | Affiche l'**exécutable** (nécessite Admin) | Identifier le .exe sans croiser PID |
netstat -p TCP | Filtre protocole TCP seulement | Focus TCP |
netstat -p UDP | Filtre UDP seulement | Focus UDP (DNS, streaming, VPN) |
netstat -r | Table de **routage** (passerelle, masques, interfaces) | Diagnostic routage, VPN |
netstat -s | Statistiques **par protocole** (IP, ICMP, TCP, UDP) — compteurs erreurs, retransmissions | Performance, pertes paquets |
netstat -e | Statistiques **interface** (octets/paquets envoyés/reçus, erreurs) | Trafic global interface |
netstat -f | Affiche **FQDN** (noms complets) au lieu d'IP | Identification hôtes |
Combinaisons puissantes
# Connexions actives + PID + noms processus (Admin requis pour -b)
netstat -ano | findstr :80 # qui écoute sur port 80 ?
netstat -ano | findstr ESTABLISHED # connexions établies seulement
# Surveillance continue (rafraîchissement)
netstat -an 5 # actualise toutes les 5 secondes (Ctrl+C pour arrêter)
# Export fichier
netstat -ano > C:\netstat_log.txt # redirection
netstat -ano | Out-File -Encoding UTF8 C:\netstat_log.txt # PowerShell propre
Interprétation colonnes (netstat -ano)
Proto Adresse locale Adresse distante État PID
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 4356
TCP 192.168.1.10:54321 93.184.216.34:443 ESTABLISHED 8212
UDP [::]:5355 *:* 1234
- Proto : TCP / UDP / TCPv6 / UDPv6.
- Adresse locale : IP:port local.
0.0.0.0 = toutes interfaces (écoute). 127.0.0.1 = localhost seulement.
- Adresse distante : IP:port distant.
0.0.0.0:0 ou *:* = en écoute (pas de distant).
- État (TCP) : LISTENING (en écoute), ESTABLISHED (connecté), TIME_WAIT (fermeture), SYN_SENT/RECEIVED (établissement), CLOSE_WAIT (attente fermeture appli).
- PID : identifiant processus. Croisez avec
tasklist | findstr <PID> ou Gestionnaire des tâches → onglet Détails → PID.
PowerShell moderne (alternative plus riche)
Get-NetTCPConnection -State Established | Select LocalAddress,LocalPort,RemoteAddress,RemotePort,OwningProcess,State
Get-NetUDPEndpoint | Select LocalAddress,LocalPort,OwningProcess
# Avec nom de processus :
Get-NetTCPConnection | Select *, @{N='ProcessName';E={(Get-Process -Id $_.OwningProcess).ProcessName}}
Cas d'usage concrets
- Port 80/443 occupé ?
netstat -ano | findstr :80 → PID → tasklist | findstr <PID> → Apache/IIS/nginx ?
- Connexion suspecte vers IP inconnue ?
netstat -an | findstr ESTABLISHED → whois IP distante.
- Fuite DNS / VPN ?
netstat -an | findstr :53 (DNS) — devrait pointer vers votre DNS/VPN, pas FAI.
- Malware beaconing ? Connexions régulières (toutes les 60 s) vers IP rare, PID inconnu → analysez l'exécutable (VirusTotal).