Anti-Bait Tutorial by SnakeByte [SnakeByte@kryptocrew.de] Here we go again... ;) Diesmal ein etwas kürzeres und mehr theoretisches Tutorial, da ich im Moment recht viel zu tun hab.. :( Ok worum geht es hier in diesem Tutor ? Um Bait Files.. Bait Files sind Köder, mit denen die Anti-Virus Programmierer einen Virus testen. Sie haben hunderte dieser Dateien auf einem Rechner und lassen auf diesem den neu gefundenen Virus frei. Dann wird überprüft, welche Dateitypen infiziert sind, und ob der Virus auch unter einem anderen OS lauffähig ist (Dos/Win31/Win95/WinNT..) Anhand der Masse an infizierten Dateien, können sie nun schon einiges feststellen.. Art des Virus (Com,Exe,PE..), etwas über die Verbreitungstechnik des Virus, die Länge um die sich eine infizierte Datei vergrößert, ob der Virus polymorph oder nur verschlüsselt ist..usw Auch werden dann diese Dateien verwendet, um dann, wenn ein Suchstring für den Virus gefunden ist den Virenscanner zu teste, da auch alle infizierten Dateien entdeckt und der Virus in ihnen entfernt werden soll. Wenn der Scanner nicht alle findet wär es ja auch unsinnig, da der PC unter normalen Umständen nach einer Woche wieder komplett infiziert wäre. Was können wir dagegen machen ? ...Gute Frage, ich werde versuchen, sie in diesem Tutor zu beantworten. Früher versuchte man Eigenschaften in den Virus zu programmieren, die verhindern, das er allzuviele Dateien auf einmal infiziert. Dies wiederspricht aber dem, das ein Virus sich möglichst schnell verbreiten soll, damit er möglichst lange irgendwo überlebt, bevor die AV's einen Scanner entwickelt haben. Wenn ein Virus erst 1-2 mal um die Welt gegangen ist wird er immer wieder irgendwo auftreten, da immer irgendwo verseuchte Dateien rumschwirren... (hab das letztens selber erfahren müssen *g*) Dann kam man dahinter, das Bait Dateien gewisse Eigenschaften aufweisen, die sie von normalen Programmen unterscheidet. Diese Eigenschaften überprüft man vor der Infection und lässt dann die Datei aus, wenn sie wie eine Bait-Datei erscheit. Die erste, und am simpelsten zu überprüfende Eigenschaft ist die Größe. Da hunderte von diesen Bait Files auf einen Rechner passen müssen, sind sie relativ klein. Hier eine Liste, ab welcher Dateigröße man Dateien infizieren sollte, um Bait Dateien auszuschließen, aber normale Programme nicht auszulassen,.. COM -- 10 KB Dos-EXE -- 20 KB PE-EXE -- 50 KB Dies sind natürlich nur ungefähre Richtwerte,.. schaut einfach mal bei euch auf dem Rechner nach, wie groß die kleinste Datei der Sorte so ist. Eine weitere Eigenschaft ist das Erstellungsdatum. Bait Files werden normalerweise mit einem Bait-Generator kurz vor dem Testen erstellt. Also versucht man Dateien zu vermeiden, deren Erstellungsdatum nur 2-3 Tage zurück liegt. Die Dateinamen der Baits sind auch interessant, oftmals enthalten sie Ziffern, was normalerweise nicht so häufig ist. Einfach überprüfen, ob eine Zahl im Dateinamen vorkommt, und wenn ja die Datei nicht infizieren. Da die Köder mit Generatoren erstellt werden, tragen sie oftmals fortlaufende Dateinamen. aaaa.com, aaab.com, aaac.com ... Wenn man den letzten gefundenen Dateinamen speichert und dann die letzte Stelle erhöht (Übertrag auf andere Stellen nicht vergessen) und der neue Dateiname mit dem ermittelten identisch ist, sollte man die Datei besser auch nicht infizieren. Dos-EXE Köderdateien haben oftmals keinen Stack, was bei normalen Programmen so gut wie niemals vorkommt. Deshalb einfach mal checken, ob der Stack vorhanden ist, wenn nicht.. ok ihr wisst was dann zu tun ist *g* Die letzte und aufwendigste Möglichkeit ist die Emulation, bzw eine Überprüfung dessen, was die Bait-Datei macht. Normalerweise ist der größte Teil der Daten in einer Bait Datei Daten und nicht Code, dass bedeutet, das sie recht schnell das Programm beenden. Also sucht man den Anfangspunkt des Codes, bei COM Dateien am Dateistart und bei EXE-Dateien steht er im Header. Und überprüft die ersten paar Bytes auf Sachen wie ein 'int 20h' oder mov ah,4ch int 21h Dies sind die Befehle, mit denen die meisten Programme beendet werden. Sind diese dort am Start vorhanden, wird das Programm nur ein paar fake-Operationen (nop *g*) ausführen und dann beenden. Ok, das wars von mir zum Thema Anti-Bait coding.. cu soon.. SnakeByte