Das OpenAntiVirus Projekt

http://www.openantivirus.org/

Kurt Huwig <kurt@openantivirus.org>

Rainer Link <rainer@openantivirus.org>

Übersicht

Motivation

Bestandteile

Status / Technik / Demonstration

Zukunft

Das Projekt (I/II)

Gründung Ende August 2000

Nachfolger von Linux/Unix AntiVirus Projekt

Core Team-Mitglieder

Rainer Link (Gründer + Projekt-Leiter)

Howard Fuhs (Gründer + „Evangelist“)

Frank Zieman

Christian Bricart

Kurt Huwig (Entwickler Core Technologies)

Freelance Team-Mitglieder

Gregor Goldbach

Kristian Vlaardingerbroek

Paul L. Daniels

Ries van Twisk

Das Projekt (II/II)

Offizielle OpenAntiVirus.org Projekte

ScannerDaemon / VirusHammer / PatternFinder

Squid-vscan

Samba-vscan

lkml-vscan

Mini-FAQ

Bootdisk

Weitere Projekte

AMaViS (A Mail Virus Scanner)

Inflex / Xamime

httpf

Projekt-Ziele

Realisierung (server-basierender) Lösungen (für Unix/Linux), z.B. AMaViS / samba-vscan

Implementierung eines freien (GPL) Virenscanners

Plattform für Entwickler, Anwender und Administratoren

Know-How Datenbank

Die Software

PatternFinder (Java)

Virensignaturen bestimmen

ScannerDaemon (Java)

Virenscan-Dienst

VirusHammer (Java)

eigenständiger Virenscanner mit GUI

Samba-vscan (C)

Zugriffsscan für Samba

Squid-vscan (C)

Zugriffsscan für Squid

Linux-Kernel Modul (C)

Zugriffsscan

Projektstatus

etwa 1.800 Viren und Dialer werden erkannt

seit 6 Monaten auf einem Mailserver aktiv

Integration in AMaViS

parallel mit einem kommerziellen Scanner

alle aktuellen Viren werden erkannt

Virenschutz für Mailserver ist praktikabel

VirusHammer ist benutzbar

Squid-vscan ist z.Zt. Proof-of-concept

noch nicht für Produktiveinsatz geeignet

Samba-vscan ist benutzbar

läuft auf einigen Servern

Kernel Modul ist benutzbar

Das Problem

hohe Lizenzkosten kommerzieller Virenscanner

10-20 € pro Nutzer und Jahr

viele können sich das nicht leisten

Universitäten, Schulen

kleine Unternehmen

Warum?

Linux Viren werden zunehmen

XML Virus befällt Mozilla 0.9.8

Linux Server werden immer beliebter

Virenschutz für Windows Systeme erwünscht

Hoher wirtschaftlicher Schaden durch Viren

> 3 Milliarden € Schaden alleine durch CodeRed und Nimda (Quelle: Computer Economics)

Viren sollten so gut es geht bekämpft werden

Die Folge

Es werden Systeme infiziert mit

guter Internetanbindung

oftmals schlechter Wartung

wenig Sicherheitsbewusstsein

rasante Ausbreitung von Viren

Können wir es schaffen?

z.Zt. existieren > 60.000 Viren

sehr wenige Viren sind wirklich im Umlauf

2001: < 10 unterschiedliche Viren auf einem Mailserver gefunden

pro Monat etwa 5000 neue Viren

davon treten etwa 5 „in the wild“ auf

Erkennen dieser Viren ist machbar

Freie Lizenz

GNU Public License (GPL)

Copyright von Dritten muss auf das Projekt übertragen werden

Kommerzielle Lizenz

Lizenzen für Closed Source Projekte können gekauft werden

Einnahmen dienen der Weiterentwicklung

Virenschutz in vielen Produkten

wer nicht offen sein will, muss das Projekt finanziell unterstützen

PatternFinder (I/III)

Virenscanner suchen nach charakteristischen Bestandteilen von Viren (Signaturen)

sind nicht frei verfügbar

Erstellung erfordert Analyse des Virus

PatternFinder (II/III)

Voraussetzung

Virus

(kommerzieller) Virenscanner, der ihn erkennt

Datei wird systematisch überschrieben

Virenscanner wird gefragt, ob der Virus noch vorhanden ist

wenn ja: weiter überschreiben

wenn nein: diese Stelle nicht überschreiben

PatternFinder (III/III)

Gerüst des Virus, das der Virenscanner erkennt

vereinfachte Analyse dieses Gerüstes

evtl. direkte Verwendung im Scanner

~ 1.800 Signaturen sind bekannt

VirusHammer (I/II)

On-demand Scanner mit GUI

VirusHammer (II/II)

internationalisiert

bereits lokalisiert auf

