GREY-X // WINDOWS LAB
netsh — WINHTTP PROXY
netsh est un outil natif de Windows permettant de configurer et d’inspecter différents composants réseau.
Dans un laboratoire de cybersécurité, une partie particulièrement intéressante est :
netsh winhttp
Cette fonctionnalité permet de gérer la configuration WinHTTP Proxy utilisée par certaines applications et certains services Windows.
Il faut cependant faire une distinction importante :
netsh
≠
proxy complet
netsh permet principalement de configurer le client WinHTTP pour utiliser un proxy existant.
Il ne transforme pas à lui seul une machine Windows en serveur proxy HTTP comme pourrait le faire Squid ou mitmproxy.
01 // Afficher la configuration actuelle
Link to heading
La première commande à retenir :
netsh winhttp show proxy
Exemple :
Current WinHTTP proxy settings:
Direct access (no proxy server).
Ou :
Proxy Server(s) : proxy.lab.local:8080
Bypass List : localhost;127.0.0.1
Cette commande permet donc de répondre rapidement à la question :
Windows utilise-t-il actuellement
un proxy WinHTTP ?
02 // Configurer un proxy
Link to heading
Dans un laboratoire, on peut configurer un proxy existant :
netsh winhttp set proxy proxy.lab.local:8080
Avec une adresse IP :
netsh winhttp set proxy 192.168.56.20:8080
Le fonctionnement devient :
WINDOWS
│
│ HTTP/HTTPS
▼
PROXY
192.168.56.20:8080
│
▼
INTERNET
Le proxy doit évidemment être réellement présent et accepter les connexions.
netsh ne crée pas le service proxy.
03 // Ajouter une liste d'exclusion
Link to heading
On peut également définir des destinations qui ne doivent pas utiliser le proxy :
netsh winhttp set proxy proxy.lab.local:8080 "localhost;127.0.0.1;*.lab.local"
La logique devient :
Application
│
├── destination exclue
│ ↓
│ DIRECT
│
└── autre destination
↓
PROXY
Cette notion est importante dans les environnements d’entreprise.
04 // Vérifier après modification
Link to heading
Après avoir configuré le proxy :
netsh winhttp show proxy
Il faut vérifier que Windows retourne bien la configuration attendue.
Exemple :
Proxy Server(s) : 192.168.56.20:8080
Bypass List : localhost;127.0.0.1
On peut alors comparer :
AVANT
Direct access
↓
CONFIGURATION
↓
APRÈS
192.168.56.20:8080
05 // Réinitialiser le proxy
Link to heading
Pour revenir au comportement direct :
netsh winhttp reset proxy
La configuration revient généralement à :
Direct access (no proxy server)
Puis vérifier :
netsh winhttp show proxy
Cette étape est importante dans un laboratoire afin de ne pas laisser une configuration réseau temporaire derrière soi.
06 // WinHTTP ≠ navigateur
Link to heading
Une confusion fréquente consiste à penser que :
netsh winhttp set proxy ...
configure automatiquement tous les navigateurs.
Ce n’est pas le cas.
WinHTTP possède sa propre configuration.
On peut donc avoir :
Navigateur
↓
Proxy navigateur
Service Windows
↓
WinHTTP Proxy
Les deux configurations peuvent être différentes.
07 // Importer la configuration Internet
Link to heading
Windows fournit également :
netsh winhttp import proxy source=ie
Cette commande permet d’importer la configuration proxy des paramètres Internet du système vers WinHTTP.
Pour vérifier ensuite :
netsh winhttp show proxy
Cela peut être utile dans certains environnements où les paramètres proxy sont déjà définis au niveau Windows.
08 // Pourquoi c'est intéressant en Red Team ?
Link to heading
Lors d’un audit Windows, la configuration proxy peut révéler une partie de l’architecture réseau :
POSTE
│
▼
PROXY ENTREPRISE
│
▼
INTERNET
La commande :
netsh winhttp show proxy
peut donc révéler :
adresse du proxy
port
liste d'exclusion
architecture réseau
Par exemple :
Proxy Server(s) : 10.20.30.40:8080
Cette information peut être utile pour comprendre :
comment les applications sortent du réseau
09 // Proxy dans un laboratoire
Link to heading
On peut construire un laboratoire simple :
┌──────────────┐
│ Windows VM │
│ 10.10.10.10 │
└──────┬───────┘
│
│ HTTP
▼
┌──────────────┐
│ Proxy │
│ 10.10.10.20 │
│ :8080 │
└──────┬───────┘
│
▼
Internet
Sur Windows :
netsh winhttp set proxy 10.10.10.20:8080
Puis :
netsh winhttp show proxy
Le proxy doit être configuré séparément sur la machine 10.10.10.20.
Par exemple, dans un laboratoire contrôlé, on peut utiliser un outil de proxy HTTP prévu à cet effet.
10 // Observer le trafic
Link to heading
Une fois le proxy configuré, l’intérêt du laboratoire est d’observer le chemin réseau :
Application
│
▼
WinHTTP
│
▼
Proxy
│
▼
Destination
On peut alors comparer :
DIRECT
avec :
PROXY
et observer les différences avec un analyseur réseau comme Wireshark.
11 // HTTPS : point important
Link to heading
Configurer un proxy ne signifie pas automatiquement que celui-ci peut lire le contenu HTTPS.
Avec :
HTTPS
la communication est chiffrée.
On peut avoir :
Windows
│
│ TLS
▼
Proxy
│
│ TLS
▼
Server
Le proxy peut alors relayer la connexion sans nécessairement voir le contenu applicatif.
L’interception HTTPS nécessite un mécanisme supplémentaire, notamment une configuration TLS appropriée et, dans un laboratoire autorisé, une infrastructure de certificat de test.
12 // Côté Blue Team
Link to heading
Le proxy est également un élément important de la défense.
Un administrateur peut vérifier :
netsh winhttp show proxy
et rechercher :
proxy inconnu
adresse inattendue
port inhabituel
bypass trop large
configuration persistante non documentée
Une configuration comme :
Proxy Server(s) : 10.10.10.50:8080
doit être cohérente avec l’architecture réseau de l’organisation.
13 // Mini-lab GREY-X
Link to heading
Étape 1 — Vérifier Link to heading
netsh winhttp show proxy
Étape 2 — Configurer le proxy du laboratoire Link to heading
netsh winhttp set proxy 192.168.56.20:8080
Étape 3 — Vérifier Link to heading
netsh winhttp show proxy
Étape 4 — Générer du trafic avec une application utilisant WinHTTP Link to heading
Observer ensuite le trafic côté proxy et avec Wireshark.
Étape 5 — Restaurer la configuration Link to heading
netsh winhttp reset proxy
Puis :
netsh winhttp show proxy
L’objectif est de comprendre :
APPLICATION
↓
WinHTTP
↓
PROXY
↓
NETWORK
14 // Commandes à retenir
Link to heading
netsh winhttp show proxy
→ afficher la configuration.
netsh winhttp set proxy 192.168.56.20:8080
→ configurer un proxy WinHTTP.
netsh winhttp set proxy proxy.lab.local:8080 "localhost;127.0.0.1"
→ configurer un proxy avec exclusions.
netsh winhttp reset proxy
→ supprimer la configuration proxy WinHTTP.
netsh winhttp import proxy source=ie
→ importer une configuration proxy Internet vers WinHTTP.
15 // La vision pentest
Link to heading
Une simple commande :
netsh winhttp show proxy
peut révéler une information importante sur le chemin réseau d’une machine :
WINDOWS
│
▼
WinHTTP
│
┌───────┴───────┐
│ │
DIRECT PROXY
│
▼
INTERNET
Dans un pentest, l’intérêt est donc moins de « créer un proxy avec netsh » que de comprendre comment Windows est configuré pour utiliser un proxy.
netshconfigure le client WinHTTP. Le serveur proxy, lui, doit être fourni par un autre composant.
GREY-X — Configure. Observe. Understand.