Jeder, der hier schon etwas laenger mitliest wird bemerkt haben, dass Fragen wie "Hilfe!11 Ich habe einen Virus/Wurm/whatever auf dem Rechner wie werde ich den wieder los?" hier nicht gerne gesehen sind, da solche Probleme in vielen Faellen trivial sind und es genuegend andere Anlaufstellen dafuer gibt. Da es trotzdem immer wiederkehrenden Anfragen zu diesem Themen in (In)Security Allgemein und inzwischen auch Malicious Code gibt, habe ich vor einer Weile eine kleine FAQ zu dem Thema geschrieben.

Die FAQ ist inhaltlich gesehen nichts besonderes, jedoch hoffe ich trotzdem, dass sie dem einen oder anderen Benutzer eine kleine Hilfe sein wird.

Die Orginalversion im HTML-Format: http://www.morph3us.org/security/win...e-removal.html


Was kann ich tun, wenn mein PC durch Malware kompromittiert wurde?

Warum kann die einzige Loesung fuer dieses Problem nur eine Neuinstallation sein?
Zu allererst sollte nochmal gesagt werden, dass es in einem solchen Fall *keine* andere Loesung gibt und geben sollte als das System neu zu installieren. Das ist so. Aus. Basta!
Warum ich das so vehement vertrete und auch jedem absolut empfehle sich an diesen Grundsatz zu halten liegt daran, dass man nach der Ausfuehrung von schaedlichem Code keine Kontrolle mehr ueber sein System hat und man nicht weiss, in welcher Weise dieses veraendert wurde. Sofern die Malware noch dazu mit Administratorrechten ausgefuehrt wurde, gibt es fuer diese keine Einschraenkung mehr - sie kann Windoze-Systemdateien patchen/loeschen, Schlangenoelprodukte aka "Sicherheitsprogramme", wie Antiviren-Scanner und Personal Firewalls beenden/veraendern/deinstallieren oder eigene Kernel-Module laden. Man kann dem System und der Software die auf dem System laeuft nach einer Kompromittierung nicht mehr vertrauen - es muss davon ausgegangen werden, dass Programme wie Antivirenscanner, Personal Firewalls, Removal Tools und was es sonst noch an aehnlichen Applikationen gibt, luegen. Ein Angreifer koennte immer noch die Kontrolle ueber das System haben selbst, wenn die "offensichtliche" Malware entfernt wurde. Es ist aeusserst schwer moeglich *verlaesslich* festzustellen, ob sich nicht dennoch ein Backdoor im System befindet. Selbst M$ hat das eingesehen und empfiehlt zu einer Neuninstallation [1], nachdem das OS erstmal kompromittiert wurde.

Der Hauptgrund, warum nur zu einer Neuinstallation geraten werden kann, ist also, weil es die sauberste, in den meisten Faellen auch die weitaus schnellste Methode ist, um wieder zu einem sicheren, brauchbaren System zu kommen.

Neuinstallation? Wie sieht es mit einer Reperaturinstallation aus?
Nein, unbedingt eine Neuinstallation. Eine Reperaturinstallation ist *nicht* ausreichend.
Es sollte auch klar sein, dass Backups, welche auf einer dem System zugaenglichen Platte liegen, als nicht vertrauenswuerdig eingestuft werden muessen.

