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.

netsh configure le client WinHTTP. Le serveur proxy, lui, doit être fourni par un autre composant.

GREY-X — Configure. Observe. Understand.