Noch in diesem Monat habe ich im Artikel "
Ein Trojaner aus Bern?" die Möglichkeiten einer Programmeinschleusung mittels einem Bildformat besprochen. Heute hat
Heise gemeldet, dass der Antivirenhersteller McAfee einen Proof of Concept Virus entdeckt hat, welcher die Codeeinschleusung in Internet Explorer und Outlook mittels einem animierten Cursor (.ani) erlauben soll. Betroffen von dieser Lücke soll der Internet Explorer 6 & 7 unter einem voll-gepatchten Windows XP SP2 sein. XP SP1 und SP0 seien nicht betroffen. Über Windows Vista schweigt sich McAfee aus, aber falls Vista ebenfalls anfällig wäre, hätten sie das an die grosse Glocke gehängt, nun will McAfee nicht Werbung für ein Betriebssystem machen, das sicherer ist als seine Vorgänger. Schon doof, wenn sich ein Milliardengeschäft auf der Unsicherheit der Betriebssysteme eines Herstellers abstützt.

Microsoft hat bisher noch keinen Patch dagegen, dafür meint McAfee das Outlook ebenfalls davon betroffen sei. Nun ja für Outlook ist die Abhilfe einfach => HTML Emails als Text darstellen. Betreffs dieser Lücke im Internet Explorer rät Heise einen anderen Browser, konkret Opera oder Firefox, zu nutzen. Super Idee Heise, Firmen installieren solange "einfach" "rasch" den Mozilla Firefox auf allen Computern und warten auf den Patch von Microsoft.
Analyse
Ich habe hier eine kurze Analyse, des mir unbekannten und nicht-verfügbaren zukünftigen Virus gemacht. Falls jemand ein Sample sichtet, wäre ich froh wenn er meine Thesen bestätigt.
Eine der ersten Fragen die man sich sicher stellt ist: Warum [, zum Teufel,] muss der Internet Explorer animierte Cursor (*.ani) darstellen können? Die Antwort darauf ist, damit eine Website den verwendeten Cursor individualisieren kann. Dies geht beispielsweise mit folgendem HTML/CSS Snippet:
<head>
...
<style type="text/css">
<!--
body {cursor: url('hand.ani');}
-->
</style>
</head>
Damit wäre auch die Frage der Einschleusung geklärt, denn laut McAfee stürzt der Internet Explorer nicht ab, noch gäbe es sonst irgendwelche Anzeichen, welche unmittelbar auf eine Infektion hindeuten. Man muss also nur eine (bösartige) Internet Seite mit IE ansteuern oder eine (bösartige) HTML Email in Outlook öffnen um damit infiziert zu werden
Wie könnte man also diesem ungepatchten Loch begegnen (ausser gleich auf Firefox oder Opera umzusteigen)?
Die einfachste Idee ist sicherlich den Content Filter anzuweisen, alles Eingehende mit der Endung .ani zu blockieren. Das hat allerdings zwei entscheidende Nachteile: 1.) Dynamische Seiten könnten ebenfalls die Endung .ani haben. 2.) Mein Test hat ergeben das der Internet Explorer beliebige andere Endungen auch als animierten Cursor anzeigt, was nicht verwunderlich ist.
Eine andere Idee meinerseits ist, den animierten Cursor auf Grund seines Headers zu blocken: Auch das .ani Format basiert auf dem Microsoft RIFF Container Format. Eine .ani Datei hat nach der Spezifikation folgenden Header:
typedef struct _RiffAniFile
{
DWORD FileId; / File ID (always "RIFF") /
DWORD Size; / Length of file minus 8 in bytes /
DWORD FormId; / Format ID (always "ACON") /
LISTINFOCHUNK ListInfoChunk; / File and content information /
DISPLAYSUBCHUNK DisplaySubchunk; / Display object /
ANIHEADERSUBCHUNK AniHeader; / Header information /
RATESUBCHUNK RateSubchunk; / Frame rate data /
SEQUENCESUBCHUNK SequenceSubchunk; / Frame sequence data /
LISTFRAMECHUNK ListFrame; / LIST Frame chunk /
} RIFFANIFILE;
Das heisst man kann ein .ani File an folgendem Fileanfang (12 Bytes) zu erkennen: "RIFF" <DWORD (4 Bytes)> "ACON", dargestellt in Hex: 0x52, 0x49, 0x46, 0x46, 0xXX, 0xXX, 0xXX, 0xXX, 0x41, 0x43, 0x4f, 0x4e (0xXX steht für einen Wert von 0x00 bis 0xff). Die angegebene Length in Bytes einer normalen Cursor-datei sollte normalerweise nicht allzu gross sein, wenn man davon ausgeht das sie in Little Endian Byte-Reihenfolge gespeichert ist. Diese Erkennungsmethoden basiert auf der wahrscheinlichen zutreffenden Annahme, das der Virus mindestens diesen Teil des Headers enthält. McAffee nimmt an, dass die neu Entdeckte Lücke, einer bereits geschlossenen .ani Lücke (MS05-002) ähnelt. Da für diese (alte) Lücke ein Exploit in C geschrieben vorliegt, liegt die Vermutung nahe, dass der neue Virus diesen Teil des Headers enthält, denn der alte tat es auch:
unsigned char aniheader[] = "\x52\x49\x46\x46\x9c\x18\x00\x00\x41\x43\x4f\x4e\ ...
Auf jeden Fall kann man nicht einfach alles was bloss mit "RIFF" beginnt blocken, denn dies würde auf diverse Dateitypen zutreffen, darunter auch .avi und .wav. Der FormID Teil muss also auch überprüft werden. Ausserdem sollte man einen Rechner nicht nach diesen Header Kriterien durchsuchen, denn spätestens im Verzeichnis %WINDIR%\Cursors\ würde man fündig werden.
Wer mir einen sinnvollen Einsatz für einen animierten Cursor auf einer Webseite nennen kann bekommt einen Blumenstrauss. 
Kommentare
Mo, 08.10.2007 09:26
Stop your foreclosure now. Our team will help you get rid of [...]
Di, 25.09.2007 21:53
Hi Saubere Arbeit! Jetzt stellt sich nur noch die Frage, [...]