MySkypeWorm - Connecting with Friends Marc Ruef | 02.03.2008 Das Internet habe ich seit jeher als Kommunikations- und Informationsmedium betrachtet. Unzählige Stunden habe ich in Chats verbracht und mit Leuten im Usenet sowie in Webforen diskutiert. Gerade deswegen ist es mir oftmals unverständlich, wenn andere das Internet als asoziales Medium und die Nutzer dessen als vereinsamte Individuen beschimpfen. Mit multimedialen Kommunikationslösungen wie Skype haben aber viele die Nützlichkeit des Netzes für sich entdeckt, die zuvor dem Ganzen sehr skeptisch gegenübergestanden sind. Auch ich selbst bin einer der ersten Skype-Benutzer gewesen. Obschon ich sagen muss, dass die schlechte technische Implementierung und das strenge closed-source Prinzip (http://www1.cs.columbia.edu/~salman/skype/) (zudem viele Obfuscation-Mechanismen im Binary) mir gänzlich widerspricht, vermag die Ergonomie und Einfachheit der Software zu überzeugen. Zu Recht wird Skype als beliebteste Lösung seines Bereichs verstanden. Als ich mich mit etwa 12 Jahren intensiver mit Computerviren und -würmern angefangen auseinanderzusetzen, war das Internet für mich damals noch in weiter Ferne. Mit dem Zugang zum Netz der Netze wurde jedoch auch mein Verständnis für sich selber reproduzierenden Programmcode gänzlich auf den Kopf gestellt: Viren sollten nicht mehr nur per Disketten (Dateiviren und Bootsektorviren) übertragen werden, sondern konnten sich als autonome Würmer durch vernetzte Umgebungen bewegen. Mein Interesse an solcher Software habe ich nie verloren, wenn auch ich mich zwischenzeitlich eher für andere Aspekte der Informationssicherheit zu interessieren begannt. Dieses Wochenende verbrachte ich denn damit an meinem neuen Buch (http://www.computec.ch/mruef/?s=publikationen) zu schreiben. Es ging ein bisschen harzig voran, denn irgendwie waren die Gedanken noch nicht so sortiert, wie ich das gern gehabt hätte. Doch dies ist die elementare Voraussetzung für ein gutes Schriftstück. Gut Ding will Weile haben und so entschied ich mich, um mein Gehirn ein bisschen zu durchlüften, etwas anderes zu tun. Da ich vor Kurzem den Nutzen von Skype wieder für mich entdeckt hatte, und mich schon immer die API des Clients (https://developer.skype.com/Docs/ApiDoc/FrontPage) interessierte, wollte ich mal eben schnell einen Skype-Wurm schreiben (und schliesslich ist in den News-Portalen (http://www.heise.de/newsticker/meldung/104325) die Rede eines neuen Orkut-Wurms namens W32.Scrapkut). Die Idee eines solchen Schädlings war nicht neu, wurde denn Ende Dezember 2006 erstmals eine echte Implementierung in-the-wild gesichtet (http://share.skype.com/sites/security/2006/12/reports_of_skype_worm.html). Die erste Umsetzung eines Skype-Wurms nutzte das Prinzip, welches am einfachsten schien: Der Schädling öffnete einen Chat mit einer Person in der Kontaktliste und schickte über diesen einen Download-Link zu einer Kopie von sich selbst. Eigentlich ist dies kein echter Wurm, denn er reproduziert sich nicht über das gleiche Medium. Viel mehr ist der Skype-Trojaner quasi ein Advertising-Element für sich selbst. Der Benutzer muss noch immer über einen Webbrowser die korrupte EXE-Datei vom Webserver herunterladen und ausführen, um das Advertising weiterzuführen. Früher nannte man soetwas auch scherzhaft Signatur-Virus. Dem konnte nun relativ einfach entgegengewirkt werden, indem (1) die korrupten EXE-Dateien von den Webservern gelöscht, (2) der Zugriff auf die bösartigen URLs unterbunden und (3) Skype-Nachrichten mit derartigen Links gefiltert wurden. Meine Implementierung sollte ein bisschen raffinierter ausfallen (andere Ansätze (http://www.heise.de/newsticker/meldung/95774) wurden ja rund ein Jahr später schon verfolgt). Zum einen wollte ich effektiv, dass sich der Wurm über Skype selber repliziert und nicht auf externe Quellen angewiesen ist. Mein Wurm sollte also einen internen File-Transfer initiieren. Das Problem ist, dass mit dem API-Call "OPEN FILETRANSFER" (https://developer.skype.com/Docs/ApiDoc/OPEN_FILETRANSFER) zwar ein solcher angegangen werden kann. Als erster Parameter wird dabei der Benutzername des Empfängers angegeben. Als zweiten Parameter lässt sich jedoch lediglich das Verzeichnis definieren, welches in der Auswahl geöffnet werden will. Eine direkte Angabe eines Pfads inklusive Dateinamens ist nicht möglich und generiert die allgemeine Fehlermeldung "ERROR 109 OPEN directory doesn't exist". Ich behalf mich eines unpopulären Tricks. Sodann öffne ich das Verzeichnis, in dem sich die Kopie meines Skype-Wurms befindet im Transfer-Fenster. Durch das Schicken von Koordinaten an die Maus und Klickanweisungen an selbige kann ich sodann die Datei über die GUI-Steuerung auswählen lassen. Dies geschieht innert Millisekunden und ist durch den Benutzer weder grossartig einsehbar noch überhaupt verhinderbar. Den gleichen Effekt pflege ich bei meiner Cracking-Software PGPSDACrack (http://www.computec.ch/mruef/?s=software#pgpsdacracker.png) zu verwenden, mit der passwortgeschützte PGP-EXE-Archive angegriffen werden können. Der Benutzer muss nur noch den Datentransfer akzeptieren und danach die EXE-Datei ausführen. Um diesen Prozess zu optimieren, wird zuvor ein Chat mittels "CHAT CREATE" (https://developer.skype.com/Docs/ApiDoc/CHAT_CREATE) gestartet und über "CHATMESSAGE" (https://developer.skype.com/Docs/ApiDoc/CHATMESSAGE) eine manipulative Social Engineering-Nachricht verschickt. In dieser wird der Empfänger des Dateitransfers darauf hingewiesen, dass es sich hier um einen speziellen Patch für Skype handelt, durch den der Client um wichtige und interessante Funktionalitäten erweitert werden kann. Das Thema kann natürlich beliebig angepasst werden. Das Problem solcher Nachrichten, die bei modernen Mailwürmern ebenso eine wichtige Rollen spielen, ist die Lokalisation. Es erscheint unsinnig, dass ich zum Beispiel meiner Mutter ein Email auf Englisch schreibe und darin um das Ausführen einer angehängten EXE-Datei (dem Virus) bitte. Mit ihr würde ich definitiv auf Deutsch kommunizieren, so dass die falsche Sprachwahl sofort auffallen würde. Mein Wurm liest sodann aus dem Skype-Profil des Enpfängers dessen Herkunft aus und richtet sich damit in der Sprachwahl nach den lokalen Bedingungen. Die über die Chat-Kommunikation mitgeteilten Phrasen müssen also nur noch übersetzt werden, so dass der Verdachtsmoment auf ein Minimum reduziert werden kann. Ist ein System einmal mit dem Skype-Wurm infiziert, überwacht dieser ständig den Status des Skype-Clients. Ist dieser verbunden und sind irgendwelche Kontakte online, werden ihnen in mehr oder weniger zufälliger Reihenfolge (siehe auch "SEARCH USERS" (https://developer.skype.com/Docs/ApiDoc/SEARCH_USERS)) der Wurm über den eben genannten Weg zugeschickt. Dabei speichert der Wurm, welche Benutzer den Datentransfer schon durchgeführt haben und welche nicht. Damit soll eine mehrmalige Infektion verhindert sowie der wiederholte Infektionsversuch unterbunden werden. Der Skype-Wurm überwacht ebenfalls, ob er Ziel eines Infektionsversuchs ist. Ist dies der Fall, wird der Datentransfer sofort abgebrochen. Der Infector weiss sodann ebenfalls, dass das Zielobjekt schon erfolgreich angegangen wurde und sieht damit von einer weiteren Übertragung ab. Mein Ansatz hat zwei entscheidende Vorteile. (1) Zum einen ist man bei der Bereitstellung des korrupten Programmcodes nicht mehr auf andere Medien, im zuvor genannten Fall auf einen Webserver, angewiesen. Der Wurm propagiert und verbreitet sich autonomisch über Skype. (2) Dies führt zeitgleich dazu, dass solange mindestens ein infizierter Client im Internet ist, der Wurm theoretisch noch immer dezentral agieren kann. Es kann nicht mehr nur einfach ein zentraler Webserver deaktiviert werden, um die Wurmverbreitung zu unterbinden. Weisen die von mir eingebrachten Mechanismen eine zusätzliche Polymorphie auf, sind sie ohne tiefschürfende Eingriffe in die API von Skype nahezu unmöglich zu bekämpfen. Mit dieser kleinen Denkpause, die ich mir gegönnt habe, habe ich einmal mehr sehr viel über Instant Messaging, Skype, dessen API und die Möglichkeiten moderner Computerwürmer gelernt. Die Hürde des automatischen Dateitransfers ist kleiner, als man dies hätte annehmen könnte. Und so wird es nur eine Frage der Zeit sein, bis jemand anderes auf die gleiche Idee kommt wie ich. Mein kleiner Skype-Wurm bleibt jedenfalls bei mir, schön verschlossen in meinem Development-Folder. Wäre ich so töricht und würde ihn freilassen, würde ich mir wohl kaum Freunde machen. Doch das ist es ja eigentlich das, was man mit Facebook, MySpace, StudiVZ, Xing sowie irgendwodurch Skype und ICQ machen möchte. Vielleicht sollte ich mir mal die Möglichkeiten der Sozialen Netzwerke mit ihren eigenen Nachrichtensystemen genauer anschauen ... Doch das spar ich mir für die nächste Pause.