Autor Beitrag
ShadowCaster Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 312



BeitragVerfasst: Mo 28.04.03 10:51 
Naja Leute, ich muss euch was interessantes berichten. Hier eine kleine Story von mir die ganz gut zu dem Thema passt:

Am WE ist mir folgendes passiert. Also ich hab mir doch so 64-k Demos von farb-rausch.com runtergeladen. Die sind echt super geil und ich bin auch ein fan davon (blabla ... hehe). Also da ist mir am Freitag abend so um 19:30 Uhr letzter Woche aufgefallen dass ein Demo kein Hintergrundbild mehr hatte (war so ein playerprogramm für Synthiedateien (dieses Demo heißt glaub ich BrullWurfel)). Hab dann in den Explorer geschaut und gesehen, dass meine 64k - Exe plötzlich 211 k groß war. ... *g* ich gleich gedacht. Da ist ein Virus drinnen! Und so war es auch. Immer mehr Dateien wuchsen um 177kb.

Also hab ich glein ein neues Update vom Virenscanner draufgehauen. Hat er mir gesagt: 16 Dateien mit dem Virus "pinfi" infiziert. Naja ich hab in den Taskmanager geschaut (habe windowsXP) und kein Prozess war sichtbar, schon komisch.

Ok, dann hab ich meinen Virenscanner die infizierten Dateien bereinigen lassen. So und jetzt kommt die Härte. Nach dem Systemneustart schau ich in die Verzeichnisse der infizierten Dateien und mein Virenscanner hat folgendes gemacht: Er hat alle infizierten Dateien kopiert und in infected umbenannt und ins quarantäne-Verzeichnis von sich geschoben, mehr nicht. Er hat nicht die infizierten Dateien gelöscht wie er sollte oder wie er gesagt hat. Dann hab ich ihn nochmal scannen lassen und 260 Dateien waren infiziert (nur Exe-Dateien)

Jede Exe wuchs um 177624-177690 Bytes. Hab mir dann mal den Hexeditor genommen und mir das mal angeschaut. In jeder Exe wo der infizierte Code drinnen war, sah der infizierte Code etwas anders aus. Hab Windows neu installiert und nach der Installation war er wieder drauf. Ich depp hatte wohl ne infizierte Datei ausgeführt. Und mein Virenscanner kannte den Virus plötzlich nicht mehr. Konnte nurnoch sehen wie immer mehr Dateien infiziert wurden und konnte nix machen. Sogar der Virenscanner selbst war infiziert. Ich kann gar nicht verstehen wie Norman Antivirus 5.5 Testsieger in der PC-Welt 2002 wurde. Das ist mir rätselhaft. Der Virenscanner sollte sich selbst doch als erstes checken ob er verändert wurde (also die eigenen Exe-Dateien). Ganz schön dumm von den Herstellern. Das müssen irgendwelche Anfänger gewesen sein, die den Normen-Virenscanner programmiert haben, irgendwelche Daus (MAN BIN ICH SAUER!!! :x ) Naja, habe mir ein Analyseprogramm in Delphi geschrieben und das hat folgendes zu Tage gebracht:

----------------------------------------------------------
Dateiwachstum der infizierten Dateien: 177624-177690 Byte
Virus infiziert Exe- und Scr-Dateien

Der infizierte Code der Dateien benutzt die Winapi-Funktion LoadLibraryA und GetProcAddress (wohl um eine Dll oder einen Prozess im Arbeitsspeicher zu erzeugen)

- Virus ist als Prozess unter XP im Taskmanager nicht sichtbar und resistent (das ist also der beste Beweis dafür dass es Anwendungen unter Windows gibt, deren Prozess nicht sichtbar ist)

- Infiziert offenbar nicht den Bootsektor des Systems (Virenscanner hat nur Exe- und Scr - Files entdeckt).

- Virus verschlüsselt sich mit einem 4 Byte langen XOR-Schlüssel

- Virus verändert PE-Header von Exe-Dateien und beschädigt eine Exe sogut wie nicht. Infizierter Code wird beim Start der Exe ausgeführt, nicht beim Beenden.

------------------------------------------------------------
Die Software von mir geschrieben extrahiert nur die infizierten Adressbereiche einer Exe und erstellt einen Logfile der Bereiche. Das hat folgende Details ans Licht gebracht.

