Admin-Konsole von Cyber-Kriminellen missbraucht

Windows PowerShell - tückisches Einfallstor für Malware

24.06.2015
Security-Software-Hersteller ESET macht auf einen gefährlichen Trend aufmerksam: Die Windows PowerShell, eine von Microsoft entwickelte Alternative zum Windows-Kommandozeilenprogramm und zum Windows Script Host, wird zunehmend als Einfallstor für Schadsoftware genutzt
 
  • Missbrauch von Microsoft PowerShell
  • wie der Schadcode nachgeladen wird
  • unsichtbar PowerShell-Prozesse führen Skripts durch

Die Gründe für diese gefährliche Sicherheitslücke liegen einerseits im großen Funktionsumfang der Microsoft PowerShell, andererseits in der engen Verknüpfung zum Windows-Betriebssystem.

Dies macht es Security-Programmen schwer, bösartige Software auch als solche zu identifizieren. In einem aktuellen Artikel auf seinem Security-Blog WeLiveSecurity zeigt ESET anhand einer PowerShell-Malware auf, welche Tücken und Sicherheitsrisiken von der PowerShell ausgehen.

Gefahr durch Dateitransfer über PowerShell

Die seit Windows 7 in allen Windows-Betriebssystemen vorinstallierte PowerShell bietet eine grafische Entwicklungsumgebung und eine eigene Skriptsprache namens "PowerShell Scripting Language". Mit Hilfe der Konsole lassen sich Dateien auf verschiedenen Wegen herunterladen. Die Befehle dazu lauten:

  1. DownloadFile
    Erlaubt den Download von einer Internetadresse direkt auf den PC

  2. DownloadString
    Erlaubt den Download und die Ausführung eines PowerShell-Skripts

  3. Invoke-WebRequest
    Eine weitere Möglichkeit, eine Datei aus dem Internet herunterzuladen

  4. Start-BitsTransfer
    Erlaubt, mit Hilfe des intelligenten Hintergrundübertragungsdienstes von Windows (BITS) und dem Standard-Cmdlet Start-BitsTransfer einen Auftrag zu erstellen, um eine Datei herunterzuladen. Hier muss zuvor das Modul BitsTransfer mit dem Befehl Import-Module importiert werden

Die genannten Befehle werden von PowerShell-Schädlingen genutzt, um zusätzlichen Schadcode auf den Computer des Opfers zu laden. Die Methode DownloadStringbietet darüber hinaus den Vorteil, dass ein PowerShell-Skript direkt nach dem Download im Speicher ausgeführt werden kann - ohne notwendige Kopie auf die Festplatte.

Malware, die (fast) ohne Dateien auskommt

Eine Schadsoftware, die sich die genannten Befehle der Windows PowerShell zu Nutze macht, ist Win32/Bedep. Nachdem sich das Opfer damit infiziert hat, erstellt Bedep einen Eintrag in der Windows-Registry, dadurch bleibt die Software auch nach einem System-Neustart aktiv.

Der Registrierungseintrag bewirkt, dass der Windows Explorer bei jedem Systemstart eine Instanz des Kommandozeilenprogrammes cmd.exeausführt, die wiederum eine unsichtbare, nicht interaktive Instanz der PowerShell startet. Hierbei werden mehrere Befehle übergeben, um den Command & Control-Server (C&C Server) des Botnetzes zu kontaktieren.

Debug-Informationsdatei (PDB) zeigt den internen Projektnamen der Schadsoftware (orange markiert)
Debug-Informationsdatei (PDB) zeigt den internen Projektnamen der Schadsoftware (orange markiert)
Foto: ESET

Interessant ist daran, dass es sich bei den Daten um ein PowerShell-Skript handelt, das für den Nutzer unsichtbar einen x86-Shellcode ausführt. Dieser Shellcode ähnelt in seinem Aufbau stark den Shellcodes des quelloffenen Penetrationtesting-Werkzeugs Metasploit. Er besorgt sich zunächst die Adressen der benötigten Windows API-Funktionen, indem er den sogenannten Process Environment Block (PEB) durchläuft. Der PEB wird intern vom Betriebssystem verwendet und beinhaltet eine Reihe an Daten, die für den fehlerfreien Betrieb eines Prozesses notwendig sind, unter anderem auch eine doppelt verkettete Liste mit den Adressen der API-Funktionen der verwendeten Laufzeitbibliotheken (DLLs).

Nachdem sich der Shellcode die Adressen besorgt hat, reserviert er einen Speicherbereich und kontaktiert den C&C-Server. Als Antwort sendet der C&C-Server einen zweiten x86-Shellcode in den zuvor reservierten Speicherbereich zurück. Dieser zweite, zweistufige Shellcode beinhaltet auch die eigentliche Payload in Form einer mit PECompact komprimierten DLL-Datei. Zunächst entschlüsselt die erste Stufe die verschlüsselte zweite Stufe. Hierbei handelt es sich um eine einfache XOR-Verschlüsselung mit dem Schlüssel 0x21.

Die zweite Stufe besteht aus einem Loader und der eigentlichen Payload. Der Loader kümmert sich zunächst darum, dass die aktuellen Windows API-Funktionsadressen in den sogenannten Import Address Table (IAT) der Payload geschrieben werden. Diese Aufgabe übernimmt normalerweise der Windows-Loader vor dem Ausführen einer Datei, damit das eigentliche Programm die API-Funktionen während der Laufzeit aufrufen kann. Da die Payload aber direkt vom Speicher aus von einem Shellcode gestartet wird, muss sich der Shellcode selbst um diese Aufgabe kümmern.

Registry-Eintrag, um bei einem Neustart dauerhaft präsent zu bleiben (rot markiert)
Registry-Eintrag, um bei einem Neustart dauerhaft präsent zu bleiben (rot markiert)

Nachdem die aktuellen Funktionsadressen in den IAT der Payload geschrieben wurden, ruft der Loader die Startadresse der Payload auf. Anschließend führt das Betrugs-Modul im Speicher seine schädlichen Routinen aus.

Fazit: Noch nicht ausgereift, aber Vorbild für neue Malware

Die beschriebene Variante des Bots Win32/Bedep nutzt eine interessante Technik, um mittels Windows PowerShell und einem einfachen Registry-Eintrag die dauerhafte Präsenz auf dem Computer eines Opfers zu bewerkstelligen. Die einzige Spur der Schadsoftware auf dem System ist dabei der Registry-Schlüssel, alle weiteren Teile werden unsichtbar im Arbeitsspeicher ausgeführt.

Zurückgeliefertes PowerShell-Skript mit eingebettetem, Base64 kodiertem x86-Shellcode (rot markiert).
Zurückgeliefertes PowerShell-Skript mit eingebettetem, Base64 kodiertem x86-Shellcode (rot markiert).
Foto: ESET

Win32/Bedep lief im ESET-Labor instabil und brachte gelegentlich das Windows-Testsystem zum Absturz. Richtig implementiert könnte diese Methode jedoch eine ernsthafte Bedrohung sein, auch wenn sie durch die Ausführung von cmd.exe und dem damit verbundenen Kommandozeilenfenster nach jedem Systemstart visuell recht auffällig ist - für erfahrene Nutzer eine deutliche, ebenso große Auffälligkeit wie der Aufbau einer Internetverbindung durch die PowerShell.

Um sich vor Malware wie Win32/Bedep bestmöglich zu schützen, rät ESET zum Einsatz einer aktuellen Security-Software. (rw)

(mit Material von ESET)

Zur Startseite