Hallo Fragewurm,
Also ich weiß das man eine Datei hochlädt, sie dann überprüft
wird von den Scannern und anschließend wir ein Ergebnis
angezeigt. Aber mich interessiert, wie es gemacht wird, das
gefährliche Sachen nicht dort alles larmlegen würde und ob
alle Scanner auf einem Server sind und wie die Scanner
angewiesen werden die Datei zu scannen usw.
Eine Datei ist eine Sammlung von Bits und macht von selbst mal gar nichts !
Der Befehl FORMAT, welcher die ganze Festplatte löscht, liegt ja auch bei dir auf der Festplatte rum und macht da gar nichts !
Erst wenn eine Datei in den Programmspeicher geladen und ausgeführt wird, kann sie Schaden anrichten.
Praktisch muss also eine verseuchte Datei erst als Programm gestartet werden.
z.B. Textdokumente waren ursprünglich sicher. Erst als man anfing Macros so zu gestalten, dass man damit richtige Programme schreiben konnte und diese schon automatisch beim laden gestartet werden, hat man der ganzen Malware Tür und Tor geöffnet. Selbiges gilt auch für HTML, also der Sprache mit welcher Webseiten dem Browser übermittelt werden …
Die älteste Malware sind eigentlich die Trojaner. Die Grossrechner waren so gut abgesichert, dass ein normaler User keine Möglichkeit hatte das System lahmzulegen, das heftigste was er anstellen konnte, war seine eigenen Daten zu vernichten.
Man schrieb also Programme, welche dem Administrator eine Aufgabe vereinfachten, dabei hat man sich richtig Mühe gegeben. Zusätzlich hat das Programm aber, im Hintergrund, noch ein paar andere Dinge gemacht. z.B. hat es einfach einen neuen Benutzer mit Administratorrechten angelegt. Damit konnte sich dann der Trojaner-Programmierer an diesem Rechner einloggen und wie ein offizieller Administrator mit dem Rechner arbeiten.
Eine andere Methode ist es, Programmfehler auszunutzen und ein Programm gezielt zum Absturz zu bringen. Auch fehlerhafte Programme, funktionieren immer streng logisch, die CPU kann sich ja nicht anders verhalten. Wenn man so einen Fehler auf Assembler-Ebene analysiert, kann es sein, dass es einen Weg gibt eigene Daten als Programm ausführen zu lassen oder Funktionen des Betriebssystems zu starten, welche normalerweise nicht zugänglich sind. Man muss dann dieses Programm nur mit den genau passenden falschen Daten füttern um das gewünschte Verhalten herbeizuführen.
Einen Fehler dieser Art hat z.B. Sasser ausgenutzt, Stichwort: Bufferoverrun. Eigentlich ein typischer Anfänger-Fehler eines Programmierers.
Dabei wird z.B. ausgenutzt, dass hinter einem Speicherblock für Daten Programmteile abgelegt sind.
Ethernet kann Datenblöcke bis 64 KiByte übertragen, die aktuelle Blockgrösse steht am Anfang eines Datenpaketes. Wenn ich nun eine Dienst definiere, welcher über Ethernet gesteuert wird, kann es sein, dass ich dafür nur maximal Blöcke mit 4KiByte benötige. Diese werden in einem vorher definierten Speicherblock abgelegt und verarbeitet. Um Speicherplatz zu sparen, definiere ich für diesen Block auch nur die maximal benötigten 4KiByte. Wenn ich nun einen Datenblock vom Netzwerkcontroller erhalte, sollte ich zuerst die Blockgrösse überprüfen. Wenn die grösser als vorgesehen ist, liegt ein Fehler vor.
Wenn ich das aber vergesse und dem Netzwerkcontroller einfach nur sage wo er die Daten hinschmeissen soll, tut er das auch. Ist der Datenblock aber jetzt 64KiByte gross, wird zuerst der vorgesehene 4KiByte beschrieben und danach noch 60KiByte welche sich dahinter befinden … Auch wenn dort mein Programm abgelegt ist, wird es normalerweise einfach abstürzen, da die Daten keinen Sinn als Programm ergeben. Allerdings kann ich auch in diesen 60KiByte ein eigenes Programm verstecken, welches dann gezielt mein eigenes überschreibt …
Man muss also einfach nur gezielt verhindern, dass der hochgeladene Virus nicht als Programm ausgeführt werden kann !!
MfG Peter(TOO)