Der PE-Header der Exe wird mit einer Größenänderung der Datei und einer Jump-Adresse an den Beginn eines Codes in der Mitte der Datei versehen. Dort steht wahrscheinlich ein Entschlüsselungscode mit einem Random-Schlüssel, der den Hauptteil des infizierten Virencodes verschlüsselt (alle infizierten Dateien sahen leicht anders aus). Der Schlüssel ist offenbar 4 Byte lang und wird mit XOR über den Viruscode gelegt. Der Entschlüsselungsteil der Exe ist ca. 20 Byte lang und der Code der Exe der vorher an dieser Stelle stand ist zerstört. Das führt dazu, dass einige Exe-Dateien abstürzen (beim Start). Von dem Entschlüsselungsteil folgt eine Jumpadresse an den eigentlich infizierten Teil des Viruses. Ich bin mit einem Hexeditor hergegangen und hab diesen Code mit Nullen überschrieben und beim Start der Exe kam dann: "Prozedureinstiegspunkt nicht gefunden". Genau das bestätigte, dass der Code am Anfang der Datei ausgeführt wurde. Charakteristisch für den Virus ist, dass der eigentliche Virencode am Ende der datei, der angefügt wird immer mit Hex 90 anfängt. Ab da variert der Code dank der Verschlüsselung in jeder infizierten Datei. Es wurden Dateien auch infiziert, obwohl der Explorer und sonstige Exe-Files im Arbeitsspeicher nicht infiziert waren und wenn ich keine Exe-Datei ausgeführt hatte. Das deutet auf einen Prozess im Arbeitsspeicher hin. Leider sind die geänderten Adressbereiche in den Exe-Dateien ziemlich unterschiedlich. Das macht die Erkennung des Viruses schwer.

Folgendes ist mir noch nicht gelungen: den Schlüssel zum Entschlüsseln des Virencodes rauszufinden, da der Virencode in jeder Exe anders verschlüsselt wird. Einen Virenscanner dafür hab ich noch nicht. Progge mir aber heute abend einen, und zwar einen der mir ne Sicherung aller Exe-Dateien vom System macht und dann nach jedem Scan des Systems schaut ob neue Dateien mit dem Virus infiziert worden sind und diese wiederherstellt. Allerdings muss ich noch herausfinden wie ich den Virenprozess beenden kann, vielleicht durch sofortigen Neustart des Systems nachdem alle infizierten Dateien gelöscht und wiederherstellt wurden, damit der versteckte Prozess keine Chance mehr hat, eine Datei zu infizieren.

Nach berichten auf der Norman-Antivirenhomepage hängt sich der Virus an den Explorer-Prozess, infiziert explorer.exe jedoch nicht. Aber deshalb ist er unsichtbar. ich müsste also den Explorer neu starten.
------------------------------------------

Offizielle Berichte des Viruses:

www.harmonysecurity.com/kungfoo.html (LoadLibraryA und GetProcAddress)
securityresponse.sym.../data/w32.pinfi.html (Abhandlung des Viruses)
Motzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Mo 28.04.03 11:57 
ShadowCaster hat folgendes geschrieben:
Nach berichten auf der Norman-Antivirenhomepage hängt sich der Virus an den Explorer-Prozess, infiziert explorer.exe jedoch nicht. Aber deshalb ist er unsichtbar. ich müsste also den Explorer neu starten.

Du schreibst es ja selbst.. der Virus hängt sich an exe-Dateien an und läuft damit in deren Prozessraum und stellt keinen selbstständigen Prozess dar..!

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!
ShadowCaster Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 312



BeitragVerfasst: Mo 28.04.03 12:13 
Doch, er stellt einen stelbständigen Prozess dar. Er extrahiert eine Datei ins Temp-Verzeichnis vom System und erstellt einen Registryschlüssel. Der explorer.exe wird nicht infiziert, jedoch hängt sich der Virus über den Kernel an den Explorer im Arbeitsspeicher. Insofern ist der Prozess nicht sichtbar.
Motzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Mo 28.04.03 12:22 
Gut.. wenn ich über CreateRemoteThread einen Thread in einem Fremden Prozess erstelle und dort meine Aktionen ausführe so ist dieser auch "versteckt", allerdings würde ich das nicht als "saubere" Vorgehensweise betrachten!

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!
ShadowCaster Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 312



BeitragVerfasst: Mo 28.04.03 12:26 
Naja, soweit ich mir den infizierten Code angeschaut habe, ist der schon von einem Profi programmiert worden. Jede Exe die infiziert wurde, sieht anders aus. Der benutzt einen ganz einfachen Schlüssel zur Verschlüsselung. 2-3 Jumpbefehle. Insgesamt ändert der Virus 50-200 Bytes in der infizierten Exe, mehr nicht. Dann kopiert er sich mit einem neuen schlüssel ans Ende der Datei und das wars.
Motzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Mo 28.04.03 12:44 
Naja.. die Verschlüsselung selbst sollte kein Problem darstellen (XOR ist absolut simpel und kann auch einfach geknackt werden!) Den Entry-Point im PE Header kann man eigentlich auch recht einfach ändern und ein Jump an den Original-Entry-Point nachdem der Virus ausgeführt wurde ist eigentlich auch simpel.

