Bundestrojaner bekommt „Big Brother“

Es ist jetzt zwei Wochen her, dass der Chaos Computer Club (CCC) einen Analysebericht über einen Backdoor-Trojaner veröffentlicht hat, der laut Aussage von deutschen Polizeibehörden dazu benutzt wurde, im Rahmen von Ermittlungen VoIP- und IM-Kommunikationen auf verdächtigen PCs mitzuschneiden. In der vergangenen Woche veröffentlichten unsere Freunde drüben bei F-Secure einen Blogeintrag, in dem sie über eine andere Datei berichteten, die sie für die Dropper-Komponente dieses Trojaners halten. Sie waren so nett, den MD5-Hash mitzuteilen, so dass wir die fragliche Datei aus unserer Kollektion herausnehmen konnten. Stefan und ich haben uns das Ganze näher angeschaut.

Der Dropper weist in seiner Ressourcentabelle fünf weitere Binaries auf, so dass insgesamt sechs Komponenten – jede mit einem anderen Zweck – vorhanden sind, die allesamt von uns analysiert wurden. Von allen neuen Erkenntnissen sind zwei von besonderem Interesse: Zunächst einmal funktioniert diese Version nicht nur auf 32-Bit-Systemen, sondern ist ebenfalls auf 64-Bit-Windows-Versionen lauffähig. Zweitens ist die Liste der überwachten Zielprozesse deutlich länger als die in dem CCC-Bericht erwähnte Liste. Die Zahl der durch die verschiedenen Komponenten infizierten Applikationen beläuft sich insgesamt auf 15.

Zielanwendungen

In früheren Diskussionen über R2D2 wird Skype als eine von dem Trojaner überwachte Zielanwendung genannt. Die von uns analysierte Version weist darauf hin, dass Skype zwar auch ein Zielobjekt ist, aber ebenso alle gängigen Webbrowser, diverse Instant Messaging-Applikationen und Voice-over-IP-Software, wie ICQ, MSN Messenger, Low-Rate Voip, Paltalk, SimpPro, Sipgate X-Lite, VoipBuster und Yahoo! Messenger. Hier die Liste mit den Namen der betroffenen Prozesse:

  • explorer.exe
  • firefox.exe
  • icqlite.exe
  • lowratevoip.exe
  • msnmsgr.exe
  • opera.exe
  • paltalk.exe
  • simplite-icq-aim.exe
  • simppro.exe
  • sipgatexlite.exe
  • skype.exe
  • skypepm.exe
  • voipbuster.exe
  • x-lite.exe
  • yahoomessenger.exe

Die Injizierung von Code in Zielprozesse erfolgt durch den Dropper, zwei Komponenten im Benutzer-Modus und weiterhin durch einen 32-Bit-Kerneltreiber mit erweiterter Funktionalität – verglichen mit der analysierten Vorgängerversion, die lediglich eine Schnittstelle für Modifikationen der Registry und des Dateisystems bereitstellte. Dieser neue Treiber startet einen zusätzliche Thread, der über der aktuellen Liste der laufenden Prozesse kontinuierlich einen Loop ausführt und eine DLL-Datei in jeden Prozess einschleust, dessen Name mit einem Eintrag auf folgender Liste übereinstimmt:

Liste mit den Namen der Zielprozesse im 32-Bit Kerneltreiber

Abb. 1: Liste mit den Namen der Zielprozesse im 32-Bit Kerneltreiber

Alle von uns in den verschiedenen User-Modus-Komponenten identifizierten Zielprozesse werden ebenfalls von dem Treiber abgedeckt.

Implementiert sind zwei unterschiedliche Methoden zur DLL-Injektion. Eine Methode registriert die Benutzer-Modus-Bibliothek in der Windows-Registry als AppInit, so dass sie während der Erzeugung des Prozesses geladen wird. Bei der zweiten Methode wird in einem bereits laufenden Prozess ein remoter Thread erstellt und ein Teil eines positionsunabhängigen Code eingeschleust, der die Datei mfc42ul.dll, eines der Module im Benutzer-Modus, in dem Speicher des Zielprozesses abbildet. Der Screenshot unten stellt die ersten paar Befehle des Injektions-Codes bildlich dar:

Positionsunabhängiger Code, der eine DLL in einen Zielprozess lädt

Abb. 2: Positionsunabhängiger Code, der eine DLL in einen Zielprozess lädt

64-Bit-Kernel-Treiber

Wenn der Dropper die Kernel-Modus-Komponente installiert, leitet er den Ressourcennamen von der Systemarchitektur (entweder 32 oder 64 Bit) ab und installiert den passenden Treiber:

Code zum Festlegen und Laden des passenden Kerneltreibers für die Architektur

Abb. 3: Code zum Festlegen und Laden des passenden Kerneltreibers für die Architektur

Im Unterschied zur 32-Bit-Version weist der 64-Bit-Treiber keine Funktionen zur Infizierung von Prozessen auf, sondern enthält lediglich eine rudimentäre Schnittstelle zur Erhöhung von Privilegien durch das File System und den Registerzugriff. Ähnlich wie sein kleiner Bruder erzeugt er eine Gerätedatei und implementiert ein einfaches Protokoll für die Kommunikation mit User-Modus-Applikationen.

Routine zur Erzeugung von Gerätedateien im 64-Bit -Treiber

Abb. 4: Routine zur Erzeugung von Gerätedateien im 64-Bit -Treiber

Bekannt ist, dass 64-Bit-Kernel-Module eine gültige digitale Signatur besitzen müssen, die von dem Betriebssystem überprüft werden kann, oder das Laden des Treibers schlägt fehl. In dem Treiber mit dem Rootkit haben wir ein 1024 Bit RSA Zertifikat (Fingerprint e5445e4a 9c7d24c8 43f0c669 e2a8d3a1 78cf7fa8, das von Goose Cert am 11. April 2010 ausgestellt worden ist, vorgefunden. Allerdings müssen diese Zertifikate immer noch installiert und ihre Vertrauenswürdigkeit bestätigt werden, damit der Treiber den Ladevorgang startet.


Abb. 5: Zertifikat eines 64-Bit-Treibers

Alle Komponenten wurden von Kaspersky als Varianten des R2D2 Trojaners/Rootkits detektiert. Bereits vor der Analyse hat unsere Heuristik-Engine die Dropper-Komponente erkannt und als invasives Programm blockiert.

Ähnliche Beiträge

Schreibe einen Kommentar

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