21. Mai 2006

Einführung in IceSword - Process

[Screenshot]

Beschreibung
Hier werden versteckte Prozesse angezeigt, das traditionelle Kerngeschäft der meisten Rootkits. Außerdem kann man sich noch verschiedene Informationen zu den Prozessen anzeigen lassen. Hier ist auch die Terminate Funktion angesiedelt, die (fast) jeden Prozess beenden können sollte.

Wenn man mit der rechten Maustaste auf einen Prozess klickt, erhält man das Kontextmenü.

Mit Refresh wird die Prozessliste erneuert. Im Gegensatz zum Windows Task-Manager geschieht das nicht automatisch. Neue Prozesse werden nur angezeigt wenn man einen Refresh macht. Wer Angst hat etwas zu verpassen, sollte sich Log Process/Thread Creation im Slider links unten ansehen.

Mehrere Prozesse killen
Wenn man die Strg-Taste gedrückt hält, kann man mit der Maus mehrere Prozesse markieren. Mit Terminate kann man dann alle gleichzeitig killen. Diese Fähigkeit kann sehr nützlich sein, wenn man es mit Malware zu tun hat die aus mehreren Prozessen besteht, die sich gegenseitig schützen.

Mit der Funktion File->Settings->Forbid all process/thread creating kann etwas ähnliches erreicht werden. Dann kann man bequem einen Prozess nach dem anderen killen, neue können nicht mehr erzeugt werden.

Mit File->Create Process Rule können Regeln erstellt werden, um die Prozesserzeugung genau zu steuern.

Explorer beerdigen
Wenn man den Explorer (explorer.exe) killt, wird er von Windows sofort neu gestartet. Manchmal will man den Explorer loswerden: Zum Beispiel wenn man gegen eine fiese DLL-Injection in explorer.exe kämpft, oder eine fehlerhafte Shell-Extension Probleme macht. In diesem Fall sollte man zuerst File->Settings->Forbid all process/thread creating einschalten, dann explorer.exe killen und die Funktion wieder einschalten.


Thread Information ist für uns relativ uninteressant. Hier werden die Threads ("Nebenprozesse") einer Anwendung aufgezeigt. Im Zusammenhang mit DLL-Injection könnte die Anzeige interessant sein, dafür fehlt aber einiges. Process Explorer kann hier mehr.

[Screenshot]
Module Information listet die "Module" alias DLLs eines Prozesses. DLLs sind Programmcode wie EXE Dateien, aber keine vollständigen Programme. In ihnen sind verschiedene Funktionen untergebracht, die die Programme benutzen.

DLLs bezeichnet man auch als Bibliotheken (DLL = Dynamicly Linked Library). Der größte Teil von Windows besteht aus DLLs. Dort sind die ganzen Funktionen des Betriebssystems untergebracht.

Die Module/ DLLs eines Prozesses gehören teilweise dem Betriebssystem, teilweise der Anwendung selbst. Manche DLLs gehören auch zu anderen Anwendungen. Viele Programme verpassen dem Windows Explorer (explorer.exe) DLLs. So fügt zum Beispiel der Adobe Reader seinen PDF-Tab in den Eigenschaften-Dialog ein.

Als DLL-Injection bezeichnet man den Prozess wenn ein Programm eine DLL in ein anderes Programm einfügt. Dabei kann die eingefügte DLL das Opferprogramm kontrollieren. Dieser Vorgang ist sehr beliebt bei Schadprogrammen, weil dabei kein verdächtiger Prozess in der Prozessliste auftaucht.

Mit Unload und Unload(Force) kann man DLLs in verschiedenen Härtegraden entladen. Manchen Programmen bekommt das nicht sehr gut.

[Screenshot]
Mit Read/Write Memory kann man direkt in den Speicher sehen (und schreiben!). Die Funktion ist etwas primitiv. Leider gibt es keine Suchfunktion.

[Screenshot]
Disassemble ist ein einfacher Disassembler (Überraschung). Viel machen kann man damit nicht. Bevor man den Disassembler benutzen kann, muss man den Speicherbereich zuerst einlesen (Read Memory). Unter Dump GDT/IDT wird gezeigt, wie man den Disassambler benutzen kann.


Auf was man achten sollte
Zuerst natürlich auf versteckte Prozesse. Diese werden von IceSword rot eingefärbt, wenn sie als versteckt erkannt werden. Aber gelegentlich bemerkt IceSword nicht dass die Prozesse "versteckt" seien sollen, und sie werden nicht rot angezeigt. Das Alpha-DVD Rootkit ist zum Beispiel so schlecht, dass IceSword es nicht als versteckt erkennt, sondern wie einen normalen Prozess anzeigt. Daher sollte man sich nicht zu sehr darauf verlassen.

