La participation a échoué: nous amenons AgentTesla à l'eau potable. 3e partie



Avec cet article, nous terminons une série de publications consacrées à l'analyse des logiciels malveillants. Dans la première partie, nous avons effectué une analyse détaillée du fichier infecté reçu par mail par une société européenne et y avons trouvé des logiciels espions AgentTesla. La deuxième partie décrit les résultats d'une analyse en plusieurs phases du module principal d'AgentTesla.

Aujourd'hui, Ilya Pomerantsev, spécialiste de l'analyse des logiciels malveillants du CERT Group-IB, parlera de la première étape de l'analyse des logiciels malveillants - le déballage semi-automatique des échantillons AgentTesla à l'aide de trois mini-cas issus de la pratique des experts du CERT Group-IB.

Habituellement, la première étape de l'analyse des logiciels malveillants est la suppression de la protection sous la forme d'un packer, d'un crypteur, d'une bande de roulement ou d'un chargeur de démarrage. Dans la plupart des cas, ce problème est résolu en démarrant le logiciel malveillant et en effectuant un vidage, mais il existe des situations où cette méthode ne convient pas. Par exemple, si le malware est un chiffreur, s'il protège ses régions de mémoire d'un vidage, si le code contient des mécanismes de détection d'une machine virtuelle, ou si, immédiatement après le démarrage, le malware effectue un redémarrage. Dans de tels cas, le déballage dit "semi-automatique" est utilisé, c'est-à-dire que le chercheur contrôle entièrement le processus et peut intervenir à tout moment. Considérez cette procédure en utilisant trois exemples de la famille AgentTesla comme exemple. Il s'agit d'un malware relativement inoffensif si vous désactivez son accès réseau.

Exemple numéro 1


Le fichier source est un document MS Word qui exploite la vulnérabilité CVE-2017-11882.


En conséquence, la charge utile est chargée et lancée.

L'analyse de l'arborescence des processus et des marqueurs comportementaux montre une injection dans le processus RegAsm.exe .



Des marqueurs comportementaux spécifiques à AgentTesla sont disponibles.


L'exemple téléchargé est un fichier exécutable .NET protégé par le protecteur .NET Reactor .


Ouvrez-le dans l'utilitaire dnSpy x86 et passez au point d'entrée.


En entrant dans la fonction DateTimeOffset , nous trouvons le code d'initialisation du nouveau module .NET . Mettez un point d' arrêt sur la ligne qui nous intéresse et exécutez le fichier.


Dans l'un des tampons renvoyés, vous pouvez voir la signature MZ ( 0x4D 0x5A ). Enregistrez-le.


Un fichier exécutable vidé est une bibliothèque dynamique, qui est un chargeur, c'est-à-dire extrait la charge utile de la section des ressources et la lance.


De plus, les ressources nécessaires elles-mêmes ne sont pas disponibles dans la décharge. Ils sont dans l'échantillon parent.

L'utilitaire dnSpy possède deux fonctionnalités extrêmement utiles qui nous aideront à créer rapidement un Frankenstein à partir de deux fichiers liés.

  1. Le premier vous permet de «coller» une bibliothèque dynamique dans l'échantillon parent.

  2. La seconde consiste à réécrire le code de fonction au point d'entrée pour appeler la méthode souhaitée de la bibliothèque dynamique insérée.


Nous sauvegardons notre «Frankenstein», mettons un point d' arrêt sur la ligne qui renvoie le tampon avec les ressources décryptées, et vidons par analogie avec l'étape précédente.

Le deuxième vidage est un fichier exécutable écrit en VB.NET qui est protégé par le protecteur ConfuserEx que nous connaissons .



Après avoir supprimé la bande de roulement, nous utilisons les règles YARA précédemment écrites et nous assurons que le malware décompressé est bien AgentTesla.



Exemple numéro 2


Le fichier source est un document MS Excel. La macro intégrée conduit à l'exécution de code malveillant.


Par conséquent, le script PowerShell est lancé.



Le script déchiffre le code en C # et lui transfère le contrôle. Le code lui-même est un chargeur, qui est également visible dans le rapport sandbox.



La charge utile est un fichier .NET exécutable.


En ouvrant le fichier dans dnSpy x86 , vous pouvez voir qu'il est obscurci. Supprimez l'obscurcissement avec l'utilitaire de4dot et revenez à l'analyse.

Pendant la recherche de code, vous pouvez découvrir la fonction suivante:


Les chaînes codées EntryPoint et Invoke sont frappantes . Nous mettons un point d' arrêt sur la première ligne, démarrons et sauvegardons la valeur du tampon byte_0 .

Le vidage est à nouveau une application .NET et est protégé par ConfuserEx .



Retirez l'obscurcissement avec de4dot et chargez-le dans dnSpy . Nous comprenons de la description du fichier que nous avons rencontré le chargeur CyaX-Sharp .


Ce chargeur de démarrage possède une fonctionnalité anti-analyse étendue.


Cette fonctionnalité comprend le contournement des systèmes de protection Windows intégrés, la désactivation de Windows Defender, ainsi que des mécanismes de détection des sandbox et des machines virtuelles. Il est possible de charger la charge utile à partir du réseau ou de la stocker dans la section des ressources. Le lancement s'effectue via une injection dans le propre processus, dans un doublon du propre processus ou dans les processus MSBuild.exe , vbc.exe et RegSvcs.exe , selon le paramètre choisi par l'attaquant.

Cependant, pour nous, elles sont moins importantes que la fonction AntiDump ajoutée par ConfuserEx . Son code source se trouve sur GitHub .

Pour désactiver la protection, utilisez la fonction dnSpy , qui vous permet de modifier le code IL .



Nous enregistrons et mettons un point d' arrêt sur la ligne d'appel de la fonction de décryptage de la charge utile. Il est dans le constructeur de la classe principale.


Lancez et videz la charge utile. En utilisant les règles YARA précédemment écrites, nous nous assurons que nous avons AgentTesla.



Exemple numéro 3


Le fichier source est un fichier exécutable VB Native PE32 .


Une analyse d'entropie montre la présence d'un grand fragment de données cryptées.


Lors de l'analyse du formulaire de demande dans VB Decompiler, vous remarquerez peut-être un arrière-plan de pixels étrange.



Le tracé d'entropie de l'image bmp est identique au tracé d'entropie du fichier source, et la taille est de 85% de la taille du fichier.


La vue générale de l'image indique l'utilisation de la stéganographie.

Prenons garde à l'apparence de l'arbre de processus, ainsi qu'à la présence d'un marqueur d'injection.



Cela indique le déballage. Pour les chargeurs sur Visual Basic (alias VBKrypt ou VBInjector ), il est typique d'utiliser le shellcode pour initialiser la charge utile, ainsi que pour exécuter l'injection elle-même.

L'analyse dans le décompilateur VB a révélé la présence de l'événement Load sur le formulaire FegatassocAirballoon2 .


Allons à IDA pro à l'adresse spécifiée et étudions la fonction. Le code est fortement obscurci. Le fragment qui nous intéresse est présenté ci-dessous.


C'est là que l'espace d'adressage du processus est analysé pour les signatures. Cette approche est extrêmement douteuse.

Tout d'abord, l'adresse de début d'analyse est 0x400100 . Cette valeur est statique et n'est pas ajustée lorsque la base est déplacée. Dans des conditions de serre idéales, il pointera vers la fin de l'en-tête PE du fichier exécutable. Cependant, la base de données n'est pas statique, sa valeur peut changer et la recherche de l'adresse réelle de la signature souhaitée, bien qu'elle n'entraîne pas un débordement de la variable, peut prendre très longtemps.

Deuxièmement, la valeur de la signature iWGK . Je pense qu'il est évident que 4 octets est trop petit pour garantir l'unicité. Et si vous prenez en compte le premier point, la probabilité de faire une erreur est assez élevée.

En fait, le fragment souhaité est attaché à la fin de l'image bmp trouvée précédemment à l'offset 0xA1D0D .


Shellcode s'exécute en deux étapes. Le premier décrypte le corps principal. Dans ce cas, la clé est déterminée par une recherche exhaustive.


Videz le Shellcode décrypté et regardez les lignes.

Tout d'abord, nous connaissons maintenant la fonction pour créer un processus enfant: CreateProcessInternalW .


Deuxièmement, nous avons pris conscience du mécanisme de consolidation du système.


Retour au processus d'origine. Définissez le point d' arrêt sur CreateProcessInternalW et poursuivez l'exécution. Ensuite, nous observons le bundle NtGetContextThread / NtSetContextThread , qui change l'adresse du début de l'exécution en adresse de ShellCode .


Nous nous connectons au processus créé par le débogueur, activons l'événement Suspend on libraryu load / unload , reprenons le processus et attendons le chargement des bibliothèques .NET .

Ensuite, en utilisant ProcessHucker, nous vidons les régions contenant l'application .NET décompressée.

Nous arrêtons tous les processus et supprimons la copie des logiciels malveillants corrigés dans le système.



Le fichier de vidage est protégé par le protecteur .NET Reactor , qui peut être facilement supprimé à l'aide de l'utilitaire de4dot .


En utilisant les règles YARA précédemment écrites, nous nous assurons d'avoir AgentTesla devant nous.

Pour résumer


Nous avons donc démontré en détail le processus de déballage semi-automatique des échantillons en utilisant l'exemple de trois mini-cas, et avons également analysé le malware sur la base d'un cas à part entière, en découvrant que l'échantillon sous enquête est AgentTesla, définissant sa fonctionnalité et une liste complète d'indicateurs de compromis.

L'analyse de l'objet malveillant que nous avons effectuée nécessite beaucoup de temps et d'efforts, et ce travail devrait être effectué par un employé spécial de l'entreprise, mais toutes les entreprises ne sont pas prêtes à garder un analyste au sein du personnel.

L'un des services fournis par le laboratoire Group-IB de criminalistique informatique et d'analyse des codes malveillants est la réponse aux cyberincidents. Et pour que les clients ne perdent pas de temps à coordonner des documents et à discuter au milieu d'une cyberattaque, Group-IB a lancé Incident Response Retainer , un service de réponse aux incidents pré-abonnement qui comprend également une étape d'analyse de code malveillant. Vous trouverez plus d'informations à ce sujet ici .

Si vous souhaitez étudier de nouveau comment les échantillons AgentTesla sont décompressés et voir comment le spécialiste CERT Group-IB le fait, vous pouvez télécharger l'enregistrement du webinaire sur ce sujet ici .

Source: https://habr.com/ru/post/fr481078/


All Articles