Aber das ganze scheint trotzdem recht interessant.. kannst du mal von einer Infizierten Exe den angehängten Teil rausschneiden und mir schicken? Würd mir das gern mal anschaun.. vielleicht kann ich das Ding auch entschlüsseln...

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!
ShadowCaster Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 312



BeitragVerfasst: Mo 28.04.03 12:55 
ja klar, das kann ich gern machen.. vielleicht morgen. ich hab auch schon dran gedacht, den Virus zu entschlüsseln. Also ich schick dir dann eine infizierte und eine nicht infizierte Exe-Datei und die beiden Dateien, die mein Programm kreirt hat, was alles vom Virus verändert wurde. (allerdings variieren die Änderungen in jeder Datei, so dass man nicht sagen kann: Die und die Adresse wieder auf den Originalpunkt setzen). Ich würde sagen, das Passwort sei "Pinfi"... werd dir morgen mal ein Zip damit schicken. Aber ich werde die Exe-Dateien in Dat-dateien umbenennen, damit du sie nicht versehentlich ausführst.

Der Virus benutzt das Temp-Verzeichnis von Windows um sich zu reproduzieren. dort erstellt er eine Temp-datei (die Dll oder exe). Dann erstellt er noch einen Registry-Eintrag. Kannst du alles in der offiziellen Abhandlung nachlesen. (hab ich oben gepostet)
Motzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Mo 28.04.03 13:11 
ShadowCaster hat folgendes geschrieben:
ja klar, das kann ich gern machen.. vielleicht morgen. ich hab auch schon dran gedacht, den Virus zu entschlüsseln. Also ich schick dir dann eine infizierte und eine nicht infizierte Exe-Datei und die beiden Dateien, die mein Programm kreirt hat, was alles vom Virus verändert wurde. (allerdings variieren die Änderungen in jeder Datei, so dass man nicht sagen kann: Die und die Adresse wieder auf den Originalpunkt setzen). Ich würde sagen, das Passwort sei "Pinfi"... werd dir morgen mal ein Zip damit schicken. Aber ich werde die Exe-Dateien in Dat-dateien umbenennen, damit du sie nicht versehentlich ausführst.

Dankeschön..!
Zitat:
Der Virus benutzt das Temp-Verzeichnis von Windows um sich zu reproduzieren. dort erstellt er eine Temp-datei (die Dll oder exe). Dann erstellt er noch einen Registry-Eintrag. Kannst du alles in der offiziellen Abhandlung nachlesen. (hab ich oben gepostet)

Jo, hab ich schon gelesen... falls du die Datei die er im Temp-Verzeichnis erstellt auch hast bitte auch schicken..!

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!
ShadowCaster Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 312



BeitragVerfasst: Mo 28.04.03 13:30 
logo, werd ich machen. *G*... mein System ist immer noch infiziert aber scheiß egal. Hab meine Daten (keine Exe-Dateien) gesichert.

Sag hättest du bock, an einem Projekt für einen Virenscanner zu arbeiten? Wäre doch ganz witzig ;)
ShadowCaster Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 312



BeitragVerfasst: Mo 28.04.03 13:35 
Noch ein Problem bei den ADressangaben in der EXE im PE-header: Also da werden Lowbyte und highbyte vertauscht. Wie sieht das jetzt aus wenn ich 11223344 hexadezimal abspeicher? Das ist das Problem. Denn die im PE-header veränderten Adressen sind alle utopische werde. Ich schätze, da sind die Low- und Highbytes vertauscht aber wie sieht das jetzt im Hex-Stream aus?
Motzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Mo 28.04.03 14:11 
Beim Speichern werden die 4 Bytes in umgekehrter Reihenfolge gespeichert. zb:
1 normal = 00 00 00 01
1 gespeichert = 01 00 00 00

oder
123456789 normal = 07 5B CD 15
123456789 gespeichert = 15 CD 5B 07

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!
ShadowCaster Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 312



BeitragVerfasst: Mo 28.04.03 14:54 
und wie wird hexadezimal "11223344" gespeichert?
Motzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Mo 28.04.03 15:12 
11223344 normal = 00 AB 41 30 -> gespeichert = 30 41 AB 00

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!
ShadowCaster Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 312



BeitragVerfasst: Mo 28.04.03 15:18 
ich rede von hexadezimal 11223344 also je ein HAlbbyte