Ich bin mir aber sicher, dass mein System wieder sauber ist. Mein Virenscanner ...
Nein, das kannst du (mit ziemlicher Sicherheit) nicht wissen. Glaub mir. Schon gar nicht kann das dein Virenscanner wissen - egal wie teuer der war. Virenscanner koennen dich nur anluegen, einmal erfinden sie etwas und das andere mal unterschlagen sie etwas. Sie koennen dich nicht vor etwas schuetzen, was sie nicht kennen.
Bei einem sehr hohen Prozentsatz von Malware kannst du dir sicher sein, dass du sie entfernt hast, was allerdings nur daran liegt, dass diese ziemlich primitive Techniken verwendet, um sich zu "verstecken" oder dafuer sorgt beim Systemstart mitgeladen zu werden. Es gibt allerdings auch Malware, welche sich sehr ausgekluegelten Stealth-Techniken (Hint: Rootkits fuer NT-Systeme existieren und es gibt auch Spyware, welche sich die Faehigkeiten eines Rootkits zu eigen machen, um deren Existenz zu tarnen) bedient, und diese laesst sich unvergleichbar schwerer finden - ich wuerde sogar behaupten, dass sie dir niemals auffallen wuerde, sofern du nicht einen erhaerteten Verdacht hast, das etwas an dem System faul sein muss.
Wenn du nun dieses vermeindlich einfach zu entfernende boesartige Programm geloescht hast, was sagt dir, dass es nicht eine weiteres Programm mitgeschleppt hat? Genau. Gar nichts. Ich weiss wie gesagt ist die Wahrscheinlichkeit *bisher* klein sich solch raffinierte Malware einzufangen, jedoch wirst du wohl nicht auf dein Glueck vertrauen wollen? Du solltest an dieser Stelle auch an deine persoenlichen, wichtigen Dokumente, Sourcen, Gedichte, Passwoerter, whatever denken und den dadurch entstehenden Schaden, wenn sie vernichtet oder in falsche Haende geraten.

Wieso soll ich das so genau nehmen? Mir als Privatanwender kann eh nichts passieren!
Ich glaube das hatten wir schon aber nochmals: Das kann ein wirklich aeusserst gefaehrlicher Trugschluss sein. Im Zeitalter der Breitbandanschluesse sind Privatleute mit wenig Computerverstaendnis/wissen ein auesserst beliebtes Ziel von zwielichtigen Gestalten. Wer hat den auch nicht gerne eine kostenlose $Shell fuer die verschiedensten "schmutzigen" Sachen? Wer nennt denn nicht gerne eine Reihe von kompromittierten Systemen, welche zusammen eine gewaltige Bandbreite haben, sein eigen? Bandbreite bedeutet Macht und man hat schon oefters gesehen, wie lukrativ es sein kann der Besitzer eines solchen Netzwerkes von uebernommenen Maschinen [2] - auch bekannt als sogenannte Zombies oder Bots - zu sein.
Will man etwa zur Spielwiese fuer Kiddies, Spammer oder noch schlimmeren Gesellen werden? Nein, das sollte man auf keinen Fall wollen, da das ansonsten mit viel mehr als nur einem derben Nachgeschmack verbunden ist.

Alles schoen und gut aber ich will mein System nicht neu installieren, weil ...
Es gibt *keinen* triftigen Grund das System nicht neu installieren zu koennen und unter Umstaenden handelt man sich mit dieser Einstellung bei weitem groessere und kostspieligere Probleme ein, als es eine Neuinstallation je machen wuerde.

Aber nun gut fuer den Fall, dass dir das alles egal ist oder du einfach nur gerne pfuscht, denn anders kann man das nicht bezeichnen, hier ein paar Ratschlaege. Wichtig dabei ist allerdings, dass ich davon ausgehe, dass es sich um die uebliche, 'primitive' Viren, Wuermer, Spyware etc. handelt und nicht, um ausgekluegelte Malware, denn bei dieser werden dir die genannten Tipps nicht viel bringen. Diese Art von spezialisierter Malware wird hier nur erwaehnt - vielleicht werde ich darauf in einem anderen Dokument naeher eingehen.

