Backdoor nutzt mehrere Techniken, um eine Analyse zu vermeiden

Originalartikel von Jayronn Christian Bucu, Senior Research Engineer

Vor ein paar Tagen veröffentlichte Microsoft einen Sicherheitshinweis zu einer neuen Zero-Day-Schwachstelle in älteren Windows-Versionen. Es gab Berichte darüber, dass die Lücke von einer bösartigen PDF-Datei (TROJ_PIDIEF.GUD) dazu missbraucht wurde, um in „begrenzten zielgerichteten Angriffen“ einen Backdoor (BKDR_TAVDIG.GUD) auf die betroffenen Systeme abzulegen. Die Sicherheitsforscher von Trend Micro konnten Muster des Backdoors, der endgültigen Payload in diesem Angriff, analysieren.
Der Backdoor ist für die Nutzung mehrerer Anti-Analysetechniken berüchtigt, die normalerweise nicht zusammen verwendet werden.

 Debugger umgehen

Um das Debugging zu umgehen, erzeugt die Malware in einem ersten Schritt einen neuen Thread, der die böartigen Routinen weiterhin ausführt. Der ursprüngliche Thread wird dann gelöscht und blockiert das Debugging.

Auch setzt der Schädling einen API-Aufruf an NtSetInformationThread für den erzeugten neuen Thread ab. Diese Technik wird üblicherweise genutzt, um die Ausführungspriorität für einen Thread festzulegen. Die Malware setzt THREADINFOCLASS auf 0×11 (ThreadHideFromDebugger) und verhindert damit, dass Debug-Informatiionen für den neuen Thread an den Debugger gesendet werden.

Dies wird normalerweise von RtlQueryProcessDebugInformation durchgeführt, um einen Deadlock in bestimmten Debug-Szenarien, etwa im Remote-Debugging, zu verhindern. In diesem Fall hindert die Aktion den Debugger daran, Infomationen zu sammeln, was wiederum die Analyse erschwert. Der Code, der diese Technik veranschaulicht, sieht folgendermaßen aus:

Bild 1. Code-Beispiel

Code Injection über NtCreateSection

Die Schadsoftware erzeugt eine einzige Sektion, die zweimal gemappt wird, zuerst in ihrem Prozesskontext und dann in dem neu erzeugten Zielprozess. Damit kann die Malware für den Zielprozess Speicher allozieren und auf diesen im Zielprozess zugreifen bzw. ihn ändern, indem sie auf den Speicher in ihrem eigenen Kontext zugreift.

Bild 2. Code-Beispiel

Ausführung von Zufallscode durch den Missbrauch einer Windows API-Lücke

Die Malware führt ihren Shellcode aus, indem sie Lücken im Windows API-Call SetWindowsLong ausnützt. Auch die UPATRE-Schädlingsfamilie setzt diese Technik ein.

Bild 3. Code-Beispiel

ShellCode aus dem Hauptteil

Die Schadsoftware verwendet viele Teile ihres Codes wieder und fügt diese in den Zielprozess ein. Für Analysten hat diese Technik Vor- und Nachteile. Einer der Vorteile besteht darin, dass keine zweite Analyse vonnöten ist, wenn der Code, der eingefügt wird, eine Kopie des aktuell ausgeführten ist.

Doch kann die Technik die Analyse auch erschweren, wenn der Analyst einige Breakpoints in den aktuell ausgeführten Code gesetzt hat und diese nicht entfernen konnte. Dann wird der Malware-Code mit dem Breakpoint in den neuen Prozess eingefügt. Debuggers implementieren Breakpoints, indem sie INT3 in den Code einfügen, der bearbeitet werden soll.

Das Ergebnis ist, dass der gepatchte Shellcode mit mehreren Instanzen von INT3 gepatcht wird. Somit aber wird der Zielprozess „eingefroren“.

Angenommen, der eingefügte Prozess ist explorer.exe. Wird INT3 in diesem Kontext ausgeführt, so wird explorer.exe gestoppt und beeinflusst die Debugger-Umgebung (es sei denn, sie wurde auch dem Debugger beigefügt). Ein unaufmerksamer Analyst gerät hier in Schwierigkeiten beim Debuggen.


Bild 4. Code-Beispiel

Mehrere Threads und mehrere Prozesse

Der Backdoor startet für seine Aktivitäten mehrere Threads und Prozesse. Die Threads im ursprünglichen Malware-Prozess sind für mehrere Dinge verantwortlich:

  • Erzeugen eines weiteren Threads, der sich vor dem Debugger verbirgt,
  • Ausführen des Shellcode durch die Ausnützung von Windows API-Lücken. Ist das Betriebssystem vom Exploit nicht betroffen, so wird der Shellcode als Thread für den Zielprozess gestartet.
  • Einfügen von Code in explorer.exe.

Die Threads, die im Kontext von explorer.exe laufen, sind in erster Linie für das Einfügen von Code in bestimmte Prozesse zuständig. Zu diesen Prozessen gehören vier Browser: Internet Explorer, Mozilla Firefox, Google Chrome und Opera. Auch überwachen sie das Erzeugen von ~tmp133.tmp im Temporary-Verzeichnis des Systems. Sobald die Datei vorhanden ist, wird dieser Thread terminiert.

