
Micro-postmortem reproductible d’incident pour Microsoft SharePoint sur site « ToolShell » (CVE-2025-53770) : aperçu ATT&CK, tableau des « journaux qui comptent », trois chasses (KQL/SPL/Sigma), communications des 4 premières heures, données d’exemple et figures. Conçu pour un triage rapide ; aucune donnée d’organisation ; SharePoint Online hors périmètre.
Ce kit permet de trier la campagne zero-day « ToolShell » de mi-2025 contre Microsoft SharePoint Server sur site ; SharePoint Online est hors du périmètre. Il fournit des chasses reproductibles de bout en bout, des communications et des schémas sans dépendre de données externes.
Pourquoi ce dépôt existe : accélérer le tri des analystes avec des détections reproductibles et des communications exécutives alignées.
Techniques mises en avant : T1190 (Exploit Public-Facing Application), T1059.001 (PowerShell), T1505.003 (Web Shell), T1078 (Valid Accounts), T1027 (Obfuscated/Complicated Files), T1003 (OS Credential Dumping), T1082 (System Information Discovery), T1021 (Remote Services), T1071 (Application Layer Protocol), T1567 (Exfiltration Over Web Services).

| Phase | Signal | Source de journal | Champs clés | Exemple de motif |
|---|---|---|---|---|
| Couche web/IIS | Grands blobs __VIEWSTATE, POST inhabituels vers /_layouts/*, UAs rares, rafales 500/404 | Journaux IIS/W3C, ULS SharePoint | cs-uri-stem, cs-useragent, sc-status, payload length | Pics de corps POST volumineux suivis d'erreurs 500 |
| Exécution de processus | w3wp.exe -> cmd.exe -> powershell.exe avec -enc ou -EncodedCommand | Windows Security 4688 | ParentProcessName, NewProcessName, CommandLine, Account | C:\Windows\System32\inetsrv\w3wp.exe générant PowerShell avec une charge utile encodée |
| Création de fichier/webshell | Dépôts inattendus de .aspx sous \inetpub\wwwroot\wss\... ou \_layouts\... | Sysmon 11 / Flux d'intégrité des fichiers | TargetFilename, Image, Hashes | Nouveau .aspx dans \inetpub\wwwroot\wss\VirtualDirectories\80\App_Data\ |
| Identité/jeton | Émission anormale de sessions, actions admin attribuées à des comptes de service | Journaux ULS SharePoint, AD FS | User, ClientIP, CorrelationId, token claims | Compte de service émettant plusieurs jetons à haute privilège |
| DNS/Proxy | Domaines à faible prévalence nouvellement vus après anomalies IIS | Journaux DNS, proxy, pare-feu | query, src_ip, count, prevalence scores | Premier domaine vu résolu peu après l'exécution PowerShell |
hunts/w3wp_powershell_encodedcommand.kql · SPL · Sigma : Détecter PowerShell encodé généré à partir du processus worker IIS.hunts/sharepoint_webshell_filecreate.kql · SPL · Sigma : Identifier les fichiers .aspx inattendus dans les racines web de SharePoint.hunts/dns_newly_seen_post_iis_anomaly.kql · SPL · Sigma : Remonter les domaines DNS à faible prévalence suite à des anomalies IIS et des processus enfants IIS suspects.Consultez samples/example_events.json pour des exemples représentatifs d'entrées Windows Security 4688, Sysmon 11 et DNS alignées sur chaque chasse (bruit bénin inclus).
Sorties attendues (abrégées) :
Account du compte de service du pool d'applications, CommandLine contenant -enc, avec 3 hits malveillants et 1 note de script admin bénin..aspx sous \inetpub\wwwroot\wss\VirtualDirectories\80\Layouts\ pendant l'heure d'attaque et une entrée de déploiement bénigne.cdn-msupdate.example, toolshare-sync.example liés à l'adresse IP de l'hôte IIS avec <5 requêtes totales en 24h plus un domaine CDN d'entreprise bénin ignoré par le seuillage.Réglage des faux positifs : aligner les listes blanches sur les fenêtres d'automatisation admin documentées, les tickets de changement de déploiement, les domaines CDN connus et les tâches de maintenance scriptées. Ajuster les intervalles de temps et les seuils de prévalence en fonction des normes de la plateforme ; suivre le comportement des comptes de service via des comparaisons de base de référence.
comms/first_4h.md pour des modèles prêts à envoyer et des espaces réservés.figures/decision-tree.png reflète la logique ASCII dans le pack de communication.Recherche des fournisseurs :
index=*, SecurityEvent, Sysmon) pour correspondre aux modèles de données locaux (par exemple, m365:security, wineventlog).Account, ClientIP, TargetFilename) par des alias ou schémas normalisés spécifiques à l'environnement (par exemple, user, ip_src, file_path).ago(24h) ou les fenêtres les plus anciennes pour correspondre à la rétention des flottes et à la latence de détection.