Trojan horses, Backdoors, …

Transcription

Trojan horses, Backdoors, …
Trojan horses, Backdoors, …
Igor Chauskyy
Technische Universität München
11.05.2009
Zusammenfassung
Die vorliegende Seminararbeit beschäftigt sich mit dem Thema „Trojaner“ und
jeglicher Malware, die mit dieser Klasse in engerem Zusammenhang steht. Nach einer
Definition des Begriffes „Trojaner“ und einem Versuch diese Malware von der
restlichen abzugrenzen, wird auf die Techniken mit denen sie sich verbreiten,
vermehren, tarnen und Schaden anrichten, eingegangen. Anschließend werden
Techniken aufgeführt, mit denen man sich gegen Angriffe von Trojanern wehren
kann. Am Ende dieser Arbeit wird an einem, vor kurzem für viel Auffuhr
verantwortlichen, Beispiel – dem Wurm Conficker – die Funktionsweise
veranschaulicht.
2
Igor Chauskyy
Inhaltsverzeichnis
1 Einleitung
3
2 Begriffsdefinition
3
3 Klassifizierung
3.1 Logische Bomben
3.2 Dropper
4
4
4 Funktionsweise und Aufbau
4.1 Verbreitung
4.2 Tarnmechanismen
4.3 Auslöser für die Schadfunktion
4.4 Schadfunktion
5
6
9
11
11
5 Trojaner-Bekämpfung
5.1 Entdecken eines Trojaners
5.2 Beseitigung eines Trojaners
12
12
12
6 Beispiel: Conficker
6.1 Klassifizierung
6.2 Funktionsweise und Aufbau
6.3 Bekämpfung
13
13
13
16
7 Schluss
16
8 Quellenangabe
17
Trojan horses, Backdoors, …
1
3
Einleitung
Experten halten es für die schlimmste Infektion, seit SQL Slammer. Schätzungen zu
folge liegt die Anzahl der Computer, die von diesem Wurm infiziert wurden zwischen
9 und 15 Millionen. Die Anzahl der heute noch infizierten PCs liegt jedoch bei ca. 3
Millionen, was aber mehr als genug ist, um großen Schaden zu verursachen.
Conficker, ein Trojaner/Wurm, der nicht nur dafür gesorgt hat, dass Microsoft am 12.
Februar 2009 den Anfang einer Zusammenarbeit der Technologie-Konzerne
verkündet, die den Auswirkungen von Conficker gegenübertreten (Organisationen,
die bei diesem Projekt mitmachen sind unter anderem Microsoft, Afilias, ICANN,
Neustar, Verisign, CNNIC, Public Internet Registry, Global Domains International,
Inc., M1D Global, AOL, Symantec, F-Secure, ISC, researchers from Georgia Tech,
The Shadowserver Foundation, Arbor Networks und Support Intelligence), seit dem
13. Februar 2009, bietet Microsoft auch noch eine Belohnung über 250.000 USD für
Informationen, die zur einer Verhaftung und Verurteilung der Erschaffer und/oder der
Verbreiter von Conficker führen. Solch gravierende Maßnahme wurde seit 2004
(Sasser) nicht mehr ergriffen. [7] Deswegen wollen wir uns in dieser Arbeit mit dem
Thema „Trojaner“ auseinandersetzen.
Die Arbeit ist folgendermaßen aufgeteilt: Zuerst wird eine allgemeine Definition
eines „Trojaners“ gegeben. Im nächsten Kapitel werden „Trojaner“ zu besseren
Übersicht in Klassen unterteilt. Anschließend werden manche der Verbreitungs-,
Tarn- und Schadmechanismen dargestellt und wie diese Art von Malware bekämpft
werden kann beschrieben. Im Anschluss wird der Wurm Conficker als Beispiel
vorgestellt.
2
Begriffsdefinition
„Ein Trojaner [der Name wurde in dieser Bedeutung zum ersten Mal von Dan
Edwards im Jahre 1972 gebraucht [1]] ist ein Programm, das vorgibt, eine
wünschenswerte oder notwendige Funktion auszuführen und dies möglicherweise
auch tut, aber außerdem eine oder mehrere Funktionen ausführt, die die Person, die
das Programm ausführt, weder erwartet noch wünscht.“ [6 : p.417]
Die in dieser Definition erwähnten unerwünschten Funktionen laufen zu dem in
der Regel ohne das Wissen der Nutzer ab und sind oft böswillig. Vor allem alltäglich
genutzte Tools oder Programme werden als Tarnobjekte für Trojaner verwendet. In
Abgrenzung zu Würmern und Viren können sie sich nicht selbst replizieren. Wobei
Mail-/Würmer oft auch als Trojaner bezeichnet werden, da sie „das Opfer mithilfe
von Social-Engineering-Methoden befallen[…], und zwar unabhängig von ihrer
Fähigkeit, sich zu replizieren.“ [6 : p.419] Das allein reicht aber für eine Definition
eines Trojaners nicht aus. Man muss auch die Payload und vor allem die Absicht
hinter so einem Programm berücksichtigen. So wird ein normales Programm, das die
Festplatte formatiert (z.B. FORMAT), zu einem Trojaner, wenn man es als ein
4
Igor Chauskyy
anderes Programm tarnt oder ihr eine andere Funktion zuschreibt (z.B. Screensaver).
[6]
Mögliche Funtionen eines Trojaners:
• Deaktivierung von Firewalls, Virenscannern oder anderen Sicherungssystemen
• Installation eines Keyloggers zum Protokollieren von Tastatureingaben
• Versuchen ein Backdoor zu installieren
• Integration des PC in ein fernsteuerbares „Botnet“, um zusammen mit anderen
befallenen Systemen Spam zu versenden oder DoS-Angriffe (Denial-of-Service)
durchzuführen
• Screenshotmodul installieren, Screenshots erstellen
• Aktivieren von angeschlossener Hardware (Webcam)
• Zugriff (samt Schreibrechten) auf Dateien
• Downloaden von weiterer Malware oder sonstigen Programmen
• Logs mit Tastatureingaben erstellen
3
Klassifizierung
Eine Möglichkeit Trojaner zu klassifizieren ist es sie nach dem Auslöseart der
Schadfunktion zu ordnen. Die zwei Klassen wären dann, die Auslösung durch die
Ausführung vom Trojaner und die Auslösung durch die Erfüllung einer bestimmten
Bedingung. Die letztere Klasse wird durch logische Bomben, und ihre Unterklasse –
die Zeitbomben, repräsentiert. Grundsätzlich gehören alle anderen Trojaner, die keine
logischen Bomben sind, in die andere Klasse. Da aber die meisten anderen Trojaner
selber ein Bestandteil eines Trojaners sein können, ist der Dropper als die „Oberart“
der anderen Klasse zu sehen.
Diese beiden Arten werden im Folgenden genauer erläutert:
3.1 Logische Bomben
Logische Bomben sind eine spezielle Art von Trojaner, die erst nach der Erfüllung
einer bestimmten Bedingung „losgeht“. Solche Bedingungen können z.B.
• ein bestimmtes Systemdatum (z.B. Freitag, der 13),
• Eingeben bestimmter Werte,
• Zugriff durch einen Virenscanner oder
• eine bestimmte Anzahl von Systemstarts
sein. Im Fall einer Zeit- oder Datumsbedingung wird auch von einer „Zeitbombe“
gesprochen. Zeitbomben können für verschiedene Zwecke gebraucht werden. Ein
Beispiel wäre ein konzentrierter Angriff auf einen Server, der zeitgleich auf allen
infizierten PCs gestartet wird, was die Effektivität steigert, oder Ausführung einer
bestimmten Aktion, um die Wirkung eines besonderen Datums zu verstärken (1.April,
Trojan horses, Backdoors, …
5
Halloween, etc.). Logische Bomben werden oft, als ein „Vergeltungsschlag“ oder
Erpressungsmittel eingesetzt. So gab es Fälle von logischen Bomben, die ausgelöst
wurden, nach dem ihr Erschaffer gefeuert wurde (bzw. sein PC-Konto gelöscht
wurde), oder hatten sogar zum Ziel das Unternehmen dazu zu zwingen, den
Gefeuerten wieder einzustellen oder zu bezahlen. [1]
3.2 Dropper
Dropper sind eine spezielle Art eines Trojanischen Pferdes, die einen Virus
transportieren. Es ist eine ausführbare Datei, welche schädlichen Code enthält, aber
kein Virus ist. Dieser schädliche Code stammt nicht von einer Infektion, sondern
wurde gewollt in diese Datei eingefügt. Dropper dienen zum Transport und
heimlicher Installation anderer schädlicher Software, z. B. Viren oder andere
Malware. Sie sollen die schädlichen Programme heimlich einschleusen. So platziert
ein Dropper heimlich einen Boot-Virus, indem er nach seinem Aufruf zuerst den
Boot-Sektor an einen anderen Platz auf dem Datenträger kopiert, dann den BootSektor-Virus an die Stelle des Boot-Sektors des Datenträgers kopiert und
anschließend die aufgerufene Datei ausgeführt.
4
Funktionsweise und Aufbau
Da Trojaner sich nicht in Programme oder andere Dateien hineinkopieren, müssen
sie sich zum Überleben so im System verankern, dass sie beim Hochfahren des
Systems oder bei der Anmeldung eines Benutzers gestartet werden. Schafft ein
Trojaner das nicht, so ist er nach einem Herunterfahren des Systems unschädlich. [4]
Der Startmechanismus der Trojaner ist meist ein zusätzlicher Eintrag in die Listen
der beim Booten oder einer Anmeldung gestarteten Programme. Unter Windows
beliebt ist die Sektion der Registry
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVe
rsion\Run
Damit ein Rechner nicht mehrmals durch den gleichen Trojaner infiziert wird, da eine
Mehrfach-Infektion auffälliger ist (z.B. zusätzlicher Speicherplatzbedarf) und zu
gegenseitigen Beeinträchtigungen führen kann, setzt sich ein Trojaner einen Merker
in Form einer harmlos aussehenden Datei oder eines Registry-Eintrags. Wird so ein
Eintrag gefunden, bricht die Infektionsroutine ab.
Viele Trojaner kommen heutzutage in einem Paket (Toolkit), bestehend aus einem
Servermodul (das unbemerkt auf den Rechner des Opfers gelangt), einem
Clientmodul (mit dem das Servermodul ferngesteuert wird) und das Editmodul, mit
dem man das Servermodul generiert (falls dies nicht vom Clientmodul erledigt wird).
• Der Server: ermöglicht die Fernsteuerung eines fremden Rechners durch eine
Verbindung mittels IP-Adresse, wenn er auf dem Opfer-PC aktiviert wurde. Muss
zuerst auf den Rechner gelangen und dann zum Aktivieren ausgeführt werden. Die
IP-Adresse muss irgendwie zu dem Client-Nutzer gelangen. Damit die Verbindung
6
Igor Chauskyy
im Hintergrund jederzeit besteht, muss der Server automatisch mit dem
Betriebssystem starten.
• Der Client: ermöglicht dem Angreifer die Steuerung des Servers von seinem PC
aus, indem er den Server über die IP-Adresse anspricht. Die verwendeten
Funktionen hängen von dem Trojaner ab.
• Der Editor: Befindet sich ebenfalls, wie der Client, auf dem Angreifer-PC. Er dient
zur Einstellung des dazugehörenden Servers. So kann hier unter anderem ein
anderes Symbol, Datei-Endung, und Funktionen des Servers gewählt und verändert
werden.
Damit der Client mit dem Server eine Verbindung aufbauen kann, benötigt er die
IP-Adresse des infizierten Rechners. Da nicht alle Server über eine MitteilungsFunktion verfügen stehen dem Angreifer verschiedene Möglichkeiten zur IP
Ermittlung zur Verfügung:
Die einfachste Variante ist bereits mit dem infiziertem Rechner verbunden zu sein
(über ICQ, IRC etc.). Durch das Eingeben von „netstat –n“ in der
Eingabeaufforderung kann man alle aktiven Verbindungen einsehen. Der Server wird
eine der Remote-Adressen sein (meistens „wartend“ oder „listening“).
Eine weitere Variante ist es einen Trojaner-Server zu verwenden, der über eine
Benachrichtigungsfunktion verfügt (z.B. SubSeven). In dem Fall sendet der Server,
sobald der infizierte Rechner eine Verbindung zum Internet herstellt, die aktuelle IPAdresse an den Client/eine voreingestellte E-Mail/ICQ/etc.
4.1 Verbreitung
Die Arten der Verbreitung kann man in zwei grundlegende Kategorien unterteilen.
Die Verbreitung durch den User und die Verbreitung durch den unerlaubten Zugriff.
In der ersten Kategorie tut der Angreifer nichts Anderes, als einen Trojaner einem
nutzer „anzubieten“, sei es durch Webseiten, E-Mail oder sonstige
Dateiübertragungsinstanzen. Den Rest übernimmt der User – er entscheidet, ob er die
Datei auf seinen Rechner holt und ausführt. Für diese Kategorie ist Social
Engineering ein wichtiges Stichwort, da der User so zu manipulieren ist, dass er die
infizierte Datei ausführen will. Die andere Kategorie beinhaltet Verbreitungsarten, die
keine User-Aktion voraussetzen. Hier ist es allein der Angreifer, der einen Trojaner
auf dem Opfer-PC platziert und ausführt, indem er sich unerlaubten Zugang zum
System verschafft.
4.1.1
Durch den User
Um sich auf diese Art zu verbreiten müssen sich Trojaner „tarnen“. In diesem Kapitel
wird unter „Tarnung“, die Tarnung vor dem User verstanden und nicht vor AVSoftware.
Eine Möglichkeit ist es den Trojaner in eine ausführbare Datei zu integrieren. Es
gibt eine Menge Joiner oder Binder Programme dafür, wie z.B. „File Joiner“, die
nicht nur mehrere Dateien in eine .EXE einbinden – zusätzlich werden oft die
Dateien verschlüsselt und komprimiert, außerdem kann das Symbol der fertigen .EXE
verändert werden und sie wird von vielen AVs nicht erkannt. Manche Trojaner-kits
Trojan horses, Backdoors, …
7
besitzen solche Funktionen bereits (z.B. SubSeven). Wenn die Datei ausgeführt wird,
wird sie in den Speicher geladen, wo der Trojaner vor dem tatsächlichen Programm
ausgeführt/installiert wird. Damit der Trojaner unbemerkt bleibt, wird im Anschluss
an die Trojanerausführung das tatsächliche Programm ausgeführt.
Eine andere Möglichkeit ist es den Trojaner als eine nützliche Datei aussehen zu
lassen, indem man das Icon des Servers verändert (z.B. in das eines bekannten Spiels
oder Screensavers) oder die .EXE Endung verbirgt, indem man an den Dateinamen
eine andere Endung anfügt (z.B. Server.jpg.exe). Falls der Rechner so eingestellt ist,
dass der vollständige Dateiname samt allen Endungen angezeigt wird, kann man
dennoch die meisten Programme (z.B. ICQ oder Outlook) dadurch täuschen, dass
man mehrere Leerzeichen vor .EXE einfügt (z.B. „Server.jpg
.exe“).
Da bei dieser Möglichkeit die Datei nicht die vom Nutzer erwartete Funktion
ausführt, muss dafür gesorgt werden, dass eine sinnvolle Fehlermeldung angezeigt
wird, damit der Nutzer keinen bzw. so wenig wie möglich Verdacht schöpft (z.B.
„Memory error!“ oder „Fehler bei der Installation aufgetreten“ etc.).
Tarnung mit WinZip (bzw. einem anderen Packprogramm) ist ebenfalls eine der
Möglichkeiten um den User zu täuschen. Es wird ein Archiv erzeugt und der Trojaner
mit anderen Dateien hineingepackt. Das Kommando „run command after unzipping“
startet den bösartigen Code gleich nach dem Entpacken aus dem Archiv. Die (meist
verfügbare) Server-Option „melt server after installation“ löscht den Server nach
erfolgreicher Installation und hinterlässt somit keine sichtbaren Spuren einer
Infektion.
Statistisch gesehen handelt sich in den meisten Fällen um eine Infektion per E-Mail
(ca. 90%), durch einen Anhang, der den Trojaner enthält. [4]
4.1.2
Durch den unerlaubten Zugang zum System
Eine Möglichkeit einen Trojaner unbemerkt einzuschleusen, ist die AutoplayFunktion eines CD-Laufwerks. Dabei werden meist Raubkopien gefragter Medien
benutzt (z.B. Spiele). Dazu manipuliert man den Autorun-Eintrag so, dass auch der
Trojaner automatisch ausgeführt wird.
Ein eher exotischer Ansatz zur Verbreitung eines Trojaners ist das Manipulieren
eines Compilers selbst. Denn bevor ein Programm ausgeführt wird, wird es zuerst von
dem Compiler in Object-Code übersetzt. Da in beiden Fällen der Code eines
bestimmten Prozesses (z.B. der von login) gut geschützt sein kann, ist eine
Manipulation des Compilers eine gute „Lösung“. Bei diesem Vorgehen wartet der
Schädling bis dieser bestimmte Code kompiliert wird und wenn das der Fall ist, fügt
er den schädlichen Code an einer bestimmten Stelle des Programms ein. Dazu muss
der Hacker natürlich wissen, wie der Code, in den er den Trojaner pflanzen will,
aussieht oder er muss extra ein Erkennungsprogramm benutzen, das die optimale
Stelle automatisch ermittelt. Hier ein kleines Beispiel, wie man einen C-Compiler
dazu bringt einen Trojaner in den login-Prozess einzufügen:
Das ist eine vereinfachte Version der Subrutine, die die nächste Codezeile des SourceProgramms kompiliert
compile(s){
… normales kompilieren
8
Igor Chauskyy
if (match(s, „check(username, password) {„))
compile(“if ( match(password, \”trojanhorse\”))
return OK;”);
}
[1]
Nun kann sich jeder mit dem Passwort „trojan-horse“ anmelden! Für diese
Methode bräuchte man allerdings zusätzliche Programme (Malware), die eine
Manipulation am Compiler ermöglichen würden.
Auch folgende HTML-Erweiterungen können gefährlich werden. Sie sind für den
Anwender zunächst unsichtbar. Aktive Inhalte sind in Internetseiten integriert und
werden durch den Aufruf mittels Browser ausgeführt. Zu dieser Kategorie gehören:
• JavaScript: Eine Makrosprache von Netscape, die sich in HTML einbinden lässt.
Sie wird auf dem Browser des Client-Rechners interpretiert
• Java-Applets: Kleine Programme/Anwendungen, in Java geschrieben. Befinden
sich auf einem Server, werden aber auf dem Client-Rechner ausgeführt.
• Active-X: Erleichtert die Freigabe von Informationen zwischen Anwendungen und
die Einbettung beliebiger Objekte in fremden Dokumenten, wie z.B. Web-Seiten.
Zwar lassen sich alle erwähnten Elemente in dem benutzen Browser abschalten,
jedoch wird es selten gemacht, denn heutzutage sind diese in den meisten Web-Seiten
ethalten. Die eigentliche Gefahr stellen hierbei nicht die aktiven Inhalte dar, sondern
Fehler bei der Iplementierung der Sandbox. Die Sandbox ist eine Art
Laufzeitumgebung für die aktiven Inhalte, wo unsicherer Code getestet werden kann,
bevor er ausgeführt wird. Weist eine Sandbox allerdings eine Lücke auf, so können
bösartige Programme oder manipulierte lokale Controls im Sicherheitskontext des
Arbeitsplatzes ausgeführt werden. Genauso gut können Programme in das lokale
temporäre Verzeichnis kopiert und von dort auf dem Rechner ausgeführt werden.
Besonders gefährlich sind hierbei die Sicherheitslücken im Internet Explorer oder bei
ActiveX-Controls, die auf dem Rechner bereits vorliegen und als „safe for scripting“
(also bei einer Nutzung im Browser sicher sind) markiert sind.
Eine weitere Möglichkeit einen Trojaner zu installieren ist die Ausnutzung von
Bufferoverflows. Dabei werden Funktionen ausgenutzt, die die Größe des Inputs nicht
prüfen/beschränken. Durch einen unerwartet großen Input, wird der Buffer
„überladen“ und wichtige Teile des Speichers werden überschrieben, wodurch sich
das Verhalten des Programms ändert oder Funktionen überschrieben werden. Das
führt dazu, dass das Programm unerwünschte Funktionen ausführt, die das Installieren
eines Trojaners ermöglichen. [5]
Eine weitere Art der Verbreitung, ist die Verbreitung durch Würmer. Diese können
sich sehr schnell verbreiten, z.B. per E-Mail, und können Trojaner transportieren.
Trojan horses, Backdoors, …
9
4.2 Tarnmechanismen
Tarnmechanismen, deren sich ein Trojaner bedient, können danach unterschieden
werden, ob sie direkt vom Trojaner selber ausgeführt werden, oder ob ein
zusätzliches Programm für eine Tarnung sorgt.
4.2.1
Direkte Tarnung
Da Trojaner und lizenzierte RATs (Remote Access Tool) auf eine sehr ähnliche
Weise funktionieren, hat Antivirensoftware, die z.B. auf Behavior-Blocking aufbaut,
keine Möglichkeit sie voneinander zu unterscheiden. Das liegt vor allem an der
Rechtslage – da diese „professionellen“ RATs ein offizielles Produkt sind, können
sich deren Entwickler sich auch darüber beschweren, dass ihre legitime Software von
AV-Software als ein Schädling bezeichnet oder sogar entfernt wird.
Auch kann ein Trojaner, nach seiner Ausführung mehrere Prozesse laufen lassen.
Einer von denen versteckt den Trojaner und den anderen Prozess, wobei der 2.
Prozess dafür sorgt, dass der 1. Prozess nicht entfernt oder beendet werden kann.
Wird ein Trojaner vom svchost.exe als Service ausgeführt, bewirkt dies, dass er
aus der Task-Liste entfernt wird bzw. nur als „svhost.exe“ erscheint. Wird der Dienst
jetzt auch im Dienst-Manager unsichtbar gemacht, ist er für einen durchschnittlichen
Nutzer nicht mehr zu finden (ein gewisser Wissensstand ist erforderlich).
Die meisten Servermodule (einer Client-Server-Architektur) laufen durch ein
externes Verschlüsselungsmodul und sind für einen AV beim Check meist völlig
unauffällig, und somit auch für den User.
4.2.2
Rootkits
Sind Tarnvorrichtungen für die eigentlichen Schädlinge, z.B. Trojaner, die
Firmengeheimnisse, Passwörter etc. ausspionieren. Beide kommen meist zusammen
als E-Mail und getarnt als harmloses Programm (z.B. eine Präsentation oder
Bildschirmschoner). Alle Dateien und Services, die den Namen des Rootkits tragen,
werden mit versteckt (auch die Registrykeys).
Arten von Rootkits
• Kernel-Rootkits manipulieren Kernbestandteile des Betriebssystems, indem sie
Manipulationen auf einer sehr tiefliegenden Schicht des Betriebsystems
vornehmen. Sie nutzen die Native API (Application Programming Interface) als
Schnittstelle zum Kern des Betriebsystems und sind damit in der Lage, Befehle, die
aus höher gelegenen APIS wie der Win32 API stammen, abzufangen und zu
modifizieren. Im Kernel verankert, können Rootkits alle Befehle von AVsoftware,
Firewalls, Anti-Trojaner-Programmen, Prozessmanagern, die auf einer höheren
Schicht aufsetzen, abfangen und manipulieren. Sind fast immer bestrebt ihren Code
im Kernel zu verankern, z.B. als Gerätetreiber.
• „Userland-Rootkits sind vor allem unter Windows populär, da sie keinen Zugriff
auf der Kernel-Ebene benötigen. Sie stellen jeweils eine DLL bereit, die sich
anhand verschiedener API-Methoden (SetWindowsHookEx, ForceLibrary) direkt
in alle Prozesse einklinkt. Ist diese DLL einmal im System geladen, modifiziert sie
10
Igor Chauskyy
ausgewählte API-Funktionen und leitet deren Ausführung auf sich selbst um.
Dadurch gelangt das Rootkit gezielt an Informationen, welche dann gefiltert oder
modifiziert werden können. „ [9]
Es gibt auch Hybrid-Rootkits, die beide dieser Methoden verwenden.
Tarnmechanismen
Wenn man einen Rootkit z.B. mit einem Task- oder Dateimanager entdecken will
passiert folgendes: Die Anfrage, welche Prozesse laufen bzw. welche Dateien
vorhanden sind, wird normalerweise an entsprechende Module im Kernel
weitergeleitet, beantwortet und an die Win API weitergeleitet. Hat sich ein Rootkit
z.B. als Gerätetreiber im Kernel verankert, nimmt es die Anfrage entgegen, leitet sie
weiter, filtert das Ergebnis, d.h. filtert seine Aktivitäten heraus und leitet das Ergebnis
dann entsprechend weiter.
Da die meisten Sicherheitsprogramme auf die Win API aufbauen, hat man keine
Chance, die Tarnung der Rootkits auffliegen zu lassen.
Beispiel: Windows-Rootkit „Vanquish“
Vanquish besteht aus zwei Binärdateien: Vanquish.exe (Autoloader) und
Vanquish.dll. Nach der Installation von dem Rootkit schleust der Autoloader die
Vanquish.dll in die gerade laufenden Systemprozesse von Windows ein und verankert
sich selbst in der Registry. Der eingeschleuste Code sorgt dafür, dass alle
Systemaufrufe und Systemprozesse der Win API über Vanquish gefiltert werden.
Dadurch gelingt es dem Rootkit, alle Funktionen außer Kraft zu setzen, die ihm
gefährlich werden könnten. In der Folge sind sowohl Dateien und Verzeichnisse, die
als Namensbestandteil „vanquish“ tragen, als auch alle Registrierungsschlüssel und –
Werte mit diesem Namen unsichtbar. Der Autoloader Vanquish.exe wird mit der
Vanquish.dll im Windows-Verzeichnis abgelegt und auf „unsichtbar“ gesetzt. Als
Prozess kann Vanquish schon deshalb nicht mehr entdeckt werden, weil der
Autoloader nach getaner Arbeit aus dem Speicher verschwindet. Normale
Prozessviewer und Task-Manager zeigen nur die normalen Windows-Prozesse an.
Klassische Anti-Trojaner, sowie klassische AVscanner sind nicht in der Lage, die
Infektion anzuzeigen. Allein mit Spezialtools und nur, wenn man auf den Namen
achtet, kann man die injizierte DLL-Datei in den Windows-Prozessen ausfindig
machen.
Aufgrund der Funktionsweise, sich sehr tief im Betriebssystemkernel zu verankern,
sind Rootkits auf eine bestimmte Betriebssystemvariante festgelegt und funktionieren
nicht mit allen Windows-Betriebssystemen. So ist man mit einem älteren
Betriebssystem wie Win 98 oder Win Me vor solchen Rootkits sicher, wogegen die
neuere Windows Versionen anfällig sind.
Trojan horses, Backdoors, …
11
4.3 Auslöser für die Schadfunktion
Da die zwei möglichen Auslöserarten für die Schadfunktion bereits in der
Klassifizierung genannt wurden, wird hier nicht mehr darauf eingegangen. Ohne
einen Auslöser kann die Schadfunktion nicht ausgeführt werden.
4.4 Schadfunktion
Die Schadfunktion, auch Payload genannt, ist der Teil eines Trojaners, der die
eigentliche, von dem Erschaffer gewünschte Funktion enthält. Die Payloads können
z.B. nach folgenden Arten unterschieden werden:
• Downloader: Dieser Trojaner ist für das Downloaden und Verstecken schädlicher
Software zuständig. So können SPAM- bzw. Werbe-Systeme bis hin zu SpyProgrammen den betroffenen Rechner befallen.
• Clicker: In diesem Fall veranlasst der Trojaner einen Zugriff auf bestimmte
Internetseiten. So können Werbung bzw. auch kostenpflichtige Seiten das Ziel
sein. Paradebeispiel hierfür wäre Klickbetrug im Google AdWords / AdSense
Programm (Clickfraud).
• Spy: Wie der Name schon vermuten lässt, handelt es sich hierbei um Trojaner,
welche für das Ausspionieren des betroffenen User-PCs und der entsprechenden
User-Daten eingesetzt werden. So können hierbei Screenshots, Tastatureingaben,
Festplatteninhalte etc. ausspioniert werden.
Transport von Malware (wie z.B. im Fall eines Droppers)
• Datenzerstörung
• AV-Software Deaktivierung
• Sonstiger schädlicher Code
4.4.1
Backdoors
Backdoors sind ein Schlupfloch in einem System. Sie bieten einen geheimen
Zugang, über den von außen und unbemerkt auf einen Rechner zugegriffen werden
kann. Programme, die diese Backdoors installieren, sind Trojaner. So kann man das
Resultat der Ausführung des modifizierten Compiler-Codes (siehe 4.1.2) auch als eine
Backdoor betrachten, da sie einem Eindringling jederzeit Zugang verschafft.
Backdoors untergliedern sich in zwei Gruppen: symmetrische Backdoors und
asymmetrische Backdoors. Die ersten benutzen in der Regel bekannte
Sicherheitslücken im System. Deswegen können sie von jedem, der sie findet, benutzt
werden. Die letzteren werden durch den Angreifer mit Absicht auf dem Rechner
positioniert und durch z.B. ein Passwort geschützt. So können nur von ihrem
Erschaffer benutzt werden. Ein Trojaner-Server wäre ein Beispiel für eine
assymetrische Backdoor, da sie nur von dem zugehörigen Client benutzt werden
können.
12
Igor Chauskyy
5
Trojaner-Bekämpfung
Die grundlegendsten Maßnahmen zur Bekämpfung von Trojanern ist eine Firewall,
die alle Zugriffe auf das und vom Internet überwacht und/oder ein AV mit einer
aktuellen Datenbank, die die aktuellen Malware-Signaturen enthält. Da ein Trojaner
aber sich eben durch seine Tarnung von anderer Malware unterscheidet, muss man zu
komplizierteren Techniken greifen, die im Folgenden aufgeführt werden.
5.1 Entdecken eines Trojaners
Zum Entdecken eines Trojaners gibt es mehrere Verfahren. Eines davon ist das
Prüfsummenverfahren. Dabei werden alle Dateien mit dem MD5-Algorithmus
signiert, der eine Art Quersumme der Bytes der jeweiligen Datei enthält. Bei
Manipulationsverdacht kann man die Signaturen überprüfen. Dabei wird der HashWert erneut berechnet und mit dem alten Wert verglichen. Stimmen die Signaturen
der jeweiligen Dateien nicht mehr überein, so muss die Datei in dem Zeitraum
manipuliert worden sein. Allerdings werden Infektionen, die vor dem erstmaligen
Bilden der Hash-Werte stattgefunden haben, nicht erkannt.
Hintegrund-Scanner sind speicherresidente Programme, die eine Datei in dem
Moment, in dem auf sie zugegriffen wird, online nach Viren durchsuchen. Das erlaubt
das Erkennen z.B. eines Trojaners vor seiner Ausführung.
Lockvögel sind kleine Programme, die sich selbst, als ein potenzielles Opfer
anbieten und sich selbst mit kryptografisch abgesicherten Hash-Funktionen prüfen.
Wird ein Lockvogel befallen, warnt er den Nutzer mit einer Nachricht. [4]
Vor allem bei versteckten Vorgängen oder neuartigen Schädlingen erweisen sich
Programme, die das Verhalten eines Programms untersuchen, die so genannten
Behavior-Blocker, als nützlich. Sie kontrollieren im Hintergrund den
Programmablauf. Entdecken sie dabei ein Verhalten, das mit hoher
Wahrscheinlichkeit auf Malware zurückzuführen ist, wie z.B. das Anfügen von Code
an das Ende einer Datei und das Einfügen eines Sprunges, der auf das der Datei
zugefügte Segment weist, so wird es blockiert und rückgängig gemacht.
5.2 Beseitigen eines Trojaners
Bei Feststellung einer Infektion durch den AV sollte man, um Schäden zu
vermeiden, die betroffenen Dateien erstmal nicht löschen, sondern nur isolieren.
Da es aber, aus bereits erläuterten Gründen, nicht immer möglich ist einen Trojaner
mit einem AV loszuwerden, gibt es noch die Möglichkeit die AutoRun-Einträge zu
kontrollieren, denn ein Trojaner funktioniert nur dann, wenn er mit dem Systemstart
ausgeführt wird (so muss z.B. der Server ständig im Hintergrund des Systems laufen,
um sich immer mit dem Client verbinden zu können). Dazu wird eine Verknüpfung
eines Servers z.B in dem Autostart-Ordner, Win.ini, System.ini, autoexec.bat oder
Config.sys erstellt. Das Durchsuchen dieser Instanzen nach Ausführanweisungen
Trojan horses, Backdoors, …
13
(load=…, run=…, shell=… etc.) von unbekannten/verdächtigen Dateien kann in
manchen Fällen einen Trojaner offenbaren.
Ein weiterer Versteckort der Trojaner kann die Windows-Registrierung sein. So
kann ein Programmname in Einträgen, wie HKEY_…\@=“\“%1\“ %*“ auf einen
Trojaner deuten. Diese Art Trojaner zu entdecken, braucht aber einen gewissen
Wissensstand, denn sonst kann man sich in der Registry verirren und sogar Schaden
anrichten.
Da man durch manuelles Verändern der AutoRun- und Registry-Einträgen bei
unzureichendem Wissen größeren Schaden, als Nutzen verursachen kann, gibt es
dafür eine Reihe von Programmen (wie z.B Spybot Search & Destroy oder AdAware), die nach veränderten oder zweifelhaften Einträgen suchen.
Falls nichts hilft den Schädling zu finden, weil er so gut getarnt ist, sollte man
versuchen den PC von einer sauberen Umgebung aus zu starten, z.B. von einer BootDiskette oder Recovery-CD. Da dabei nur die notwendigsten Prozesse laufen, gibt es
keine Prozesse mehr, die den Schädling verstecken könnten. Ein AV-Scan bzw. eine
besondere Anti-Trojaner-Software könnte ihn jetzt finden. Auch das Löschen ist nun
nicht weiter schwierig, da die Dateien von keinem gesicherten Prozess mehr
verwendet werden und können somit problemlos entfernt werden.
6
Beispiel: Conficker
20. November 2008 war das Erscheinungsdatum des Conficker-Wurms[7,8].
Conficker ist ein Anagram vom “trafficconverter” – einer Webseite zu der die erste
Version Verbindung aufnahm. Davor hieß es Downadup.
6.1.
Klassifizierung
Conflicker ist eine Mischart zwischen Wurm und Trojaner. Da er sich selber
weiterverbreitet, und zwar durch das Netzwerk, gehört er eigentlich der Klasse
„Wurm“ an. Die Tarnmechanismen, die er nutzt, sind aber eindeutig die eines
„Trojaners“. An diesem Beispiel sieht man am besten, dass eine klare Abgrenzung
heutzutage sehr schwierig ist.
6.2
Funktionsweise und Aufbau
Angefangen mit Conficker.A gab es immer wieder neuere Versionen von dem
Schädling, bis zu der aktuellen Version Conficker.D (März 2009). Das Update auf die
letzte Version geschah durch Zugreifen von Conficker.B auf bestimmte Domänen, die
von einem in ihm eingebauten Algorithmus berechnet wurden, auf denen die aktuelle
Version enthalten war. Hat er eine Verbindung mit so einer Seite aufgebaut, überträgt
er außerdem die Anzahl der Rechner, die infiziert wurden.
Auf dem Bild sieht man etwas genauer, was, und in welcher Reihenfolge der
Conficker A/B tut. Die A-Version heftet sich nach Paar Checks an eine svchost.exe
Datei an. Dann prüft er, ob eine Firewall vorhanden ist. Wenn sie vorhanden ist, wird
darin eine Backdoor installiert, die für weitere Verbreitung benutzt wird. Danach
versucht Conficker GeoIP herunterzuladen. Bei Erfolgt generiert es mit Hilfe von
GeoIP zufällige URLs um nach zusätzlichen Opfern zu suchen. Wird ein Opfer
14
Igor Chauskyy
gefunden, so wird er durch die Sicherheitslücke infiziert. Dann schläft Conficker 30
Minuten und startet danach jede 5 Minuten einen Versuch loadadv.exe von einer
bestimmten Seite herunterzuladen. Danach betritt Conficker eine Endlosschleife, in
der er jeden Tag 250 URLs generiert und sie nach einem Update durchsucht.
Conficker A (links)/B (rechts): Funktionsablauf
6.2.1
Verbreitung
Conficker verbreitet sich durch eine Buffer-Overflow-Schwachstelle in dem Server
Service der Windows Computer, als eine mit dem UPX Packer doppelt verpackte
DLL Datei. Der Wurm benutzt dazu die MS08-67 Sicherheitslücke im Microsoft
Windows Server Dienst. Dabei bringt ein speziell entwickelter RPC (remote
procedure call) über den Port 445/TCP Windows 2000, XP, 2003 und Vista dazu,
ohne Authentifizierung einen beliebigen Code auszuführen. Dieser Code bringt den
Opfer-Rechner dazu sich mit Angreifer-PC zu verbinden eine Kopie der Wurm-DLL
von dem PC herunterzuladen, der den Buffer-Overflow verursacht hat. Diese
Schwachstelle kann sogar bei Systemen ausgenutzt werden, bei denen Firewalls
Trojan horses, Backdoors, …
15
aktiviert sind. Allerdings muss Dateiübertragung (file sharing) möglich sein. Da die
Versionen B und C sich über USB Treiber ausbreiten und AutoRun auslösen können,
ist es empfohlen die AutoRun-Eigenschaft für externe Datenträger zu deaktivieren.
Außerdem haben sie die Möglichkeit durch einen Brute-Force Angriff das
Administrator-Passwort (ADMIN$ shares) zu knacken und sich so in einem Netzwerk
zu verbreiten.
Seit der Version D verfügt Conficker über eine P2P-Möglichkeit zum Update.
Daher ist das Update nun auch von einem anderen infizierten Rechner möglich.
Allerdings versucht sich die letzte Conficker-Version nicht mehr weiterzuverbreiten.
6.2.2
Tarnmechanismen und Selbstschutz
Wenn auf einem Rechner ausgeführt, deaktiviert Conficker(C) bestimmte
Systemdienste, wie Windows Automatic Update, Windows Security Center, Windows
Defender und Windows Error Reporting oder auch bestimmte AV-Software und setzt
alle Wiederherstellungspunkte zurück. Dazu verbietet er Zugang zu Internetseiten von
AV-Software und Windows Update. Die DLL wird mit einem zufälligen Namen in
dem system32-Verzeichnis abgelegt. Um diese DLL zu tarnen wird ihr Zeitstempel
gleich dem von kernel32.dll umgeändert. Die DLL wird nun als ein Teil des
svhost.exe, service.exe oder explorer.exe Prozesses ausgeführt (als ein Dienst) und
wird somit bei jedem Systemstart mitgestartet. Dazu fügt Conficker auch noch einen
Regitry Key in
SOFTWARE\Microsoft Windows NT\CurrentVersion\“DLL-Name“
ein. Um den „Dienst“ im Dienst-Manager unsichtbar zu machen, wird der Dienstname
auf leer gesetzt und der Typ auf unsichtbar.
Um Spuren zu verwischen, werden jetzt der Registry-Eintrag und die alte DLL
gelöscht und der Rechner neu gestartet.
6.2.3
Auslöser für die Schadfunktion
Die letzte Version hat am 01.04.09 anfangen nach einem Payload-Download zu
suchen. Die Zeitangaben wurden von Seiten, wie google.com, yahoo.com und
facebook.com in Erfahrung gebracht. Conficker.A und Conficker.B Versionen
werden weiterhin nach Payloads suchen, und zwar jeder mit einem anderen DomäneAlgorithmus, da deren Payload bereits früher (2008) ausgelöst aber noch nicht erfüllt
wurde (z.B. weil sie noch keine Seite gefunden haben, die das Update zum download
bereitstellen würde).
6.2.4
Schadfunktion
Wie schon erwähnt generieren die A und B Versionen von Conficker 250 URLs
jeden Tag (mit einem datumsbasiertem Algorithmus) und öffnen einen zufälligen Port
(zwischen 1025 und 10000). Wenn sie erfolgreich eine Verbindung zu einer der URLs
aufbauen können, bzw. wenn eine von den Seiten existiert, lädt er von dieser Seite ein
Update für sich selbst runter. Er kann auch andere Dateien auf den infizierten PC
runterladen. Die Anweisungen, die er bekommt, können sein, sich weiterzuverbreiten,
Informationen zu sammeln, oder zusätzliche Malware auf den befallenen PC
runterzuladen und zu installieren.
16
Igor Chauskyy
6.3
Bekämpfung
Der Patch für die MS08-67 Sicherheitslücke im Microsoft Windows Server Dienst
wurde am 23. Oktober 2008 von Microsoft online gestellt. Windows-Rechner, die
automatische Sicherheitsupdates erhielten, waren nicht durch die Schwachstelle
angreifbar. Jedoch hat ein gewisser Prozentsatz von Usern diesen Patch ignoriert, was
zu weiteren Infektionen geführt hat.
6.3.1
Entdecken
Beispiele für Symptome:
• Bestimmte Microsoft Windows Dienste, wie Automatic Updates, BITS, Windows
Defender, und Error Reporting Services sind automatisch deaktiviert.
• Domain Controller reagiert langsam auf Anfragen von dem Client.
• System-Netzwerk ist ungewöhnlich stark ausgelastet. Das kann man z.B. mit dem
Windows Task Manager überprüfen.
• Der Zugang zu den Internetseiten der AV-Software-Unternehmen oder WindowsUpdate-Seiten ist blockiert.
• TCP und UDP P2P Aktivitäten bei Ports mit höheren Nummern.
6.3.2
Beseitigen
Beseitigungs-Tools sind erhältlich von den meisten aktuellen AV-Firmen. Manche
davon können die Infektion bereits mit einem On-demand-Scan beseitigen.
7
Schluss
Diese Ausarbeitung soll für ein besseres Verständnis des Begriffs „Trojaner“
sorgen und grundlegende Funktionen und Mechanismen eines Trojaners erläutern.
Wie man an dem Beispiel Conficker sehen konnte, sind Trojaner, vor allem in
Zusammenarbeit mit anderer Malware, eine ernstzunehmende Bedrohung. Obwohl
der Conficker bereits seit über einem halben Jahr bekannt ist, sind immer noch nicht
alle seiner Funktionen entschlüsselt bzw. verstanden, seine Entwickler und Verbreiter
nicht gefasst und die Infiziertenanzahl wächst weiter. Abgesehen davon entwickelt
sich der Wurm/Trojaner immer weiter. Im April hat man eine neuere Version (E)
entdeckt, die nun zusätzliche Malware installiert, und bereits am 03.05.09 hat die
Version angefangen sich selbst zu Zerstören. Wie sieht die Zukunft des ConfickerWurmes aus? Eins ist aber sicher – solche Malware wird es immer geben und sie wird
immer besser!
Trojan horses, Backdoors, …
8
17
Quellenangabe
[1] Peter J. Denning. Computers under attack: intruders, worms, and viruses.
ACM Press 1990
[2] Thomas Vosseberg. hackerz book, 2. Auflage. Franzis’ Verlag 2003
[3] Dr. Peter Bernhard Kraft. Anti Hackerz Book 2007, 2. Auflage. Franzis’
Verlag 2007
[4] Dr. Markus a Campo. Antiviruskonzepte: Schutz vor Viren, Würmern und
Trojanern. WEKA MEDIA 2007
[5] Lance J. Hoffmann. Rogue Programs: Viruses, Worms, and Trojan Horses.
New York 1990
[6] Anonymous. Hacker’s Guide: Sicherheit im Internet und im lokalen Netz.
Markt+Technik Verlag 2003
[7] http://www.confickerworkinggroup.org/wiki/ letzter Zugriff am 07.05.2009
[8] http://mtc.sri.com/Conficker/ letzter Zugriff am 07.05.2009
[9] http://de.wikipedia.org/wiki/Rootkit letzter Zugriff am 08.05.09