1) Malware identifizieren:
Falls dieser Teil des Dokumentes direkt verlinkt wurde und du hier gelandet bist lies bitte zumindest den oberen Absatz durch, damit du verstehst, dass die folgenden Tipps nur bei einfach gestrickter Malware helfen koennen.
Als erstes werden wir versuchen die auf dem System nicht erwuenschten Teile der Malware zu identifizieren, was zugleich das schwierigste an der ganzen Sache ist, denn wie soll man wissen, was auf das System gehoert und was nicht? ;o) Moegliche Ansaetze waeren folgende:

  • Man verwendet ein Antivirenprogramm oder eine aehnliche Applikation [3], welche nach verdaechtigen Dateien scannen kann, nachdem man dessen Signaturen upgedatet hat, und durchsucht damit alle Dateien. Wahrscheinlich wird man ohnehin durch die Meldung eines Antivirenprogrammes auf schaedliche Software aufmerksam geworden sein. Sofern moeglich sollte man das Antivirenprogramm versuchen lassen die Malware zu entfernen, allerdings wird das nicht immer moeglich sein. Fuer diesen Fall sollte man sich die naechsten Punkte ansehen, allerdings sollte man *niemals* vergessen auch von Hand nach Malware zu suchen, da Antivirenprogramme wie schon erwaehnt sehr fehleranfaellig sind.
    Sollte man den Namen des Schaedlings durch ein Antivirusprogramm kennen waere es an dieser Stelle auch eine gute Idee sich Informationen darueber auf der Webseite des entsprechenden Antivirus-Herstellers zu besorgen. Man sollte aber gut auf den Namen der Malware achten, da dieser von Hersteller zu Hersteller stark variieren kann und sich immer im klaren sein, dass es trotz deselben Namens nicht der exakt gleiche Schaedling sein muss.
  • Eine andere Moeglichkeit waere es sich alle laufenden Prozesse naeher anzusehen. Das kann man mit dem Task-Manager machen, allerdings wuerde ich dafuer eher zu einem Freeware-Tool wie ProcessExplorer [4] raten, da dieses um einiges gespraechiger ist. Mit Hilfe dieses Tools kann man den sogenannten Process-Tree sehr schoen darstellen und man sieht damit auf einen Blick, welcher Prozess mit erweiterten Privilegien (Administratorrechte oder NT-AUTHORITY\SYSTEM) laeuft. Klar wird es, wenn man sich ansieht an welcher Stelle des Baumes der Prozess dargestellt wird. Hier wird davon ausgegangen, dass der angemeldete Benutzer nur ueber Benutzerrechte verfuegt und dass `procexp.exe' mit Administrator-Privilegien ausgefuehrt wird.

    Legende: Dienste | Prozesse mit Administratorrechten | Prozesse mit Benutzerrechten

    Code:
     |---| System Idle Process
     |---| Interrupts
     |---| DPCs
     |---| System
     |   |---| smss.exe
     |   |---| csrss.exe
     |   |---| winlogon.exe
     |   |   |---| services.exe
     |   |   |   |---| svchost.exe
     |   |   |   |---| svchost.exe
     |   |   |   |---| svchost.exe
     |   |   |   |---| svchost.exe
     |   |   |   |   |---| cmd.exe
     |   |   |   |   |   |---| mmc.exe
     |   |   |   |   |---| procexp.exe
     |   |   |   |---| svchost.exe
     |   |   |   [ Bei mir ist die Liste hier fertig - bei einer Standard-
     |   |   |     installation folgen hier noch weitere Dienste. ]
     |   |   |---| lsass.exe
     |---| explorer.exe
         |---| cmd.exe
         |---| winamp.exe
         |---| firefox.exe
         |---| pspad.exe
         |---| [...]
    Sollte der angemeldete Benutzer Administratorrechte haben sieht der Baum genau gleich aus nur mit dem Unterschied, dass die Prozesse des Administrators klarerweise alle unter `explorer.exe' laufen. Man sollte nun vor allem einen Blick auf die Programme/Services werfen, welche Unterknoten der Prozesse `explorer.exe' und `services.exe' sind - es ist allerdings auch moeglich, dass eine Anwendung auf gleicher Ebene ist wie `explorer.exe' und `services.exe'.
    Erstmal beendet man alle laufenden Programme, um den Kreis der verdaechtigen zu minimieren. Als naechstes blendet man im ProcessExplorer die Option 'Image Path' zu finden unter View -> Select Columns... ein, damit man den Pfad aller gestarteten Anwendungen sieht.
    Mit diesem Wissen wirft man nun einen Blick auf jeden einzelnen Prozess, dabei sollte man genau hinsehen, dass man `scvhost.exe' nicht mit `svchost.exe' verwechselt und man sollte auch darauf achten, dass der Pfad der Executable "C:\windows\system32\svchost.exe" lautet und nicht etwa "C:\windows\system\svchost.exe". Normalerweise kann man aus dem Prozessnamen und Pfad schon sehr viel ablesen, allerdings sollte man dabei auch vorsichtig sein, denn gut getarnte Prozessnamen und Pfade sind keine Seltenheit. Ein weiterer Punkt an welchem man sich orientieren kann ist die Spalte 'Company Name', wo man wie der Name schon sagt den Hersteller der Executable sieht, der in den meisten Faellen wohl "Microsoft Corp." lauten wird, aber auch hier sei wieder gesagt, dass diese Informationen nicht stimmen muessen.
    Leider ist fuer den ganzen Vorgang einiges an Wissen und vor allem auch Erfahrung erforderlich, allerdings ist einem eine Suchmaschine wie http://google.com/ oder eine Seite, welche ueber eine Bibliothek von Prozessnamen unter Windoze verfuegt, http://www.processlibrary.com/ eine gute Hilfe, um mehr ueber eine Executable zu erfahren, von welcher man zuerst nur den Namen, Hersteller und Pfad kennt.
    Wenn man sich bei einem Prozess nicht sicher ist dann wird dieser eher gekillt anstatt ihn laufen zu laessen - im Zweifel gegen den Angeklagten.

  • Man kann das Ganze miteinander abgleichen, indem man sich zusaetzlich die offenen Ports des Systemes ansieht. Beispielsweise nutzen verschiedene Wuermer sehr viele solcher Verbindungen, um sich rasch verbreiten zu koennen. Bei Spyware, Trojanern oder aehnlicher Malware ist Anzahl solcher Connections in den meisten Faellen zwar bei weitem nicht so hoch, allerdings sollte es trotzdem auffallend sein.
    Eine Uebersicht ueber die offenen Ports kann man sich entweder mit `netstat -aon' schaffen, wobei die Option `-o' dafuer da ist, dass auch die PID des Prozesses, welcher den Port geoeffnet hat, angezeigt wird oder man bedient sich eines externen Tools, wie zum Beispiel TCPView [4], welches in der Lage ist die Endpunkte der offenen Ports anzuzeigen.
    Eine Standardinstallation von Windoze hat von Haus aus leider viele eigentlich absolut unnoetige Dienste gestartet, was sich dann auch klarerweise auf die Menge der offenen Ports wiederspiegelt. An dieser Stelle ist ein Hinweis auf das Script von http://www.ntsvcfg.de/ angebracht, welches unbenoetigte Dienste beendet und damit auch alle offenen Ports schliesst. Durch dieses Script wird die Uebersicht ueber die offenen Ports erheblich verbessert. Typische Windoze-Ports waeren zum Beispiel 135, 137-139, 445, 500, 1900, 4500 und 5000. Nun geht man jeden offenen Port nach und nach durch und vergleicht dessen PID mit der PID, welche im Task-Manager oder einem anderen Prozess-Manager steht.


