Die Wahlbeteiligung ist gescheitert: Wir bringen AgentTesla zu sauberem Wasser. Teil 3



Mit diesem Artikel schließen wir eine Reihe von Veröffentlichungen ab, die sich mit Malware-Analysen befassen. Im ersten Teil haben wir eine detaillierte Analyse der von einem europäischen Unternehmen per E-Mail erhaltenen infizierten Datei durchgeführt und dort AgentTesla-Spyware gefunden. Im zweiten Teil wurden die Ergebnisse einer Phasenanalyse des AgentTesla-Hauptmoduls beschrieben.

Heute wird Ilya Pomerantsev, Spezialist für Malware-Analyse bei CERT Group-IB, über die erste Phase der Malware-Analyse sprechen - das halbautomatische Auspacken von AgentTesla-Proben anhand von drei Mini-Fällen aus der Praxis von CERT Group-IB-Experten.

In der Regel besteht der erste Schritt bei der Analyse von Malware in der Entfernung des Schutzes in Form eines Packers, Kryptors, Profils oder Bootloaders. In den meisten Fällen wird dieses Problem gelöst, indem Malware gestartet und Speicherauszüge erstellt werden. Es gibt jedoch Situationen, in denen diese Methode nicht geeignet ist. Wenn es sich bei der Malware beispielsweise um einen Verschlüsseler handelt, wenn sie ihre Speicherbereiche vor einem Speicherauszug schützt, wenn der Code Mechanismen zum Erkennen einer virtuellen Maschine enthält oder wenn die Malware unmittelbar nach dem Start einen Neustart durchführt. In solchen Fällen wird das sogenannte "halbautomatische" Auspacken verwendet, dh der Forscher kontrolliert den Vorgang vollständig und kann jederzeit eingreifen. Betrachten Sie dieses Verfahren anhand von drei Beispielen aus der AgentTesla-Familie. Dies ist eine relativ harmlose Malware, wenn Sie den Netzwerkzugriff deaktivieren.

Probe Nummer 1


Die Quelldatei ist ein MS Word-Dokument, das die Sicherheitsanfälligkeit CVE-2017-11882 ausnutzt.


Infolgedessen wird die Nutzlast geladen und gestartet.

Die Analyse des Prozessbaums und der Verhaltensmarkierungen zeigt eine Injektion in den RegAsm.exe- Prozess.



AgentTesla-spezifische Verhaltensmarkierungen sind verfügbar.


Das heruntergeladene Beispiel ist eine ausführbare .NET- Datei, die durch den .NET Reactor- Protector geschützt ist.


Öffnen Sie es im Dienstprogramm dnSpy x86 und fahren Sie mit dem Einstiegspunkt fort.


In der DateTimeOffset- Funktion finden wir den Initialisierungscode für das neue .NET- Modul. Fügen Sie einen Haltepunkt in die Zeile ein, die für uns von Interesse ist, und führen Sie die Datei aus.


In einem der zurückgegebenen Puffer sehen Sie die MZ-Signatur ( 0x4D 0x5A ). Speichern Sie es.


Eine ausgelagerte ausführbare Datei ist eine dynamische Bibliothek, die ein Ladeprogramm ist, d.h. extrahiert die Nutzdaten aus dem Ressourcenbereich und startet sie.


Gleichzeitig stehen die notwendigen Ressourcen selbst nicht im Dump zur Verfügung. Sie befinden sich in der übergeordneten Stichprobe.

Das Dienstprogramm dnSpy verfügt über zwei äußerst nützliche Funktionen, mit denen wir schnell einen Frankenstein aus zwei verknüpften Dateien erstellen können.

  1. Mit der ersten können Sie eine dynamische Bibliothek in das übergeordnete Sample "einfügen".

  2. Die zweite besteht darin, den Funktionscode am Einstiegspunkt neu zu schreiben, um die gewünschte Methode der eingefügten dynamischen Bibliothek aufzurufen.


Wir speichern unseren „Frankenstein“, setzen einen Haltepunkt in die Zeile, der den Puffer mit den entschlüsselten Ressourcen zurückgibt, und sichern ihn analog zum vorherigen Schritt.