Englisch, Deutsch, Französisch, Italienisch, Spanisch

JavaWebStart: Scannen ohne Installation

digital signierte Dateien

geplant

Integration von PatternFinder

besserer Fortschrittsanzeiger

Angabe von DOS-Laufwerksbuchstaben

Berichten von nicht erkannten Viren

ScannerDaemon (I/IV)

Starten des Scanners braucht Zeit

Duron 800MHz: 6s

als Dienst entfällt das Starten

echo "SCAN /home/kurt" | netcat localhost 8127

Antwort:

OK

FOUND: <Virusname>

Integration in

AMaViS

MIMEDefang

OdeiaVir

Samba/Squid-vscan/Kernel-Modul

qmail-scanner

ScannerDaemon: Aufbau

Aufteilung in

Filter

Scanner

Finder

Filter

Vorverarbeitung von Dateien

Extrahierung von Programmdaten (ZIP, UPX, ...)

Scanner

Weiterleitung der Daten an die Finder

Finder

Suche nach Viren

ScannerDaemon: Finder

erhält Puffer mit

Präfix

Datenblock

Postfix

Finder kann auf mindestens +/- 4kB zugreifen

Scan-Technik: Stringsuche

viele (binäre) Strings müssen erkannt werden

auch für polymorphe oder verschlüsselte Viren

Aho/Corasick arbeitet unabhängig von der Zahl der zu suchenden Strings

http://www-sr.informatik.uni-tuebingen.de/~buehler/AC/AC.html

Squid-vscan

verwendet Squid-Filter von Olaf Titz

http://sites.inka.de/sites/bigred/devel/squid-filter.html

benötigt laufenden ScannerDaemon

Problem: Meldung eines Virus

HTTP-Header sind bereits versendet

Übertragung lässt sich nur abbrechen

Umleitung auf eine Fehlerseite ist nicht möglich

Andere Scanner lassen sich einbauen

Linux Kernel Modul

Anbindung durch Dazuko (http://www.dazuko.org/)

Datei-Zugriffskontrolle per Userspace Anwendung

Kernel Modul benachrichtigt

Userspace Anwendung gibt frei oder verweigert

triviale Anbindung an ScannerDaemon (etwa 1h Aufwand)

nutzbar für

Fileserver (z.B. Samba/NFS/ftp-incoming)

bedingt nutzbar für

Proxy

Mailserver

Samba-vscan (I/III)

Realisierung über Samba Virtual Filesystem

Patch für Samba 2.2.0 - 2.2.3a

Samba >=2.2.4 / Samba 3.0 benötigt keinen Patch

Scannen aller Dateien vor dem Lesen

Zugriff wird bei Infektion verweigert

Scannen aller Dateien nach dem Schließen

Nur Logging, keine Zugriffsverweigerung möglich

Samba-vscan (II/III)

Unterstützt mehrere Scanner über API/Socket

OAV ScannerDaemon (Socket)

F-Prot Daemon (Socket)

Mks32 (API)

Sophos Sweep (SAVI)

Trend Micro (VSAPI)

Kaspersky AntiVirus (API)

Symantec CarrierScan (API)

Geplante Features

Quarantäne

Benachrichtigung des Anwender (win-popup)

Samba-vscan (III/III)

Einsatz ...

Bei mehreren Firmen/Institutionen in Deutschland, Brasilien und Argentinien

RPMs erhältlich für SuSE Enterprise Server 7 (Maintainance Web) und SuSE Linux 7.2-8.0
(ftp.suse.com/pup/people/lmuelle)

RPM für Mandrake Linux (8.2):
http://www.mail-archive.com/cooker@linux-mandrake.com/msg65472.html

Demonstration ...

A Mail Virus Scanner (I/IV)

Perl-Skript für Virenscanning am eMail-Server

Unterstütze eMail-Server

Sendmail

Als LDA-“Ersatz“

Via sendmail „relay hack“

Via libmilter Interface

Postfix

Via Content Filtering API

Qmail

Als qmail-queue „Ersatz“

Exim

Via Transport/Router Definition

A Mail Virus Scanner (II/IV)

Unterstützt u.a.

MIME, UUE

Zip, Arj, Rar, Tar, gzip

Mehr als 15 Viren-Scanner

amavisd vs amavis

Arbeitet als Dämon

Höhere Performance

Eigene Konfigurations-Datei

A Mail Virus Scanner (III/IV)

amavisd-new

Von Mark Martinec: http://www.ijs.si/software/amavisd/

pre-forked Childs (-> höhere Performance)

SMTP-in/out sowie pipe

Anti-Spam: SpamAssassin sowie Vipul's Razor

Warnmeldungen mit Makro-Expansion

Access List Mechanismen

A Mail Virus Scanner (IV/IV)

amavis-ng

Modulares Design

Mail via pipe (STDIN)

Daemon (SMTP in/out)

Exim message filter

Policy Modul

INI-style Konfigurationsdatei

Zukunft

Viren von den Erschaffern

eigenes Virenanalyseteam

Sourcer

Virenreportpolitik

Scanner

Heuristiken

MS-Office Dateien

Scannen von mehr Archiven (tar.gz, RAR...)

Zukunft

Beta Tester

Wohin mit Viren?

Mail an <kurt@iku-netz.de>

Alles klar?

Fragen?

mehr Details

Nach dem Vortrag im Raum R2.05

Slides auf www.openantivirus.org (aktueller als Slides der LinuxTag-CD!)

Zukunft

Squid-vscan

Squid v2.[456]

Integration weiterer Virenscanner

VirusHammer

mehr Sprachen

bessere Fortschrittsanzeige

Laufwerksbuchstaben auswählbar

Samba-vscan

Scan beim Schreiben

Quarantäne

Auto-clean

Demonstration

VirusHammer

Start per Browser

Scannen von Verzeichnissen

ScannerDaemon

Scannen per
„echo SCAN <filename> | netcat localhost 8127“

Squid-vscan

Zugriffsverweigerung auf Viren im WWW

Kernel Modul

Zugriffsverweigerung bei „normalen“ Zugriffen

Samba-vscan

Zugriffsverweigerung beim Clientzugriff

Anhang: Aho/Corasick Stringsuche

erstellt einen Baum zur Erkennung

besonderes Merkmal: Failure Function

bei Nichterkennung wird in einen anderen Teil des Baumes gesprungen

jedes Zeichen muss nur einmal in O(1) verarbeitet werden

Beispiel

Suchstrings: baumhaus, auffahrt

Text: bauffahrt

Erkennung: b - a - u - f (passt nicht)

Sprung nach: a - u - f

Anhang: Modifizierter Aho/Corasick

Knoten im Baum verbrauchen viel Speicher

unwahrscheinlich, dass viele Pattern lange identische Präfixe haben

maximale Tiefe wurde auf 4 begrenzt

danach lineare Suche

Anhang: Aho/Corasick mit Tiefe 3

Stand 06.03.2002:

2.072 Knoten (inkl. Wurzel)

200 Knoten mit Tiefe 1

Trefferwahrscheinlichkeit: 200/256 = 78%

855 Knoten mit Tiefe 2

Trefferwahrscheinlichkeit: 855/65.536 = 1,3%

1.016 Knoten mit Tiefe 3

Trefferwahrscheinlichkeit: 1.016/16.777.216 = 0,006%

1kB: 6%, 32kB: 86%

Praxis (Windows-EXE): Ein Treffer alle 74 Byte

Duron 800MHz: 10MB/Sekunde

Anhang: Aho/Corasick mit Tiefe 4

3178 Nodes (+53%)

1 Treffer alle 153 Byte

Duron 800MHz: 12MB/Sekunde (+20%)

Anhang: Aho/Corasick: Fazit

ausreichend schnell für Internetverbindungen

E-Mail

Proxy

Programmcode ist noch nicht optimiert

optimierte Simulation ergab > 100MB/Sekunde

Das Problem

hohe Lizenzkosten kommerzieller Virenscanner

10-20 € pro Nutzer und Jahr

viele können sich das nicht leisten

Universitäten, Schulen

kleine Unternehmen

Warum?

Linux Viren werden zunehmen

XML Virus befällt Mozilla 0.9.8

Linux Server werden immer beliebter

Virenschutz für Windows Systeme erwünscht

Hoher wirtschaftlicher Schaden durch Viren

> 3 Milliarden € Schaden alleine durch CodeRed und Nimda (Quelle: Computer Economics)

Viren sollten so gut es geht bekämpft werden

Die Folge

Es werden Systeme infiziert mit

guter Internetanbindung

oftmals schlechter Wartung

wenig Sicherheitsbewusstsein

rasante Ausbreitung von Viren

Können wir es schaffen?

z.Zt. existieren > 60.000 Viren

sehr wenige Viren sind wirklich im Umlauf

2001: < 10 unterschiedliche Viren auf einem Mailserver gefunden

pro Monat etwa 5000 neue Viren

davon treten etwa 5 „in the wild“ auf

Erkennen dieser Viren ist machbar

Freie Lizenz

GNU Public License (GPL)

Copyright von Dritten muss auf das Projekt übertragen werden

Kommerzielle Lizenz

Lizenzen für Closed Source Projekte können gekauft werden

Einnahmen dienen der Weiterentwicklung

Virenschutz in vielen Produkten

wer nicht offen sein will, muss das Projekt finanziell unterstützen

Das OpenAntivirus Projekt

Kurt Huwig

2002-03-05T16:00:54

Kurt Huwig