2) Malware beenden:
Das Beenden von Anwendungen/Diensten sollte in den meisten Faellen kein grosses Problem darstellen. Ein Programm kann man ganz einfach mit Hilfe des ProzessExplorers beenden, was eigentlich auch fuer Dienste gilt, allerdings sollte man bei Services lieber `services.msc' - einfach unter Ausfuehren eingeben - verwenden, um die Dienste kontrolliert zu beenden. Damit kann man sich dann auch einfach einen Ueberblick ueber die gestarteten Dienste verschaffen. Windoze XP bietet einem auch `msconfig' an, welches eine einfache Moeglichkeit darstellt nur Dienste von Drittherstellern anzuzeigen. Bei der Registerkarte 'Dienste' muss "Microsoft-Dienste ausblenden" aktivieren werden.
Es gibt auch hartnaeckigere Gesellen, welche sich mit einem Task-Manager oder ProcessExplorer zwar beenden lassen aber sich immer wieder sofort neu starten. Solche Software kann man aber auch ganz einfach beenden, indem man sich die ACLs des Betriebssystemes zu Hilfe nimmt. Das soll heissen, man entzieht einfach alle Rechte fuer diese Executable und killt den Prozess danach mit dem Task-Manager. Der Prozess kann nicht wieder ausgefuehrt werden, weil die Rechte dafuer fehlen.

3) Malware aus dem Autostart entfernen:
Die zumindest haeufigsten Autostartorte lassen sich unter Windoze XP mit dem Programm `msconfig' darstellen. Unter Win 2k ist dieses Tool zwar nicht verfuegbar, allerdings ist es problemlos nachruestbar. Ich wuerde fuer diesen Zweck allerdings nicht unbedingt `msconfig' empfehlen, da es bessere Freeware-Alternativen gibt. Die Anwendung stammt wieder mal von sysinternals.com und heisst Autoruns [4].
Bei diesem Programm werden neben den typischen Autostartort-Ordner "C:\ Dokumente und Einstellungen\ $(Name des Users)\ Startmenue\ Programme\ Autostart" und den Registry-Keys "HKEY_CURRENT_USER\ Software\ Microsoft\ Windows\ CurrentVersion\ Run" noch weitere Autostartorte angezeigt. Man sollte hier wieder ein Blick auf den Dateinamen, den Pfad und den Namen des Herstellers werfen. Die Anwendung zeigt selbst bei einem sauberen System viele Eintraege an, welche alle zu Windoze gehoeren man sollte nicht einfach alles loeschen ohne zu wissen was man macht. Den Filter "Only show Non-Microsoft Entries" kann man unter View -> setzen, damit die Standardeintraege von M$ nicht mehr angezeigt werden. Mit der Einstellung View -> "Show All Locations" werden noch viel mehr Orte angezeigt, an welchen eine Anwendung geladen werden koennte auch, wenn diese leer sind. Einen Blick kann man darauf auf jeden Fall werfen, nicht allein um sich einen kleinen Einblick zu verschaffen, wieviele Moeglichkeiten Windoze Malware bietet sich zu verstecken.
Wiederum ist hier eine beliebige Suchmaschine ein guter Ansatzpunkt, da man mit dieser alles ueber die Eintraege, welche in der Liste auftauchen, erfahren kann und somit weiss, ob diese benoetigt werden oder nicht.

Zuletzt moechte ich noch ein Tool, neben vielen anderen, namens RootkitReveal [4] erwaehnen, welches vor allem dafuer geschrieben wurde Malware zu finden, welche sich erweiterte Stealth-Techniken zu nutze macht.
Das Programm ist sehr einfach zu bedienen - einfach herunterladen und ausfuehren. Das einzige was man an dieser Stelle noch beachten sollte ist, dass man die Executable unbedingt in einen zufaelligen Namen umbenennen muss, falls die Version des Programmes aelter als v1.32 ist. Allerdings sind die Ergebnisse dieses Tools, so wie alles, mit Vorsicht zu geniessen, da es auch moeglich ist sich vor diesem Tool zu verbergen bzw. es werden 'false positives' angezeigt.

Fussnoten
[1] Help: I Got Hacked. Now What Do I Do?
[2] heise News: Aufgedeckt: Trojaner als Spam-Roboter
[3] HijackThis | Spybot Search & Destroy | CWShredder | Ad-Aware | M$ Anti-Spyware
[4] autoruns | ProcessExplorer | filemon | TCPView | RootkitReveal