Der zweite Speicherauszug ist eine in VB.NET geschriebene ausführbare Datei, die durch den bekannten ConfuserEx- Protector geschützt ist.



Nach dem Entfernen des Profils verwenden wir die zuvor geschriebenen YARA-Regeln und stellen sicher, dass es sich bei der entpackten Malware tatsächlich um AgentTesla handelt.



Probe Nummer 2


Die Quelldatei ist ein MS Excel-Dokument. Das eingebaute Makro führt zur Ausführung von Schadcode.


Infolgedessen wird das PowerShell-Skript gestartet.



Das Skript entschlüsselt den Code in C # und überträgt die Kontrolle darauf. Der Code selbst ist ein Loader, der auch im Sandbox-Bericht angezeigt wird.



Die Payload ist eine ausführbare .NET- Datei.


Wenn Sie die Datei in dnSpy x86 öffnen , sehen Sie, dass sie verschleiert ist. Entfernen Sie die Verschleierung mit dem Dienstprogramm de4dot und kehren Sie zur Analyse zurück.

Während der Code-Recherche können Sie die folgende Funktion entdecken:


EntryPoint- und Invoke- codierte Zeichenfolgen sind auffällig . Wir setzen einen Haltepunkt in die erste Zeile, starten und speichern den Wert des byte_0 Puffers.

Der Dump ist wieder eine .NET-Anwendung und wird von ConfuserEx geschützt.



Entfernen Sie die Verschleierung mit de4dot und laden Sie sie in dnSpy . Aus der Dateibeschreibung geht hervor, dass wir auf den CyaX-Sharp-Loader gestoßen sind .


Dieser Bootloader verfügt über umfangreiche Antiparsing-Funktionen.


Diese Funktionalität umfasst das Umgehen der integrierten Windows-Schutzsysteme, das Deaktivieren von Windows Defender sowie Mechanismen zum Erkennen von Sandboxen und virtuellen Maschinen. Es ist möglich, die Nutzdaten aus dem Netzwerk zu laden oder im Ressourcenbereich zu speichern. Der Start erfolgt durch eine Injektion in den eigenen Prozess, in ein Duplikat des eigenen Prozesses oder in die Prozesse MSBuild.exe , vbc.exe und RegSvcs.exe , abhängig vom vom Angreifer gewählten Parameter.

Für uns sind sie jedoch weniger wichtig als die von ConfuserEx hinzugefügte AntiDump- Funktion. Der Quellcode ist auf GitHub zu finden.

Verwenden Sie zum Deaktivieren des Schutzes die Funktion dnSpy , mit der Sie den IL- Code bearbeiten können.



Wir speichern und setzen einen Haltepunkt in die Aufrufzeile der Nutzdaten-Entschlüsselungsfunktion. Es ist im Konstruktor der Hauptklasse.


Nutzlast starten und ablegen. Mithilfe der zuvor geschriebenen YARA-Regeln stellen wir sicher, dass AgentTesla verfügbar ist.



Probe Nummer 3


Die Quelldatei ist eine ausführbare VB Native PE32- Datei.


Eine Entropieanalyse zeigt das Vorhandensein eines großen Fragmentes verschlüsselter Daten.


Wenn Sie das Antragsformular in VB Decompiler analysieren , stellen Sie möglicherweise einen seltsamen Pixelhintergrund fest.



Das Entropiediagramm des BMP- Bilds ist identisch mit dem Entropiediagramm der Quelldatei, und die Größe beträgt 85% der Dateigröße.


Die allgemeine Ansicht des Bildes zeigt die Verwendung von Steganographie.

Achten wir auf das Erscheinungsbild des Prozessbaums sowie auf das Vorhandensein eines Injektionsmarkers.



Dies weist auf das Auspacken hin. Für Loader in Visual Basic (auch bekannt als VBKrypt oder VBInjector ) ist es typisch, Shellcode zu verwenden, um die Payload zu initialisieren und die Injection selbst auszuführen.

Eine Analyse im VB-Decompiler ergab, dass das Load- Ereignis im FegatassocAirballoon2- Formular vorhanden ist.


Gehen wir zu IDA pro unter der angegebenen Adresse und untersuchen die Funktion. Der Code ist stark verschleiert. Das Fragment, das uns interessiert, ist unten dargestellt.


Hier wird der Adressraum des Prozesses nach Signaturen durchsucht. Dieser Ansatz ist äußerst zweifelhaft.

Erstens lautet die Scan-Startadresse 0x400100 . Dieser Wert ist statisch und wird nicht angepasst, wenn die Basis verschoben wird. Unter idealen Gewächshausbedingungen wird auf das Ende des PE- Headers der ausführbaren Datei verwiesen. Die Datenbank ist jedoch nicht statisch, ihr Wert kann sich ändern, und die Suche nach der realen Adresse der gewünschten Signatur kann sehr lange dauern, obwohl die Variable nicht überläuft.

Zweitens der Wert der iWGK- Signatur. Ich denke, es ist offensichtlich, dass 4 Bytes zu klein sind, um die Eindeutigkeit zu garantieren. Und wenn Sie den ersten Punkt berücksichtigen, ist die Wahrscheinlichkeit, einen Fehler zu machen, ziemlich hoch.

Tatsächlich wird das gewünschte Fragment mit dem Offset 0xA1D0D an das Ende des zuvor gefundenen BMP- Bildes angehängt .


Shellcode läuft in zwei Schritten ab. Der erste entschlüsselt den Hauptteil. In diesem Fall wird der Schlüssel durch eine umfassende Suche ermittelt.


Gib den entschlüsselten Shellcode aus und sieh dir die Zeilen an.

Zunächst kennen wir jetzt die Funktion zum Erstellen eines untergeordneten Prozesses: CreateProcessInternalW .


Zweitens wurde uns der Konsolidierungsmechanismus im System bewusst.


Zurück zum ursprünglichen Prozess. Setzen Sie den Haltepunkt auf CreateProcessInternalW und setzen Sie die Ausführung fort. Als nächstes betrachten wir das Bundle NtGetContextThread / NtSetContextThread , das die Adresse des Starts der Ausführung in die Adresse von ShellCode ändert .


Wir stellen eine Verbindung zu dem vom Debugger erstellten Prozess her, aktivieren das Ereignis Suspend on libraryu load / unload , setzen den Prozess fort und warten auf das Laden der .NET- Bibliotheken.

Als Nächstes sichern wir mit ProcessHucker die Regionen, die die entpackte .NET- Anwendung enthalten.

Wir stoppen alle Prozesse und löschen die Kopie der Malware, die im System behoben ist.



Die Dump-Datei ist durch den .NET Reactor- Protector geschützt, der mit dem Dienstprogramm de4dot einfach entfernt werden kann .


Mithilfe der zuvor geschriebenen YARA-Regeln stellen wir sicher, dass AgentTesla vor uns liegt.

Um es zusammenzufassen


Wir haben den Prozess des halbautomatischen Auspackens von Proben anhand von drei Mini-Fällen detailliert demonstriert und die Malware anhand eines vollständigen Falls analysiert. Dabei haben wir festgestellt, dass es sich bei der untersuchten Probe um AgentTesla handelt, und die Funktionalität und eine vollständige Liste von Kompromissindikatoren festgelegt.

Die Analyse des von uns durchgeführten Schadobjekts erfordert viel Zeit und Mühe, und diese Arbeit sollte von einem speziellen Mitarbeiter im Unternehmen ausgeführt werden, aber nicht alle Unternehmen sind bereit, einen Analysten zu beschäftigen.

Eine der Dienstleistungen des Group-IB-Labors für Computerforensik und Schadcode-Analyse ist die Reaktion auf Cyber-Vorfälle. Damit Kunden keine Zeit damit verschwenden, Dokumente zu koordinieren und während eines Cyberangriffs zu diskutieren, hat Group-IB den Incident Response Retainer auf den Markt gebracht , einen Vorab-Incident-Response-Service, der auch einen Schritt zur Analyse von Schadcode enthält. Weitere Informationen dazu finden Sie hier .

Wenn Sie noch einmal untersuchen möchten, wie AgentTesla-Beispiele entpackt werden, und sehen möchten, wie der CERT Group-IB-Spezialist dies tut, können Sie die Aufzeichnung des Webinars zu diesem Thema hier herunterladen.

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


All Articles