Wie kommen Viren in mein System?

Eins ist auf jeden Fall klar: Viren verbreiten sich nicht mehr oder kaum noch über Manipulierte Disketten oder Cds wie es noch vor 2000 üblich wahr. Auch die Methode mit E-Mails mit Executabelen Anhang gehört inzwischen zu den Alteisen.

Grundsätzlich gibt es folgende Verbreitungsmöglichkeiten:

  • Verbreitung über den Bootsektor von Disketten (nicht mehr Relevant)
  • Exe und andere Dateien direkt per Mail, welche geöffnet werden
  • Download von Executables durch unerfahrene User (zum Beispiel als Mitbringsel von Software-Cracks, Keygens, oder Spielehacks)
  • Verwenden von bereits invizierten Programmen (zum Beispiel von einen befallenen System)
  • Durch Schwachstellen in Netzwerkprogrammen, hier kommt Exploitcode zur Anwendung (z.B. Windows Remote Dienst)
  • Durch modifizierte beliebige Dateien, wobei das Programm für diese Dateien eine Sicherheitslücke enthält, hier wird ausführbarer Code über ein Exploit eingeschleust (Zum Beispiel bei PDF-Dateien in Verbindung des Adobe Readers)
  • Durch JavaScript, OCX, Flash-Files in Webseiten, hier wird ebenfalls mit Exploits hantiert

Ich möchte hier in diesen Bericht speziell auf die Exploits näher eingehen. Denn hier kann man selbst als erfahrener Anwender wenig tun um einer solchen Infektion aus dem Weg zu gehen. Bei allen anderen Infektionen hat man noch selbst die Hand darüber was ausgeführt wird und was nicht. Exploits arbeiten allerdings anders: selbst ein harmloses Bild mit korruptem Code, könnte einen Virus enthalten!

Der Kern, weshalb solche derartigen Codes eingeschleust werden können, liegen in der verwendeten Programmiersprache. Hier wird meist C und C++ verwendet, weil diese Sprachen, ähnlich wie Assembler, fast unzählige Möglichkeiten bereitstellen und so gut wie keine Einschränkungen haben. Nur so lassen sich moderne Betriebssysteme programmieren, da man stets direkten Zugriff auf den Speicher braucht.

Aber genau hier liegt auch der Hacken, als kleines Beispiel: Deklariert man ein Array mit Beispiels weiße Index 5 und versucht dann auf das 6 Element zuzugreifen, so hat man bereits jetzt schon einen Pufferüberlauf. Das lustige daran: Das Programm läuft einfach weiter und könnte in diesen Bereich sogar Speichern! Wenn ich solchen Code in VisualBasic oder C# ausführe, werde ich mit einen RunTime-Fehler aus dem Programm geschmissen. Das Problem besteht jedoch nicht nur bei Arreys, sondern bei allen Funktionen die ohne zu überprüfen mit Arreys arbeiten (zum Beispiel strcpy und andere) und Funktionen die mit direkten ungeprüften Speicheradressen (Pointern) hantieren. Dabei lässt sich das Zustandekommen von Pufferüberläufen schon durch die Verwendung von anderen, sichereren Funktionen oder einer einfachen Überprüfung abstellen und sich so eine weitere Sicherheitslücke schließen.

So kommt es auch immer wieder vor, das aufgrund von Sicherheitslöchern immer mal wieder Spielkonsolen zu Computern umfunktioniert werden. Bestes Beispiel stellen hier die Homebrews für die Sony PSP dar, hier kann das Spiel Tetris in Form einer JPG-Grafik ausgeführt werden. Das ist allein durch ein Exploit möglich. Das Betriebssystem der PSP ist wie bei fast allen Geräten in C geschrieben.

Auch Programmiersprachen, welche auf C und C++ aufbauen sind potenziell betroffen. So gibt es tatsächlich immer mehr Viren, welche per JavaScript in Webseiten so beliebigen Code ausführen. Das allerschlimmste daran: der Benutzer wird erst gar nichts davon merken und so auch nichts dagegen unternehmen!

Auch seriöse Webseiten kann es treffen: hier wird mit einer SQL-Injektion gearbeitet, welche sich bei allen ungeprüften Feldern, zum Beispiel des Logins, anwenden lässt. Durch geschicktes Formulieren von SQL-Code, können so beliebige Werte in der Datenbank modifiziert werden und zum Beispiel ein JavaScript-Exploit oder ein iFrame welcher auf eine andere Seite verweist, in eine Webseite eingefügt werden. Die Computerzeitschrift C’t hat seit ein paar Monaten die Berichtsserie „Tatort Internet“, in welcher sie die Raffinessen von Exploits aufdeckt. Link

Wie schütze ich mich davor? Grundsätzlich kann man sagen: Halten sie ihre Software durch Updates stets auf den aktuellen Stand. Häufig verwenden Exploits alt bekannte Löcher die bereits gestopft wurden. Verwenden sie einen Virenscanner mit guter Heuristik, so können sie sich auch gegen noch unbekannten Schadcode schützen.

Manchmal hilft es auch sich von der Masse abzuheben: Verwenden sie zum Beispiel nicht den Internet Explorer sondern Opera.

Auch ein gesunder Menschenverstand (Brain.exe 🙂 kann sie vor so manchen Viren bewahren. Seien sie immer auf der Hut und öffnen sie Dateien niemals unüberlegt.

Martin, PFVF.de

Schreibe einen Kommentar