| (In)security allgemein Sicherheit, Anonymität im Netz. Schutz und Maßnahmen. Prävention und Konzepte. Sicherheitsarchitekturen allgemein und auf der Netzwerkebene. |
Diskussion: Virensignaturen im Forum (In)security allgemein, in der Kategorie Security Area; Anzeige Hallo ! Ich hab mal ein paar Fragen zu Virensignaturen bzw. der Funktionsweise von Virenscannern. (siehe Wikipedia Virensignaturen ) ...
![]() |
| | #1 (permalink) | |
| Registriert seit: 09.12.05 ![]() Likes: 0 | Anzeige Hallo ! Ich hab mal ein paar Fragen zu Virensignaturen bzw. der Funktionsweise von Virenscannern. (siehe Wikipedia Virensignaturen) Zunächst also ein kleines Zitat auf das ich mich beziehen möchte: Zitat:
Meine Frage dazu ist wie diese Regelmäßigen Muster aussehen. Angenommen ich habe hier den Quellcode eines Virus der problemlos von meinem Virenscanner erkannt wird. Reicht es dann aus wenn ich sämtliche Bezeichner von sämtlichen Funktionen, Prozeduren, Variablen & Konstanten verändere, sodass dies vom Virenscanner nicht mehr erkannt wird, da es ja im wesentlichen eine Mutation ist. Allerdings sieht der Virenscanner ja den Quellcode der exe nicht - sondern tut das vielleicht auf Assembly-Ebene (ist jetzt nur ne Mutmaßung). Wirkt sich diese Veränderung auch darauf aus, oder bleiben die grundlegenden Verhaltensmuster immer noch erkennbar ? Ich nehme einfach mal an das meine Idee zu einfach wäre, darum hier mal gleich die Frage: Was macht eine nicht erkennbare Mutation aus ? (Das könnte man vielleicht gut an Pseudo-Code erklären...) Naja ich hoffe/bin mir sicher hier gibt es einige die mehr darüber wissen. Bis dann, freue mich auf Antworten. | |
| | |
| | #2 (permalink) | |
| Moderator ![]() Registriert seit: 20.07.05 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 202 | Code: Reicht es dann aus wenn ich sämtliche Bezeichner von sämtlichen Funktionen, Prozeduren, Variablen & Konstanten verändere, sodass dies vom Virenscanner nicht mehr erkannt wird, da es ja im wesentlichen eine Mutation ist. http://wiki.hackerboard.de/index.php/Kompiler Zu den Mustern: manche Routinen sind "Plicht" und immer gleich, deswegen kommen sie 1) auch in anderer Malware vor und 2)werden sie bei der Mutation nicht verändert (z.B der "Mutieralgoritmus" an sich - hängt aber von dem Programmierer ab) . Man versucht also möglichst viele solche einzigartigen Routingen zu "isolieren", die bei jeder Infektion gleich bleiben um eine Infektion zuverlässig erkennen zu können. Kommen dann in einer Datei genug solcher Muster vor (Schwellwert ? k.A ob das benutzt wird, da die meisten AVs leider nicht Open Source sind Mit Mutation ist imho auch eher gemeint, dass das Virus ohne eine neukompilierung (eher: assemblierung Und da haben Virenscanner immer noch ihre Probleme: http://www.heise.de/newsticker/meldung/72459 http://www.heise.de/security/news/fo...forum_id=96831 Wobei die "Definition" dieses Begriffs nicht eindeutig ist - am häufigsten steckt aber hinter einer "Mutation" eine Änderung im Quelltext und die nachfolgende Neukompiliereung/Assemblierung. Zitat:
Als Beispiel: es gab mal einen Virus, welcher sich selbst mit irgendeinem Verfahren verschlüsselte (Algo kenne ich nicht mehr, könnte aber irgendwas "offizielles" mit einem sehr schwachem Schlüssel gewesen sein)).Und zwar mit einem Zufallspasswort und ohne es zu speichern. Beim Start entschlüsselte er sich (per Bruteforce) selbst. Das ganze war so gewählt, dass es nur paar Sekunden dauerte. Es ist zwar keine "wirkliche" Mutation", allerdings wird der größte Teil des Codes dadurch praktisch für die Signaturenerstellung nicht zu erfassen, so dass sich der Autor nur noch um die Mutation des Bruteforce-Codes kümmern musste (und das sind gar nicht so viele Befehle, wenn man es geschickt anstellt). Ein anderer Ansatzt für Mutation: Junkkode. Es gibt bestimmte Befehle, die nichts machen, z.B XCHG EAX,EAX (vertausche Register mit sich selbst), einfache Sprünge, NOP (No opreations) und eigentlich eine Reihe mehr. Wenn man diese großzügig im eigenen Code verteilt, kann man bei der Mutation sie einfach vertauschen oder durch andere ersetzten - da sich nichts am Programmflüss ändert. Dadurch ändert sie die Bytefolge und letzendlich die Signatur. Die Kust hier ist es, die relevanten Codeblöcke möglichst klein zu halten Soviel ist mir zumindest eingefallen
__________________ Noch mal, für alle Pseudo-Geeks: 1+1=0. -> 10 wäre Überlauf! Selig, wer nichts zu sagen hat und trotzdem schweigt. | |
| | |
![]() |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |