Linux Virenscanner

Viren und ihre Erkennung

Dobin Rutishauser

Inhalt

Was ist Linux?

Was sind Viren?

Wie infizieren sie Dateien?

Wie erkennt man sie?

Fragestellung der Matura Arbeit

Entwicklung eines Linux Virenscanners

Viren unter Linux nicht sehr gut erforscht

Kein freier Linux Virenscanner vorhanden

Technik

Was ist Linux?

Alternatives Betriebsystem

Im Serverbereich weit verbreitet

Auf dem Desktop einsetzbar

Unix ähnlich

Natürliche Schutzmechnismen

Analogie zu biologische Viren

Computer Sprache

Programmiersprache /

Source Code:

#include <stdio.h>

void main()

{

printf("Ich bin ein Virus");

öffne_datei();

...

}

Assembler Code:

push %ebp

mov %esp,%ebp

sub $0x8,%esp

and $0xfffffff0,%esp

mov $0x0,%eax

sub %eax,%esp

movl $0x8048454,(%esp,1)

call 0x8048268 <printf>

...

Binär: 010100001010111011010101111010101000...

Was sind Viren?

Ansammlung von Befehlen

Einziger Zweck: Vermehrung

Können nur mithilfe von Wirten überleben

Müssen aktiv aufgerufen werden

Von wo kommen Viren?

Infiziertes

Programm

Word

Spiel

Solitaire

Explorer

Alfred

Kopiert, startet

Bob

Wird Kopiert, gemailt

Infektion

Theoretische Infektion

Ein Virus kopiert sich in den Wirt

und sorgt dafür, dass er ausgeführt wird.

Wirt: 1111010010101110110100...

Virus: 11001100

Infizierter Wirt:

110011001111010010101110110100...

Infektions-Orte

Virus muss sich an einen geeigneten Ort kopieren:

Genug Platz

Ausführbar

Aufrufbar

Programm nicht relevant verändern

Entdeckungs Ansätze

Ablauf einer Infektion

Starten des Programms

(Word, solitaire etc..)

Virus wird ausgeführt

(Verbreitung)

Ausführen des

ursprünglichen

Programmes

Suchen weiteren Dateien

Infizieren der Dateien

(optionaler) Aufruf der Schadensroutine

Benutzer

Der Aufbau ausführbarer Dateien

Executable and Linkable Format

ELF beschreibt ausführbare Dateien

Aufgeteilt in Segmente:

Header: Informationen

Code: Befehle

Data: Daten

Header

Code

Segment

Data

Segment

ﾧ

Der ELF - Header

Informationen zum Aufbau

Einsprungspunkt: Anfang des Programmes

Program Header Table: beschreibt Segmente

Program Header Entrys: beinhaltet Adresse, Offset, Grösse etc der Segmente.

ﾧ

Program Header Table

Code Segment

Data Segment

Program Header Entry 1

Einsprungspunkt

Program Header Entry 2

Vireninfektion

Grösse des Data Segmentes Verändern

Kopieren des eigenen Virus Code an das Ende der Datei, bzw Data Segmentes

Einsprungspunkt verändern (zum Virus)

Rücksprungadresse anpassen (Anfang Code Segment)

ﾧ

Code

Data

Program Header Table

Einsprungspunkt

Virus

Virenerkennung

Code

Data

Program Header Table

Einsprungspunkt

Virus

Nicht Infiziert

Infiziert

Code

Data

Program Header Table

Einsprungspunkt

Andere Virentypen

Data Segment append virus (sthlm)

Code Segment append Virus (brudle-fly, diesel)

.note Section Virus (LoTek)

Segment adding Virus

Anspruchsvollere Viren nur mit Signaturerkennung

Code

Data

Einsprungspunkt

Program Header Table

Virus 2

.note Section

Virus 3

Neues Segment

Virus 4

Entwickeln des Virus “sthlm”

Entwicklung eines eigenen Testvirus zu Testzwecken

Zeitaufwand: 1 Woche Sommerferien

Einige Probleme

Infiziert alle Programme im aktuellen Verzeichnis ohne “.” im Namen

Praktische Virenerkennung

Virenabwehr – Kurz und Bündig

Virenscanner installieren

Virenscanner brauchen

Virenscanner aktualisieren

Vorsicht bei unbekannten Dateien

Vorsicht bei Dateien ungewisser Herkunft

Elftes Gebot: Mache Backups!

Rechtliche Lage

Schweizer Recht Weltweit einzigartig

Verkauf von Hacker CD: 2 Monate Gefängnis bedingt, 5000Fr Busse

Tatbestand: Artikel 144bis StGB, “Anleitungen zur Herstellung datenschädigender Programme”

Es reicht, wenn:

“Informationen zu wesentlichen Herstellungsvorgängen” abgegeben wird

Und damit die schaffung eines Virus “wesentlich erleichtert” werde

Schlussbemerkungen

Linux wenig bedroht

Analyse des Einsprungpunktes

Erkennung ausgefeilterer Viren mit Signaturerkennung

Schlusswort

Norton Antivirus: www.symantec.com

MCAfee Antivirus: www.mcafee.com

Linux Virenscanner: www.f-secure.com/products/anti-virus/linux/

Linux Distribution: www.suse.de

Dateien zur Arbeit: http://home.datacomm.ch/prutishauser/virus/

2004-01-30T21:18:54