Tatort Internet: Alarm beim Pizzadienst

Seite 3: Sprayer am Werk

Inhaltsverzeichnis

Die ganze Verschleierung hat also nur das Ziel, ein weiteres iFrame einzubinden. Also noch mal von vorn: Datei herunterladen und in den Editor damit. Auch hier findet sich wieder ein langer Block mit kodierten Zeichen:

var z4wurLU = 
"%uA164%u0018%u0000%u408B%u8B30
[ ... ]
%u6944%u6572%u7463%u5F58%u5344";

und diesmal wird das Ganze via unescape() ausgepackt:

var ZqEs8Ui = unescape(z4wurLU);

Doch die kodierten Hex-Werte sehen mir diesmal mehr nach Shellcode aus – also nach Maschinenbefehlen, die man über einen Sicherheitslücke einschleusen und dann ausführen will. Das bestätigt die nächste Zeile

var D4aFw4Q = unescape("%u9" + "090%u9" + "09" + "0");

die mehrfach den Hex-Code 0x90 enthält. Das ist die Sequenz für den x86-Maschinenbefehl "No Operation" – also "Tu nichts", kurz NOP. Sie kommt bei vielen Exploits als Füllmaterial zum Einsatz. Dann wieder eine Schleife:

while (...) D4aFw4Q += D4aFw4Q;

Da darum eine weitere Schleife geschachtelt ist, landen letztlich in der Variablen hdwPhXe mehrere tausend NOP-Befehle. Hab ich's doch geahnt – da bastelt sich einer eine so genannte NOP-Slide – also eine Tu-Nix-Rutsche zusammen.

Durch Heap Spraying wird der Arbeitsspeicher so präpariert, dass man bei einem ungezielten Sprung so gut wie immer auf einer der Tu-Nix-Rutschen landet, die im Shell-Code enden.

Diese Tu-Nix-Rutsche wird gern beim sogenannten Heap Spraying eingesetzt. Wer einen Exploit schreiben will, steht oft vor dem Problem, dass er zwar einen Sprung im regulären Code umbiegen kann, aber nicht so recht weiß, wohin er springen soll. Denn an welcher Speicheradresse der Exploit-Code gelandet ist, kann man meist nicht vorhersagen.

Deshalb überschreibt er dann einfach den kompletten Speicher mit vielen dieser langen Tu-Nix-Rutschen, an deren Ende der gewünschte Code steht. Dann lässt er das Programm mit der Gewissheit ins Blaue springen, dass es ziemlich sicher eine der Rutschen trifft, ein paar tausend Mal "Nix" tut und dann schließlich beim eingeschleusten Code landet.

Und hier kommt auch schon das Heap Spraying:

var fa5iZhc = new Array();
for (IF7Dfmj = 0; IF7Dfmj < 350; IF7Dfmj++ ){
fa5iZhc[IF7Dfmj] = hdwPhXe + ZqEs8Ui
}

Das legt im Speicher 350 dieser Rutschen an, jede mit ein paar tausend NOPs und dann dem Shell-Code aus ZqEs8Ui. Die Bühne ist bereit für den Hauptdarsteller! Und da kommt er auch schon:

var bC44pzT = document.createElement('object');
...
bC44pzT.data = 'dx_ds.gif';
bC44pzT.classid = 'clsid:0955AC62-BF2E- 4CBA-A2B9-A63F772D46CF';

Die Internetsuche liefert für die Class-ID 0955AC62-BF2E-4CBA-A2B9-A63F772D46CF als einen der ersten Treffer: heise Security -- Webseiten infizieren Windows-PCs über neue DirectShow-Lücke