Die Threads, die in dem Prozess laufen, der von explorer.exe anvisiert wird, sind verantwortlich für die Entschlüsselung und Dekomprimierung des Codes für die Hauptroutine des Backdoors. Bis zu diesem Punkt geht es allein um das Vermeiden der Analyse und Entdeckung.

Der dekomprimierte Backdoor-Code hat keinen PE-Header. Doch sind andere Teile der ausführbaren Datei vorhanden, so etwa der Code, Daten, Import- und Fixup-Tabelle. Bevor die Kontrolle dem dekomprimierten Code übergeben wird, kann die Routine zum Entpacken folgende Aktivitäten ausführen:

  • Vor-Ausführen der Sektionen
  • Parsen der Import-Tabelle, um die benötigten APIs zu sammeln
  • Parsen der Fixup-Tabelle, um die Adresse der entpackten Komponente neu zu setzen, sodass sie der aktuellen Memory-Location entspricht.

Der Haupt-Backdoor

In der Struktur des Backdoors ist zu erkennen, dass er eine Export-Tabelle mit den folgenden Merkmalen besitzt:

  • DllName: Down.dll
  • Exportfunktionen: ModuleStart, ModuleStop, start

Die ModuleStop-Funktion terminiert den Thread des Backdoors. Die anderen führen die Hauptroutinen des Backdoors aus. Diese Charakteristiken entsprechen einer DLL-Datei.

Auch hier ist die Analysevermeidung das Hauptziel. Die bösartigen Routinen laufen nicht ab, wenn eines der folgenden Netzwerk-Tools läuft:

  • dsniff.exe
  • ethereal.exe
  • ettercap.exe
  • snoop.exe
  • tcpdump.exe
  • windump.exe
  • wireshark.exe

Der Backdoor sammelt eine Fülle an Informationen vom System und verschlüsselt diese, bevor er sie an seinen Command-and-Control (C&C)-Server schickt:

  • Computername
  • Land
  • Aktuelles Datum
  • Aktuelles Verzeichnis
  • Laufwerke mit Typ und Speicherplatz (frei/genutzt)
  • Dateien in bestimmten Verzeichnissen (z.B. Root-Verzeichnis der Laufwerke, Temporary etc)
  • Installierte Windows Updates
  • IPv4 TCP Verbindungstabelle
  • IPv4 User Datagram Protocol (UDP) Listener-Tabelle
  • Lokale Gruppe
  • Netzwerkressource (Netzwerk- und Druckerfreigaben etc.)
  • Betriebssysteminformationen
  • Prozessorinfo
  • Laufende Prozesse
  • Systemverzeichnis
  • Systemsprache
  • Zeitzone
  • Uptime
  • Nutzerkonten
  • Nutzersprache
  • Nutzername

Das Beispiel zeigt einen Memory Dump mit den angeführten Informationen:

Bild 5. Memory Dump mit Systeminformationen

Alle gesammelten Informationen werden über eine HTTP POST-Anfrage in zwei potenziell kompromittierte WordPress—Blogs hochgeladen,. Deren URLs haben das folgende Format:

  • http://{compromised site #1}/wp-includes/sitemap/
  • http://{compromised site #2}/wp-content/plugins/online-chat/

Der Screenshot zeigt die verschlüsselten Inhalte dieser Anfragen:

Bild 6. Verschlüsselte Inhalte der POST-Anfrage

Backdoor-Befehle

Der Backdoor erhält seine Befehle von dem C&C-Server in Form einer Website. Die Befehle befinden sich dort zwischen den Tags <div> und </div>. Die entschlüsselten Daten sind in einer Initialisierungsdatei enthalten mit einem Bereich namens CONFIG. Zu den Befehlen gehören folgende:

  • delete – falls auf no gesetzt, macht der Backdoor weiter, wenn nicht stoppt er.
  • del_task – falls nicht auf no gesetzt, wird die Datei, die in name angegeben ist, gelöscht
  • down – Download einer Datei von einer bestimmten URL
  • exe – führt einen Befehl aus und kann eine Datei umfassen, die mit dem down-Befehl heruntergeladen wurde
  • name – zeigt eine Datei zum Löschen an
  • result – falls auf 0 gesetzt, wird das Ergebnis des exe-Befehls and den C&C-Server gesendet; anderenfalls wird es nicht beachtet.

Fazit

Die Forschungsergebnisse zeigen, dass die Hintermänner dieses Angriff fortschrittliche Techniken einsetzen. Abgesehen davon, dass BKDR_TAVDIG.GUD über eine Malware geliefert wurde, die eine Zero-Day-Lücke ausnützte, verwendet der Backdoor mehrere Techniken, um die Analyse zu erschweren.

Der Vorfall führt auch die potenziellen Fallen beim Einsatz von älteren Betriebssystemversionen vor Augen. Diesen fehlt die zusätzliche Sicherheit, die in den neueren Versionen eingebaut wurde.

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

*