also wenn das umgekehrt gespeichert wird, dann müsste das anschließend 44332211 sein?
ShadowCaster Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 312



BeitragVerfasst: Mo 28.04.03 15:28 
ok, habs geblickt.. weiß jetzt auch woher ich den virus hab. War mein Verdacht richtig. Ein bekannter hat mri ein Prog geschickt und das war von einer Lanparty versaut worden.

Werd mich mal heute abend an die Entschlüsselung des infizierten Codes machen. Sollte nicht so schwer sein. Der Schlüssel scheint ja mit XOR drüber gelegt zu werden. Es sieht aus als wäre die Datei eine ausführbare und asl wären am Ende lauter 0000000-en und verschlüsselt sehen die z.B. so aus. 03FA00DA 03FA00DA 03FA00DA...

Ich schätze, so kann ich an den Schlüssel kommen. In Exe-Dateien oder Dll's ist es meistens so, dass noch eine Reihe von Nullen am Ende der Datei frei sind. Ich sag morgen bescheid, wie weit ich bin.
Motzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Mo 28.04.03 17:22 
Das mit dem entschlüsseln dürfte nicht so ein Problem sein... XOR-Verschlüsselung ist sehr leicht zu knacken und ein 4Byte Schlüssel ist extrem kurz!

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!
ShadowCaster Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 312



BeitragVerfasst: Di 29.04.03 09:40 
Hi Motzi, hi all,

ich hab den Virus gestern abend entschlüsselt. Man muss nur die letzten 4 Byte der Exe-Datei nehmen und mit XOR über die Datei legen. War sehr simple und klappt immer. So wie der Header des Teils aussieht, handelt es sich dabei um eine Exe (172kb groß) aber scheint nicht ausführbar zu sein. Vielleicht ist es auch eine Dll.

Jetzt mal ein paar Detailinformationen über den Pinfi-Virus:

- er ist in c++ programmiert
- er nutzt UDP-Komponenten um sich übers Netzwerk zu zerstreuen
die infizierte Exe besteht aus folgenden Teilen:
- dem veränderten PE-Header
- kurz hinter dem PE-Header wird noch was gändert
- mitten in der exe werden ein paar Sachen geändert (vermutlich ist das der Entschlüsselungscode, der den Prozess in den Ram lädt.
- Am Ende der exe wird ein verschlüsselter Code angefügt, der immer mit hexadezimal 90 beginnt. Ein Teil des Codes am Anfang des verschlüsselten Teils ist unverschlüsselt. Er beinhaltet ein paar Funktionen (LoadLibraryA, GetProcAddress). vielleicht steht hier auch der Entschlüsselungscode und die Funktion dafür, damit es nicht auffällt.

So wie der Virus aussieht, ist der nicht mal ein bisschen in assembler geschrieben..., war also kein Profi der den programmiert hat. 177 k sind echt viel.

Achja, mir ist es jetzt schonmal möglich, einen Virenscanner zu schreiben ;) und ich muss nurnoch die PE-Header für Exe-Dateien haben und dann auf ans werk und ich schreib ein Prog, was das System wieder cleaned. Ich muss nur ein Prog oder eine Prozedur haben, was den Explorer-Prozess beenden kann(hart terminieren). :wink:
Motzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Di 29.04.03 10:05 
Der Hexcode 90 entspricht dem ASM-Befehl NOP = No Operation
Wär interessant welche Dll mit LoadLibrary geladen wird und von welcher Funktion die Adresse gesucht wird.
Den Explorer kann man recht leicht killen, einfach mit OpenProcess ein Process-Handle besorgen und mit TerminateProcess abschießen. Falls OpenProcess kein gültiges Handle zurückliefert (Fehlermeldung = Kein Zugriff) musst du erst noch das SeDebugPrivilege aktivieren.

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!
ShadowCaster Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 312



BeitragVerfasst: Di 29.04.03 10:09 
Ok, ich werd mir mal die Infos holen. Dank des viruses hab ich derzeit kein Netz daheim (no Internet). Werd dir den Virus schicken sobald daheim alles wieder online ist. Das Problem ist, wenn ich die hexadezimale 90 mit 00 überschreibe, dann bringt mir das Programm die Meldung "Prozedureinstiegspunkt nicht gefunden". Komisch. :(
Motzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Di 29.04.03 10:26 
ShadowCaster hat folgendes geschrieben:
Das Problem ist, wenn ich die hexadezimale 90 mit 00 überschreibe, dann bringt mir das Programm die Meldung "Prozedureinstiegspunkt nicht gefunden". Komisch. :(

Vielleicht ist es in diesem Fall auch einfach ein Teil einer Jump-Adresse...

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!