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