Sehr nützlich ist die Anzeige der Anzahl der Prozesse. Der MiTeC Process Viewer kann die Anzahl auch anzeigen, findet aber keine versteckten Prozesse. Wenn beim Vergleich der Zahlen ein Unterschied auffällt, ist das ein klares Alarmsignal.

Nicht alle Rootkits verstecken Prozesse. Vanquish versteckt nur Dateien und Registry-Schlüssel und lebt dank DLL-Injection in anderen, normalen Prozessen. Die DLL-Injection von Vanquish ist (schlecht) getarnt, es wird anstatt eines Namens nur ein leeres Feld angezeigt.

Eine Besonderheit ist das Programm rundll32.exe. Rundll ist ein Systemprogramm von Windows. Seine Aufgabe ergibt sich bereits aus dem Namen: Rundll kann DLLs wie normale Programme ausführen. Manche Schadprogramme leben als DLL und lassen sich von rundll.exe ausführen um "unauffälliger" zu seien.

Eine weitere Besonderheit sind svchost.exe und services.exe. Diese Systemprozesse dienen als Container für Dienste (Services).

Achtung: Es is theoretisch möglich sich innerhalb von svchost.exe zu verstecken. Mit Process Explorer kann man nachsehen. Soweit ich weiss wird diese Möglichkeit aber von keinem Schadprogramm genutzt.

DLL-Injection ist eigentlich nicht die Hauptaufgabe von IceSword. Der Process Explorer von Sysinternals.com hat dazu bessere Funktionen. Process Explorer kann den Hersteller der DLL anzeigen. Damit kann man fremde DLLs viel schneller erkennen als mit der reinen Dateinamensliste von IceSword.

Manche Pseudo-Rootkits wie der SpyTech SpyAgent verstecken sich nur vor dem Windows Task-Manager. Mit jedem anderen Prozess-Viewer kann man sie sehen. Der SpyAgent benutzt dazu eine peinlich schlechte DLL-Injection.


Was IceSword nicht findet
Das Demo-Rootkit phide_ex wird von IceSword 1.20 nicht gefunden. Weder der Prozess, noch der Treiber.

Prozesse zu verstecken gilt heute als veraltet. Neuere Rootkits bestehen nur noch aus einem Treiber. Der lässt sich leichter verstecken. Manche der neuesten Rootkits besteht nur noch aus Code, der irgendwie in den Kernel eingeschleust wird. Dieses "Kernel Hooking" ist eigentlich ein alter Hut. Dagegen helfen Hook-Detektoren wie Rootkit Unhooker oder SVV. Manchmal.

Reine User-Mode Hooker wie Zcodec-Ruins, die kein Prozess und kein Treiber haben. Auch dagegen helfen Hook-Detektoren wie Rootkit Unhooker oder SVV.

Möglicherweise kann IceSword Prozesse, die mit dem Shadow Walker Rootkit versteckt sind, nicht finden. Allerdings ist Shadow Walker (bis jetzt) kein komplettes Malware-Toolkit, sondern nur eine Studie. Da eine lauffähige Version von Shadow Walker nicht öffentlich erhältlich ist, kann man es nicht mit Bestimmtheit sagen.

VM/ Hypervisor Rootkits wie SubVirt oder Blue Pill sind außerhalb der Reichweite von konventionellen Anti-Rootkits. Bis jetzt sind sie allerdings nur Demos oder Ankündigungen. Es gibt bereits Detektoren (siehe Rootkit.com), die im Gegensatz zu den Hypervisor Rootkits sogar öffentlich erhältlich sind.


Andere Werkzeuge
Rootkit Unhooker. Die aktuelle Version 3 hat (unter anderem) eine sehr gute Erkennung von versteckten Prozessen.

DarkSpy ist ein weiteres Programm um versteckte Prozesse anzuzeigen. Es ist eine gute Idee sich eine zweite Meinung einzuholen.

GMER. Ähnlich wie IceSword.

Der MiTeC Process Viewer ist ein "normaler" Prozess-Viewer (zeigt keine verstecken Prozesse an). Er zeigt wie IceSword die Anzahl der gefundenen Prozesse, Treiber und Dienste an und kann daher gut zum Vergleich benutzt werden.

Sysinternals Process Explorer findet keine verstecken Prozesse, sonst aber fast alles. Insbesondere zum finden von DLL-Injection viel besser beeignet als IceSword.

NirSoft InjectedDLL zeigt an, welche DLLs automatisch in jeden Prozess injiziert werden.

Sysinternals Sigcheck überprüft die in allen Systemdateien eingebetteten digitalen Signaturen. So findet man sehr schnell komisches Zeug im Windows Verzeichniss.

System Virginity Verifier (SVV). Einfaches Kommandozeilenprogramm. Sucht nach manipulierten Bereichen im Betriebsystem. Ziemlich verwirrende Ausgabe. Kann im Grunde durch Rootkit Unhooker 3 ersetzt werden (Code Hooks Tab).


0 Kommentare: