TL;DR#
Hunt guidé par un rapport de threat intel surStuxbot(cybercrime, phishing opportuniste "anyone, anytime", motivation espionnage, cible Windows, risque critique). Hypothèse de départ :un email de phishing a livré avec succès un fichier OneNote malveillant(invoice.one). L'hypothèse conditionne la séquence de recherche : partir d'un hash exécuté aurait donné une autre séquence. Chaîne d'attaque reconstruite via les logs Elastic (Sysmon + Windows audit + PowerShell + Zeek) : 1. Bob téléchargeinvoice.onedepuis file.io via MSEdge (Sysmon EID 15, puis corrélation Zeek DNS/connexions car Sysmon ne logge pas les connexions navigateur). MachineWS001/192.168.28.130, le 26/03/2023 22:05:47 (Europe/Copenhagen). 2. Ouverture avec OneNote 6s plus tard (EID 1,process.command_line:*invoice.one*). 3.ONENOTE.EXE→cmd.exeexécuteinvoice.batdepuis un dossier temp (EID 1,process.parent.name:"ONENOTE.EXE"). 4.invoice.bat→powershell.exequi télécharge et exécute un script depuis Pastebin (stage 0).process.parent.command_line:*invoice.bat*. 5. Le PowerShell (PID 9944) : création de fichiers, DNS pourngrok.io(C2 masqué, trafic chiffré port 443), dépôt dedefault.exe(persistance), requêtes DNS et connexions versDC1. 6.default.exe: hash SHA256 = IOC du rapport. Exécuté, lance des DNS ngrok, uploadsvchost.exe,SharpHound.exe,payload.exe, un VBS. SharpHound exécuté 2x (reconnaissance AD). 7. Recherche large sur le hash dedefault.exe→ présent aussi surPKI, lancé viaPSEXESVC(PsExec, lateral movement) sous le comptesvc-sql1(compromis, backdoor sous son profil). 8. Compromission desvc-sql1probablement via bruteforce du script PowerShell depuis WS001 → recherche 4624/4625 LogonType 3 depuis 192.168.28.130. Assets compromis identifiés :WS001(Bob, patient zéro),PKI, comptesvc-sql1, activité versDC1.
Rapport de Threat Intel : Stuxbot#
| Champ | Valeur |
|---|---|
| Nature | Collectif cybercrime organisé, campagnes de phishing depuis début 2023 |
| Ciblage | Opportuniste, aucune stratégie de ciblage ("anyone, anytime"), peu de spear-phishing |
| Motivation | Espionnage (pas d'exfil de blueprints/infos business, pas de ransomware ni extorsion) |
| Plateforme visée | Microsoft Windows |
| Impact potentiel | Prise de contrôle complète de la machine / escalade domaine |
| Risque | Critique |
| Accès initial | Phishing opportuniste (emails issus de réseaux sociaux, breaches passés, sites corporate) |
Séquence d'attaque (device initialement compromis)#


| Phase | Détail |
|---|---|
Initial Breach | Email de phishing basique, malware déguisé en facture. Lien vers un fichier OneNote hébergé sur un file hosting (Mega.io, file.io, transfer.sh...). Le OneNote se fait passer pour une facture avec un bouton "HIDDEN" déclenchant un batch embarqué, qui récupère des scripts PowerShell (stage 0). |
RAT | Modulaire, extensible. Fonctions observées : screen dumps, Mimikatz, shell CMD interactif. |
Persistence | Toujours via un fichier EXE déposé sur disque. |
Lateral Movement | 2 méthodes : PsExec original signé Microsoft, ou WinRM. |
IOCs#
| Type | Valeurs |
|---|---|
| Fichier OneNote | transfer.sh/get/kNxU7/invoice.one, mega.io/dl9o1Dz/invoice.one |
| Staging (PowerShell) | pastebin.com/raw/AvHtdKb2, pastebin.com/raw/gj58DKz |
| C&C | 91.90.213.14:443, 103.248.70.64:443, 141.98.6.59:443 |
| Hashes SHA256 | 226A723FFB4A91D9950A8B266167C5B354AB0DB1DC225578494917FE53867EF2<br>C346077DAD0342592DB753FE2AB36D2F9F1C76E55CF8556FE5CDA92897E99C7E<br>018D37CBD3878258C29DB3BC3F2988B6AE688843801B9ABC28E6151141AB66D4 (= default.exe) |
Setup de l'environnement de hunt#
Cible : Kibana sur http://[Target IP]:5601 → Discover. Time range : last 15 years. Timezone : Europe/Copenhagen (via http://[Target IP]:5601/app/management/kibana/settings). Threat intel datée de mars 2023, il faut donc scanner au moins jusque-là.

| Source | Index pattern | Contenu |
|---|---|---|
| Windows audit logs | windows* | Événements de sécurité Windows (4624, 4625...) |
| Sysmon | windows* | Process, réseau, fichiers, DNS (voir table EID ci-dessous) |
| PowerShell logs | windows* | Script block logging |
| Zeek | zeek* | Network security monitoring (DNS, connexions) |
Volumétrie : ~118 975 logs windows, ~332 261 logs zeek.
Contexte org : ~200 employés, marketing en ligne, suite Office, Gmail via navigateur, Edge par défaut, support via TeamViewer, gestion par GPO AD (migration Intune + Win11 envisagée).
Déroulé du hunt#
Hypothèse : phishing réussi livrant un OneNote malveillant. Toujours chercher aussi les autres IOCs (les TTPs peuvent avoir évolué depuis le rapport).
Vue d'ensemble :
| # | Objectif | Requête KQL |
|---|---|---|
| 1 | Téléchargement navigateur de invoice.one (Sysmon EID 15) | event.code:15 AND file.name:*invoice.one* |
| 2 | Confirmer via création de fichier (Sysmon EID 11) | event.code:11 AND file.name:invoice.one* |
| 3 | Confirmer l'IP de WS001 (Sysmon EID 3) | event.code:3 AND host.hostname:WS001 |
| 4 | Connexions réseau autour du téléchargement (Sysmon EID 3) | (même période) |
| 5 | Requêtes DNS de WS001 pendant le téléchargement (Zeek) | source.ip:192.168.28.130 AND dns.question.name:* |
| 6 | Connexions vers les IPs de file.io | (recherche des IPs résolues) |
| 7 | Ouverture du OneNote (Sysmon EID 1) | event.code:1 AND process.command_line:*invoice.one* |
| 8 | Processus enfants de OneNote | event.code:1 AND process.parent.name:"ONENOTE.EXE" |
| 9 | Enfants du batch | event.code:1 AND process.parent.command_line:*invoice.bat* |
| 10 | Activité du PowerShell stage 0 | process.pid:"9944" and process.name:"powershell.exe" |
| 11 | Zeek sur l'IP C2 | (filtre sur destination.ip du C2) |
| 12 | default.exe a-t-il été exécuté ? | process.name:"default.exe" |
| 13 | SharpHound exécuté ? | process.name:"SharpHound.exe" |
| 14 | Le hash de default.exe ailleurs ? | process.hash.sha256:018d37cbd3878258c29db3bc3f2988b6ae688843801b9abc28e6151141ab66d4 |
| 15 | Comment default.exe a atterri sur PKI ? | (expand 1re exécution sur PKI) |
| 16 | Compromission de svc-sql1 (bruteforce depuis WS001) | (event.code:4624 OR event.code:4625) AND winlog.event_data.LogonType:3 AND source.ip:192.168.28.130 |
1. Téléchargement du fichier OneNote (Sysmon EID 15)#
Sysmon Event ID 15 (FileCreateStreamHash) = événement de téléchargement de fichier via navigateur. On suppose que le OneNote a été téléchargé depuis Gmail.
Champs liés : winlog.event_id ou event.code, file.name.
event.code:15 AND file.name:*invoice.one
En dépliant le log : process.name / process.executable = MSEdge, fichier stocké dans le dossier Downloads d'un employé nommé Bob. Timestamp : March 26, 2023 @ 22:05:47. Pas encore confirmé qu'il s'agit du fichier du rapport, ni d'exécution.
2. Confirmation via création de fichier (Sysmon EID 11)#
Sysmon Event ID 11 (File create). Utile surtout quand le navigateur n'est pas impliqué. L'astérisque est en fin : le nom inclut le fichier + un Zone Identifier (le fichier vient d'internet).
event.code:11 AND file.name:invoice.one*
Machine = hostname WS001 (host.hostname / host.name), IP 192.168.28.130.
3. Confirmation de l'IP de WS001 (Sysmon EID 3)#
event.code:3 AND host.hostname:WS001
Le champ source.ip confirme 192.168.28.130.
4. Connexions réseau autour du téléchargement (Sysmon EID 3)#
En inspectant Sysmon Event ID 3 (Network connection) autour de l'heure du téléchargement : aucune entrée. Config courante pour éviter de capturer les connexions navigateur (volume énorme, notamment vers le provider mail). On bascule sur Zeek.
5. Requêtes DNS de WS001 pendant le téléchargement (Zeek)#
Fenêtre : March 26th 2023 @ 22:05:00 → 22:05:48. Recherche d'une IP source = 192.168.28.130 avec quelque chose dans dns.question.name. Beaucoup de bruit (google.com...) à filtrer.
Champs liés : source.ip, dns.question.name.
source.ip:192.168.28.130 AND dns.question.name:*
Identifier le bruit via les "top values" Kibana (cliquer sur le champ) puis filtrer les valeurs bruyantes connues. Afficher uniquement la colonne dns.question.name.


Séquence observée : accès à Google Mail → interaction avec file.io (hébergeur connu) → scan Microsoft Defender SmartScreen (déclenché par un download via Edge).
6. Connexions vers les IPs de file.io#
En dépliant le log file.io, les IPs renvoyées (dns.answers.data / dns.resolved_ip / zeek.dns.answers) : 34.197.10.85, 3.213.216.16.

Recherche de connexions vers ces IPs sur la même fenêtre :

Confirme que Bob a bien téléchargé invoice.one depuis file.io. À ce stade : soit croiser avec le rapport de Threat Intel, soit mener une investigation type IR pour tracer la suite. On choisit la seconde.
7. Ouverture du fichier OneNote (Sysmon EID 1)#
Si invoice.one a été ouvert, ce serait avec l'application OneNote. Retirer le filtre temps (remettre 15 ans), retirer la colonne dns.question.name.
Champs liés : winlog.event_id ou event.code, process.command_line.
event.code:1 AND process.command_line:*invoice.one*
Fichier ouvert ~6 secondes après le téléchargement. OneNote.exe tourne avec le fichier ouvert → il contient probablement un lien ou une pièce jointe malveillante.
8. Processus enfants de OneNote (Sysmon EID 1)#
OneNote.exe va lancer soit un navigateur soit un fichier malveillant. On regarde les nouveaux processus dont OneNote.exe est le parent.
Champs liés : winlog.event_id ou event.code, process.parent.name.
event.code:1 AND process.parent.name:"ONENOTE.EXE"
3 hits, dont 1 hors période (écarté). Restent :
OneNoteM.exe: composant légitime de OneNote qui aide à lancer des fichiers.cmd.exeexécutant un fichierinvoice.bat.

Lien établi : OneNote.exe → invoice.one suspect → cmd.exe lançant invoice.bat depuis un emplacement temporaire (très probablement attaché dans le OneNote).
9. Enfants du batch (Sysmon EID 1)#
Est-ce que le batch a lancé autre chose ? On cherche un processus parent dont la ligne de commande pointe vers le batch.
Champs liés : winlog.event_id ou event.code, process.parent.command_line.
event.code:1 AND process.parent.command_line:*invoice.bat*
1 seul résultat : lancement de powershell.exe avec des arguments très suspects (colonnes ajoutées : process.name, process.args, process.pid) : commande de download + exécution de contenu depuis Pastebin.

Le contenu Pastemin est encore accessible (pas d'expiration par défaut) : c'est bien le script PowerShell mentionné dans le rapport de Threat Intel.
10. Activité du PowerShell stage 0 (PID 9944)#
Filtrer sur le PID et le nom du processus pour avoir une vue d'ensemble des activités (colonne event.code ajoutée).
Champs liés : process.pid, process.name.
process.pid:"9944" and process.name:"powershell.exe"
Création de fichiers, tentatives de connexions réseau, résolutions DNS via Sysmon Event ID 22 (DNSEvent). En ajoutant file.path, dns.question.name, destination.ip comme colonnes :

ngrok.ioprobablement utilisé comme C2 (masque le trafic malveillant derrière un domaine connu). Connexions vers port 443 → trafic chiffré.- EXE déposé (
default.exe) probablement pour la persistance ; nom distinctif = facile à pister. - Écarts de temps entre les actions → probable interaction humaine réelle (sauf sleep aléatoire).
- Actions finales : requête DNS pour
DC1et connexions vers celui-ci.
11. Zeek sur l'IP C2 (18.158.249.75)#
Colonnes ajoutées : source.ip, destination.ip, destination.port.

L'activité s'étend au jour suivant. En inspectant les requêtes DNS pour ngrok.io, l'IP renvoyée (dns.answers.data) a changé, et les connexions continuent les jours suivants.

Activité réseau soutenue → C2 accédé en continu.
12. default.exe a-t-il été exécuté ?#
Champ lié : process.name. Colonnes : process.name, process.args, event.code, file.path, destination.ip, dns.question.name.
process.name:"default.exe"
Oui. L'exécutable lance des requêtes DNS ngrok et se connecte aux IPs C2. Il uploade svchost.exe (mimique le binaire Windows légitime) et SharpHound.exe (outil de cartographie AD / attack paths). Plus haut : upload de payload.exe, d'un VBS, et uploads répétés de svchost.exe.

13. SharpHound a-t-il été exécuté ?#
process.name:"SharpHound.exe"
Exécuté 2 fois, à ~2 min d'intervalle → reconnaissance Active Directory effectuée.
14. Le hash de default.exe ailleurs dans l'environnement ?#
Sysmon a flagué default.exe avec un process.hash.sha256 qui correspond à un hash du rapport de Threat Intel. Recherche large (colonne host.hostname ajoutée).
Champ lié : process.hash.sha256.
process.hash.sha256:018d37cbd3878258c29db3bc3f2988b6ae688843801b9abc28e6151141ab66d4
Présent sur WS001 et PKI → l'attaquant a compromis au moins le serveur PKI. Un fichier backdoor est déposé sous le profil de l'utilisateur svc-sql1 → compte probablement compromis.

15. Comment default.exe a atterri sur PKI ?#
En dépliant la 1re exécution de default.exe sur PKI : le processus parent est PSEXESVC, composant de PsExec (SysInternals) souvent utilisé pour l'exécution de commandes à distance et le lateral movement en AD.

Plus bas dans le même log, svc-sql1 dans le champ user.name → confirme la compromission de ce compte.
16. Comment le mot de passe de svc-sql1 a-t-il été compromis ?#
Hypothèse la plus plausible : le script PowerShell uploadé plus tôt (semble conçu pour le bruteforce de mots de passe), présent sur WS001. On cherche les tentatives réussies/échouées depuis cette machine, en excluant Bob (utilisateur légitime) et la machine elle-même.
Champs liés : winlog.event_id ou event.code, winlog.event_data.LogonType, source.ip.
(event.code:4624 OR event.code:4625) AND winlog.event_data.LogonType:3 AND source.ip:192.168.28.130
LogonType 3 = network logon.
Sysmon Event IDs utilisés#
| EID | Nom | Usage dans le hunt |
|---|---|---|
| 1 | Process creation | Chaîne parent/enfant, process.command_line, process.parent.command_line, process.args, process.hash.sha256 |
| 3 | Network connection | Confirmer IP d'un hôte ; souvent PAS de connexions navigateur (config volontaire) |
| 11 | File create | Création de fichier sur disque (utile hors navigateur), Zone.Identifier |
| 15 | FileCreateStreamHash | Téléchargement de fichier via navigateur |
| 22 | DNSEvent | Résolutions DNS par processus |
Quand Sysmon EID 3 est muet (connexions navigateur non loggées), les logs Zeek (DNS, connexions) prennent le relais pour la corrélation temporelle.
Bilan#
| Asset | État |
|---|---|
WS001 (Bob) | Patient zéro : download + exécution du OneNote, script PS bruteforce, SharpHound |
Compte svc-sql1 | Compromis (probable bruteforce depuis WS001), backdoor sous son profil |
PKI | Compromis via PsExec avec svc-sql1 |
DC1 | Ciblé (DNS + connexions depuis le stage PowerShell) |
| C2 | ngrok.io (IP rotative), trafic chiffré port 443 |
Voir Cyber Threat Intelligence (CTI) pour la méthode d'exploitation d'un rapport tactique, et Elastic Stack pour la syntaxe KQL.