Tatort Internet: Angriff der Killervideos

Seite 4: Ein Bilderrätsel

Inhaltsverzeichnis

Meine Theorie ist, dass der SceneCount-Exploit dafür sorgt, dass das Programm mitten in die Daten des angeblichen JPEG-Bildchens springt und den dort stehenden Code ausführt.

Du meine Güte! Die Uhr ist bereits Viertel vor zwei – aber das lässt mir jetzt keine Ruhe. Wenn das also Code ist, sollte es ein Disassembler auch als solchen interpretieren und darstellen können. Also extrahiere ich die 336 Bytes des Datenblocks in eine Datei und werfe IDA Pro an. Das sollte auch mit der auf diesem PC installierten kostenlosen Version gehen.

Beim Öffnen der Datei beschwert sich IDA zunächst, dass er keinen gültigen PE-Header gefunden habe. Damit fehlt ihm der dort definierte Einsprungspunkt, an dem der Programmcode beginnt. Er weiß folglich nicht, wo genau er denn anfangen soll, zu disassemblieren. Dann sag ich ihm das eben selber, setze den Cursor auf das erste Daten-Byte – das mit dem 0xAA – und drücke „C“.

Bingo – das ist der Shellcode. Denn die Chance, dass beim Disassemblieren von reinen Daten etwas so offensichtlich Sinnvolles rauskommt, ist recht gering. Am Anfang steht zwar ein bisschen Müll, aber dann kommt eine kurze Tu-NIX-Rutsche aus NOPs. Entweder musste der Exploit-Schreiber noch ein paar Bytes füllen, um auf eine bestimmte Blockgrenze zu kommen, oder er wusste doch nicht so ganz genau, wo er mit seinem umgebogenen Sprung schließlich landen würde.

Eindeutig zu erkennen ist der darauffolgende, charakteristische FS:30-Code zum Ermitteln der Basis-Adresse von kernel32.dll (siehe auch Zeig mir das Bild vom Tod). Das vorangestellte XOR und der Zugriff auf ecx+30h vermeidet die Erkennung durch einfache Signaturen, die auf Verweise auf FS:30h anspringen. Dann arbeitet der Code die Export-Tabelle von kernel32.dll und urlmon.dll ab, um die relativen lokalen Adressen (RVAs) einer Reihe von Funktionen zu ermitteln, die dort abgelegt sind.

Dabei greift der Autor zu einem verbreiteten Trick: Statt die Klartextnamen der gesuchten Funktionen zu suchen, erzeugt er aus den Namen in der Export-Tabelle einen Hash-Wert und vergleicht diesen mit den hinterlegten Hash-Werten. Sind die beiden gleich, hat er eine der benötigten Funktionen gefunden.

Dieser Hash-Vergleich ist zum einen kompakter als ein Vergleich von Strings – und bei Shellcode kommt es oft auf die Länge an. Die Eigenheiten einer Sicherheitslücke beschränken nicht selten die Zahl der Bytes, die man für seinen Code zur Verfügung hat. Und zum anderen tauchen damit die verräterischen Zeichenketten nicht im Shellcode auf – das Risiko einer Entdeckung ist geringer.

Der Shellcode im Flash-Filmchen hier sucht sich damit kernel32.dll->LoadLibrary(), kernel32.dll->WinExec() und urlmon.dll->URLDownloadToFile() zusammen und geht damit dann seinen finsteren Plänen nach: Er lädt vermutlich ein Spionage- oder Bot-Netz-Programm aus dem Internet nach und installiert das auf dem Rechner seines Opfers.

Das ist aber in diesem Fall gescheitert, weil der Exploit nur bei älteren Flash-Versionen funktioniert, die noch diese Sicherheitslücke aufweisen. Wie mir der Aufruf von about:plugins in Firefox versichert, habe ich das aktuelle Flash-Plug-in installiert. Trotzdem gab es natürlich in dem angeblichen Video nichts zu sehen. Doch als ich mich umdrehe, um ihr das zu erklären, stelle ich fest, dass sie schon längst ins Bett gegangen ist. (ju)

Die Serie "Tatort Internet" wurde ursprünglich im c't magazin ab Heft 13/2010 veröffentlicht. In den Artikeln können Sie Experten über die Schulter schauen, wie sie verdächtige Dateien analysieren und Schädlingen auf die Schliche kommen. Alle in der Serie vorgestellten Malware-Samples stammen aus echten Angriffen und wurden unter anderem mit den hier vorgestellten Methoden entlarvt. Die Geschichten "drumherum" wurden durch reale Vorkommnisse inspiriert ;-)

Der Autor dieser Folge, Sergei Shevchenko, kann mehr als 10 Jahre praktische Erfahrung in der Analyse von Schädlingen vorweisen. Er ist einer der Autoren des automatisierten Bedrohungsanalysesystems ThreatExpert , von dem unter anderem auch die Verhaltenserkennung Threatfire abstammt. Sergei arbeitet als „Leading Malware Analyst“ bei PC Tools in Sydney, Australien. In der nächsten Episode bekommt er es mit einem noch raffinierteren Flash-Exploit zu tun.

Übersicht aller Folgen:

  1. Alarm beim Pizzadienst
  2. Zeig mir das Bild vom Tod
  3. PDF mit Zeitbombe
  4. Angriff der Killervideos
  5. Matrjoschka in Flash

(ju)