Manche Leute sammeln Briefmarken, Andere sammeln wie ich Viren‐Samples. Und genau wie die Markensammler verträumt mit einem Vergrösserungsglas vor dem Album sitzen, sitze ich mit einem Debugger über meinen Samples, wobei ich auf gleichbleibende Routinen gestossen bin welche vereinzelt in verschiedenen Variationen auftreten.

Hier ein Beispiel, welches mich einige Zeit beschäftigt hielt, da ich es aus Zufall im Kommunikationsprogramm Skype entdeckte:

MOV EAX, offser str_Siwvid ; \\\\. \\Siwvid
call test_driver
test al, al
————–
call EnumDeviceDrivers
————–
Call GetDeviceDriverBaseNameA
————–
CMP EAX, ‘ntic’
jnz next_
cmp ebx, ‘e.sy’
jnz next_
cmp ecx ‘s\x00\x00\x00’
jnz next_

Diese Routine wird direkt nach dem Start ausgeführt und zielt darauf ab, den SoftICE Treiber zu finden um im Bedarfsfall nicht wie erwartet normal zu funktionieren. Die Grundidee dahinter ist es, bei einem Debuggerlauf keine korrekten Informationen preis zu geben. Auf die gleiche Art und Weise lassen sich nicht nur Debugger sondern auch virtuelle Maschinen wie VMware anhand ihrer Treiber erkennen. Doch wie kommt dieser Code in mein Skype?

Mein erster Gedanke war, dass sich mein Skype einen Virus eingefangen hatte – also begann ich mit einer Überprüfung und begann das File zu lesen bis es mir wie Schuppen von den Augen fiel:

Die Entwickler von Skype hatten einmal Kazaa herausgebracht, welches von findigen Leuten zerlegt wurde und als Kazaa‐Lite ohne Spyware ins Netz gebracht wurde. Scheinbar hatten sie ihre Lektion gelernt und ein Hindernis eingebaut um das Abkupfern der Applilation zu unterbinden. Doch dies ist nicht der einzige Test um das Debuggen zu verhindern welcher eingebaut wurde. Somit lasse ich von Skype ab und wende mich wieder meinen Viren zu.

Vorheriger Beitrag Nächster Beitrag