Traçage d’une chaîne d’attaque du ransomware Akira à travers les journaux de périmètre et de point de terminaison
Detection stack
- AIDR
- Alert
- ETL
- Query
Résumé
L’article décrit une intrusion récente liée à l’opération de ransomware Akira. Les attaquants ont obtenu un accès initial en forçant un compte local SSL VPN désactivé, puis ont poursuivi avec la découverte d’informations d’identification, Kerberoasting, et un mouvement latéral via RDP. Avant de lancer le chiffrement, ils ont effacé les journaux et supprimé les copies shadow. Notamment, toute la séquence était visible à travers les données de syslog du pare-feu et les journaux EVTX de Windows, sans s’appuyer sur des outils de détection des endpoints. Le rapport souligne comment la combinaison des télémétries de périmètre et d’endpoint peut révéler l’activité de ransomware dès ses débuts.
Enquête
L’enquête s’est basée exclusivement sur les journaux de pare-feu SSL VPN et les exports de journaux d’événements Windows collectés sur les contrôleurs de domaine et les serveurs membres. Les IDs d’événements tels que 4624, 4688, 4769, 1102, et 7036 ont été corrélés pour reconstruire la chaîne de destruction complète de l’accès initial jusqu’à l’impact final. Les techniques observées incluaient le bourrage d’informations d’identification, la découverte de domaine, Kerberoasting, l’authentification RDP, le nettoyage des journaux et la suppression des copies shadow. Aucune image mémoire ou télémétrie EDR n’était nécessaire pour cartographier l’intrusion.
Atténuation
Le rapport recommande de renforcer la sécurité des accès à distance, de mettre en place une authentification multifactorielle, de supprimer les comptes désactivés des listes d’accès du pare-feu, et de renforcer les politiques de verrouillage d’authentification. Il conseille également d’activer l’audit détaillé des processus avec l’ID d’événement 4688 sur tous les systèmes, d’augmenter la rétention des journaux de sécurité, et de transférer les journaux critiques vers un stockage externe. Le contenu de détection devrait couvrir spécifiquement les tickets Kerberos basés sur RC4, vssadmin la suppression des copies shadow, et les commandes PowerShell inattendues utilisant -EncodedCommand. La synchronisation temporelle cohérente est également essentielle pour une corrélation fiable.
Réponse
Lorsque l’un des indicateurs identifiés apparaît, les répondants doivent immédiatement isoler le compte VPN compromis et mettre en quarantaine les systèmes affectés. Les journaux pertinents de pare-feu et EVTX doivent être conservés, les informations d’identification réinitialisées, les comptes compromis désactivés, et les copies shadow restaurées à partir des sauvegardes propres lorsque cela est possible. Un examen médico-légal complet doit ensuite être effectué pour identifier toute persistance additionnelle ou activité de suivi, tandis que les procédures de réponse au ransomware sont activées. Les parties prenantes doivent être informées rapidement, et une divulgation publique doit être envisagée lorsque cela est requis.
"graph TB %% Class definitions classDef phase fill:#ffcc99 classDef tool fill:#c2f0c2 %% Node definitions phase_initial_access["<b>Phase</b> – Accès Initial<br/><b>Technique</b> – T1133 Services à distance externes<br/><b>Description</b>: Bourrage d’informations d’identification contre SSL VPN utilisant un compte local compromis."] class phase_initial_access phase tech_valid_accounts["<b>Technique</b> – T1078 Comptes valides<br/><b>Description</b>: Utilisation d’identifiants volés pour se connecter au VPN."] class tech_valid_accounts phase phase_discovery["<b>Phase</b> – Découverte<br/><b>Technique</b> – T1482 Découverte de confiance de domaine<br/><b>Description</b>: Énumérer les confiances de domaine en utilisant nltest."] class phase_discovery phase tech_account_discovery["<b>Technique</b> – T1087 Découverte de comptes<br/><b>Description</b>: Énumérer les groupes et les utilisateurs via net.exe et whoami."] class tech_account_discovery phase phase_credential_access["<b>Phase</b> – Accès aux identifiants<br/><b>Technique</b> – T1558.003 Kerberoasting<br/><b>Description</b>: Demander des tickets de service RC4 pour casser les mots de passe des comptes de service."] class phase_credential_access phase phase_lateral_movement["<b>Phase</b> – Mouvement latéral<br/><b>Technique</b> – T1021.001 Services à distance Protocole RDP<br/><b>Description</b>: Utiliser RDP pour se déplacer latéralement vers les serveurs et les contrôleurs de domaine."] class phase_lateral_movement phase phase_persistence["<b>Phase</b> – Persistance et élévation de privilèges<br/><b>Technique</b> – T1136 Créer un compte<br/><b>Description</b>: Créer un nouveau compte de service dans une unité d’organisation non par défaut et l’ajouter à des groupes privilégiés."] class phase_persistence phase phase_execution["<b>Phase</b> – Exécution<br/><b>Technique</b> – T1059.001 PowerShell<br/><b>Description</b>: Exécuter des scripts PowerShell avec -EncodedCommand.<br/><b>Technique</b> – T1059.003 Windows Command Shell<br/><b>Description</b>: Utiliser cmd.exe pour diverses commandes."] class phase_execution phase phase_defense_evasion["<b>Phase</b> – Évasion de défense<br/><b>Technique</b> – T1070.001 Effacer les journaux d’événements Windows<br/><b>Description</b>: Effacer les journaux d’événements Windows.<br/><b>Technique</b> – T1562 Empêcher les défenses<br/><b>Description</b>: Arrêter les services de sécurité en utilisant sc.exe ou net stop."] class phase_defense_evasion phase phase_impact["<b>Phase</b> – Impact<br/><b>Technique</b> – T1490 Inhiber la récupération du système<br/><b>Description</b>: Supprimer les copies shadow avec vssadmin.<br/><b>Technique</b> – T1565.001 Manipulation de données stockées<br/><b>Description</b>: Chiffrer les fichiers sur disque."] class phase_impact phase tool_ssl_vpn["<b>Outil</b> – Client SSL VPN"] class tool_ssl_vpn tool tool_nltest["<b>Outil</b> – Utilitaire nltest"] class tool_nltest tool tool_net["<b>Outil</b> – Utilitaire net.exe"] class tool_net tool tool_whoami["<b>Outil</b> – Commande whoami"] class tool_whoami tool tool_powershell["<b>Outil</b> – PowerShell"] class tool_powershell tool tool_cmd["<b>Outil</b> – cmd.exe"] class tool_cmd tool tool_sc["<b>Outil</b> – Commande sc.exe"] class tool_sc tool tool_vssadmin["<b>Outil</b> – Utilitaire vssadmin"] class tool_vssadmin tool %% Connections showing flow phase_initial_access –>|conduit à| tech_valid_accounts tech_valid_accounts –>|conduit à| phase_discovery phase_discovery –>|conduit à| tech_account_discovery tech_account_discovery –>|conduit à| phase_credential_access phase_credential_access –>|conduit à| phase_lateral_movement phase_lateral_movement –>|conduit à| phase_persistence phase_persistence –>|conduit à| phase_execution phase_execution –>|conduit à| phase_defense_evasion phase_defense_evasion –>|conduit à| phase_impact %% Tool usage edges phase_initial_access –>|utilise| tool_ssl_vpn phase_discovery –>|utilise| tool_nltest phase_discovery –>|utilise| tool_net phase_discovery –>|utilise| tool_whoami phase_execution –>|utilise| tool_powershell phase_execution –>|utilise| tool_cmd phase_defense_evasion –>|utilise| tool_sc phase_impact –>|utilise| tool_vssadmin "
Flux d’Attaque
Détections
Possible énumération de comptes administrateurs ou de groupes (via cmdline)
Vue
Possible énumération ou manipulation de comptes ou de groupes (via cmdline)
Vue
Découverte suspecte de confiances de domaine (via cmdline)
Vue
Activité suspecte VSSADMIN (via cmdline)
Vue
Détection du mouvement latéral basé sur RDP et de l’élévation de privilèges au niveau du domaine [Journal des événements de sécurité Microsoft Windows]
Vue
Détection de tentative de force brute SSLVPN et de bourrage d’informations d’identification [Pare-feu]
Vue
Exécution de simulation
Prérequis : Le contrôle pré-vol Telmétrie & Baseline doit avoir réussi.
Rationalisation: Cette section détaille l’exécution précise de la technique de l’adversaire (TTP) conçue pour déclencher la règle de détection. Les commandes et le récit DOIVENT refléter directement les TTPs identifiés et visent à générer la télémétrie exacte attendue par la logique de détection.
-
Narration & Commandes d’attaque :
- Reconnaissance (T1087): L’attaquant énumère les noms d’utilisateur depuis un système interne compromis et construit une liste pour le bourrage d’identifiants (par exemple,
utilisateurs.txt). - Boucle de Force Brute (T1021.001 / T1078.001): En utilisant une plage d’IP externe compromise appartenant à un fournisseur d’hébergement connu (par ex.,
203.0.113.45), l’attaquant lance une série rapide de tentatives d’authentification SSLVPN échouées (≥ 50) en moins d’une heure. Chaque tentative utilise un mot de passe différent de la liste, ciblant un compte victime unique. - Bourrage d’identifiants réussi : Après avoir épuisé la liste, un mot de passe correct est trouvé; l’attaquant se connecte avec succès depuis la même IP, satisfaisant la clause « successful_auth ».
- Évasion (Optionnelle – T1070.001) : L’attaquant efface le journal de sécurité sur l’appareil VPN après la connexion réussie pour cacher les traces (non couvert par cette règle).
- Reconnaissance (T1087): L’attaquant énumère les noms d’utilisateur depuis un système interne compromis et construit une liste pour le bourrage d’identifiants (par exemple,
-
Script de Test de Régression : Script Bash utilisant
curl(fonctionne sur une box Linux attaquante). Ajustez les variables pour un environnement réel.#!/usr/bin/env bash # ------------------------------------------------------------------ # Simuler une brute-force / bourrage d'identifiants SSLVPN pour déclencher la règle Sigma # ------------------------------------------------------------------ VPN_ENDPOINT="https://vpn.example.com/remote/auth" USERNAME="utilisateur_victime" PASSWORD_LIST="motsdepasse.txt" # un mot de passe par ligne SOURCE_IP="203.0.113.45" # doit être routable vers le VPN # Fonction pour effectuer une seule tentative de connexion attempt_login() { local pwd="$1" # Utilisation de --silent pour éviter le désordre; --write-out pour capturer le code HTTP curl --silent --output /dev/null --write-out "%{http_code}" --user "$USERNAME:$pwd" "$VPN_ENDPOINT" } # 1. Générer 55 tentatives échouées (taux ~1/sec) echo "Démarrage des tentatives échouées..." count=0 while IFS= read -r pwd && [ $count -lt 55 ]; do http_code=$(attempt_login "$pwd") echo "Tentative $((count+1)): HTTP $http_code (attendu 401)" ((count++)) sleep 1 # rester dans la fenêtre d'une heure done < "$PASSWORD_LIST" # 2. Connexion réussie avec le bon mot de passe (supposons dernière ligne dans le fichier) echo "Réalisation de la connexion réussie..." correct_pwd=$(tail -n1 "$PASSWORD_LIST") http_code=$(attempt_login "$correct_pwd") echo "Tentative réussie: HTTP $http_code (attendu 200)" echo "Simulation terminée." -
Commandes de Nettoyage : Supprimez les fichiers temporaires et réinitialisez la limitation des pare-feu si elle a été modifiée.
#!/usr/bin/env bash # Nettoyage après la simulation brute-force SSLVPN # Supprimez la liste de mots de passe temporaire si elle a été créée à la volée if [ -f motsdepasse.txt ]; then shred -u motsdepasse.txt echo "motsdepasse.txt supprimé" fi # Optez pour réinitialiser les règles iptables temporaires utilisées pour les tests sudo iptables -D INPUT -s 203.0.113.45 -j DROP 2>/dev/null || true echo "Nettoyage terminé."