ZeroP
Juni 2009
Download PDF (169.46Kb) (Du musst im Forum registriert sein)Was sind debug codes und wo liegt die Gefahr?
Autor: 0p_Dieses Werk ist unter einem Creative Commons Namensnennung-Keine kommerzielle Nutzung-Keine Bearbeitung 3.0 Deutschland Lizenzvertrag lizenziert. Um die Lizenz anzusehen, gehen Sie bitte zu http://creativecommons.org/licenses/by-nc-nd/3.0/de/ oder schicken Sie einen Brief an Creative Commons, 171 Second Street, Suite 300, San Francisco, California 94105, USA.
Dieses Tutorial zeigt die Gefahr von DEBUG.EXE, wobei Grundkenntnisse in Assembler benötigt werden.
Debug.exe, ein von Microsoft mitgelieferter Assembler und Disassembler, ist in allen Windows Versionen vorhanden und befindet sich meist in c:\windows\command . Es ist ein Rest aus der MS-DOS Zeit und diente zum Debuggen von Software. Durch die Eingabe von "?" listet DEBUG.exe in der Konsole alle Befehle auf:
Wie Sie sehen können, ist DEBUG wirklich ein kleiner, aber an Funktionen vollständiger Assembler und Disassembler. (Bitte benutzen Sie den "schreiben"-Befehl nicht nach dem try n'fail-Motto, da sinnlose Eingriffe in den Arbeitsspeicher selten gute Folgen haben. ) Bevor wir nun näher auf die debug codes eingehen, gebe ich noch eine kleine Einführung in die Arbeit- und Funktionsweise von DEBUG.EXE. Natürlich würde ein Handbuch über DEBUG ganze Bücher füllen, weshalb Sie sich die Verwendung von debug.exe gesondert beibringen sollten. Als Zielprogramm nehme ich das bekannte Hallo-Welt-Programm.
Hier mal der Assembler-Code:
Im Hexeditor sieht das Programm so aus:
Das Programm ist nur 21 Byte groß und zeigt nur "Hallo Welt!" an und beendet sich. Wer im Hexcode lesen schon ein wenig geübt ist, erkennt die Folge "CD 21 CD 20" bestimmt schon als "int 21h" und "int 20h".
Im Quellcode oben wird vielen schon das "org 100h" aufgefallen sein, welche auf eine COM-Datei hinweist (100h muss für das PSP Platz gelassen werden). Für was steht eigentlich COM? Richtig, für Copy Of Memory. Die Datei wird als Kopie direkt in den Arbeitsspeicher geladen mit dem Program Segment Prefix (PSP) voran. Wichtig für uns ist, dass COM-Dateien nur aus hexadezimalen "operation codes" bestehen.
So sieht das disassemblierte Programm aus. Hier können Sie noch einmal schön sehen, wie der Assemblercode zu einer COM-Datei assembliert wurde. Die meisten Assemblerinstruktionen kennen Sie bereits von dem Quellcode.
Da DEBUG auch ein Assembler ist, können Sie den Assemblercode auch von DEBUG assemblieren lassen.
Debug-Backrezept:
Sie sehen, dass ich einmal den Befehl "g" benutzt habe. Dadurch starte ich das Programm und wie man am Screenshot sieht, war es erfolgreich.
Wir haben nun ein ein Hallo-Welt Programm erstellt mit DEBUG, aber was soll das ganze? Debug codes sind in Batch verfasste automatisierte DEBUG-Anweisungen. Also kann man mit Batch mit Hilfe von debug codes sich ein Hallo-Welt-Programm zusammenbauen lassen. Schlussfolgerung?
Wir haben ja schon gelernt, das Batch für Automatisierungszwecke entwickelt wurde. Nun basteln wir uns eine Automatisierung:
Durch das Ausführen wird ein lauffähiges Hallo-Welt-Programm erzeugt. In diesem Skript wird jedoch statt dem "assemble"-Befehl der "enter"-Befehl benutzt. Die Anzahl der zu schreibenden Bytes muss hexadezimal angegeben werden. In unserem Beispiel die 15h (21 dezimal). Auf diese Weise (hier liegt auch die Gefahr)kann auch Schadcode eingeschleust werden.
Die Vorgehensweise ist immer die selbe:
Um jetzt mal Butter bei die Fische zu geben, nehme ich den Quellcode eines Virus, der alle .COM-Datei im selben Verzeichnis infiziert.
Diesen Quellcode assemblieren wir und schauen ihn uns an:
Erschreckend an diesem Beispiel ist, dass dieses Virus nur 46 Bytes groß ist, unser Hallo-Welt-Programm hatte 21 Bytes. Mann kann diesen Virus noch extrem an Größe trimmen,sodass er sogar nur 24 Byte groß ist.(Dabei verliert er aber die Eigenschaft, alle Dateien im Verzeichnis zu infizieren).
Jetzt passen wir das "Dropper-Skript" an.
Durch das Ausführen erhalten Sie nun eine Datei namens "drop.com". Diese enthält den funktionstüchtigen Virus. Sie können nun gerne den Virus in einen Ordner mit dem Hallo-Welt-Programm kopieren und den Virus ausführen. Sie werden sehen, dass das Hallo-Welt-Programm infiziert wird.
Wenn Sie nun in einem Forum wieder lesen,es sei nicht möglich "richtige" Viren mit Batch zu schreiben, dann können sie dies nun widerlegen, denn indirekt ist dies durch debug codes möglich. Ich hoffe Sie konnten etwas aus diesem Tutorial mitnehmen. Sicherlich möchten Sie jetzt noch wissen, wie man sich gegen solche Viren schützt, die ihren Schadcode per DEBUG "droppen". Benennen Sie einfach DEBUG.EXE um oder löschen Sie es.
Danken möchte ich an dieser Stelle folgenden Personen:
MfG 0p_
[zurück zum Index] [Kommentare (0)]