Ingo S.: Wie genau sind Anti-Viren-Programme?

hiho!

Kürzlich erklärte man mir in einem Thread,
dass Viren auch nachträglich sich ein EXE oder ZIP Dateien
hineinschreiben können.

Also ich lade eine saubere Datei down,
und auf meinem PC schreibt sich dann ein Virus, Wurm oder Trojaner rein.

Die Frage dieses Postings lautet,
ob Anti-Viren-Software auch solche "versteckten" Viren, würmer, Trojaner
finden und vernichten kann.

Dann die  "virus.exe"  gefunden werden kann ist klar,
aber ob ein Virus _innerhalb_  der "gut.exe"  gefunden werden kann
ist mir unklar,
da sich der Virus / Wurm / Trojaner mit dem Source verbinden müsste...

Wie zuverlässig ist die Anti-Viren-Software also?

Kann es auch in ein gutes (sauberes) Programm hineingeschriebener
Virus von einem Anti-Viren Programm wieder herausgeholt werden,
oder muss die ganze "gut.exe"  entfernt werden?

Danke
Euer Ingo S.

  1. Hi,

    Kürzlich erklärte man mir in einem Thread,
    dass Viren auch nachträglich sich ein EXE oder ZIP Dateien
    hineinschreiben können.

    Also ich lade eine saubere Datei down,
    und auf meinem PC schreibt sich dann ein Virus, Wurm oder Trojaner rein.

    Die Frage dieses Postings lautet,
    ob Anti-Viren-Software auch solche "versteckten" Viren, würmer, Trojaner
    finden und vernichten kann.

    Ja, genau darin liegt der Sinn.

    Dann die  "virus.exe"  gefunden werden kann ist klar,
    aber ob ein Virus _innerhalb_  der "gut.exe"  gefunden werden kann
    ist mir unklar,
    da sich der Virus / Wurm / Trojaner mit dem Source verbinden müsste...

    Würden die Programme nur nach "virus" suchen (können), könnte das ja jeder leicht schreiben. Das wäre kein Aufwand.
    Der Trick liegt in Signaturen, d.h. es wird in der u.U. befallenen Dateien nachgesehen, ob ein Muster eines bekannten Virus vorhanden ist.

    Wie zuverlässig ist die Anti-Viren-Software also?

    Die Frage kann man so pauschal nicht beantworten!
    Alte Viren werden von den meisten erhältlichen Scannern gut erkannt.
    Das Problem ist, daß es eine Übergangszeit bei neuen Viren gibt.

    Kann es auch in ein gutes (sauberes) Programm hineingeschriebener
    Virus von einem Anti-Viren Programm wieder herausgeholt werden,
    oder muss die ganze "gut.exe"  entfernt werden?

    Manchmal geht das wohl, daß das Problem behoben werden kann.
    Aber das muß der Scanner ja vielleicht auch nicht unbedingt können.
    Meiner Meinung nach ist es am Schlimmsten, einen Trojaner auf dem Rechner zu haben, von dem man nichts weiß. Wenn etwas aufgespürt werden kann, reicht es doch, wenn es gelöscht wird und man dann ein Backup zurückspielt bzw. alles neu installiert, oder?

    Gruß
    Reiner

    1. Hi,

      Also ich lade eine saubere Datei down,
      und auf meinem PC schreibt sich dann ein Virus, Wurm oder Trojaner rein.

      Das geht auch unterwegs, keine Angst. Gute Sicherung bietet dagegen eine verschlüsselte Verbindung.
      Das "gut" in _keinem_ Fall "100%iger Schutz" bedeutet ist aber schon klar, oder?

      Dann die  "virus.exe"  gefunden werden kann ist klar,
      aber ob ein Virus _innerhalb_  der "gut.exe"  gefunden werden kann
      ist mir unklar,
      da sich der Virus / Wurm / Trojaner mit dem Source verbinden müsste...

      Nein, denn prinzipiell ist zwischen Source und Binary kein funktioneller Unterschied (vid. Church et al). Nur stehen im Source mehr Informationen drin, sodas es einem Menschen möglich ist auf einfache und praktikable Weise die Anweisungen zu schreiben/ändern, die nötig sind ein Binary zu bauen.
      Aber es ist nicht _zwingend_ nötig.
      Es gibt auf den Seiten der Prozessorhersteller frei verfügbare Handbücher über alle Befehle, die deren Prozessoren verarbeiten können. Sogenannte "Opcodes".
      Mit ein wenig Übung und Wissen über derart hardwarenahe Programmierung ("On the bare metal.") ist es also kein Problem Programme direkt zu schreiben, ohne Umwege über Sourcen und Compiler und sonstige Software.
      Da dieses Wissen also öffentlich ist - das muß es sein, sonst gäbe es ja keine Möglichkeit Programme zu schreiben, denn wie sollte man die sonst in Maschinensprache übersetzen? - kann es jeder nutzen, auch ein Virus. Da fertig übersetzte Programme natürlich immer gleich sind, reicht dem Virus theoretisch eine einzige Speicheradresse (4 Byte für einen gängigen 32 Bit Rechner), um sich in das ursprüngliche Programm einzunisten.
      Am einfachsten wäre es demnach zu prüfen, ob das ursprüngliche Programm verändert wurde. Dafür müssen aber Informationen über alle Programme im Antivirus gespeichert sein. Und wer sagt einem, das nicht das Antivirusprogramm selber befallen ist?
      Gegen das erste Problem, die vielen Programme, hilft ein wenig Heuristik und Regeln und statt der Informationen über die Programme Informationen über die Viren, da das weniger sind.
      Gegen das zweite Problem, ob das Antivirusprogramm selber befallen ist, hilft - im Grunde nix.
      Man müßte für alle Programme die Quellen zur Verfügung haben und die eigentlichen Programme dann alle daraus bauen.
      Dafür braucht man aber einen Compiler, was wenn der befallen ist? Das läßt sich theoretisch regeln, da man, wie oben angedeutet, auch auf dem blankem Metal programmieren kann. Zuerst also etwas ganz kleines, das dann wieder mit einigen Daten etwas größeres bauen kann, damit vielleicht schon einen Assembler usw bis hin zum ausgewachsenem C-Compiler. Die Softwareseite ist also gefeit. Zumindest theoretisch, denn es können nicht viele Leute auf dem blankem Metal aufbauen, die kannst Du an den Fingern einer Hand abzählen. Aber es läßt sich lernen, es ist also nicht unmöglich.

      Was ist mit der Hardwareseite? Nun, da sieht es mau aus. Es gibt zwar Möglichkeiten sich selber einen Prozessor zu bauen, aber auf Grund der hohen technischen Hürden würde der nur extrem langsam sein. Die Überprüfung der Dies der amrktgängigen Prozessoren erfordert auch einen hohen technischen Aufwand, man muß also den Büchern zu den Opcodes blind vertrauen, man kann nicht wissen, ob es nicht einen speziellen Opcode gibt, der zur Selbstzerstörung durch Überhitzung führt. Oder einen winzig kleinen Fehler hat, der bestimmte Rechnungen richtig aussehen läßt obwohl sie falsch sind (frag' die Russen, die können da ein Lied von singen.) Da aber von vielen verschiedene Firmen in vielen verschiedenen Ländern Chips produziert werden, ist sowas heutzutage für den normalen Markt nicht mehr machbar.

      Wie das allerdings mit der DRM-Technik aussieht ...

      Wie zuverlässig ist die Anti-Viren-Software also?

      Die Frage kann man so pauschal nicht beantworten!

      Doch, das kann man: sie ist nicht zuverlässig für alle Viren, Würmer und sonstige Schädlinge, früher, jetzt und in Zukunft.

      Alte Viren werden von den meisten erhältlichen Scannern gut erkannt.

      Noch nicht einmal das kann garantiert werden und das finde ich besonders peinlich.

      Das Problem ist, daß es eine Übergangszeit bei neuen Viren gibt.

      Ja, ein paar Minuten, dann ist der neue Virus rum. Ob die Antivirenprogrammhersteller auch so schnell sind ist stark anzuzweifeln. Das Virus ist immer im Vorteil: es startet zuerst und kann ebenfalls vorher gegen alle bekannten Antivirenprograme getestet werden.

      Kann es auch in ein gutes (sauberes) Programm hineingeschriebener
      Virus von einem Anti-Viren Programm wieder herausgeholt werden,
      oder muss die ganze "gut.exe"  entfernt werden?

      Manchmal geht das wohl, daß das Problem behoben werden kann.

      Nein, das funktioniert nur, und wirklich und ausschließlich nur, wenn das Originalprogramm bekannt ist.
      Reparaturversuche sind also recht witzlos.

      Meiner Meinung nach ist es am Schlimmsten, einen Trojaner auf dem Rechner zu haben, von dem man nichts weiß.

      Es gibt da rein gar keine Qualitätsunterschiede, ein Schädling ist genauso wie der andere. Gäbe es da Unterschiede wäre ein Schädling ohne Schadensroutine ja kein Schädling mehr. Obwohl er sich eingeschlichen hat und ohne Erlaubnis Programme verändert. Also wenn ich einen Einbrecher erwische ist es mir mit Verlaub scheißegal ob der schon 'was geklaut hat oder klauen wollte, da dreh' ich die 110.
      (Für dei jüngeren Mitleser unter euch: es gab in früheren Zeiten einmal Telephone, die haben nicht nur mit einem Kabel am Netz gehangen, nein, die hatten auch eine Wählscheibe! So ein rundes Dingen mit Löchern drin. Wenn ihr mal auf einem Antiquitätenmarkt ...)

      Wenn etwas aufgespürt werden kann, reicht es doch, wenn es gelöscht wird und man dann ein Backup zurückspielt bzw. alles neu installiert, oder?

      Woher weißt Du, das es gelöscht wurde?
      Woher weißt Du, das Dein Backup sauber ist?
      Woher weißt Du, das Deine Installationsdisketten sauber sind?

      Ich sehe Dich da gerade tief Luft holen, also laß Dir vorher schnell gesagt sein: doch, es gibt Möglichkeiten das Risiko ausreichend zu minimieren. Siehe oben.

      Aufgrund der Mengenbegrenzung des Postings ist es leider nicht möglich bei einem derartigem Thema in's Detail zu gehen.
      Wenn also noch Fragen ... ach, was rede ich da: fragt einfach, macht ihr ja sowieso.

      3:05? Sollte mich wirklich nicht so verleiten lassen, auch wenn der Termin erst um 12:00 ist und dann auch noch zum Mittagessen ("Gibt's eigentlich noch Frühstück?" -- "Wie? 'Um zwölf doch nicht mehr!'? Was soll das denn heißen?")

      so short

      Christoph Zurnieden

      1. Hallo, Christoph!

        Manchmal geht das wohl, daß das Problem behoben werden kann.
        Nein, das funktioniert nur, und wirklich und ausschließlich nur, wenn das Originalprogramm bekannt ist.
        Reparaturversuche sind also recht witzlos.

        es funktioniert immer dann, wenn der programmierer des viruses weenigstens sauber gearbeitet hat, d.h., der virus das programm befällt, ohne relevanten programmcode des programms zu überschreiben. wenn der virus einen bug hat und teile des programmcodes überschreibt, kann dieser nur wiederhergestellt werden, wenn die prüfsumme des programms nicht auch vom virus angepasst wurde und der überschriebene programmcode so klein war, dass mit hilfe der prüfsumme der orginalcode noch zu rekonstruieren ist.
        ist der virus bugfrei und beschädigt das wirtsprogramm beim befallen nicht, kann der virenscanner aufgrund der kenntnis über den befallsmechanismus des viruses diesen auch wieder aus dem programmcode entfernen.

        die meisten viruse hängen ihren programcode an das ende des befallenen programmes mit an und verbiegen die entrypoint-adresse, so dass zuerst der virus aus der datei gestartet wird und dieser dann den orginalen entrypoint anspringt und damit das programm startet.

        eine weitere möglichkeit wäre, den virencode in einer eigenen datei abzulegen und diese beim starten des programmes mit aufzurufen.

        einige viren nutzen auch bereiche im wirtsprogramm für den befall, die beim compilieren entstehen und keinen auszuführenden code enthalten (opcode: nop = 90). diese art des kann man nicht an einer geänderten gesamtgrösse des wirtsprogramms feststellen.

        freundl. Grüsse aus Berlin, Raik

        1. Hi,

          Manchmal geht das wohl, daß das Problem behoben werden kann.
          Nein, das funktioniert nur, und wirklich und ausschließlich nur, wenn das Originalprogramm bekannt ist.
          Reparaturversuche sind also recht witzlos.

          es funktioniert immer dann, wenn der programmierer des viruses weenigstens sauber gearbeitet hat,

          Für wen sauber? Für die Zwecke der Beseitigung oder für die Zwecke des Virus' also eben _nicht_ entdeckt zu werden und _nicht_ entfernt werden zu können?

          d.h., der virus das programm befällt, ohne relevanten programmcode des programms zu überschreiben. wenn der virus einen bug hat und teile des programmcodes überschreibt, kann dieser nur wiederhergestellt werden, wenn die prüfsumme des programms nicht auch vom virus angepasst wurde und der überschriebene programmcode so klein war, dass mit hilfe der prüfsumme der orginalcode noch zu rekonstruieren ist.

          Eine Prüfsumme kann nur prüfen, ob etwas geändert wurde aber nicht was genau. Und wie Du selebr sagtest: bei ungeschickter Wahl des Prüfsummenalgorithmus' kann der Virus das Programm entsprechend anpassen. Das muß er noch nicht einmal selber fummeln, dafür gibt es fertiges im Netz. Da das Programm immer gleich ist und auch im Vornherein beziehbar, kann der Chracker ganz gemütlich zu Hause die Anzahl der einzufügenden Noops (na, etwas geschickter ist das schon geregelt, ist hier aber egal) herausfinden lassen.

          ist der virus bugfrei und beschädigt das wirtsprogramm beim befallen nicht, kann der virenscanner aufgrund der kenntnis über den befallsmechanismus des viruses diesen auch wieder aus dem programmcode entfernen.

          Da er den genauen Programmcode nur kennt, wenn er den gesammten Code vergleichen kann. Prüfsumme funktioniert ja nicht 100% und Viren sind im Gegensatz zum Programm so klein, das selbst die minimale Unsicherheit bei guten Prüfsumen schon ausreicht, dieses Vorgehen durchfallen zu lassen.

          die meisten viruse hängen ihren programcode an das ende des befallenen programmes mit an und verbiegen die entrypoint-adresse, so dass zuerst der virus aus der datei gestartet wird und dieser dann den orginalen entrypoint anspringt und damit das programm startet.

          Na, das ist aber schon lange her, das wird heutzutage sehr viel geschickter gehandhabt.

          eine weitere möglichkeit wäre, den virencode in einer eigenen datei abzulegen und diese beim starten des programmes mit aufzurufen.

          Ja, auch das ist möglich, erfordert aber eine zusätzliche Datei, ist also relativ einfach festzustellen.

          einige viren nutzen auch bereiche im wirtsprogramm für den befall, die beim compilieren entstehen und keinen auszuführenden code enthalten (opcode: nop = 90). diese art des kann man nicht an einer geänderten gesamtgrösse des wirtsprogramms feststellen.

          Ja, genau _so_ einfach geht das schon lange nicht mehr.

          Man kann also Viren nicht aus Programmen entfernen, ohne das Originalprogramm zur Hand zu haben.
          Wenn man also Bedarf nach Binaries hat, oder nur Binaries zu haben sind, dann sind diese aus zuverlässiger Quelle mit zuverlässigen Mitteln zu beziehen. Ideal, wenn die Virenfreiheit schriftlich garantiert wird und auch ausreichenden Deckung für evt Haftung vorhanden ist.

          so short

          Christoph Zurnieden