Home
PDF-Datei - Christian Treber
Contents
1. e Ein in POSTSCRIPT Sprache zur Druckersteuerung geschriebener Trojaner k n nte das Pa wort des Druckers so umdefinieren da dieser vom Rechner nicht mehr angesprochen werden kann e Viele Kalkulationsprogramme sind vom Funktionsumfang her m chtig genug um die Programmierung eines in der jeweiligen Makrosprache geschriebenen Virus oder Trojaners zu erm glichen Einschr nkend und zugleich beruhigend ist anzumerken da nicht jedes Programm das Daten interpretiert auch m chtig und allgemein genug ist um die Funktionen anzubieten die ein Computervirus zu seiner Verbreitung ben tigt Trotzdem sollen die angef hrten Beispiele das Gesp r f r m gliche Gefahrenquellen wecken 1 3 3 Aktivierung und Residenz Die Aktivierung des Virus erfolgt durch den Start des Wirtsprogramms Im Laufe der Ausf hrung oder Interpretation wird der Viruscode irgendwann meist vor dem Start 1 3 COMPUTERVIREN 9 des Originalprogramms erreicht Ein Computervirus zwingt dadurch seinem Wirtspro gramm trojanische Eigenschaften auf denn die Ausf hrung des Viruscodes geh rt nicht zur urspr nglich beabsichtigten Programmfunktion Insofern handelt es sich bei einem Virus um einen sich automatisch verbreitenden Trojaner Die Vorgehensweise eines Vi rus bei Infektion und Manipulation l t sich zwecks besserer bersicht in verschiedene Klassen einteilen die im Folgenden besprochen werden Direct Action Ein Direct Action Virus
2. scant F3 while scan to 0 Falls new nur aus einer Laufwerksangabe besteht wird noch der Backslash zur Kennzeichnung des Wurzelverzeichnisses erg nzt Zur dieser Situation kann es kom men wenn eine Pfadangabe nur relative Verzeichnisse enth lt die alle inklusive dem Backslash des Wurzelverzeichnisses entfernt werden if new 2 0 new 2 0 new 3 strcpy f_spec new return 0 3 Funktion Normalize Path 2 void norm_path2 char f_spec Aufrufparameter f_spec zu normalisierende Dateispezifikation Pfad Seiteneffekte f_spec wird normalisiert Riickgabewert keiner Tabelle 4 12 norm_path2 Normalisiere Pfad 2 norm_path Es gibt auch einen alternativen Weg der die Hauptarbeit dem Kernel berl t aber wieder andere Nachteile mit sich bringt Die Idee Die Turbo C Funk 184 KAPITEL 4 ENTWICKLUNG DER SYSTEMPROGRAMME tion getcurdir bestimmt fiir ein angegebenes Laufwerk das aktuelle Verzeichnis ab Wurzelverzeichnis Man versucht nun den zu normalisierenden Pfad mit chdir zum aktuellen Pfad zu machen und fragt das Ergebnis der Operation ab Zuvor ist der aktuelle Pfad in cur_dir zu retten der durch unseren Test ver ndert wird Als erster Schritt wird das Laufwerk drive bestimmt auf das sich die Dateispezi fikation f_spec bezieht Ohne explizite Angabe wird das aktuelle Laufwerk verwendet int norm_path char f_spec in
3. 1 Sektor Partition Boot Record if l1_track i_table part l_drive start amp amp GET_SECTOR cx 1 req 0x0002 Js pruefe Rechte if req amp i_table part l_drive rights req return OxFFFF strcpy msg Illegal direct sector access if req amp 0x0001 strcat msg out of partition 3 if req amp 0x0002 strcat msg boot record 3 Falls die Operation nicht zul ssig ist und der Benutzer einschreiten darf wird eine Meldung ausgegeben und der Anwender kann ber das weitere Verfahren entscheiden 216 KAPITEL 4 ENTWICKLUNG DER SYSTEMPROGRAMME if P_INTERACT strcat msg Proceed y n if message 0x4F msg y return OxFFFF simuliere Write Protect Error return 0x0300 Aufbau der Rechtedatei Wie werden Schutz von Partitionen MBR und PBR festgelegt Wir k nnen zur Laufzeit auf keine Rechtedatei zugreifen weil das viel zu langsam w re und Reentrancy Probleme nach sich zieht Die Partitionsdaten ndern sich nach der Installation des Watchers nicht und brauchen nur einmal beim Start ausgewertet zu werden Aufgrund unserer Untersuchung TSR Programme und Daten zugriff w hlen wir die Methode Interne Liste externer Lader F r jedes logische Laufwerk kann Lese Schreib und Formatierschutz read write format definiert werden Dazu kommen noch der Zugriffsschutz f r den PBR und MBR
4. Tabelle A 38 split_fspec Zerlege Dateinamen A 4 3 Stringverarbeitung Clean String clean bringt einen Textstring in Normalform Die einzelnen Verarbei tungsoptionen lassen sich mit OR kombinieren define define define define define define CM_HEAD CM_TAIL CM_DOUBLE CM_CTRL CM_LOCASE CM_HICASE 0x01 0x02 0x04 0x08 0x10 0x20 Entfernen Leerzeichen am Anfang Leerzeichen am Ende mehrfache Leerzeichen Steuerzeichen Umwandeln in Kleinbuchstaben Grossbuchstaben Compare String Until character stricmpu funktioniert hnlich wie die ANSI Funktion strcmp verf gt aber ber den zus tzlichen Parameter until Dieser bestimmt ein Zeichen sog Delimiter bei dem der Vergleichsvorgang wie bei Erreichen des Stringendes abgebrochen wird Copy String Until Character strcpyu kopiert wie strcpy einen String stoppt aber wie strcmpu falls das Zeichen until auftritt Search String for String stristr arbeitet wie strstr nur da Unterschiede in der Gro und Kleinschreibung ignoriert werden 290 ANHANG A SOFTWARE Funktion Clean String char clean int mode char text Aufrufparameter mode Modus s Text text zu bearbeitender String Seiteneffekte text entsprechend mode ver ndert R ckgabewert Zeiger auf text Tabelle A 39 clean Bereinige String Funktion Compare Strings Unt
5. message 0x5F Not for me return OxFFFF E Die einfachste Dienstleistung IM_RUTHERE besteht lediglich aus einer Ausf h rungsmeldung die sich aus der Programmnummer PRG_ID im h heren Byte und der Funktions oder Meldungsnummer im unteren Byte zusammensetzt Dieses Schema gilt allgemein f r R ckmeldungen der Servicefunktion if ax amp OxOOFF IM_RUTHERE Anfrage Are you there 4 5 REALISIERUNG DES RESIDENTEN TEILS 199 return PRG_ID IM_RUTHERE Ja N chster Schritt ist die berpr fung des Pa worts einer 4 Byte Zahl ca 4 Milli arden Kombinationen Stimmt das Pa wort mit dem internen Pa wort des residenten Programms berein wird die Servicefunktion ausgef hrt Ist das Pa wort unzul ssig wird eine entsprechende Meldung zur ckgegeben if msg_ptr gt pwd PWD Passwort korrekt message 0x5F Wrong password return PRG_ID IM_INVAL_PWD J3 Die Servicefunktion besteht aus einer switch Anweisung die von der Subfunk tionsnummer abh ngig ist Bei der Deinstallierung werden zun chst mit restore alle Interruptvektoren auf ihre urspr nglichen Werte zur ckgesetzt Danach kann der durch das Programm belegte Speicher freigegeben werden bearbeite Subfunktionen switch ax amp Ox00FF gt gt Hier nach Bedarf Code fuer weitere Funktionen einfuegen lt lt default return PRG_ID IM_UNKNOWN Hier eigene Routinen einfuegen return
6. type 0x04 type 0x06 gt gt zeige Daten ueber Partitionseintrag an lt lt gt gt hier zusaetzliche Funktionen zur PBR Bearbeitung einfuegen lt lt ldrive inkr log Laufwerksnr return 0 3 5 2 Funktionen zur Dateibearbeitung Das Dos Kernel realisiert die Dateidienste und bildet Dateioperationen in Lese und Schreibvorg nge mit logischen Sektoren ab Ein guter Teil der Kernel Funktionen befa t sich mit Dateioperationen die nicht durch den ANSI Standard f r C abgedeckt sind von denen wir aber trotzdem einige ben tigen Dies sind in erster Linie Funktionen die sich mit Dateiattributen und der Struktur des Dateisystems befassen FILE und Handle Funktionen Turbo C stellt zwei Funktionsgruppen zur Da teibearbeitung zur Verf gung Die ANSI C Funktionen beginnen mit dem Buchstaben f und benutzen die Struktur FILE um eine ge ffnete Datei zu referenzieren Funk tionsprototypen finden sich in der Datei stdio h Die MS DOS Funktionen hingegen verwenden eine Kennzahl das Handle engl Griff Klinke um eine Datei zu identifi zieren Die zugeh rige include Datei hei t io h 3 5 VERWALTUNG EXTERNER SPEICHER 117 Handle und FCB Funktionen Aus grauer CP M Vergangenheit unterst tzt MS DOS auch noch sog FCB File Control Block Funktionen die aber kein hierarchi sches Dateisystem unterst tzen und lt Microsoft nicht mehr verwendet werden sollten Daran halten wi
7. 1 3 COMPUTERVIREN 11 1 3 4 Infektionsmechanismus Typologie berschreibende Viren Die programmtechnisch einfachste Virenform ist die der berschreibenden Viren Der Viruscode wird dabei einfach ber den Anfang des zu in fizierenden Programms kopiert das dadurch zerst rt wird s Abb 1 2 Overwrite Deshalb ist eine Infektion mit berschreibenden Viren leicht zu entdecken denn infi zierte Programme funktionieren nicht mehr korrekt oder st rzen vollst ndig ab Bei dieser Methode bleibt das Wirtsprogramm in der L nge unver ndert was ein Vorteil bei der Tarnung ist Besondere berschreibende Viren Eine besonderes Exemplar und Spezial fall der berschreibenden Viren ist das Lehigh Virus das ausschlie lich den MS DOS Kommandointerpreter bef llt Das Virus benutzt dabei einen reservierten aber lee ren Datenbereich in command com und kann sich so ohne die L nge des Programms zu ver ndern oder dessen Funktion zu beeintr chtigen im Programmcode einnisten s Abb 1 2 Lehigh Typ Da solche Datenbereiche nicht in jedem Programm vor kommen oder zweifelsfrei identifizierbar sind ist das Lehigh Virus auf command com fixiert und kann keine anderen Programme befallen Es existiert eine weitere M glichkeit ungenutzten Speicherplatz zur Speicherung von Viruscode zu verwenden nur diesmal nicht im Inneren des Wirtsprogramms son dern in ungenutzten Bereichen die durch die Methode der Dateiorganisation entstehen
8. 3 Gel schte Dateien Schadensfunktion Die mithin wichtigste Eigenschaft einer Datei ist nat rlich ihr Inhalt und der wird von MS DOS weder gesch tzt noch berwacht Softwareanomalien allen voran die Viren ver ndern aber oft die gespeicherte Information Ver nderungen an Dateiattributen analog Verzeichnisattribute werden eben falls nicht berwacht Der Begriff Attribute sei hier etwas weiter gefa t als sonst und bezeichne alle Eigenschaften einer Datei Durch den Befehl dir werden vier Merk male angezeigt Name und Gr e sowie Datum und Zeit der letzten Bearbeitung mit Schreibzugriff Weiterhin verwaltet MS DOS noch ein Attributbyte und einen Verweis auf den ersten Cluster der Datei Von den vier Attributen im Sinne von MS DOS l t sich nur das readonly Flag ber den Befehl attrib direkt beeinflussen Das archive Flag wird automatisch nach jeder Schreiboperation gesetzt hidden und system Attribut sind berhaupt nicht zug nglich Aufgabenbeschreibung Zu entwickeln ist das Programm ChkState das fol gende Aufgaben hat e Eine Liste mit der Verzeichnisstruktur und dem Dateibestand eines Datentr gers erstellen Zustand des Dateisystems festhalten quantitativ e F r jedes Unterverzeichnis und jede Datei Datum Zeit Attribut Gr e und eine Signatur speichern Zustand der Objekte des Dateisystems festhalten qualitativ e Den aktuellen Status des Dateisystems mit einem fr heren vergleichen und dabei ein
9. 3 15 Aufbau Partitions Eintrag 1 0 20 20 000000000000 4 1 Sicherheitsrelevante Kommandos unter MS DOS 4 2 Relevante Funktionen Dos Funktionsinterrupt 2116 4 3 Schutzbereiche eines Watchers 2 2 Cm non 4 4 Standardaufbau Funktionsbeschreibung 2 222 4 5 Aufbau Attribut Byte se esmes eene te iare sy hirea 4 6 scan dir Dateisystem rekursiv durchsuchen 4 7 check_seal berpr fe Programmsiegel ooo aa 4 8 Beispiel Dateibestand oaoa 020000 eee eee 4 9 Beispiel Vergleich von Dateibest nden 2 2 2 2222 4 10 get phenotype Bestimme Ph notyp einer Datei 4 11 get_genotype Bestimme Genotyp einer Datei 2 2 2 2 4 12 norm_ path2 Normalisiere Pfad 2 2 2 CL on nn 4 13 norm_ path Normalisiere Pfad 2 2 Cm n nn 4 14 intercom Kommunikation mit residentem Programm 335 336 TABELLENVERZEICHNIS 4 15 Datenzugriff von TSR Programmen 0 000 205 4 16 Bitmuster erforderliche Rechte unter AVWatchP 2 22 2 2220 213 4 17 Schutzma nahmen unter Flushot 2 2 on nn 218 4 18 Schutzma nahmen unter AVWatchF 2 2 Lo nn 220 4 19 cmp_fspec Vergleiche Dateispezifikationen 2 22 2 0 221 4 20 Aufbau des Modus Wortes in set isr_21 2 2 2 22 2 0 223 4 21 add2log F ge Eintrag an Logdatei an 2 2 nn 229 5 1 Viren Spezialit ten 2 22 nn nennen 249
10. Au erdem gehen Anforderungen f r einen Rechner in z B Skandinavien zun chst nach Amerika und dann zur ck nach Europa Weil vormittags in Europa aufgegebene Nachrichten die USA in den Nachtstunden er reichen wird das Problem der Belastung etwas gemildert Im Fr hjahr 1991 mu te man etwa einen Tag auf die vollst ndige Erledigung seines Auftrags warten Beispiel Verzeichnisse und Dateien per FTP ordern Sie m chten sich vom Host cert sei cmu edu eine internet Adresse den Inhalt des Verzeichnisses pub ausgeben lassen existiert meistens und die Datei readne in diesem Verzeichnis im Bin rmodus holen Bei den Kommandos wird Gro und Kleinschrift nicht unterschieden wohl aber bei den Pfad und Dateinamen falls Sie sich auf einem UNIX System befinden Die entsprechende Nachricht an bitftp pucc die gleichzeitig als Befehls bersicht dienen soll lautet Kommando Kommentar FTP cert sei cmu edu Angabe des FTP Hosts USER anonymous anonymous ist die Gast Kennung CD pub Wechsel ins Verzeichnis pub dir und ausgeben lassen BINARY Bin rmodus einschalten Gegenteil ASCIT GET readme Datei holen QUIT Dialog beenden B 6 NETSERV Server netserver sind weder besonders komplex noch schwer zu bedienen Sie stehen nur deshalb am Schlu dieser Einf hrung weil sie lediglich Hilfsdienste zu verschiedenen Netzwerken anbieten Dies sind Fileserver Dienste f r Informationstexte zu verschiede nen Netzen Netz berg ngen
11. C Interface Std_INTC realisiert Me chanismen zur Vermeidung der oben genannten Probleme F r lt nr gt ist im ganzen Quelltext die Nummer des betreffenden Interrupts einzusetzen Ein Textverarbeitungs programm mit der Funktion Search amp Replace suchen und ersetzen kann hier n tzlich sein Die Interface Routine beginnt mit einer Reihe von EXTERN Deklarationen die dem Assembler anzeigen da die so bezeichneten Funktionen und Daten in anderen Modu len definiert werden Dort sind die ISRs als gew hnliche Funktionen realisiert Name isr_ lt nr gt und die Daten global deklariert was einer Deklaration als PUBLIC entspricht Die Schl sselworte BYTE WORD und DWORD entsprechen den Definitionen unserer Stan dardbibliothek NEAR steht f r einen NEAR Zeiger oder eine Funktion die ber einen NEAR Sprung erreicht werden soll Der Assembler wei dann welche Sorte ret Befehl er verwenden mu EXTRN _brkdis NEAR EXTRN _brken NEAR EXTRN _in_isr BYTE EXTRN _isr_ lt nr gt NEAR EXTRN _new_stack NEAR EXTRN _old_int lt nr gt DWORD EXTRN _old_ss WORD EXTRN _old_sp WORD Unterbrechung verhindern Unterbrechung zulassen in ISR Flag INT lt nr gt Service Routine Zeiger auf neuen Stack alter INT lt nr gt Vektor altes Stacksegment alter Stackpointer Ein Ausschnitt aus Std_TSR Besprechung im n chsten Abschnitt zeigt wie die De klarationen auf der C Seite aussehen globale und externe Variablen
12. C p i k f hre p aus gehe zu 1 berichtige Priifsumme f hre Programm trotzdem aus unsicher e m ma Lade Zustand von p zum Zeitpunkt der Pr fsummenberechnung f hre p aus gehe zu 1 lade unver nderte Sicherungskopie zur ck f hre Programm aus sicher Der Vorl ufer von S3 das Betriebssystem S2 erkennt Ver nderungen nicht an einer Pr fsumme sondern an unterschiedlicher gespeicherter und aktueller letzter Be arbeitungszeit einer Datei F r die Anwendung dieser Strategie mu nat rlich sicherge stellt sein da jede Schreiboperation auch gleichzeitig die Zeitmarke der letzten Bear beitung ver ndert Ein Virus k nnte dies umgehen niemals jedoch die Ver nderung des Dateiinhalts Deshalb eignet sich S2 nur f r vertrauensw rdige Systeme Trusted Sy stems Das vorgestellte Betriebssystem 3 eignet sich auch f r nicht vertrauenswiirdi ge Rechner die Untrusted Systems Auf die Ausnahme die Stealth Viren darstellen kommen wir weiter unten bei der Diskussion der Schw chen noch zur ck Cohen hat die Pr fsummenfunktion noch so erweitert da auch die Abh ngigkei ten der Programme S4 und Daten S5 untereinander ber cksichtigt werden Diese Relationen werden entweder eingegeben oder im laufenden Betrieb durch ausprobieren ermittelt Falls das Programm p gestartet wird berpr ft das Betriebssystem rekursiv auch alle Programme und Daten von denen es abh ngig ist Damit wird die Integrit t d
13. tolower drive 0 subdir date 0x0000 subdir time 0x0000 subdir attr 0x0000 subdir2text amp subdir ext add2list amp sub_anchor ext get_name ext hlp Start mit Wurzelverz scan_dir 255 0x16 hlp add_subdir dummy Als Vergleichsliste dient der extern gespeicherte alte Bestand stop zeigt in bit weiser Kodierung an ob die interne Liste mit den aktuellen Daten oder die externe Liste mit den Referenzdaten das Ende erreicht hat Eine AND Operation mit INT_STOP bzw EXT_STOP filtert das entsprechende Bit heraus Zun chst werden die ersten beiden Elemente der Listen eingelesen Die while Schleife wird so lange durchlaufen bis beide Listen das Ende erreicht haben Je nach Vergleichsergebnis decide werden entsprechende Informationen in die neue Bestands liste und die Reportdatei Standardausgabe geschrieben sowie das n chste Element der internen und oder externen Liste gelesen In jedem Fall bernimmt die Funktion scan_files die weitere Bearbeitung eines gel schten existierenden oder hinzugekom menen Verzeichnisses bearbeite Verzeichnisse printf scanning files n ptr sub_anchor Start mit 1 Element stop ptr NULL INT_STOP stop read_subdir amp sin_file amp ein_file ext while stop INT_STOP EXT_STOP decide stricmpu ptr gt text ext Verzeichnis hinzugefuegt if decide lt 0 stop amp EXT_STOP amp amp
14. wenn berhaupt nur schwer fassen Problematisch ist insbesondere da nur der Begriff Daten nicht aber der Begriff Programm erw hnt wird Auch andere Ge setzestexte sind nicht sehr hilfreich Der Paragraph 202a StGB stellt das Aussp hen von Daten nur dann unter Strafe wenn die Information gegen unberechtigten Zugriff besonders gesichert ist wovon bei PCs so gut wie nie die Rede sein kann Nach der deutschen Rechtslage k nnen Virenprogrammierer nur bei weitestm glicher Auslegung der Gesetze bestraft werden 26 1 6 2 Die Rechtslage in den USA In den USA wurde 1988 ein Gesetzesentwurf eingebracht der sich speziell mit der Problematik der Computerviren befa t HR 5061 Computer Virus Eradication Act of 1988 26 Gesetz zur Ausrottung von Computerviren Das Gesetz droht demjenigen Strafe bis zu 10 Jahren Freiheitsentzug an der wissentlich Programme oder Daten so manipuliert da diese ihren Benutzern Schaden zuf gen Es gen gt dabei bereits solche Programme unerkannt in Umlauf zu bringen oder dies zu versuchen 22 KAPITEL 1 THEORIE DER SOFTWAREANOMALIEN Ein Jugendlicher wurde bereits daf r bestraft da er absichtlich einen Virus in ein BBS eingeschleust hat 92 Ebenfalls verurteilt zu 10000 Strafe 400 Stunden ge meinn tziger Arbeit und einem Jahr Ausschlu von der Universit t wurde Robert T Morris dessen INTERNET Worm 1990 Hunderte von zivil und milit risch genutz ten Re
15. 19 Ernste Gef hrdung oder verkannte Gefahr Virusprogramme 20 21 22 23 26 27 28 CP 24 86 S 100 105 Als Computerviren noch als Insider Geheimnisse galten Artikel der Bayrischen Hackerpost BHP Cohen s Arbeiten APPLE II Virus zum abtippen Virus Blockade HC 7 86 S 16 FU Berlin sichert Gro rechner speziell gegen Computerviren COHEN Fred Computer Viruses Theory and Experiments engl in 29 S 297 310 urspr nglich in C amp S 6 87 S 22 35 Definition Computervirus Beweis der nicht Detektierbarkeit von Computerviren Experimente zur Ausbreitung von Viren unter versch Betriebssystemen COHEN Fred On the Implications of Computer Viruses and Methods of Defense engl in 29 S 331 341 urspr nglich in C amp S 7 88 S 167 184 Grundlagen Experimente unter versch Betriebssystemen Detektion biologische Analogien Recovery Immunisierung Fehlertoleranz zuk nftige Strategien Schutz der Integrit t EVANS Paul SHAIN Mike GLISS Hans amp SOLOMONIDES Costas Panel Discussion Are Computer Viruses Here to Stay engl C amp S Vol 9 No 4 1990 S 305 307 Diskussion auf der Compsec 89 in London ber Computerviren ZAJAC Jr Bernard P People The Other Side of Computer Security engl C amp S Vol 9 No 4 1990 S 301 303 Sicherheitsrisiko Personal ZAJAC Jr Bernard P The 1990s What Will They Hold engl C amp S Vol 6 No
16. Seiteneffekte keine R ckgabewert 0 nicht ausf hrbar 1 ausf hrbar Tabelle 4 10 get_phenotype Bestimme Ph notyp einer Datei Typ berpr fung Dateianalyse Um den Schutz der Festplatte vor getarn ten Programmen zu gew hrleisten gen gt es nicht nur auf die Erweiterung zu achten Da diese nicht zwingend den Inhalt bezeichnet ben tigen wir andere Kriterien zur Be stimmung des Dateityps Dateien lassen sich prinzipiell in zwei Kategorien einordnen Solche mit fixen berpr fbaren Attributen und solche deren Inhalt analysiert werden mu MS DOS zum Beispiel verlangt da exe Dateien mit den Buchstaben MZ in den ersten zwei Bytes markiert sind Au er den Linkern die sich an diese Konvention hal ten m ssen gibt es eine Reihe von Programmen die die von ihnen erzeugten Dateien mit Schl sselw rtern kennzeichnen z B pkpak mit PK etc Die zur zweiten Kategorie geh renden com Dateien hingegen haben keinen be stimmten Dateikopf und sind somit schlecht von z B Graphikdaten zu unterscheiden Als einziger Hinweis kann der oft am Anfang des Programms vorhandene Sprung ber Datenbereiche hinweg zum eigentlichen Programmcode dienen Dieser ist allerdings nicht zwingend vorhanden oder k nnte auch zuf llig Bestandteil einer beliebigen Da tei sein Ebenso k nnte eine Textdatei mit den Buchstaben MZ beginnen was zwar unwahrscheinlich aber m glich ist Wir ben tigen also einen Algorithmus der Textdateien v
17. Wird versehentlich ein ma nipuliertes Programm gestartet kann z B ein Virenscanner zum Infektionsverbreiter erster Kategorie werden Man stelle sich nur den Fall vor da ein Infect On Open Virus den Scanner verseucht hat Aufgabenbeschreibung Es sind ein Programm Seal und eine Funktion chk_seal zu entwickeln die eine Pr fsumme ber bestimmte Daten bilden bzw ein Programm automatisch beim Start berpr fen Der Pr fsummenalgorithmus ist frei w hlbar auf der Programmdiskette wird das CRC Verfahren verwendet F r die Authentifizierung und den Schutz der Integrit t ist es notwendig da kein Dritter eine andere zul ssige Pr fsumme generieren kann Aus diesem Grund verschl sselt blicherweise der Sender mit seinem geheimen Schl ssel asymmetrisches Verfahren die der Nachricht beigef gte Pr fsumme In unserem Fall kann die Authen tifizierung z B dadurch erfolgen da Generatorpolynom Algorithmus Startparameter und Pr fsumme auf einem anderen Weg als die Datei bermittelt werden Brief Tele fon etc In diesem Fall bernehmen die Unterschrift bzw die Stimme und gegenseitig abgefragtes Wissen die Rolle des Identifikators Systemarchitektur Seal besteht aus vier Sektionen main f hrt den Dialog mit dem Benutzer und ruft die einzelnen Funktionen auf e seal_disk berechnet die Signatur f r einen Datentr ger e seal_boot ber cksichtigt nur die Urladeinformation PBRs und MBRs falls vor handen e seal_fi
18. ffnen einer Datei mit un x hnlichen Funktionen erfolgen weitere Aufrufe wie Lesen oder Schreiben ber Angabe des zugeh rigen Handles Um die se Funktionsaufrufe kontrollieren zu k nnen m te das Kontrollprogramm entweder selbst eine Liste der Handles mitf hren oder auf interne undokumentierte Funktionen von MS DOS zur ckgreifen Von letzterer Methode ist dringend abzuraten da sich die relevanten internen Datenstrukturen System File Table und Job File Table schon von Release zu Release ndern Die erste Methode hingegen erfordert hohen Program mieraufwand Aus diesen Gr nden beschr nken wir uns auf die Kontrolle des ersten Zugriffs das ffnen der Datei das ja in jedem Fall erfolgen mu FCB Aufrufe unterscheiden keine Pfade sondern beziehen sich stets auf das bei Offset 0016 bzw 0716 angegebene Laufwerk und das aktuelle Verzeichnis darauf Des halb mu der Dateiname noch um die Laufwerksangabe erg nzt werden Eine Normali sierung ist generell notwendig um Dateinamen miteinander vergleichen zu k nnen Zu beachten ist au erdem da die oben angesprochenen Registerpaare FAR Zeiger bilden wir aber im TINY Modell arbeiten Die C Bibliotheksfunktionen erwarten die ber gabe von NEAR Zeigern auf Daten und Programmcode und versagen bei Mi achtung 12cp m kannte kein hierarchisches Dateisystem sondern war flach organisiert 4 5 REALISIERUNG DES RESIDENTEN TEILS 225 dieses Sachverhalts ebenso natiirl
19. fprintf stderr Write error copying file n to_go bytes fclose in fclose out Die urspr ngliche Programmdatei wird gel scht und die Hilfsdatei per Umbenennung zur Programmdatei gemacht if unlink f_name fprintf stderr Couldn t delete temporary file n if rename avconfig tmp f_name fprintf stderr Couldn t rename temporary file in program file n return 8 J 238 return 0 KAPITEL 4 ENTWICKLUNG DER SYSTEMPROGRAMME Kapitel 5 Diskussion The only truly secure system is one that is powered off cast in a block of concrete and sealed in a lead lined vault with armed guards and even then I have my doubts Gene Spafford zitiert in VIRUS L Digest Vol 3 No 121 Mit dem Erreichen des 5 Kapitels liegt die Theorie und Praxis der Abwehr von Softwareanomalien zun chst einmal hinter uns Wir haben aus theoretischen berle gungen heraus ein Paket von Funktionen und Programmen entwickelt das wir nun riick blickend kritisch unter die Lupe nehmen wollen Inwiefern wurden die selbstgesteckten Ziele erreicht welcher Schutz wird geboten und wo liegen potentielle Schw chen Der Ausblick versucht aufzuzeigen wie die zuk nftige Situation sowohl auf dem Virensektor als auch auf dem Gebiet der Abwehrprogramme aussehen k nnte Welche Entwicklungen zeichnen sich ab wie k nnen die eigenen Programme sinnvoll erwei tert werden Nicht zuletzt werden auch einige skur
20. gr ere Vor sicht walten lie en studierten zun chst die begleitende Brosch re die jeden aufmerk samen Anwender h tte stutzig machen m ssen Sie enth lt Informationen zum Pro gramm dessen Bedienung und als gr ten Teil einen Abschnitt ber eine Limited Warranty eingeschr nkte Garantie und ein License Agreement Nutzungsabkom men In letzterem wird die Einsendung von US 189 bzw US 378 gefordert und f r den Fall der Nichtzahlung der Einsatz von Mitteln angek ndigt die sicherstellen da der Benutzer das Programm nicht mehr benutzen kann und die andere Programme nachteilig beeinflussen Das Informations Programm selbst ist laut Aussagen von Medizinern wertlos Viel aufwendiger programmiert und weitreichender in seinen Folgen ist das was der Benut zer nicht erwartet hat Nach einer gewissen Anzahl von Systemstarts wird eine Funkti on aktiv welche die Drohungen in Wirklichkeit umsetzt und den Inhalt der Festplatte verschl sselt Ende 1990 schlie lich wurde Dr Joseph W Popp als Tatverd chtiger festgenommen 65 1 3 Computerviren 1 3 1 Definition Def Computervirus kurz Virus Ein Virus ist ein in einem Wirtsprogramm enthaltener Programmteil der Kopien seiner selbst erzeugt in dem er andere Programme ver ndert Etymologie Ein Virus von lat virus giftiger Saft in der Medizin s chlich sonst auch maskulin Plural Viren ist in der Biologie ein Zwitter zwischen gro em Eiwei m
21. setzen e main pr ft die Eingaben des Anwenders auf Vollst ndigkeit reserviert Pufferspei cher und liest die Rechtedatei ein e gen_copy normalisiert und erg nzt Quell und Zielpfade und generiert aufgrund der Dateispezifikationen Dateinamen e chk_copy berpr ft die angeforderte Operation anhand der Rechte auf Zul ssig keit e phys_copy w hlt den korrekten Lese Schreibmodus aus und kopiert die Datei Normalerweise werden allen Dateien im Bin rmodus kopiert d h Steuerzeichen in der Information werden ignoriert Besonders zu beachten ist die Behandlung von Ger tedateien aus denen nicht im Bin rmodus gelesen werden darf Andernfalls w rde 174 KAPITEL 4 ENTWICKLUNG DER SYSTEMPROGRAMME Abbildung 4 8 Systemarchitektur AVCopy AVRename die Markierung Ende der bertragung EOT End Of Transmission nicht erkannt und die Leseroutine w rde sich in einer Endlosschleife erh ngen Die Funktion isatty is a TTY ist ein serielles Ger t bestimmt f r eine ge ffnete Datei ob es sich wirklich um eine Datei oder um ein Ger t handelt Funktionsbeschreibung Die Hauptfunktion main ist f r einleitende Ma nah men wie Kontrolle der Aufrufparameter und Reservierung von Pufferspeicher zust ndig Defines Puffergroesse 18 Sektoren mit 512 Bytes define BUF_SIZE 18 512 define M_DRIVE 10 globale Variablen WORD t_rights M_DRIVE M_DRIVE Rechte Tabelle BYTE buf
22. while p amp amp isprint p ptt 3 if p strcat warning control characters in name flag 0x20 if flag Beanstandung printf s gt s n full warning F return flag Hinweis In die schwarze Liste sollten alle MS DOS Kommandos und Program me aufgenommen werden die f r den bestimmungsgem en Betrieb nicht notwen dig sind Dazu z hlen m glicherweise Kopier und Umbenennungsprogramme xcopy 152 KAPITEL 4 ENTWICKLUNG DER SYSTEMPROGRAMME replace etc Tools zur Manipulation der internen Struktur der Festplatte und Werk zeuge zur Programmerstellung Ein Blick in die Aufstellung der von Computerviren ben tigten Funktionen gibt evtl weitere Hinweise auf kritische Programme 4 3 2 Seal und Check Seal chk_seal Problemstellung Bei Dateien die sich auf einem ungesch tzten System befinden oder die versandt werden ergibt sich ein Problem Wie erkennt man unbefugte Ver nde rungen Bei Daten die sich auf dem eigenen System befinden besteht wenigstens die M glichkeit Sicherheitskopien anzulegen und ggf das Original mit der Arbeitskopie zu vergleichen F r den Versand aber mu der Nachweis erbracht werden da die Datei von einem bestimmten Sender stammt Authentifizierung und nicht ver ndert wurde Wahrung der Integrit t Manuellen Kontrollverfahren haftet der Mangel an da der Anwender aktiv und vor jedem Programmstart die Pr fung durchf hren mu
23. 1 drive amp spc amp media amp bps amp cpd printf Invalid drive letter n return 0 3 sec_togo cpd spc 155 Die erzielte Lesegeschwindigkeit ist stark von der Anzahl der Sektoren abh ngig die mit einem Aufruf von absread gelesen werden Tabelle 4 3 zeigt die Pr fzeit f r eine 360kB Diskette in Abh ngigkeit von den gelesenen Sektoren pro Zugriff an Starke Einbr che sind bei 9 und 18 Sektoren erkennbar was dem Umfang eines halben bzw ganzen Zylinders entspricht eine bzw zwei Spuren Weitere Vielfache von 9 bringen keinen Geschwindigkeitsgewinn sondern fordern nur unn tig viel Pufferspeicher Abbildung 4 3 Abh ngigkeit Pr fzeit von gelesenen Sektoren pro Zugriff Ziel der Optimierung der Puffergr e ist es im Rahmen des verf gbaren Speichers m glichst viele ganze Spuren gleichzeitig einzulesen Der in buf eingelesene und ber 156 KAPITEL 4 ENTWICKLUNG DER SYSTEMPROGRAMME pbr ansprechbare PBR gibt Auskunft tiber die Anzahl der Sektoren pro Spur spt und Anzahl der Spuren pro Zylinder heads Anzahl Lesek pfe bufs ist die Puffergr e in Sektoren zu 512 Bytes und wird mit 0 initialisiert Die Anzahl der Puffersektoren wird so lange um die Anzahl der Sektoren pro Spur erh ht bis entweder der komplette Zylinder abgedeckt ist heads ist 0 oder die verf gbare Puffergr e berschritten w rde berechne optimale Puffergroesse xabsread drive 1 0 void buf pbr struct T_BOO
24. 151 Wie chk_subdir ruft chk_file die zentrale Funktion check auf um den Da teinamen berpr fen zu lassen Die von check aufgerufenen Funktionen conv_date conv_time conv_attr und conv_size wandeln die Eintr ge f r Datum Zeit Attri butbyte und Dateigr e in Strings um Gleichzeitig wird gepr ft ob Datum oder Zeit unzul ssig sind das hidden oder system Attribut gesetzt oder die Gr e 0 ist Ein R ckgabewert von 0 bedeutet keine Beanstandung check sammelt je nach Ergebnis der Konvertierungsroutinen die Warnmeldun gen im String warning Kam es zu mindestens einer Beanstandung des untersuchten Namens wird eine Warnmeldung in die Reportdatei Standardausgabe geschrieben int check char path struct T_DTA dta char warning 200 Warnmeldun char full 65 voller Name PATH amp NAME char date 11 time 9 Dateiattribute Strings attr 9 size 8 int flag Fehlerflag BYTE p Zeiger in DTA NAME flag 0 warning 0 0 strcpy full path vollen Namen aufbauen strcat full dta gt name if conv_date dta gt date date illegales Datum strcat warning invalid date flag 0x01 gt gt FLAG bO conv_date bi conv_time b2 conv_attr b3 conv_size lt lt 3 if selectp list_anchor dta gt name in schwarzer Liste strcat warning marked file flag 0x10 p BYTE dta gt name Suche nach Steuerzeichen
25. 3 5 ermittelt Das Erreichen des Dateiendes oder Auftreten eines Fehlers wird dem aufrufenden Programm durch Setzen des Carry Flags und bermittlung einer Fehlernummer im AX Register signalisiert 3 3 3 Ger tetreiber Ger tetreiber fungieren als Mittler zwischen Kernel und BIOS Das Kernel arbeitet ger teneutral d h es sieht nicht die tats chliche Datenorganisation und Funktion der Peripherie sondern nur standardisierte Datenformate und Transportfunktionen Un abh ngig davon ob das angeschlossene Ger t eine Festplatte ein Magnetband oder eine RAM Disk ist vermitteln die Ger tetreiber eine einheitliche Schnittstelle MS DOS wie z B auch UNIX unterscheidet zwei elementare Ger teklassen die blockorientier ten und die seriellen Ger te Block Device Driver Peripherieger te die an einen Computer angeschlossen werden k nnen verhalten sich im Detail meist unterschiedlich sind sich aber im Prinzip doch recht hnlich Als Beispiel hierf r seien Festplatten genannt die sich je nach ver wendetem Controller Seagate Interface AT Bus SCSI ESDI etc Anzahl der Zylinder K pfe und Sektoren stark voneinander unterscheiden Dennoch ist allen die Aufteilung der Daten in Speicherbl cke gemeinsam die als kleinste Transporteinheit im wahlfreien Zugriff d h ber die Angabe einer Adresse gelesen oder geschrieben werden k nnen Anwenderprogramme k nnen blockorientierte Ger tetreiber nicht direkt anspre chen sondern nur
26. Boot Record Master Boot Record Zur Option Schutz MBR sind zwei Dinge anzumerken 1 Dieser Schutz erstreckt sich auf alle Bereiche eines physikalischen Laufwerks die keiner Partition angeh ren 2 Die Option m mu bei den Rechten der ersten Partition eines Laufwerks ange geben werden Zur Festlegung der Rechte benutzen wir wieder eine Textdatei die durch eine Er weiterung von AVConfig in eine komprimierte Form umgesetzt und zu AVWatchP ber tragen wird F r die interne Speicherung der Verbote dient der Eintrag BYTE rights in struct T_P_ENTRY Ein Eintrag in p_rights 1st ist folgenderma en aufgebaut Eintrag lt Laufwerk gt lt Rechte gt Laufwerk lt Buchstabe gt Buchstabe A B YIZ Rechte Option en Option rlwlflblm Laden der Partitionstabelle AVConfig fragt bei AVWatchP mit der Nachricht IM_I_TABLE die Adresse der Partitionstabelle i_table ab Nach Auswertung der Daten tr gerstrukturen und Umsetzung der Rechteliste schreibt das Konfigurationsprogramm die Ergebnisse direkt in die Tabelle von AVWatchP s a 4 5 10 AVConfig AVWatchP tha t und AVConfig Aufrufparameter p m ssen nacheinander als Einheit ausgef hrt wer den weil das System sonst ungesch tzt bleibt in Service Funktion von ISR_21 Abteilung Subfunktionen einfuegen case IM_I_TABLE void far far MAKE_FARPTR ds dx void far amp i_table return PRG_ID IM_I_TABLE 4 5 REALISIE
27. Drucker 1pt serielle Ports com und Disketten Festplattenlaufwerke enth lt Dazu kommen noch hardwareabh ngige In itialisierungsroutinen f r diverse Peripheriebausteine Das RAM BIOS stellt genormte Schnittstellen zu der vom Hersteller ausgew hlten Hardware her Der zweite Teil von io sys das Modul sysinit stammt von Microsoft Es e stellt die Gr e des verf gbaren Arbeitsspeichers fest e transferiert sich an das obere Speicherende e verschiebt das in der Datei msdos sys enthaltene Kernel an seine endg ltige Position oberhalb des BIOS und e startet dessen Initialisierungsroutine Diese baut interne Arbeitsbereiche und Tabellen auf setzt die Kernel Interrupts 2016 bis 2F s und initialisiert die Ger tetreiber Ab diesem Zeitpunkt steht MS DOS vollst ndig zur Verf gung config sys Erst jetzt kann der Anwender in den Bootvorgang softwarem ig ein greifen sysinit l dt und interpretiert die im Wurzelverzeichnis befindliche Konfigura tionsdatei config sys Dabei werden optional die Gr e bestimmter interner Puffer die Landessprache und der Name des Kommandointerpreters festgelegt Am wichtig sten sind die beliebig spezifizierbaren Ger tetreiber die in das Betriebssystem einge bunden und initialisiert werden Zuletzt wird der Kommandointerpreter gestartet der kraft Voreinstellung command com hei t und mit der shell Anweisung in config sys explizit benannt werden kann autoexec bat Als erstes arbeitet command
28. ES CS pop ds wg Modell TINY push cs pop es call _isr_ lt nr gt ISR aufrufen Nach der R ckkehr vom Funktionsaufruf m te normalerweise der Wert 20 zum Stackpointer addiert werden um den Platz fiir die Funktionsparameter 10 Worte sind 2 10 20 Bytes freizugeben Durch die Umschaltung auf den alten Stack kann dieser Schritt entfallen cli auf alten Stack schalten mov sp cs _old_sp mov ss cs _old_ss sti call _brken Unterbrechung zulassen mov cs _in_isr 00h in_isr Flag loeschen Der R ckgabewert der Kontrollfunktion der in AX steht dient zwei Zwecken Der Wert FFFF 1 6 quivalent zu 1 in Wortbreite signalisiert dem Interface da der Aufruf zul ssig ist Die Fortsetzung mit der Original Isr erfolgt durch den Sprung zu cont cmp ax OFFFFh Funktionswert OxFFFF je cont Ja Operation validiert Die Anforderung ist unzul ssig falls die Kontrollfunktion einen von FFFF 1 ver schiedenen Wert zur ckgibt Der Inhalt von AX entspricht dann der zu simulierenden Fehlernummer die angeforderte Funktion wird nicht ausgef hrt die ISR also abgebro chen Wie signalisiert die Kontroll ISR dem aufrufenden Programm einen Fehler Kernelaufrufe geben im Fehlerfall im AX Register die Fehlernummer zur ck und setzen das Carry Flag Die Belegung des AX Registers beim Aussprung aus der ISR berei tet uns kein Kopfzerbrechen wohl aber das Setzen des Carry Flags Bei der Ausf hrung des iret Kommandos werde
29. Front hat es kraft der Legalit t ihres Tuns leichter Viren sind ein Sicherheitsrisiko das den Anwender zur Anschaffung von Gegenmitteln d h Sicherheitssoftware und Antivirusprogrammen veranla t McAfee Associates z B ist ein Konzern der sicherlich vom Verkauf von Antivirusprogrammen leben k nnte Andere Autoren vertreiben ihre Produkte als Shareware oder gar als Freeware und verdienen damit nichts oder relativ wenig Auf der Gegenseite bieten manche BBS gegen Bezahlung Quelltexte von Viren an In einigen Zeitschriften und B chern wurden und werden Viren zum Abtippen ver ffentlicht wohl um damit manchem einen Anreiz zum Kauf zu bieten Wie immer gehen die Meinungen dar ber auseinander ob sich das Aussetzen von neuen Computerviren f r Hersteller von Antivirusprodukten lohnen w rde Ein Gegenargument ist da sich neue Viren kaum oder nur sehr langsam verbreiten und sich deswegen niemand sofort eine neues Abwehrprogramm zulegt Auf lange Sicht 4Kennung YC1ERP Bandung Indonesien 38 3 134 5 Auch bei Fernseh und Kinofilmen m glich aber verboten 5 2 AUSBLICK 249 Virus Funktion Ambulance Ein Krankenwagen f hrt mit Sirenenge heul ber die Bildschirn Armageddon Versucht regelm ig die griechische Zeitansage anzurufen Selbstw hlm odem und Aufenthalt in Griechenland vorausgesetzt kann es teuer werden Cascade Es wird Herbst Die Buchstaben fallen herab und sammeln sich am Boden des Bildschirms Eight
30. III von der Au enwelt isoliert eine Methode mit der kein herk mmliches Antivirus programm arbeitet Weder der Start eines verseuchten Programms noch das Einspielen eines evtl getarnten Virus ist m glich Selbst wenn dies gel nge verhindert sz I den Start weil das Programm dem System unbekannt oder die Integrit t durch Be nutzung des gleichen Namens verletzt ist Letztere berwachungsfunktion greift auch dann wenn alle D mme gebrochen sind und ein aktiviertes Virus Programme manipu liert hat Diese k nnen nicht mehr ausgef hrt werden die zweite Virusgeneration wird blockiert Kontrollierte Isolation und andere Schutzkonzepte schlie en sich nicht aus son dern erg nzen sich im Gegenteil hervorragend Residente Scanner erkennen Viren in Programmen unbekannter Qualit t z B Neuzug nge Watcher verhindern Sch den und Verbreitung bei der versehentlichen Aktivierung eines Virus Checker Funktionen sind bereits durch sz I abgedeckt 66 KAPITEL 2 THEORIE DER ABWEHR Kapitel 3 Systemprogrammierung unter MS DOS Da zahlen Leute Tausende von Mark an Gebiihren fiir Seminare tiber Softwareengineering und anschlie end fahren sie nach Hause und lassen ihre Leute in C programmieren Niklaus Wirth zitiert in c t 4 91 Dieses Kapitel stellt nach der Theorie der Abwehr von Viren den zweiten system spezifischen Teil der theoretischen Grundlagen dar und befa t sich mit der Systempro grammierung unter MS DOS Es kann so
31. SIGNUM Virus auf ST Digital Diskette Nummer 2 Computec Verlag Weltweit bef rchten die Experten heute Angriff von Computerviren WELT 1989 10 12 Entwicklung der Computerviren Panik um das Datacrime Virus Computer Viren RWTH Aachen verschickte verseuchte Disketten KES 90 2 S 100 101 Akademisches Auslandsamt der RWTH Aachen verschickte unwissentlich mit dem 1701 Herbstlaub Virus verseuchte Software Virus Warnung WHALE und Variante von Jerusalem B KES 90 6 S 416 Jon David isoliert JERUSALEM B Variante die Schutzeinrichtungen der Novell Netware umgeht ein sophisticated virus WHALE Produkte und Produktbesprechungen Keine Angst vor Viren PP 9 1989 S 35 41 Produkt bersicht Vergleich Check und Recovery Programme H RTEN Robert Markt bersicht Hard und Software zur PC Sicherheit KES 90 3 S 171 194 Umfangreiche und ausf hrliche Markt bersicht LITERATURVERZEICHNIS 345 58 Computer Viren Testbericht Suchprogramme 59 60 61 62 63 64 65 66 KES 88 6 S 347 349 Pr fsummenprogramme im Test Alteration Searcher Data Becker PC Checkup Gliss amp Herweg GmbH Vaccine Sophos Ltd Vergleichsprogramme f r Apple VIRUSRX und Gro rechner COMPAREX von Sterling Software Rubrik aktuell Alarm f r AT s in c t 9 90 S 18 Bootschutz durch Hardware WEITZENDORF Thomas Teme
32. USA Kurztest PCBoot Kompaktes Tool zur Datensicherheit KES 90 6 S 414 415 Test PCBoot 2 31 Concord Eracom Wildberg Zugriffsschutz und Datenver schl sselung WETTMANN Hartmut Bonn F r Sie ausprobiert SAVEDIR Guter Schutz KES 90 5 S 341 343 Test SAVEDIR Andreas M ller Software Berlin Meldungen Neues Anti Viren Programm KES 90 3 S 207 Besprechung von Virus Block 3 0 Expert Informatik Berlin Trojaner Aids Aufkl rung mit verh ngnisvollen Extras WELT 1989 12 20 Der AIDS Trojaner Beschreibung der Funktion Erkenntnisse des BKA Erfor schung durch internationale Gruppen DIERSTEIN R diger Manipulations Programme Das Panama oder AIDS Programm KES 90 1 S 4 14 Der AIDS Trojaner detaillierte Besprechung AIDS PANAMA Fall Absender ermittelt KES 90 2 S 104 US B rger verhaftet Dr Joseph W Popp ist wahrscheinlicher Initiator des AIDS Trojaners W rmer Auf die Knie SP 1989 11 07 S 294 296 Der INTERNET Worm Historie der Ausbreitung Erforschung Abwehrm glichkei ten 346 LITERATURVERZEICHNIS 67 Die gro en Systeme reizten Robert 68 69 70 71 72 73 74 75 SP 12 88 S 252 265 Der NTERNET Worm Entstehungsgeschichte Ausbreitung Erforschung durch Army FBI CIA und NSA Funktion L cken in UNIX Grundlagen Computeranoma lien Meldungen Morris verurteilt KES
33. Univac 1108 08 84 Test unter UNIX VAX Tabelle 1 1 Cohen s Experimente auf Gro rechnern F r die Programmierung des ersten sehr einfachen Virus ben tigte ein Experte nur acht Stunden Dennoch gelang es in f nf einzelnen Versuchen in durchschnittlich einer halben h chstens einer Stunde Supervisor Rechte zu erhalten Auch f r die Vi ren auf den anderen Systemen wurde selbst im Extremfall eine Entwicklungszeit von nur 30 Stunden ben tigt Es gelang jeweils immer in relativ kurzer Zeit Sekunden bis wenige Stunden die Grenzen zwischen Benutzern und Sicherheits Ebenen zu berwin den Dabei wurde weder das Sicherheitssystem umgangen noch irgendwelche M ngel ausgenutzt Ein sehr interessantes und oft kontrovers diskutiertes Thema ist ob ein Virus Sicherheitseinrichtungen des Betriebssystems umgehen mu oder nicht Man liest oft die Behauptung da die Entwicklung von Computerviren auf Minis und Mainframes ungleich schwieriger als auf z B MS DOS Rechnern sei zum einen weil die Sicherheits einrichtungen der Ausbreitung im Wege stehen und zum anderen weil systemnahe 18 KAPITEL 1 THEORIE DER SOFTWAREANOMALIEN Programmierung auf Gro rechner Betriebssystemen erhebliche Programmierfertigkei ten engl skill erfordert Beschr nkt man sich wie Cohen in seinen Experimenten auf rel simple Viren und auf v llig legale Systemoperationen sind trotzdem bis auf Supervisorebene durch schlagende Erfolge m glich Unter
34. ber Portadressen programmiert werden was brigens allgemein f r den Uh renchip und die Daten im CMOS RAM gilt Diese Zugriffe sind im Unterschied zu den BIOS Aufrufen nicht kontrollierbar M gliche Abhilfe bietet die regelm ige Pr fsum menbildung ber die Konfigurationsdaten und eine Plausibilit tspr fung f r die Uhr zeit AVWatchl Dieser Watcher berpr ft vor dem Start eines Programms dessen In tegrit t anhand von Daten aus einer Referenzliste Ein z B durch ein Virus infiziertes und damit ver ndertes Programm kommt erst gar nicht zur Ausf hrung das Virus wird nicht aktiviert Dies ist die prim re Schutzfunktion Selbst wenn ein verseuchtes Pro gramm versehentlich in die Referenzliste aufgenommen wird werden sekund re Infek tionen und Manipulationen erkannt Ein Virus kann AVWatchI auf zwei Arten angreifen T uschung des Watchers oder Manipulation der Referenzdaten Die Verf lschung der Kommunikationswege durch Stealth Viren haben wir bereits bei ChkState angespro chen Schwachpunkt Rechtemanipulation Alle Pr fprogramme die anhand des Inhalts bestimmter Dateien Entscheidungen ber die Rechtm igkeit einer Operation treffen sind von deren Integrit t abh ngig Rechte und Referenzlisten d rfen daher 242 KAPITEL 5 DISKUSSION f r Fremdprogramme nicht zug nglich sein Unter MS DOS sind folgende Ma nahmen denkbar e Verstecken der Datei durch Setzen des hidden Attributs und oder Kontrolle der Kernelfun
35. der letzte Eintrag enth lt die L nderkennung z B de f r Deutschland F r die Anschlu nummern ist ein Akustik Modem oder ein fester DATEX P Anschlu und ein entsprechendes Kommunikationsprogramm erforderlich F r diese Art der Kommunikation sei allerdings auf entsprechende Publikationen verwiesen Name Mail Adresse Chip Viren Service fgpc gm infohh rmi de Fridrik Skulason F Prot frisk rhi hi is Micro BIT Virus Center ry15 dkauni11 bitnet John McAfee Alan J Roberts ViruScan cup portal com Viren Test Zentrum Hamburg vir sfh infohh rmi de INFO box 040 69 40 101 300 Bd 7E1 Login name fgpc 040 69 40 145 1 2 kBd 2 4 kBd 7E1 Pa wort info 454 000 130 32 DATEX P Tabelle B 5 Mailboxadressen B 8 Der Netz Knigge Der kleine Netz Knigge versteht sich als Empfehlung und Mahnung zugleich Als Empfehlung insofern als da einige einfache Tips helfen k nnen eine Menge rger zu vermeiden Man sollte immer daran denken da man auf den Netzen zum Gl ck nicht allein ist und da gegen Benutzer die den Betrieb ung nstig beeinflussen durchaus vorgegangen wird Soviel als Mahnung e Fast alle Server Programme verstehen den Befehl help Es ist sehr empfehlens wert beim Zugriff auf einen neuen Server diesen Befehl abzusetzen um erste In formationen zur Bedienung zu erhalten Meistens enth lt die Antwort eine knappe Bedienungsanleitung und Hinweise darauf wie we
36. die Kennung eines indonesischen Radioamateurs Fernost Die UdSSR Ungarn und besonders Bulgarien Osteuropa sind in letzter Zeit zu Virenquellen erster Ordnung geworden Die Produktion von Viren und die Verbreitung ber BBS ist dort weder straf bar noch wird sie verfolgt Es ist aber zu erwarten da mit westlichen Wirtschaftshilfen f r L nder des Ost blocks die Forderung nach entsprechenden Gesetzen seitens der Geldgeber verbunden sein wird Die momentane Situation k nnte sich dadurch lang fristig ndern wenn auch momentan 1991 aus diesen Staaten eine wahre Flutwelle von Viren in die westliche Welt berschwappt und den Antivirus Forschern das Leben schwer macht Damit kein Vorwurf von Einseitigkeit aufkommt Auch in Deutschland und Gro britannien gibt es mehrere Virus BBS die das Ausland mit zu Recht finsteren Blicken im Auge beh lt Quelle 38 4 035 Warum sind sie hier Betrachtet man die Wirkungsweise diverser Viren zeigt sich da nichts zu ausgefallen schrill oder merkw rdig sein kann als da es nicht schon programmiert worden w re Tab 5 1 Die Ziele reichen von der gezielten Sch digung des Benutzers Armageddon ber politische Parolen Stoned Saddam bis hin zu reinen Jux Ambulance Loa Duong Quelle 38 Viren als Einkommensquelle Zu unterscheiden sind zwei Parteien diejenigen die Viren schreiben und die die Programme zur ihrer Abwehr entwickeln Die Antivirus
37. die Theorie ihrer Abwehr und die Systemprogrammierung unter MS DOS Wir haben uns dabei das n tige Wissen ber Computerviren und Systeminterna erworben um erfolgreich Abwehrprogramme entwerfen und erstellen zu k nnen Dieses Kapi tel beschreibt die Umsetzung unserer Erkenntnisse in konkrete C und Assembler Programme Dabei sollen alle Programmtypen behandelt oder zumindest angespro chen werden die im Kapitel Theorie der Abwehr beschrieben sind Resultat ist ein Antivirus System Av System das durchaus nicht nur Lehrcharakter hat sondern auch in der Praxis sinn und wirkungsvoll eingesetzt werden kann Aufbau des Kapitels Der erste Entwicklungsschritt die Problemstellung ist uns bereits aus den Kapiteln Theorie der Softwareanomalien und Theorie der Ab wehr bekannt Den Anfang macht deshalb die Anforderungsanalyse in der zun chst Forderungen an das Programmpaket formuliert und der Leistungsumfang festgelegt werden ohne sich Gedanken um die Realisierung zu machen Anhand der Informatio nen ber Arbeitsweise und F higkeiten von Computerviren wird eine bersicht der sicherheitsrelevanten Kommandos und Funktionen unter MS DOS erstellt Mit Hilfe dieser Angaben lassen sich die noch vagen Anforderungen pr zisieren Resultat der 127 128 KAPITEL 4 ENTWICKLUNG DER SYSTEMPROGRAMME Anforderungsanalyse ist eine funktionsm ige Beschreibung der notwendigen Abwehr ma nahmen Der Systementwurf konkre
38. die ein Datenwort auf dem Stack ablegen oder vom Stack holen Vorteil dieses Verfahrens ist da e die tats chliche Speicheradresse nicht bekannt sein mu e die CPU die Verwaltung des Stack mittels des Stapelzeigers bernimmt e automatisch eine Reihenfolge der Daten gegeben ist e kleine Speichermengen f r verschiedene Zwecke vom Stack genommen werden k nnen Werden auf dem Stack Werte z B mit dem Maschinensprachebefehl push abge legt w chst dieser nach unten in Richtung der niedrigen Adressen Der Stackpointer wird vor dem Speichern des Wertes dekrementiert In einer C hnlichen Schreibweise k nnte man die Arbeitsweise des push Befehls mit SS SP lt value gt beschrei ben Der zu dieser Operation komplement re Befehl pop holt einen Wert vom Stack und zwar immer den obersten auf den der Stapelzeiger gerade zeigt Die C Notierung lt value gt SS SP verdeutlicht dies Das Kommando call far ruft ein Unterprogramm in einem anderen Codeseg ment auf Der Prozessor merkt sich die R cksprungadresse indem er zuerst das Seg ment und dann den Offset des Programmz hlers CS IP auf dem Stack abgelegt Die ser zeigt auf den Befehl der dem call Kommando unmittelbar folgt Im Falle von NEAR Aufrufen mit call near wird nur der Offset auf den Stack gerettet da das Codesegment ja nicht gewechselt wird Abb 3 2 Die Befehle retn bzw retf return from subroutine NEAR bzw FAR laden die R cksprungadresse vom St
39. e Speicherbedarf feststellen vorher evtl Environment freigeben und Puffer reser vieren e Programm mit Aufruf Interrupt 211g Funktion 3116 beenden 3 7 2 Ger tetreiber Wie im vorangegangenen Abschnitt gesehen ist es relativ einfach ein Programm im Speicher zu installieren Wie dieser Abschnitt zeigen wird ist der Aufwand bei Ger te treibern ungleich gr er Der Grund warum wir uns dann trotzdem mit der zweiten Klasse residenter Programme besch ftigen liegt in der etwas gr eren Sicherheit die die Installation als Ger tetreiber mit sich bringt Umfangreiche Informationen zur Pro grammierung von Ger tetreibern finden sich in 13 Im n chsten Abschnitt werden die Vor und Nachteile der beiden Konzepte ausf hrlich diskutiert Ger tetreiber werden nicht wie gew hnliche TSR Programme gestartet und in stalliert sondern ber die Konfigurationsdatei config sys beim Bootvorgang in das Betriebssystem eingebunden Die Datei config sys ist ein gew hnlicher Asct Text mit einer Anweisung pro Zeile Der Eintrag f r einen Ger tetreiber hat die Form device lt vollst Dateispezifikation gt lt parameter gt Beispiel device c dos emm386 sys 1024 Dateistruktur Ger tetreiberdateien sys haben einen besonderen Vorspann der Informationen ber den Namen Typ verf gbare Funktionen und die Adressen der Serviceroutinen enth lt Beim Urladen f gt die Laderoutine von sysinit den neuen Ger tetreiber in die sequentiel
40. gen Dazu ein Beispiel In vielen Systemen existiert ein Interrupt der von der Hardware periodisch ausgel st wird und ebenso oft eine Serviceroutine aufruft un ter MS DOS ungef hr alle 54 92 ms 1 sec Ein Virus das diesen Interrupt abf ngt wird ebensooft aktiviert und hat die M glichkeit Operationen auszuf hren s Abb 1 1 unteres Diagramm Infect on Execute Open Speicherresidente Viren haben viel mehr Hand lungsm glichkeiten als gew hnliche Viren da sie ber einen l ngeren Zeitraum pr sent sind und ereignisgesteuert auf Systemzust nde reagieren k nnen Ein Direct Action Virus kann nur w hrend einer wegen der angestrebten Unauff lligkeit m glichst kur zen Zeitspanne nach dem Start andere Programme infizieren Infect on Execute Dar ber hinaus mu es sich seine Opfer selbst aktiv suchen eine weitere durch zus tz liche Laufwerkszugriffe potentiell auff llige Aktion Ein Indirect Action Virus kann sich z B in Betriebssystem Funktionen einklinken die zum ffnen Infect on Open Le sen Schreiben von Dateien und Starten von Programmen dienen Beim Aufruf einer dieser Funktionen durch ein anderes Programm bekommt das Virus die Namen infizier barer Programme praktisch vom Betriebssystem selbst angeliefert der anschlie ende Infektionsvorgang ist durch die sowieso angeforderte Laufwerksaktivit t gut getarnt 3Dazu mehr unter 3 1 4 Interrupts 10 KAPITEL 1 THEORIE DER SOFTWAREANOMALIEN Abbil
41. getch y return attach_seal f_name return 0 else printf This program allready carries a seal n Remove seal y es NO gt if tolower getch y return remove_seal f_name return 0 he Hinweis Durch das Hinzuf gen oder Entfernen des Programmsiegels ver ndert sich die Pr fsumme der gesamten Programmdatei chk_seal st rt das nicht weil es das angeh ngte Siegel nicht mit in die Berechnung der Signatur einbezieht Programme wie ChkState und AVWatchI bemerken aber sehr wohl da sich etwas ver ndert hat und die Integrit t der Datei verletzt wurde Au erdem geht bei der Neu bersetzung eines sich selbst berpr fenden Programms das Siegel nat rlich verloren selbst wenn nichts am Code ge ndert wurde Nach der Kompilierung ist mit AVConfig der Schutz wieder aufzufrischen attach_seal Das Anbringen des Siegels ist vergleichsweise einfach weil MS DOS wie die meisten Betriebssysteme das Erweitern von Dateien am Ende unterst tzt attach_seal f llt seal mit der Identifikationsnummer und der Pr fsumme und f gt das so generierte Siegel an die Programmdatei an int attach_seal char f_name BYTE buf BUF_SIZE CRC Puffer struct T_SEAL seal Programmsiegel FILE out Programmdatei berechne Programmsiegel seal id 0x2342 seal sig CRC_START make_crc_table POLYNOMIAL if sig_crc buf BUF_SIZE f_name amp seal sig fpr
42. gt mcb_anchor printf Address Owner Env Size Name n do printf 04 4X 04 4X 04 4X Y6lu s n PARA mcb_ptr 1 Start des res Speichers mcb_ptr gt owner Besitzer des Speichers Segmentadresse Environment s a Beschreibung des PSP WORD far MAKE_FARPTR mcb_ptr gt owner 0x2C DWORD mcb_ptr gt paras lt lt 4 Groesse in Bytes get_mcb_name mcb_ptr name Name des Besitzers last mcb_ptr gt flag mcb_ptr MAKE_FARPTR GET_SEG mcb_ptr mcb_ptr gt paras 1 GET_OFF mcb_ptr while last 2 Anhand der McB Liste und Informationen iiber die Speicherbelegung durch das Betriebssystem s a 3 5 3 Der Urladevorgang l t sich eine vollst ndige Belegungs karte des Adre raums erstellen die fiir die zu erstellende Sicherheitssoftware noch we sentlich sein wird Fiir Speicheroperationen stellt das Kernel eine Reihe von Funktionen zur Ver f gung von denen wir allerdings nur die Nummer 4916 Release Memory Block Speicherblock freigeben ben tigen werden Tab A 12 Das h ngt u a damit zusam men da bei der Speicherreservierung C und Kernel Funktionen nicht miteinander zusammenarbeiten und ein Crash bei gleichzeitiger Benutzung wahrscheinlich w re 3 4 2 Start und Struktur von Programmen Programme werden aufgerufen indem entweder der Name des Programms in der Kom mandozeile von command com eingegeben oder das Programm vo
43. int xsetftime int handle struct T_FTIME ftime Aufrufparameter AH 5716 AL 0016 Get Olje Set BX handle Handle CX in ftime Zeit Set DX in ftime Datum Set Seiteneffekte Set Dateizeit und datum werden gesetzt Get Dateizeit und datum werden in ftime bertragen Riickgabeparameter CF 0 kein Fehler 1 Fehlercode in AX CX in ftime Zeit Get DX in ftime Datum Get AX return 0 kein Fehler n Fehlercode Tabelle A 17 Get or Set File Date and Time INT 2116 Funktion 5716 272 ANHANG A SOFTWARE Funktion Get PSP Address Interrupt 2116 Funktion 6216 unsigned xgetpsp void Aufrufparameter AH 6216 Seiteneffekte keine Riickgabeparameter BX return Segmentadresse PSP Tabelle A 18 Get psp Address INT 2116 Funktion 6216 Funktion Absolute Disk Read Interrupt 2516 int xabsread int drive int nsects int lsect void buffer Aufrufparameter AL drive logische Laufwerksnummer 0 A CX nsects Anzahl der zu lesenden Sektoren DX lsect Startsektor DS BX buffer FAR Adresse Puffer Seiteneffekte Die angeforderten Sektoren werden in den Puffer geladen R ckgabeparameter CF 0 kein Fehler 1 Fehlercode in AX AX return 0 kein Fehler n Fehlercode Tabelle A 19 Absolute Disk Read INT 2516 A 3 MSDOS_S LIB A 3 2 Video Interrupt BIOS 273 Funktion Set Cursor Position Interrupt 1016 Funktion 0216 void xgotoxy int x
44. memory model LARGE gekuerzt _main proc far Retten BP SP Reservierung und Vorbelegung von A B und C push ss lea ax word ptr BP 2 far Adresse von C auf Stack push ax push word ptr BP 4 push word ptr BP 6 call far ptr _add_cbr add sp 8 ein Wort mehr zu beseitigen Zuweisung an A Restaurieren SP BP return _main endp Die Adressierung der Parameter in der aufgerufenen Funktion erfolgt relativ zum vorgefundenen Wert des Stackpointers SP der in das BP Register bertragen wird Die Parameter liegen zeitlich vor der R cksprungadresse also r umlich gesehen dar ber im Sinne von h her liegenden Adressen Der Zugriff auf die Parameter mu daher durch Addition eines bestimmten Wertes erfolgen der sich aus der Gr e der R ck sprungadresse und der Position der Parameter ergibt Die Beispielprogramme zeigen da sich bei der LARGE Version der Wert des BP Registers um ein Wort zwei Bytes nach unten verschiebt und deshalb die Offsets relativ zu BP um zwei Bytes gr er ausfallen Zu beachten ist au erdem der FAR Zugriff auf c ber z Der Befehl les load ES and register l dt das Registerpaar ES BX mit dem spezifizierten Doppelwort Das Segment Override Prefix ES ist notwendig weil sonst als Wegla wert das DS Register Verwendung f nde Vergleichen Sie noch einmal beide Versionen miteinander und machen Sie sich die Bedeutung jedes Unterschieds klar memory model SMALL gekuerzt _add_cbr proc n
45. nachzuvollziehen Virenbek mpfung mit k nstlicher Intelligenz Wenn die nat rliche Findig keit nicht mehr ausreicht wird die k nstliche Intelligenz AI Artificial Intelligence zu Rate gezogen Cohen hat gezeigt da es nicht m glich ist den Zweck eines Programms 250 KAPITEL 5 DISKUSSION im voraus zu erkennen Das bedeutet aber nicht da dies mit einer bestimmten Treffer quote durchaus funktionieren kann Es ist auf algorithmischem Wege nur sehr schwierig ein so vage definierbares Ding wie einen Computervirus zu erkennen Aus der automati schen Bilderkennung sind hnliche Probleme bekannt Was ist ein entgegenkommendes Auto ein Raketensilo eine L rche Aktuelle Forschungsvorhaben besch ftigen sich mit neuronalen Netzen die sich besonders zur L sung unscharf definierter Probleme eignen Ein solches Netz wird nicht programmiert es bekommt einen Sachverhalt beigebracht In vielen Lernschritten Te ach In werden Objekte vorgef hrt die gew nschte Antwort vom Ausgang her ins Netz gef ttert und damit das Wissen verankert Back Propagation Bei einer ausreichenden Anzahl von k nstlichen Nervenzellen lassen sich erstaunlich gute Ergebnisse erzielen Der Haken liegt bei der ausreichenden Anzahl der Komplexit t einer Nerven zelle und besonders bei der Vielzahl von Verbindungen zwischen den einzelnen Zellen die eine praktische Umsetzung stark erschweren Zuk nftige Technologien wie optische Computer kommen den Anf
46. re das Virus auf Probieren angewiesen Kryptographische Pr fsummen wie sie das MD4RSA Verfahren und der DES an bieten k nnen die Durchbruchsicherheit stark erh hen Allein schon die Signaturl nge von 16 bzw 8 Bytes erh ht potentiell den Schutz Allerdings sind diese Verfahren erheb lich rechenaufwendiger so da am besten Hardwareimplementationen die Berechnung anstelle der CPU bernehmen Check if Device is_device Die ANSI C Funktion isatty stellt f r ein Hand le fest ob die zugeh rige Datei eine normale Datei oder ein Ger t ist is_device ber nimmt das probeweise Offnen und Schlie en der zur berpr fenden Datei Funktion Check if Device int is_device char f_spec Aufrufparameter f_spec Dateispezifikation Seiteneffekte keine R ckgabewert 0 Datei oder Datei nicht gefunden 1 Ger t Tabelle A 31 is_device Pr fe ob Dateiname zu einem Ger t geh rt Display Message message zeigt eine einzeilige Nachricht auf den Bildschirm an ohne den aktuellen Inhalt zu zerst ren oder komplexe C Funktionen zu be nutzen Die Zeichenein ausgabe erfolgt mit Hilfe der Funktionen readchar und writechar die sich wiederum Funktionen des Video Interrupts bedienen Ort der Ope ration ist jeweils die Videoseite 0 und der aktuelle Standort des Cursors xwherexy und xgotoxy bernehmen das Abfragen bzw Setzen der Cursorposition wobei ebenfalls BIOS Aufrufe eingesetzt werden Funktion
47. sondern NULL ist Bit INT_STOP in stop gesetzt Das Ende der externen Liste ist durch das Ergebnis 4 3 PRUFPROGRAMME 169 von read_file bestimmt Bit EXT_STOP in stop gesetzt Die Funktion schlie t mit der Freigabe der Dateiliste file_anchor ab while stop INT_STOP EXT_STOP decide stricmpu ptr gt text ext Datei geloescht externe Liste lesen if decide gt 0 stop amp INT_STOP amp amp stop amp EXT_STOP printf file s deleted n get_name ext hlp stop read_file amp sin_file ein_file ext continue F Datei hinzugefuegt interne Liste lesen if decide lt 0 stop amp EXT_STOP amp amp stop amp INT_STOP printf file s added n get_name ptr gt text hlp write_file eout_file ptr gt text ptr ptr gt next stop ptr NULL INT_STOP continue F Datei existiert if decide 0 check_stamp ptr gt text ext 13 write_file eout_file ptr gt text ptr ptr gt next stop ptr NULL INT_STOP stop read_file amp sin_file ein_file ext continue delete_list amp file_anchor return F3 berpr fung der Attribute check_stamp nimmt die berpr fung vor wenn scan_structure oder scan_subdir zwei gleiche Eintr ge finden stamp1 und stamp2 dienen zur Vereinfachung des Zugriffs auf die Datenfelder der in Textform vorliegende
48. struct T_SUBDIR Verzeichniseintrag 75B char name 65 Verzeichnisname WORD start erster Dateieintrag WORD end letzter Dateieintrag WORD date Dateiattribute WORD time WORD attr struct T_FILE Dateieintrag 39 Bytes char name 13 Dateiname WORD date Dateiattribute WORD time DWORD size WORD attr DWORD sign 4 Signatur Konvertierungsfunktionen Um bei der Speicherung der externen Referenz liste Platz zu sparen sind in den Strukturen T_FILE und T_SUBDIR die Angaben fiir Zeit Datum Attribute und Gr e in kodierter Form abgelegt identisch zur Kodie rung im DTA Die Funktionen dta2date dta2time dta2attr und dta2size sind Bestandteil der Bibliothek avsys 1ib und wandeln die Eintrage fiir Datum Zeit At tribute und Gr e im DTA Format in Strings um F r die umgekehrte Richtung sind die Funktionen date2dta time2dta attr2dta und size2dta zust ndig Wer sich die Im plementierung der Konvertierungsfunktionen die wegen ihres einfachen Aufbaus nicht besprochen werden ersparen m chte kann die Referenzdaten nat rlich auch direkt im Textformat abspeichern In Richtung DTA Text ist der erste Parameter bei den Konvertierungsfunktio nen stets ein WORD Ausnahme DWORD bei SIZE der zweite ein String In Richtung Text DTA l uft die Parameter bergabe gerade umgekehrt file2text text2file subdir2text und text2subdir bauen auf den genannten Funktionen a
49. t in welcher Partition der durch die Aufrufparameter spezifizierte Sektor liegt Funktionen zur Sektorbearbeitung Funktionen zum Lesen und Schreiben von logischen Sektoren bietet das Kernel mit den Interrupts 2516 Absolute Disk Read Tab A 19 und 2616 Absolute Disk Write an Die tats chliche Organisation in Zylin der Kopf und Sektor spielt keine Rolle die Sektoren sind mit 0 beginnend fortlaufend durchnumeriert So entspricht z B der logische Sektor 0 auf Diskette dem physikalischen Sektor an Position Zylinder 0 Kopf 0 Sektor 1 Bei der Benutzung beider Funktio nen ist zu beachten da nach dem Aufruf ein Wort das von der Funktion gerettete Flagregister auf dem Stack verbleibt Dieses ist zu entfernen um ein unkontrolliertes Wachstum des Stack zu verhindern Physikalische Sektoren werden mit dem BIO Disk Interrupt 1316 bearbeitet Tab A 24 Alle Diskettenoperationen auch die Aufrufe der Interrupts 2516 und 2616 werden ber diesen Interrupt abgewickelt Durch dessen Kontrolle verf gt man ber eine gro be aber sehr effektive M glichkeit Dateien und Daten auf einem bestimmten Laufwerk zu sch tzen Aber Vorsicht Manche Ger te wie RAM Disks und Magnetbandlaufwerke werden von speziellen Ger tetreibern verwaltet die nicht auf BIOS Funktionen zur ck greifen m ssen und k nnen Zugriffe auf diese Laufwerke sind f r den Lauscher am 114 KAPITEL 3 SYSTEMPROGRAMMIERUNG UNTER MS DOS Disk Interrupt unsichtbar und
50. video driver relocated interrupt 1016 pointer on EGA MCGA VGA character table pointer on EGA font reserved pointer on secondary fixed disk parameters real time clock alarm IRET real time clock IRET LIM EMS driver redirected hardware interrupts 9 15 Tabelle C 4 Interrupts Teil 2 C 1 KOMMANDOS INTERRUPTS FUNKTIONEN Nr Beschreibung 0016 Oli6 0216 0316 0416 0516 0616 0716 0816 0916 OA16 OBi6 0Ci6 ODi6 OE16 OF 16 1016 1116 1216 1316 1416 1516 1616 1716 1816 1916 1A16 reset disk system get disk system status read sector write sector verify sector format track format bad track format drive get drive parameters initialize fixed disk characteristics read sector long write sector long seek reset fixed disk system read sector buffer write sector buffer get drive status recalibrate drive controller RAM diagnostic controller drive diagnostic controller internal diagnostic get disk type get disk change status set disk type set media type for format park heads format ESDI drive Tabelle C 5 Funktionen BIOS Disk Interrupt 317 318 ANHANG C INFORMATIONEN ZU MS DOS Nr ab Beschreibung 0016 1 0 terminate process O1ig 1 0 character input with echo from stdin to stdout 0216 1 0 character output on stdout 0316 1 0 auxiliary input from stdaux 0416 1 0 auxiliary output on stdaux 0516 1
51. void bestimmt Tab A 1 Die Numerierung der Laufwerke beginnt dabei mit A 0 Das aktuelle Verzeichnis wird mit int chdir const char path bzw int getcurdir int drive char directory bestimmt Tab A 9 inklusive Laufwerk bzw gelesen Tab A 11 Die Laufwerksnum mer 0 steht ausnahmsweise f r das aktuelle Laufwerk die weitere Numerierung beginnt mit A 1 Besonderheiten Ger tedateien Manche Dateinamen wie con und 1pt1 sind f r zeichenorientierte Ger te reserviert die ber normale Dateifunktionen angesprochen werden k nnen Der Aufruf int isatty int handle engl is a TTY ist ein Fernschreiber serielles Ger t ermittelt ob es sich bei der durch das Handle referenzierten Datei um ein serielles Ger t handelt Diese Ei genschaft ist insofern bedeutsam als da gewisse Funktionen wie mehrfaches sowie wahlfreies Lesen und Schreiben der Datei nicht m glich sind Ein Kopierprogramm beispielsweise mu au erdem der Tatsache Rechnung tragen da von seriellen Ger ten nicht im Bin rmodus gelesen werden darf weil sonst nie das Dateiende Ende der Eingabe erkannt wird s a 4 4 1 AVCopy 120 KAPITEL 3 SYSTEMPROGRAMMIERUNG UNTER MS DOS 3 5 3 Der Urladevorgang MS DOS besteht aus mehreren Komponenten die zum Teil in nichtfliichtigem Speicher dem ROM BIOS untergebracht sind und zum Teil erst in den Arbeitsspeicher geladen werden m ssen Letzterer verliert beim Abschalten der Stromverso
52. volatile BYTE in_isr in ISR Flag BYTE new_stack 512 neuer Stack void interrupt far old_int lt nr gt alter INT Ox lt nr gt Vektor WORD old_ss alter Stackpointer WORD old_sp Die Deklaration des Codesegments ist uns bereits aus 3 2 Grundlagen Hoch sprachen vertraut Die ASSUME Anweisung in der n chsten Zeile ist etwas schwierig zu erkl ren Falls im Quelltext ein symbolischer Name wie _in_isr vorkommt wei der Assembler in welchem Segment das Symbol liegt Er wei aber nicht welches Register die Basis dieses Segments enth lt d h ob und welches Segment Override Prefix zu verwenden ist Hier k nnte der Programmierer aushelfen in dem er selbst und evtl 9Z B der System Timer 4 5 REALISIERUNG DES RESIDENTEN TEILS 189 fehlertrachtig fiir die korrekte Angabe des Segments sorgt Alternativ dazu kann er ber die ASSUME Anweisung dem Assembler mitteilen welches Segmentregister er mit welcher Basis belegt hat Noch einmal Der ASSUME Befehl gibt dem Assembler ledig lich einen Hinweis auf die Belegung der Segmentregister Der Programmierer ist selbst daf r verantwortlich da die Angaben auch stimmen und mu die Register mit den korrekten Werten f llen _TEXT SEGMENT WORD PUBLIC CODE ASSUME CS _TEXT DS _TEXT ES _TEXT SS _TEXT Die als NEAR deklarierte Funktion _int lt nr gt die Einsprungstelle der ISR wird mit dem Schl sselwort PUBLIC externen Modulen zug n
53. 0x02 rights table bx amp 0x03 break req rights erf Rechte fuer OPEN implizit Handle Open Ext Handle Open 226 KAPITEL 4 ENTWICKLUNG DER SYSTEMPROGRAMME Fs decide get_rights subject amp rights object F_DEFAULT Bewertung des Zugriffs Nun haben wir alle Parameter fiir den Aufruf von get_rights zusammen Wird kein Eintrag gefunden oder passen mehrere Eintr ge gleich gut entscheidet der Wert F_DEFAULT ber die Zul ssigkeit der Operation Das Ergebnis der berpr fung wird je nach Festlegung des Makros F_INTERACT analog zum Verfahren in AVWatchI gehandhabt Ist die Operation zul ssig wird die ISR mit dem R ckgabewert FFFFje verlassen Aufruf der Original IsR einfuegen in Defines define FR_LOGFAIL 0x4000 Log falls unzulaessig define FR_LOGSUCC 0x8000 Log falls zulaessig if decide lt 0 decide F_DEFAULT Js schreibe Logeintrag falls spezifiziert s Logging if rights amp FR_LOGSUCC amp amp decide 1 rights amp FR_LOGFAIL amp amp decide 0 add2log f_log subject DWORD ax lt lt 16 object if decide 1 return OxFFFF if F_INTERACT strcpy msg subject Nachricht erzeugen strcat msg for i 0 i lt 3 i if req amp 0x0001 strcat msg rights_text i req gt gt 1 strcat msg gt Benutzer fragen strcat
54. 90 2 8 102 Robert T Morris INTERNET Worm schuldig gesprochen m gl Strafe 250000 Geldstrafe und 5 Jahre Haft Artikel zum Thema Computersicherheit PC Sicherheit GLISS Hans Pulheim Sicherheits Enqu te 1990 Arbeitsplatzrechner Nachhol bedarf KES 90 3 S 166 169 Umfrage ber betrieblich eingesetzte Kontrollma nahmen welche Ma nahmen wel che Bereiche Kontrolle Sicherheitsausbildung etc Grundlagen Einstieg in die APC Sicherheit KES 91 1 S 5 9 Spezielle Probleme der IDV Individuellen Datenverarbeitung Betriebssysteme der IDV MS DOS OS 2 UNIX Datensicherung und Schutz Sicherheit im Stand Alone Einsatz Ma nahmen gegen Mi brauch KES 91 1 S 34 35 Single und Multi User Betrieb Sicherheitsma nahmen Sichere APC Netze Vorteile f r Server Konzepte KES 91 1 S 36 42 Vorteile und Sicherheitsma nahmen in Netzen Zehn Grundregeln der APC Sicherheit Kontrollbereiche des Datenschutzes KES 91 1 S 53 54 Erf llung der Auflagen des BDSG Bundesdatenschutzgesetzes Organisation der Kontrollen Ma nahmen zur deren Durchf hrung Verteilte Datenverarbeitung Datenschutzbeauftragte zum Thema PC Sicherheit KES 91 1 S 372 373 Personalauswahl Empfehlungen Materielle Sicherheit Installationsanforderungen beim APC Einsatz KES 91 1 S 14 17 bersicht Ma nahmen zur materiellen physischen Sicherheit LITERATURVERZEICHNIS 347 76 Sicherer DV Betrieb Regeln gegen Daten
55. A 1 Get Current Disk INT 2116 Funktion 1916 o gt 222 258 A 2 Get Drive Data INT 2116 Funktion 1Cyg gt 2 22 259 A 3 Set Interrupt Vector INT 2116 Funktion 2516 2 260 A 4 Parse Filename INT 2116 Funktion 2916 2 22 261 A 5 Get Date INT 2116 Funktion 2A 16 fect he eves ey Br at Be at a a a A E 262 A 6 Get Time INT 2116 Funktion 2Cjg oo oaa aoaaa aa 263 A 7 Terminate and Stay Resident INT 2116 Funktion 3116 263 A 8 Get Interrupt Vector INT 2116 Funktion 3516 264 A 9 Set Current Directory INT 211g Funktion 3Big 264 A 10 Get Device Information INT 2116 Funktion 4416 Subfunktion 0016 265 A 11 Get Current Directory INT 2116 Funktion 4716 2 2 2 266 A 12 Release Memory Block INT 2116 Funktion 4916 267 A 13 Load and Execute INT 2116 Funktion 4Bi6 222 2 267 A 14 Find First Next File INT 2116 Funktion 4E 4Fig 2222222 268 A 15 Get Address of List of Lists INT 2116 Funktion 5216 2 269 A 16 Rename File INT 2116 Funktion 5616 22222 270 A 17 Get or Set File Date and Time INT 2116 Funktion 5716 271 A 18 Get psp Address INT 2116 Funktion 6216 lt 2 22 22 272 A 19 Absolute Disk Read INT 2516 222mm nenn 272 A 20 Set Cursor Position INT 1016 Funktion 0216 o e 2222 00 273 A 21 Get Cursor Position INT 1016 Funktion 0316 2 22 274 A 22 Read Character and Att
56. Anwender kann die Ausf hrung abbrechen lassen oder das Programm trotzdem starten und ggf die Signatur auf den neuesten Stand bringen Bei der Kompilierung ist ein besonderer Modus konfigurierbar bei dem der Benutzer keine Einflu m glichkeit hat sondern der Aufruf immer mit einem simulierten Fehler beendet wird Dieser Modus ist f r Anwendungen gedacht bei denen mit Gegenma nahmen der Benutzer gerechnet werden mu Jedes der folgenden Programme ist mit dieser Option ausger stet AVWatchP Partitionsrechte Mit AVWatchP steigen wir auf die Ebene des BI OS hinab Gleichzeitig wird es etwas komplexer denn es sollen nicht nur physikalische Laufwerke unterschieden werden was recht einfach w re sondern einzelne Partitions Dieses Verfahren erm glicht die Anlage einer schreibgesch tzten und einer beschreibba ren Partition auf einer Festplatte um z B Systemprogramme zu sch tzen und gleich zeitig eigene Programme und Texte erstellen zu k nnen Neu ist die Methode zur bergabe der Partitionsinformationen und der Zugriffs rechte an das residente Programm Weil diese Daten nur einmal beim Start des Wat chers gelesen werden m ssen wird die Leseroutine in AVConfig ausgelagert um den residenten Teil m glichst klein zu halten Das Konfigurationsprogramm bertr gt die Informationen ber eine besondere Kommunikationsfunktion an den Watcher AVWatchF Dateirechte Dieser Watcher ist das mit Abstand komplexeste Ex emplar unserer Sa
57. Beschreibung 2016 reserved 2116 1 0 random read open FCB 2216 1 0 random write open FCB 2316 1 0 get file size FCB 2416 1 0 set relative record number open FCB 2516 1 0 set interrupt vector 2616 1 0 create new PSP 2716 1 0 random block read open FCB 2816 1 0 random block write open FCB 2916 1 0 parse filename FCB 2A s 1 0 get date 2Bis 1 0 set date 2Cig 1 0 get time 2Dig 1 0 set time 2Ei 1 0 set verify flag 2Fig 2 0 get DTA address 3016 2 0 get MS DOS version number 3116 2 0 terminate and stay resident 3216 get DPB undoc 3316 2 0 get or set break flag 4 0 and get boot drive 3416 get pointer to in_dos flag undoc 3516 2 0 get interrupt vector 3616 2 0 get drive allocation information 3716 get or set switch character undoc 3816 2 0 get or set country information 3916 2 0 create directory 3Aig 2 0 delete directory ASCIIZ 3Big 2 0 set current directory ASCIIZ 3Cig 2 0 create file ASCIIZ handle 3Dig 2 0 open file Asc z handle 3Eig 2 0 close file handle 3Fig 2 0 read file or device handle Tabelle C 7 Funktionen DOS Funktions Interrupt Teil 2 319 320 ANHANG C INFORMATIONEN ZU MS DOS Nr ab Beschreibung 4016 2 0 write file or device handle 4116 2 0 delete file Asc z 4216 2 0 set file pointer handle 4
58. Bezeich nungen keine Bedeutung Sollen aber Assemblermodule von Hochsprachenprogrammen aus aufgerufen werden oder umgekehrt ist die korrekte Deklaration des Segmente f r den Bindeproze unbedingt notwendig Das h ngt damit zusammen da e der Startup Code als erstes Modul die Reihenfolge der Segmente bestimmt und e aufgrund dieser Reihenfolge der Platzbedarf des Programms bestimmt wird sowie e bei der Programmierung der Bibliotheksfunktionen bestimmte Bedingungen de finiert wurden an die sich fremde Module halten m ssen Beispiel Deklarationen im SMALL LARGE Modell Um die Auswirkungen verschiedener Speichermodelle auf das Ergebnis der bersetzung beobachten zu k nnen wurde das oben bereits angesprochene C Programm einmal im Modell SMALL und einmal in LARGE kompiliert Wir betrachten nur diesmal nicht den Code sondern die Segmentdeklarationen Das Resultat Die beiden Programmversionen unterscheiden sich bereits im Kopf des Quelltextes Die SMALL Version verwendet _TEXT als Namen f r das Codesegment Da alle anderen Codeteile die in der Bibliothek cs 1lib enthalten sind den gleichen Namen verwenden legt der Linker beim Binden den Code in einem einzigen Segment dieses Namens ab Dadurch ist die NEAR Adressierbarkeit gew hrleistet die sich in der Deklaration der Funktionen _main und _add_cbr als NEAR ausdr ckt Die in der DGROUP Gruppe der NEAR Daten enthaltenen Segmente hier _DATA und _STACK werden ebenfa
59. Buch f llen und erfolgt daher nur in dem Ma e wie es f r unsere Zwecke notwendig ist Hardware Service Die Interruptnummern 0016 bis OF s sind der Hardware vorbehalten und noch einmal in zwei Gruppen unterteilt In der ersten von 0016 bis 0716 finden sich u a Unterbrechungen die die CPU bei bestimmten Ereignissen intern ausl st Dazu z hlen die Division durch Null die Abarbeitung eines Befehls im Ein zelschrittmodus Trace oder Single Step die Abarbeitung eines unzul ssigen Befehls und andere Die zweite Gruppe von 0816 bis OF 16 beinhaltet die extern ausgel sten Unterbrechungen durch den Systemtimer den Tastaturcontroller die Bausteine f r die seriellen und parallelen Schnittstellen sowie den Disk Controller Software Service Die 16 Interrupts von 1016 bis 1F g umfassen die f r Anwen der und Betriebssystem aufrufbaren Funktionen Ein Blick in die Tabelle zeigt da es sich bei den angebotenen Diensten berwiegend um elementare Ein und Ausgabe von und auf Bildschirm Diskette Festplatte serielle parallele Schnittstelle Tastatur und Drucker handelt Das BIOS hat in diesem Zusammenhang zwei Aufgaben Zum einen nimmt es dem Benutzer die Initialisierung und den Dialog mit den Hardwarebausteinen ab und hebt die Schnittstelle schon recht komfortabel auf Registerebene an Es setzt Anforderungen in Kommandos f r den spezifischen Controller um und empf ngt von diesem Daten Best tigungen und Fehlermeldungen Zum anderen nimmt
60. Club in Hamburg vertritt z B eine Hackerethik an der sich vielleicht die Mitglieder dieser Vereinigung orientieren m gen Trotzdem passen Hacker weder in die Schublade Kriminelle noch Wohlt ter Letztendlich ist jeder zu Hause am Ger t nur seinem Gewissen verantwortlich Was die Verletzung dieser geschriebenen und ungeschriebenen Regeln angeht ben erfreulicherweise verschiedene Gruppen innerhalb der Netzgemeinde durchaus Druck auf verantwortliche Stellen aus So wurde z B einem Netzteilnehmer aus Fernost der Zugang zum BITNET einem der gr ten Rechnernetze der Welt gesperrt weil die ser ffentlich nach einem Virus f r vax Systeme oder Vorschl ge zu dessen Realisierung suchte 38 3 035 3 029 Dergleichen verantwortliches Verhalten scheint nicht allzu verbreitet zu sein Auf der ganzen Welt auch in Deutschland existieren BBS ber die nicht nur aus Nachl ssig keit verseuchte Software sondern auch absichtlich der Quelltext von Viren verbreitet wird Speziell im osteurop ischen und asiatischen Raum herrscht auf dem Sektor der Softwareanomalien offensichtlich Narrenfreiheit Das mag mit daran liegen da ent sprechende Gesetze und Beh rden um deren bertretung zu verfolgen fehlen Virus programmierer schm cken ihre Werke ungeniert mit Namen und Adresse Pakistan Bulgarien und geben Interviews die in gro en Computerzeitschriften samt Konterfei erscheinen Durch solches Verhalten kommt eine Verant
61. Computerviren Warum sind sie hier wurden bereits gekl rt Wichtiger erscheint die Antwort auf die Frage Wohin gehen sie Ist die einmal ge ffnete B chse der Pandora wieder verschlie bar und l t sich das freigelassene bel wieder einfangen Auf der Virusliste entspann sich eine Diskussion die das praktische Verschwinden der Pocken mit Computerviren in Verbindung brachte Dabei stellten sich einige wesentliche Unterschiede heraus e Die Pocken wurden durch eine globale Aktion der Weltgesundheitsorganisation WHO besiegt Eine hnliche Beh rde auf dem Computersektor existiert zur Zeit nicht 252 KAPITEL 5 DISKUSSION e Der einzige Pockenerreger kann durch Impfung wirksam abgewehrt werden Da gegen existiert eine Vielzahl von Computerviren mit einer gro en Neuentstehungs rate gegen die es a priori keine Gegenma nahmen gibt s Cohen s Theorien e Pockenerreger k nnen au erhalb des K rpers nicht berleben Auf Disketten und anderen Speichermedien k nnen Computerviren beliebig lange Zeiten au erhalb sauberer Rechner berdauern Immerhin Obwohl Seuchen wie die Cholera keineswegs ausgerottet sind ver schwand in modernen Staaten durch die dort bliche Frischwasserversorgung der Haupt grund f r die Verbreitung Einzelne Erkrankte werden isoliert und rztlich behandelt In Ballungsgebieten in denen z B wegen eines Erdbebens die Versorgung mit saube rem Wasser zusammengebrochen ist entwickeln sich h ufi
62. D virus ist ein Virus virus infiziert keine Programme virus ist doch kein Virus Widerspruch D virus ist kein Virus virus infiziert Programme virus ist doch ein Virus Widerspruch Unm glichkeit die Mutation eines Virus zu entdecken Die Beweisf hrung erfolgt analog Die Funktion D mache eine Aussage ber die funk tionale quivalenz zweier Programme Die Programme virus und virus benutzen D um zu entscheiden ob sie gleichartig oder verschieden reagieren Unm glichkeit ein Virus an seinem Verhalten zu erkennen Der Beweis lehnt sich an den ersten Beweis an Jeder Compiler also ein legitimes Programm kann bei entsprechender Eingabe ein verseuchtes Programm erzeugen Um automatisch bestimmen zu k nnen ob sich ein Compiler wie ein Virus verh lt d h wie ein Programm das Viren produziert mu eine Funktion D eine Aussage dar ber treffen k nnen ob die Eingabedaten ein Virus erzeugen Dies ist wie oben gezeigt unm glich Cohen zieht aus seinen Untersuchungen folgenden Schlu Die sichere Detektion eines Virus im Voraus ist unm glich Analoges gilt auch f r alle anderen Arten von Softwareanomalien oder allgemeiner die Funktion jedes beliebigen Programms Trotz dieser vielleicht etwas entmutigenden Erkenntnisse ist die Detektion bekannter Viren Scanning virentypischer sicherheitsgef hrdender Operationen Watching oder von Ver nderungen die Konsequenz ihrer Funktionsweise sind Checking ohne we
63. DOS tiert wird In den Argumenten dieses Makros tritt besonders die implizite und explizite Verwendung der Segmentregister hervor e Die letze Zeile zeigt die Verwendung der Deklarationen BYTE PTR und WORD PTR die dem Assembler anzeigen ob die effektive Adresse einen Byte oder einen Wort Zeiger darstellt Allein aufgrund des Wertes kann diese Entscheidung nicht getroffen werden Z B pa t der Wert 4216 sowohl in ein Byte als auch ein Wort Manche der im 4 Kapitel zu erstellenden Programme verwenden in Assembler geschriebene Teile wenn dies unbedingt erforderlich ist An dieser Stelle eine alphabe tische Liste der Befehle zu bringen erscheint dem Autor etwas zu trocken Wir kl ren deshalb die Bedeutung der Kommandos an der Stelle an der wir sie brauchen Problem NEAR und FAR Adressierung Die neueren CPUs der 80 86 Serie kennen die Schwierigkeiten mit den relativ kleinen Segmenten nicht falls und wohl gemerkt nur dann der Betrieb im Protected Mode erfolgt Hier stehen 32 Bit breite 3 1 GRUNDLAGEN ASSEMBLER 77 Register zur Verf gung mit denen ein Adre raum von 23 4 GB erschlossen wird ohne jemals das Segment zu wechseln Das d rfte f r die meisten Anwendungen aus reichen Aus der berechtigterweise etwas umst ndlich erscheinenden Adre aufteilung im Real Mode ergeben sich einige Vor und Nachteile deren Verst ndnis f r die System programmierung unter MS DOS quasi lebensnotwendig ist Damit kein Mi verst n
64. Daher wurde zugunsten der besseren Verst ndlichkeit und Mitverfolgbarkeit auf die maschinennahe Hochsprache C zur ckgegriffen Ziel des Buches ist es Algorith men und Verfahren zu entwerfen und in einfachen beispielhaften Programmen zu im plementieren Die entworfenen funktionsf higen Algorithmen lassen sich nat rlich auch in andere Sprachen bertragen Die Erstellung professioneller kommerziell tauglicher Software kann auf dieser Basis erfolgen w rde aber den hier gesetzten Rahmen spren gen Systemarchitektur Aus der Aufgabenbeschreibung lassen sich bereits unmit telbar einzelne Funktionen ableiten Die Startfunktion main mu eine evtl bereits bestehende Installation erkennen und das Programm in diesem Fall beenden Sonst w rde mehrfach Speicher reserviert und unerw nschte Nebeneffekte k nnten die Funk tionsf higkeit des Watchers beeintr chtigen Zur residenten Installierung geh rt die Freigabe von nicht ben tigten Programmteilen Environment die Reservierung von Datenbereichen Puffer etc und schlie lich die Feststellung des Speicherbedarfs Vor der Installierung unter MS DOS identisch mit dem Verlassen des Programms sind noch von init Variablen zu initialisieren und die zu berwachenden Interruptvektoren auf eigene ISRS umzusetzen Der Watcher ist danach nur noch ber Softwareinterrupts ansprechbar Das be deutet da alle Funktionen zur Deinstallation Datenaustausch usw Bestandteil einer Service ISR sein
65. Datentr ger wie Disketten und Festplatten werden in Untereinheiten von Speicher bl cken engl blocks verwaltet die entweder frei oder belegt sind Da Dateien meist nicht an der letzten Adresse des letzen Blocks enden bleibt dort ungenutzter f r den Anwender scheinbar nicht vorhandener Speicher frei Dazu ein Beispiel die Blockgr e betrage 4096 Bytes 4 kB das Programm habe eine L nge von 8193 Bytes Die Programmdatei belegt demnach drei Bl cke von denen die ersten zwei vollst ndig genutzt werden 2 x 4096 8192 Bytes der letzte aber nur mit einem Byte belegt ist 8193 2 x 4096 1 Byte Die anderen 4093 Bytes sind f r die Speicherung von Dateien verloren aber prinzipiell frei verwendbar Link Viren Die n chste Entwicklungsstufe der Virenprogrammierung ist die der Link Viren die sich an das Wirtsprogramm in nicht zerst rerischer Weise anh ngen engl to link verketten verbinden und so dessen Funktionsf higkeit erhalten Diese lassen sich noch einmal je nach dem ob sich das Virus dem Programmcode voranstellt oder sich an ihn anh ngt in zwei Unterklassen gruppieren n mlich die der Prepend und die der Append Viren Prepend ist ein von Cohen eingef hrtes Kunstwort f r voranh ngen welches das Vorgehen dieses Virentyps treffend beschreibt Prepend Viren Viren die sich Programmen voranstellen werden dadurch bei Programmstart automatisch zuerst ausgef hrt s Abb 1 2 Prepend Dabei gibt
66. Die Tarnung wird durch bernahme und Manipulation von Betriebssystemfunktionen st ndig auf rechterhalten s Indirect Action Dazu als Beispiel das 4096 Virus Dieses Virus installiert sich speicherresident und klinkt sich in verschiedene Betriebssystemfunk tionen ein Bei Er ffnung einer Datei open Kommando z B durch ein Anti Virus Programm pr ft das Virus ob es sich um ein verseuchtes Programm handelt Ist dies der Fall wird das Programm desinfiziert und das Detektionsprogramm findet ein schein bar unver ndertes Programm vor aber nur solange das Virus aktiv im Speicher ist ein scheinbar paradoxes aber interessantes Ph nomen Wenn der Zugriff nach der ber pr fung abgeschlossen wird close Kommando reinfiziert das Virus das Programm Andere Viren nisten sich im Bootblock von Disketten und Festplatten ein und speichern den urspr nglichen Inhalt an anderer Stelle ab Bei einer Schreib oder Leseanforderung f r den Bootblock wird der Zugriff vom aufrufenden Programm unbemerkt auf das Original umgelenkt Festzuhalten ist Unabh ngig davon ob sich L nge oder Zeitmarke einer Datei ver ndert haben ist der Inhalt der Datei nach einer Virus Infektion auf jeden Fall vom Original verschieden 1 4 DIE BEDROHUNG DURCH SOFTWAREANOMALIEN 15 1 4 Die Bedrohung durch Softwareanomalien Allen drei Typen ist gemeinsam da ihre blo e Existenz bereits Speicherplatz und Rechenzeit konsumiert Weitergehende F higkeiten h n
67. Dienstleistungen behindern Das Je rusalem und das Hall chen Virus z B stehlen Rechenzeit indem sie den Rechner durch Einlegen von Warteschleifen immer mehr verlangsamen Andere Softwareanoma lien verf lschen oder blockieren die Ausgabe ber Drucker lassen Buchstaben vom Bildschirm rieseln Cascade Virus oder Verschl sseln den Inhalt der Harddisk A1ps Trojaner 1 4 2 Software Sch den Viren k nnen Daten auf vielf ltige Art vernichten oder was fast noch schlimmer ist verf lschen Wird eine Datei von einer Softwareanomalie vollst ndig vernichtet mu diese entweder neu erstellt oder vom hoffentlich vorhandenen und m glichst aktuel len Backup Sicherheitskopie nachgeladen werden Verf lschungen dagegen k nnen so subtil erfolgen da die schleichende Ver nderung der Daten erst nach Tagen Wochen oder gar Monaten bemerkt wird Der unmittelbare Schaden liegt in der Verwendung der falschen Daten die z B durch die Verschiebung von Kommastellen in einer Kalku lation verheerende wirtschaftliche Folgen f r ein Unternehmen nach sich ziehen kann 16 KAPITEL 1 THEORIE DER SOFTWAREANOMALIEN Als zus tzliche Erschwernis befinden sich durch die lange Zeit ber die hinweg kei ne Ver nderungen bemerkt wurden die falschen Daten wahrscheinlich auch auf den Sicherheitskopien Nicht zu vergessen sind berdies die immateriellen Sch den die durch den Verlust von Vertrauen in das System und Datenbest nde entsteh
68. Diese M glichkeit wird oft bezweifelt die folgenden Beispiele beweisen aber das Gegenteil Auf dem Commodore C 64 beispielsweise gab es ein Programm das mit dem Diskettenlaufwerk eine Melodie spielte indem es den Lesekopf entsprechend schnell gegen den Endanschlag vibrieren lie Dies war der empfindlichen Laufwerks mechanik sicher abtr glich Allerdings machte der Aufbau des Laufwerks noch eine Steigerung m glich Da nur ein Endanschlag vorgesehen war konnte der Kopf durch entsprechende Befehle an den Laufwerks Controller bis auf die Diskettenh lle verscho ben werden Es geht aber auch subtiler und weniger auff llig Ein Virus k nnte jedem Zugriff auf Platte oder Diskette zus tzliche Bewegungen des Schreib Lesekopfes hin zuf gen und dadurch den Verschlei drastisch erh hen Nathanson Larry in 38 4 024 Ein anderes Beispiel ist das unterdimensionierte Netzteil mit dem die ersten der 1985 erschienenen tragbaren Computer der Firma Compaq ausgestattet waren Dieses versorgte neben dem eigentlichen Rechner auch den Monitor mit Strom Bei falscher Programmierung des Videocontrollers konnte es dazu kommen da die Bildwiederhol frequenz und damit der vom Monitor verbrauchte Strom gro genug wurde um eine Sicherung im Netzteil durchbrennen zu lassen Da diese nur schwer erreichbar und auf der Platine aufgel tet war wurde deren Ersatz zu einer aufwendigen Aktion Bosen Bob in 38 4 034 Bei den ersten Monochrome Adapter Cards
69. Direktzugriffsmethode die ebenfalls die Kontroll IsRs des Watchers umgeht Fazit Solange Benutzer den Ablauf des Schutzprogramms in irgendeiner Weise beeinflussen k nnen ist das System nicht sicher Manipulationen am Schutzprogramm und den zugeh rigen Dateien m ssen unm glich sein Dieses Problem kann mit einem 244 KAPITEL 5 DISKUSSION Fileserver gel st werden der fiir die Benutzer r umlich nicht zug nglich ist Auf diesem k nnen zentrale Sicherheitsma nahmen implementiert werden Alle angeschlossenen APCs verf gen ber ein spezielles ROM BIOS welches das Betriebssystem ausschlie lich vom Server l dt Programmstarts von Diskette und das Einspielen von Programmen sind nicht zul ssig kontrollierte Isolation Falls Diskettenlaufwerke nicht unbedingt erforderlich sind sollten sie ganz weggelassen werden vollst ndige Isolation 5 2 Ausblick 5 2 1 Zuk nftige Entwicklung Viren tauchen in immer gr erer Anzahl und Vielfalt der Typen auf 1990 vollzog sich ein Generationswechsel von mehr oder weniger simplen Viren zu sog Sophisticated engl raffiniert Viruses Diese sind in der Lage sich vor dem Benutzer zu verbergen und Schutzprogramme zu umgehen indem sie Stealth Tarn Techniken verwenden sich selbst verschl sseln mutieren und am Interrupt Konzept von MS DOS vorbei arbei ten Bei Whale kann keine noch so kurze einfache Bytesequenz das Virus identifizieren 55 Ein anderes Virus ist in der Lage festzustel
70. Diskussions Forum VIRUS L Digest engl 39 40 41 42 43 44 45 46 47 Distribution ber BITNET mit Electronic Mail durch VIRUS L IBM1 CC LEHIGH EDU Bezugsquelle hier LIST SERV LEHIBMI bitnet Aktuelle Information ber gesamte Virenproblematik ZAJAC Jr Bernard P Computer Viruses Can they be Prevented engl C amp S Vol 9 No 1 1990 S 25 31 Historie der Computerviren Funktion Abwehr Detektion Recovery Gefahr Public Domain Viren und ihre Bek mpfung KES 91 1 S 30 33 Computeranomalien Typen Vorkehrungen gegen Viren Friihwarnsysteme Virenver sicherung Wie kann man sich vor Viren schtitzen PP 9 1989 S 120 122 Datensicherung Verschleierung Pr fsummenberechnung codierte Speicherung und andere Verfahren Procedures To Reduce The Computer Virus Threat engl in 29 S 279 293 Zuverl ssige Quellen Verwendung von Servern organisatorische Aspekte Detektion ohne Hilfsmittel Verhaltensma regeln zur Risikoverminderung Recovery Katastro phenplan ABEL Horst amp Schm lz Werner Siemens AG Sicherheit mit dem System MX 3800 MX 500 KES KES Sonderheft in Zusammenarbeit mit Siemens Planung der Systemsicherheit von Installationsanforderungen ber Betrieb bis Ka tastrophenvorsorge AL DOSSARY Ghannam M Computer Viruses Prevention and Containment on Mainframes engl C amp S Vol 9 No 2 1990 131 137 Funktion von Computerviren Type
71. File Attributes aus den Norton Utilities sind in der Lage alle Attribute zu ver ndern 2 2 3 Ethik Bewu tsein f r Viren schaffen Die meisten Anwender wissen von Computerviren aus Rundfunk und Presse die das Thema zwar publikumswirksam aufbauschen aber selten nutzbare Informationen vermitteln K Brunnstein einer der f hrenden Forscher in Sachen Softwareanomalien bezeichnet den Virus Desinformaticus als den schlimm sten seiner Art 26 So hat z B der Autor im Rechenzentrum einer Hochschule immer wieder beobachtet da die Benutzer und sogar zust ndiges Personal nicht wissen da die Rechner regelm ig verseucht sind Die Anwender reagieren entweder verschreckt oder gar nicht wenn man sie auf diese Tatsache hinweist Viele Benutzer wissen nicht welche Folgen eine Infektion des Rechners mit Com puterviren haben kann Diese Gefahren sollten im Rahmen des Informatikunterrichts an der Schule oder des Programmierpraktikums im Grundstudium angesprochen wer den Dadurch k nnte erreicht werden da neben den Programmierkenntnissen auch ein Gefahren und Verantwortungsbewu tsein vermittelt wird Benutzer der Gruppen 1 und 2 kann man wahrscheinlich durch solche Ma nahmen erreichen Anwender der Gruppe 3 dagegen vermutlich nicht Es sollte darauf hingewiesen werden da Computerviren kein Problem anderer Leute sind sondern auch der eigene Rechner zu Hause sehr schnell Opfer einer pro grammierten Attacke werden kann Di
72. Floppylaufwerken ist verboten ebenso das Kopieren von Programmen von Floppy auf Festplatte Damit k nnen Viren nur noch als Quelltext eingeschleppt werden von Versehen oder Ungeschick kann dann nicht mehr die Rede sein Auch das Tarnen und Enttarnen von Programmen wird unm glich falls Typwechsel verboten sind Typwechsel Wir unterscheiden prim r zwei Dateitypen Daten nicht ausf hr bar und Programme ausf hrbar Ausfiihrbar sei hier definiert als kann direkt ber die Funktion Load and Execute des Kernel gestartet werden Zur Beschrei bung des scheinbaren und des tats chlichen Dateityps werden folgende Begriffe wie auch Virus der Biologie entlehnt Ph notyp Erscheinungsbild form eines Organismus Hier Der Name insbesondere die Erweiterung Endung einer Datei die anschaulich ber den Typ Auskunft gibt z B com doc pas Genotyp Gesamtheit der Erbfaktoren eines Lebewesens Hier Der tats chliche In halt einer Datei Der Ph notyp und der Genotyp einer Datei m ssen nicht notwendigerweise iden tisch sein Die Datei tunix dat kann ein Virusprogramm enthalten h exe vom Inhalt her ein gew hnlicher Text sein W hrend der zweite Fall ungef hrlich ist kann mit Hil fe der ersten Methode eine scheinbar harmlose Datei auf Festplatte gebracht werden ohne da ein Kontrollprogramm dies erkennt Das Umbenennen und oder Kodieren einer Datei wird im weiteren als tarnen bzw enttarnen be
73. Funkt int main int argc char argv int arg if init argc argv lt 0 Fehler bei INIT return 1 for arg 1 arg lt argc arg fuer alle Laufwerke scan_structure argvlarg delete_list amp list_anchor fclose in_subdir fclose in_file fclose out_subdir fclose out_file return 0 init beginnt mit der Initialisierung der Variablen sout_file und eout_file deren Funktion unter Lesen Schreiben der Referenzdaten erl utert wird N chster Punkt ist das ffnen aller Referenzdateien s a Abb 4 5 chkstate sui und chkstate fii enthalten die Verzeichnis bzw Dateidaten der letzten berpr fung Falls eine der bei den Dateien nicht existiert wird statt dessen die nul Datei ge ffnet und so eine leere Datei simuliert Das Ergebnis der aktuellen berpr fung wird in den Dateien chkstate suo und chkstate fio gespeichert die entweder neu angelegt oder berschrieben werden Vor dem n chsten Start von ChkState sind die Ausgabedateien in die Eingabedateien um zubenennen z B mit copy chkstate o 7 i In chkstate 1st kann der An wender analog zu ChkSys Dateien spezifizieren die bei der Kontrolle ber cksichtigt und in die Referenzliste aufgenommen werden sollen Empfohlen alle ausf hrbare Dateien Zuletzt werden noch die CRC Funktionen initialisiert und Pufferspeicher reserviert int init int argc char argv char f_spec 65 sout_fil
74. Hauptgrund daf r d rften Disketten sein die beim Ausschalten des Rechners irrt mlich im Laufwerk vergessen wurden Beim Einschalten wird dann das Betriebssystem unfreiwillig von Diskette geladen falls der Anwender die Diskette nicht vorher entdeckt Inkubationszeit Die Zeit zwischen Infektion und dem Auftreten der ersten Symptome wird als Inkubationszeit bezeichnet Eine lange Verz gerung zwischen In fektion und Ausbruch der Krankheit bewirkt da u U viele Individuen Opfer einer Ansteckung werden bevor dies durch Auftreten von Symptomen bemerkt wird Ein Computervirus mit einer langen Inkubationszeit und geringer Infektiosit t das sich insgesamt sehr unauff llig verh lt schleichende Infektion hat gute Ausbreitungs chancen falls Watcher und Scanner als prim re Mittel zur Abwehr eingesetzt werden Checker k nnen auch diesen Typ sofort erkennen sobald das Virus eine Datei ver ndert hat Auch der umgekehrte Weg kann schnellen Erfolg bringen wie die Geschichte be weist Die im Mittelalter w tende Pest f hrte innerhalb von wenigen Stunden nach der Infektion zum Tode Die Seuche breitete sich wegen der gro en Anzahl von Vekto ren Fl he auf Ratten mangelhafter Hygiene und genereller Unkenntnis der Ursachen rasch aus Als fast perfekte Analogie hierzu w re der INTERNET Worm zu nennen Schnelle berlastung der befallenen Rechner rasche Verbreitung ber eine Vielzahl von Netzwerkverbindungen mangelhafte Systemsi
75. Interrupts berhaupt zur Verf gung stehen bzw durch welche Teile von MS DOS sie bedient werden Auch bei den Interrupts m ssen wir die relevanten aussieben Wich tig sind vor allen Dingen der BIOS Disk Interrupt 1316 und der DOS Funktions Interrupt 2116 Alle Operationen die Dateien deren Attribute und die Struktur des Dateisystems betreffen laufen ber den Interrupt 2116 der zur Kernelebene geh rt Das Kernel ber die Ger tetreiber und Anwenderprogramme wiederum nutzen die sektororientierten Dienste des Interrupts 1316 Durch die Aufteilung der Betriebssystemfunktionen in Kernel und BIOS Aufrufe k nnen und m ssen Kontrollprogramme auf zwei unterschiedlich abstrakten Ebenen aktiv werden Mit dem Disk Interrupt befinden sich alle externen Datentr ger un ter unserer Kontrolle die nicht von speziellen Ger tetreibern verwaltet werden Der Schutz auf dieser Ebene ist eher allgemein lesen schreiben und umfa t gleich ein gan zes Laufwerk Die Kernelfunktionen erlauben uns eine feiner granulierte und pr zisere berwachung auf Dateiebene Objekt die Datei und Operation sind genau bestimmt und k nnen f r spezifischere Kontrollen ausgewertet werden Au erdem ist die ber wachung von Operationen auf Laufwerken m glich die durch spezielle Ger tetreiber verwaltet werden RAM Disk etc Sicherheitsrelevante Funktionen Kernel Das Dos Kernel bietet mit dem Interrupt 2116 eine Vielzahl von Funktionen vor allen Dingen zur Dateib
76. Kniffe bei der Pro grammierung Tips f r die Anwendung Diskussion Wo liegen Schwachstellen wie sind sie falls m glich zu beheben Wo liegen die Grenzen des Verfahrens worin bestehen sinnvolle Erweiterungen Dieser Teil wurde zusammenfassend ins 5 Kapitel ausgelagert Doch nun genug der Vorrede fangen wir an 4 1 Anforderungsanalyse Forderungen an das Programmpaket Eine sorgf ltige Anforderungsanalyse ist der Schl ssel f r effektive Programmierung und die Erreichung der gesetzten Ziele Wie sehen diese berhaupt aus Das Softwarepaket soll 4 1 ANFORDERUNGSANALYSE 129 e verhindern da verseuchte Programme in das zu sch tzende Rechnersystem ein dringen d h durch menschliches Zutun oder automatisch ablaufende Vorg nge ins System gebracht werden kontrollierte Isolation e passiv vorliegende Viren infizierte Programme detektieren und identifizieren Scanner e Ver nderungen an der Struktur des Dateisystems und am Dateibestand aufdecken rein quantitativ Checker e die durch Verbreitung oder Schadensfunktionen hervorgerufenen inhaltlichen Ver nderungen von Dateien durch den Einsatz von kryptographischen Pr fsum men und den Vergleich mit Tabellen der korrekten Werte erkennen Checker e dito aber Ver nderung der Dateiattribute Datum Zeit Attribut Byte und wei tere Charakteristika Checker e nicht validierte oder erkennbar verseuchte ver nderte Programme am Start d h Aktivieren des
77. Kommandos Die Schutzma nahmen zur kontrollierten Isolation greifen nicht nur auf Interrupt son dern auch auf Programmebene an Um z B den Transport von verseuchten Program men von Diskette auf Festplatte zu verhindern m ssen diverse MS DOS Kommandos mit Kontrollfunktionen ausger stet werden Wie schon angesprochen wirft diese For derung bei internen Kommandos Probleme auf Prinzipiell w re es m glich einen eigenen Kommandointerpreter zu schreiben Um den Aufwand m glichst gering zu halten k nnte dieser als Filter ausgef hrt werden der nur zul ssige Operationen an command com weiterleitet Auf diese Weise bliebe die Programmierarbeit auf die Kontrollfunktionen beschr nkt Noch einfacher 4Durch Begegnungen der dritten Art 142 KAPITEL 4 ENTWICKLUNG DER SYSTEMPROGRAMME ware es wenn command com die kritischen internen Kommandos nicht mehr erkennen w rde Eigene Programme k nnten deren Aufgaben bernehmen Um interne Befehle zu externisieren mu command com geeignet ver ndert werden Damit die Anzahl der zu ersetzenden Kommandos m glichst gering bleibt wird aus Gruppen gleichartiger Befehle wie copy xcopy replace etc ein Kommando aus gew hlt das f r den Betrieb ausreicht Die nach unseren Untersuchungen zu entfernen den Befehle sind copy xcopy replace backup restore Ersatz durch AVCopy ren rename Ersatz durch AVRename attrib fdisk format join subst sys ersatzlose Stre
78. Makro MAKE_FARPTR kann ein FAR Zeiger erzeugt mit den Makros GET_SEG und GET_OFF in Segment und Offset zerlegt werden PARA schlie lich bestimmt von einer FAR Adresse die n chst tieferliegende Segmentadresse 3 4 VERWALTUNG INTERNER SPEICHER Offset Typ Bedeutung 041g FAR erster MCB 00j6 FAR erster DPB Disk Parameter Block 041g FAR SFT System File Table 081g FAR Clock Device Uhr 0Cig FAR Console Device Tastatur Bildschirm 101g word max Sektorl nge 512 121g FAR erster DOS Diskpuffer 1615 FAR interne Daten zu log Laufwerken s a Anhang C 2 1416 unbekannt define MAKE_FARPT Tabelle 3 9 Aufbau List of Lists R seg off void far DWORD seg lt lt 16 WORD off define GET_OFF fp WORD DWORD fp amp OxFFFF define GET_SEG fp WORD DWORD fp gt gt 16 WORD DWORD fp gt gt 16 DWORD fp amp OxFFFF gt gt 4 define PARA fp 103 Die Strukturtypen T_LOL und T_MCB entsprechen den internen MS DOS Strukturen fiir die List of Lists und MCBs struct T_LOL struct T_MCB far void far struct T_SFT far void far void far WORD void far void far F3 struct T_MCB char flag WORD owner WORD paras BYTE res 3 BYTE name 8 mcb_anchor dpb_anchor sft clock_dev con_dev max_sec_len buffer_q dev_buffer List
79. Multiplikation und Division ist ausschlie lich das AX Register oder der Akkumulator zust ndig Datenbewegun gen zwischen einer fixen Speicheradresse und dem AX Register sind besonders schnell 74 KAPITEL 3 SYSTEMPROGRAMMIERUNG UNTER MS DOS Abbildung 3 2 Verhalten des Stack bei call near far und int Bei einer 32 Bit Division oder Multiplikation interpretiert die CPU die Kombination DX AX als Registerpaar Das CX Register fungiert bei Operationen wie dem Schieben oder Rollen von Bits und bei automatischen Schleifen als Z hlregister Dem BX Register ist keine bestimmte Funktion zugeordnet es kann als einziges der Arbeitsregister auch als Indexregister verwendet werden Das h herwertige und das niederwertige Byte jedes Arbeitsregisters kann selbst wieder als Register angesprochen werden So besteht z B das Register AX logisch aus den Registern AH f r das h herwertige Byte und AL f r das niederwertige Byte Allgemein gilt Das 16 Bit Register X besteht aus den beiden 8 Bit Registern H und L Eine Ver nderung der Byte Register beeinflu t das Wort Register und umgekehrt Spezialregister Das PSW Programmstatuswort enth lt neun Flags die be stimmte Zust nde des Prozessors anzeigen und Betriebsarten festlegen Interessant sind f r uns nur das Carry und das Zero Flag die bei manchen Betriebssystemaufrufen eine Rolle spielen 3 1 3 Adressierung Besonderheiten Dem Programmierer stehen eine Reihe von Operandentypen und A
80. OxFFFF mit Org ISR fortfahren Detektion Was ist wenn das Programm bereits speicherresident installiert ist und nochmals aufgerufen wird Zur Detektion der Installation gibt es mehrere M glich keiten 17 Entweder stellt man die Anwesenheit des Programms im Speicher fest in dem man die Kette der MCBs durchforstet oder implementiert wie in unserem Fall im residenten Teil eine Funktion die auf Abfrage von au en reagiert int main void struct T_I_MESSAGE msg Nachricht struct T_I_MESSAGE far msg_ptr Zeiger auf Nachricht Schon installiert msg prg_id PRG_ID gt gt 8 msg_ptr struct T_I_MESSAGE far amp msg if intercom IM_RUTHERE void far amp msg_ptr PRG_ID IM_RUTHERE message Ox1F Allready installed return 1 Freigabe Environment Wenn das TSR Programm das Environment nicht ben tigt kann es dies mit der Funktion Release Memory Block in C freemem Tab A 12 freigeben Das funktioniert weil das Environment in einem ganz normalen Speicherblock untergebracht ist Die als Parameter ben tigte Segmentadresse des Envi ronments enthalten wir ber das Wort bei Offset 2C16 des PSP Die Segmentadresse des PSP wiederum liefert die Funktion Get PSP Address getpsp Tab A 18 Dem Kernel ist es brigens egal ob ein Programm einen Speicherblock freigibt der ihm gar nicht 200 KAPITEL 4 ENTWICKLUNG DER SYSTEMPROGRAMME geh rt unter r
81. Pflichten c e Speicherung der Rechte unabh ngig von der Dateiverwaltung durch das Betriebs system Option Objekt Bedeutung P Datei write protect Schreibschutz R Datei read protect Leseschutz E Datei exclude from protection von Dateischutz ausnehmen X Programm exeption von besonderen Schutzma nah men ausnehmen T Programm valid TSR zul ssiges TSR Programm C Programm compute checksum Pr fsumme berechnen Tabelle 4 17 Schutzma nahmen unter Flushot 4 5 REALISIERUNG DES RESIDENTEN TEILS 219 Weil die Optionen P R und E nicht das aufrufende Programm ber cksich tigen kommt es h ufig zu Fehlalarmen So meldet sich Flushot beispielsweise wenn der Schreibzugriff auf ausf hrbare Dateien verboten ist und ein Compiler ein neu es Programm schreiben will Umgekehrt bewirkt die Option X da ein Programm g nzlich von der berwachung ausgeschlossen wird Aus diesen Gr nden ber cksich tigt AVWatchF stets das aufrufende Programm die angeforderte Operation und die zu bearbeitende Datei Aufbau und Zugriff auf die Rechtedatei Die Rechtedatei f_rights raw enth lt pro Zeile einen Eintrag in Klartext mit folgendem Aufbau 220 KAPITEL 4 ENTWICKLUNG DER SYSTEMPROGRAMME Recht lt Subjekt gt lt Rechte gt lt Objekt gt Subjekt Programmname Objekt Programmname Rechte Option en Option slfliltlrlwlx Die Reihenfolge der Rechte spielt keine Rolle wohl
82. Ports installieren start I P Proze starten subst E R Verzeichnis als Laufwerk ansprechen sys E RP Betriebssystemdateien kopieren time I RP Zeit anzeigen andern tree E RP Verzeichnisstruktur anzeigen type I RP Datei ausgeben ver I RP Betriebssystemversion ausgeben verify I RP Verify Modus anzeigen ndern vol I RP Diskettenname anzeigen xcopy E RP Verbesserte copy Version Tabelle C 2 Kommandos unter MS Dos os 2 Teil 2 313 In den Tabellen C 1 und C 2 sind alle Kommandos aufgef hrt die unter MS DOS und 08 2 zur Verf gung stehen Die beiden Betriebssysteme wurden in einer bersicht zusammengefa t weil die Befehlss tze fast identisch sind wenn man von den Befehlen absieht mit denen man Programme quasiparallel abarbeiten lassen kann e Die erste Spalte enth lt den Namen des Kommandos wie er nach dem Prompt einzugeben ist oder Extern ist Die zweite Spalte gibt Auskunft dar ber ob das Kommando vom Typ Intern e In der dritten Spalte ist angegeben ob der Befehl im Real oder im Protected Mode ausgef hrt werden kann Ein O markiert Kommandos die nur unter 08 2 verf gbar sind Die Angabe PO w re berfl ssig denn ein Kommando das nur im Protected Mode benutzt werden kann ist damit automatisch nur unter 08 2 und nicht unter MS DOS verf gbar 4Real und Protected Mode werden unterschieden 314 ANHANG C INFORMATIONEN ZU MS DOS e In der vierten Spalte schlie lich
83. Programme sind von Borland Flushot ViruScan F Prot und viele andere Antivirusprogramme k nnen ber trickle dsOrus1i Verzeichnis lt MSDOS TROJAN PRO gt bezogen werden s a B 4 TRICKLE Server 258 ANHANG A SOFTWARE A 3 MSDOS_ LIB A 3 1 Kernel Interrupts Allgemeine Hinweise Zu jeder Funktion der Bibliothek MSDOS_S LIB existiert eine kombinierte Funktionsbeschreibung f r Assembler erste Spalte und C zweite Spal te Die dritte Spalte enth lt eine Beschreibung oder den Wert der Parameter und geht auf Besonderheiten der C Version ein Des weiteren sind folgende Dinge zu beachten Alle Module sind f r das Speichermodell SMALL ausgelegt der Einsatz ist auch im Modell TINY m glich e Die C Funktionen setzen automatisch die NEAR Adressen bergebener Parame ter in FAR Adressen um falls der Assembler Aufruf das verlangt Speichermodell SMALL Die bergabe erfolgt immer wie im Prototyp spezifiziert e In C Programme eingebundene Assembler Module m ssen den Inhalt der Re gister DS SI und DI erhalten weil der Compiler dies erwartet Die Funktion absread hinterl t das Flagregister auf dem Stack Die C Routine behebt diesen Fehler automatisch CF steht f r Carry Flag ZF f r Zero Flag return steht f r den Wert den die C Funktion zur ckgibt Funktion Get Current Disk Interrupt 2116 Funktion 191g int xgetdisk void Aufrufparameter AH 1916 Seitene
84. Qualit t des Schutzes erreicht die ein Gro rechner erreichen kann Die Ursache hierf r liegt in der Hardware begr ndet APCs verf gen i d R ber keine Mechanismen zur hardwarem i gen Speicherkontrolle Jedes Programm kann wahlfrei auf jeden Bereich des Speichers lesend und schreibend zugreifen Eine Ausnahme bilden Rechner mit INTEL CPUS jen seits des 286ers die wie ihre gro en Kollegen gesch tzten Speicher Protected Memory realisieren k nnen nicht unter MS DOS In diesem Modus ist der durch ein Programm belegte Speicher in genau definierte Bereiche sog Segmente unterteilt Ein Programm kann nur in Codesegmenten ablau fen nur in Datensegmenten ist das Lesen und Schreiben von Daten m glich Operatio nen die diese Regeln verletzen werden bereits auf Hardwareebene erkannt abgefangen und der Sachverhalt an das Betriebssystem weitergemeldet Neben einer entsprechenden 5Dieses Verfahren wurde u a beim 1989 bekanntgewordenen KGB Hack verwendet 2 3 MS DOS UND ANDERE BETRIEBSSYSTEME 41 Meldung f r Logbuch und Anwender wird das verantwortliche Programm abgebrochen Durch diese Ma nahmen k nnen Viren nur auf Programme und Daten zugreifen die sich nicht im Speicher sondern auf externen Datentr gern befinden Dar ber hinaus mu das Virusprogramm entsprechende Dateizugriffsrechte besitzen Das Betriebssy stem ist damit gegen Manipulationen gesch tzt 2 3 2 u ere Sicherheit Zugangskontrolle Closed Sho
85. REALISIERUNG DES RESIDENTEN TEILS 215 while l_track lt i_table part l_drive start 1_track gt i_table part l_drive end amp amp decide l_drivet decide l_drive lt i_table start_part p_drive 1 F r den Fall da kein passender Eintrag gefunden werden konnte flag gesetzt gibt es zwei Erkl rungen 1 Falls sich die gesuchte Spur vor der ersten Spur der ersten Partition befindet kann es sich nur um Daten zur Speicherverwaltung wie den MBR handeln auf die ein normales Programm kein Zugriff haben sollte Von der Bedeutung her hnliches gilt f r die PBRs der einzelnen Partitions die u U ein Bootprogramm enthalten s u 2 Zugriffe auf Spuren zwischen Partitionen sind falls das berhaupt von der Auf teilung der Festplatte her m glich ist ebenfalls suspekt Hier ist das Objekt der Operation undefiniert Da die PBRs im Gegensatz zum MBR Bestandteil der Partitions sind ist eine sepa rate berpr fung notwendig ob ein Zugriff auf diese Daten erfolgt Der Test ist einfach zu realisieren weil der Bootblock immer der erste logische Sektor eines Datentr gers oder einer Partition ist Wegen der Bedrohung durch Bootviren ist der Schutz dieser Bereiche w nschenswert Da nun Operation und Subjekt feststehen kann die Zul ssigkeit der Operation berpr ft werden if decide ausserhalb Partition req 0x0001 L_DRIVE ungueltig l_drive i_table start_part p_drive else
86. Rechner gebracht werden AVCopy kann zwar das Vorhandensein von Text erkennen nicht aber dessen Bedeutung Eingeschr nkt wird diese Methode dadurch da sich auf dem Sy stem ein Compiler oder Interpreter befinden mu der den kopierten Quelltext bersetzt oder ausf hrt Die ultimative Tarnmethode hat sich Peter Wayner wayner cs cornell edu ausgedacht 11 71 Sein Programm das er auf Anfrage versendet verschl sselt Daten in Texten die z B wie eine Rede von Neil Kinnock oder eine Baseballreportage aussehen sic Der Zieltext mit der verschl sselten Information ist nach bestimmten Regeln entsprechend typischer Merkmale eines l ngeren Quelltextes aufgebaut Das Ergebnis ist etwas konfus und ohne Sinn aber da man das auch von manchen Politikern oder Sportreportern gewohnt ist trotzdem unauff llig AVRename Das Umbenennungsprogramm erf llt unterst tzende Aufgaben Zum einen wird verhindert da Dateien ihren Typ wechseln und z B ein getarntes Pro gramm ausf hrbar oder ein Programm getarnt wird Zum anderen kann ein Programm nicht umbenannt oder in ein anderes Verzeichnis transportiert werden um z B die berwachung durch AVWatchF zu unterlaufen AVWatchG Der Schutz der Systemuhr gew hrleistet die Korrektheit von Zeit marken in Logdateien Manipulationen k nnten es unm glich machen den Verursacher einer unzul ssigen Operation zu ermitteln Schwachpunkt Direktzugriffe Die eingebaute Hardware Systemuhr kann auch
87. Rechtestring int i BYTE n_ptr far f_ptr zur Datenuebertragung BYTE p_drive physikalisches Laufwerk BYTE l_drive logisches Laufwerk BYTE 12_drive temp log Laufwerk Diskettenlaufwerk Partitionen anlegen i_table start_part 0 0 i_table part 0 start 0 i_table part 0 end OxFFFF i_table start_part 1 1 i_table part 1 start 0 i_table part 1 end OxFFFF Der n chste Teil ist stark mit ReadPart verwandt und arbeitet auf gleiche Weise Vor jedem Aufruf von read_part_data wird der Verweis auf die erste Partition des gerade bearbeiteten physikalischen Laufwerks in start_part eingetragen Teil 1 Partitionsdaten einlesen p_drive 0x80 Start mit 1 Festplatte l_drive 2 A B ueberspringen do i_table start_part 2 p_drive amp 0x7F l_drive while read_part_data amp l_drive p_drivet 0 0 1 0 Die Partitionsdaten werden diesmal nicht nur wie in ReadPart als Text ausgege ben sondern in die Tabelle i_table geschrieben read_part_data wurde so modifi ziert da die Funktion f r jedes logische Laufwerk die Start und Endspur vermerkt Das folgende Codefragment zeigt das Ende der Funktion unmittelbar nach der switch Anweisung normale Partition if type 0x01 type 0x04 type 0x06 i_table part ldrive start GET_TRACK mbr part i start_combi lt lt 4 mbr part i start_head i_table part l
88. So wird z B als Abschiedsgru ein Trojaner oder Virus im System hinterlassen der sich bei einer bestimmten Gelegenheit aktiviert Als Gegenma nahme sollte durch nderung oder L schung des Pa worts die betreffende Benutzerkennung Account so fort gesperrt werden Alle Dateien zu denen der Mitarbeiter Schreibzugriff hatte sind zu berpr fen oder falls m glich aus dem System zu entfernen Vergleichsweise selten aufgetreten sind bisher Viren mit politischen Botschaften Manche Viren wie Israeli weisen durch das Ausl sedatum auf ein bestimmtes Ereignis hin andere wie Saddam und Iraqi Warrior verbreiten konkrete Nachrichten in Textform 2 2 Konventionelle Sicherheitsma nahmen 2 2 1 Organisation Kontrollma nahmen Dieser Abschnitt f hrt Aspekte der Datensicherheit an wie sie das BDSG Bundesda tenschutzgesetz in der Anlage zu 86 Abs 1 Satz 1 definiert 94 Da die Gew hrleistung der in der Anlage genannten Anforderungen gem 86 BDSG Pflicht f r Personen oder Stellen sind die personenbezogene Daten verarbeiten existiert wahrscheinlich bereits entsprechende Sicherheitssoft und Hardware Diese lie e sich evtl zum Schutz gegen Computerviren verwenden Der folgende Text geht die Anforderungen des BDSG Schritt 32 KAPITEL 2 THEORIE DER ABWEHR f r Schritt durch und untersucht deren m gliche Eignung f r die Abwehr von Softwa reanomalien bzw potentielle L cken Die Vorschl ge zur Realisierung d
89. String als Stringende jeder Namensteil separat Genau nach diesen Regeln bearbeitet die Funktion fill_in beide Namensteile Die Behandlung mu separat erfolgen weil erst nach Einsetzen der Erweiterung fest steht ob der Zielname berhaupt eine Erweiterung besitzt die durch einem Punkt vom Namen zu trennen ist Au erdem ist Punkt 4 zu beachten Funktion Fill In Filename void fill_in char name char mask char fill Aufrufparameter name Dateiname kein Pfad mask Maske fill Zielvariable Seiteneffekte fill Ergebnis der Abbildung Riickgabewert keiner Tabelle A 37 fill_in Bilde Dateinamen auf Maske ab Split Filespecification split_fspec extrahiert aus einer Dateispezifikation be stimmte Namensteile die durch den Split Modus spezifiziert sind A 4 AVSYS LIB define define define define define define SM_DRIVE SM_PATH SM_DIRECTORY SM_NAME SM_NAMEPART SM_EXTPART PwWNHO Laufwerk Pfad Lfw Verzeichnis Verzeichnis Name inkl Erweiterung Name Erweiterung 289 f_spec result result Aufrufparameter split_mode Seiteneffekte R ckgabewert Zeiger auf result Funktion Split Filespecification char split_fspec int split mode char f_spec char result Zerlegungsmodus Auswahl Namensteil s Text zu zerlegende Dateispezifikation Pfad Zielvariable spezifizierter Namensteil
90. Tunes Juke Box mit 8 Songs Auswahl zuf llig Holland Girl Enth lt die Aufforderung an Sylvia in Holland zu schreiben Loa Duong Verbreitet fremde Kultur indem es den gleichnamigen laotischen Grabge sang spielt Sublimal Die Nachricht Love remember wird in gewissen Abst nden so kurz einge blendet da nur das Unterbewu tsein sie wahrnimmt Sunday Dieser Virus meint es gut mit dem An wender und fordert ihn falls es Sonntag ist auf sich zu schonen Stoned Der Bob Marley der Viren Legalize it auf elektronischem Wege Propaganda gegen den bekannten iraki schen Staatsmann Saddam Tabelle 5 1 Viren Spezialit ten hingegen k nnte sich diese Strategie auszahlen F r die betreffende Firma best nde allerdings das gro e Risiko im Falle der Aufdeckung ihrer Machenschaften einigen Prozessen gegen berzustehen Ein Pro Argument ist da ohne neue Viren ein Update Service berfl ssig wird Viele Anwender sind vielleicht auch nerv s genug um auf Anzeigen wie Neues Virus entdeckt bestellen Sie Ihr Schutzprogramm jetzt zu reagieren Alles in allem ist es v llig unn tig selbst f r neue Viren zu sorgen und dabei unw gbare Risiken auf sich zu nehmen Hunderte unverantwortlicher Programmierer arbeiten weltweit Tag und Nacht freiwillig und ohne Bezahlung daran da der Virenstrom nicht abrei t Warum sie ihre offensichtlichen F higkeiten nicht f r Geld vermarkten ist nicht oder nur schwer
91. UNIX zum Beispiel erbt ein Programm die Rechte des Benutzers der es gestartet hat Startet Benutzer A ein verseuchtes Programm kann das Virus nur auf die Dateien schreibend zugreifen f r die A auch Schreiberlaubnis hat Nun kann A seine Programme dem Benutzer B jedem anderen seiner Benutzergruppe oder allen Rechnerbenutzern zug nglich machen Startet B das infizierte Programm kann das Virus alle anderen Programme verseuchen auf die B Schreibzugriff hat Die Benutzung eines Programms durch mehrere Anwender nennt man sharing von engl to share teilen teilhaben Cohen stellte nun ein den anderen Benutzern unbekann tes aber als interessant angepriesenes Programm namens vd zur Verf gung Innerhalb von Minuten probierte auch der Systemadministrator Benutzerkennung root das Programm aus Da UNIX bei der Systemverwaltung keine Gewaltenteilung kennt hatte das Virus damit alle Systemrechte inne Fazit Computerviren die aus Gr nden der Tarnung professionelle mit Sicherheits mechanismen ausgestattete Betriebssysteme umgehen sind in der Tat schwierig zu schreiben Einfache und trotzdem gef hrliche Viren hingegen sind schnell und ohne gro e Programmiererfahrung zu erstellen und bei der Verbreitung sowie bei der unbefugten Erlangung von Rechten als erfolgreich einzustufen 1 5 2 Die Verbreitung von Viren bis heute Cohen ver ffentlichte seine Arbeiten am 16 10 84 an der University of Southern Cali fornia Schon vorher 1983
92. Verbrechen ergeben sich auch bei Softwareanomalien zus tzliche Schwierigkeiten durch die Tatsache da Richter und Jury in der Regel Laien auf dem Gebiet sind das Gegenstand des Verfahrens ist Im Fall des Morris Wurms kam in den USA in den Medien und auf der Diskussionsliste VIRUS L eine Diskussion dar ber auf ob Richter und Jury Laien sachverst ndig oder gemischt sein sollten eine Frage die nicht mit einem Satz zu beantworten war und von offizieller Seite bis heute nicht geregelt ist 1 6 1 Die Rechtslage in Deutschland 1986 wurde das zweite Gesetz zur Bek mpfung der Wirtschaftskriminalit t in Kraft gesetzt in dem sich f nf Paragraphen mit der Computerkriminalit t allgemein befassen aber keiner speziell mit Softwareanomalien Am ehesten auf Viren zutreffend sind die Paragraphen 8303a Datenver nderung und 8303b Computersabotage StGB Unter Datenver nderung wird verstanden Daten zu l schen zu unterdr cken unbrauchbar zu machen oder zu ver ndern Der Computersabotage macht sich schuldig wer Daten ver ndert oder eine DV Anlage oder einen Datentr ger zerst rt besch digt unbrauchbar macht beseitigt oder ver ndert Das Strafma bewegt sich zwischen 2 und 5 Jahren Freiheitsentzug oder Geldstrafe Softwareanomalien versto en in mindestens einem Punkt gegen eines der oben genannten f r strafrechtlich rele vant befundenen Kriterien Trotzdem lassen sich mit diesen Gesetzen Computerviren
93. Virus hindern kontrollierte Isolation e aktiven Viren die residente Installation und bernahme von Interrupts verwehren Watcher e aktive Computerviren am Vorhandensein im Speicher und an Aktivit ten erken nen Scanner Watcher e die unbefugte Manipulation von Programmen und anderen Dateien aktiv verhin dern Watcher e die durch aktive Viren ausgel sten Schadensfunktionen abwenden z B Forma tieren der Festplatte Watcher Das ist ein ganzer Forderungskatalog Die bersicht ist nach dem Grad der Akti vit t der Viren in mehrere Verteidigungslinien gestaffelt W hrend der letzte Punkt sich sozusagen des Viren GAUs annimmt befa t sich die erste Forderung mit einem saube ren System und dem Versuch diesen Zustand zu erhalten Es sollte festgehalten werden da eine Blockierung des Virus an einer der vorgeschobenen Stellungen w nschenswert ist Mit zunehmender Aktivit t des Virus wird es n mlich f r das Antivirusprogramm immer schwieriger den Schutz des Systems aufrecht zu erhalten Moderne Stealth Viren beispielsweise tricksen nicht nur Dateiscanner aus sondern k nnen sogar Suchprogram men die auch den Speicher berpr fen Schwierigkeiten bereiten Fazit Ist das Virus erst einmal aktiv ist es f r Schutzma nahmen bereits zu sp t Anforderungen des Virus Der Forderungskatalog spiegelt auch die typischen Aktivit ten eines Virus wider Die drei Hauptaufgaben der Computerviren sind 1 Verbreitung 2 Manipula
94. Vollzug Ein nochmaliger Aufruf zeigt da Zeit und Datum nicht ver ndert wurden ein erstes wenn auch kleines Erfolgserlebnis 4 5 6 AVWatchI ntegrity AVWatchI implementiert das von Cohen vorgeschlagene Betriebssystem S3 das auf der berpr fung der Integrit t von Programmen basiert Dazu f ngt die Kontroll ISR die Kernel Funktion 4Big Load and Execute ab Das Objekt das auszuf hrende Pro gramm ist der Gegenstand der Kontrolle Das Subjekt der Operation das aufrufende Programm bleibt immer noch unber cksichtigt F r die Berechnung der Signatur wird ein Puffer ben tigt der hier aus Platz und Geschwindigkeitsgr nden die Gr e eines Sektors hat I_DEFAULT und I_INTERACT bestimmen das Verhalten des Watchers wie wir bei der Besprechung der ISR noch sehen werden init initialisiert die CRC Funktionen und vervollst ndigt die Namen der beiden von ChkState erzeugten Referenzdateien einfuegen in Defines define BUFSIZE 512 Puffergroesse define CRC_START 0x0000 define I_DEFAULT NO define I_INTERACT YES define POLYNOMIAL 0xA001 define PRG_NAME AlWatch I define PRG_ID j lt lt 8 einfuegen in globale und externe Variablen BYTE buf BUFSIZE Puffer f CRC Berechnung char f_subdir 65 f_file 65 Namen d Referenzdateien einfuegen in INIT erzeuge vollst Dateinamen initialisiere CRC Funktionen add_path argv 0 chkstate sui f_subdir ad
95. Zeiger auf Kopier Puffer int main int argc char argv char err_msg wn Illegal source path Illegal destination path 3 char f_name 65 int source dest char err Tengl teletypewriter Fernschreiber Fehlermeldungen GEN_COPY vollst Name Rechtedatei Nummer Quell Zielangabe Fehlernummer 4 4 KOMMANDOS MIT KONTROLLFUNKTIONEN 175 3 pruefe Argumente reserviere Speicher lade Transportrechte if source get_arg argc argv 0 fprintf stderr Must provide source argument gt abort n return 1 if dest get_arg argc argv 1 0 fprintf stderr Must provide destination argument gt abort n return 1 if buf BYTE malloc BUF_SIZE NULL fprintf stderr Couldn t allocate memory gt abort n return 2 add_path argv 0 t_rights 1st f_name if read_t_rights f_name t_rights fprintf stderr Couldn t read rights file n return 3 F err gen_copy argv source argv dest fprintf stderr s n err_msglerr return 0 gen_copy Die Quell und Zielangabe in r_source bzw r_dest werden nach dem gleichen Verfahren bearbeitet Dateiangaben k nnen sich auf das aktuelle Laufwerk und das aktuelle Verzeichnis beziehen AVCopy mu aber in der Lage sein das Lauf werk sicher zu erkennen Deshalb werden Dateipfade zuerst normalisiert d h in eine Standardform geb
96. aber die Gro und Kleinschreibung Tabelle 4 18 stellt die von AVWatchF realisierten Optionen und deren Codierung vor Option Bit Objekt Bedeutung x 0 Programm execute allowed Ausf hren zul ssig w 1 Datei write allowed Schreiben zul ssig r 2 Datei read allowed Lesen zul ssig t 3 Programm valid tSR zul ssiges TSR Programm i 13 Programm check integrity Integrit t berpr fen durch Funktionen aus AVWatchlI 14 Zulassung log if fail Log falls unzul ssig schreiben 15 Zulassung log if success Log falls zul ssig schreiben Tabelle 4 18 Schutzma nahmen unter AVWatchF Die kodierte Rechtedatei f_rights 1st besteht aus Eintr gen fester Lange um die Zugriffszeit gering zu halten Datens tze variabler L nge erfordern zwar weni ger Speicherplatz sind aber aus Geschwindigkeitsgr nden f r unsere Zwecke unge eignet Hier zeigt sich ein Prinzip der Systemprogrammierung Geschwindigkeit kann oft durch Speicherplatz erkauft werden und umgekehrt Der Aufbau eines Eintrags in f_rights 1st ist wie folgt struct T_FR_ENTRY char subject 65 WORD rights char object 65 Die Umsetzung der Textdatei f_rights raw in die kodierte Datei f_rights 1st ber nimmt die Konvertierungsroutine compile_f_rights in AVConfig Interpretation der Rechte Unter UNIX ist f r jede Datei genau ein Rechtetupel definiert Anders die Situation bei AVWatchI Ein Eintrag in der Rechtedatei kann mehrere Dateie
97. angegebene FAR Adresse den MCB in dessen Speicherbereich sie liegt Dazu durchl uft eine while Schleife analog zu ReadMCB die Liste der MCBs Liegt die gesuchte Adresse adr im gerade bearbeiteten Block wird der Wert von mcb_ptr in tmp zwischengespeichert da sich dieser vor Verlas sen der Schleife noch einmal ver ndert R ckgabewert ist entweder die Segmentadresse des gefundenen MCBs oder FFFF js falls adr in keinem Speicherblock lag WORD get_owner_mcb void far adr struct T_MCB far mcb_ptr struct T_MCB far tmp temp MCB Zeiger WORD para Segmentadresse ADR char last letzte MCB Kennung para PARA adr mcb_ptr getlol gt mcb_anchor tmp NULL do last mcb_ptr gt flag if para gt GET_SEG mcb_ptr amp amp para lt GET_SEG mcb_ptr mcb_ptr gt paras tmp mcb_ptr mcb_ptr MAKE_FARPTR GET_SEG mcb_ptr mcb_ptr gt parast1 GET_OFF mcb_ptr while last Z amp amp tmp NULL mcb_ptr tmp return tmp NULL tmp gt owner OxFFFF Funktion Get Owner MCB WORD get_owner_mcb void far adr struct T_MCB far mcb_ptr Aufrufparameter adr zu suchende FAR Adresse mcb_ptr Adresse des FAR Zeigers Seiteneffekte mcb_ptr falls gefunden MCB zu dem adr geh rt sonst unbestimmt R ckgabewert FFFFijse nicht gefunden sonst Segmentadresse MCB Tabelle 3 12 get_owner_mcb Ermittle f r Ad
98. aus dem Haupt text ausgelagert wurden Informiert sein ist gut informiert bleiben ist wichtig Deshalb enth lt der An hang B eine Anleitung zur Benutzung von Diskussionslisten Server Diensten und Mail boxen Diese erm glicht jedem mit Zugriff auf das DFN EARN BITNET oder INTERNET den Einstieg in die aktuellste und umfangreichste Informationsquelle die es f r Soft wareanomalien und viele andere Themengebiete aus dem Computersektor gibt Der Anhang C enth lt Informationen zu MS DOS Dort finden sich Tabellen der MS DOS und 08 2 Kommandos der Interrupts sowie der Kernel und BIOS Funktionen Dazu kommt eine Beschreibung der internen Arbeitsweise der Kommandos assign join und subst Abk rzungsverzeichnis Glossar und Index beschlie en das Buch Kapitel 1 Theorie der Softwareanomalien Eine Anomalie griech ist eine Ausnahme von der Regel eine Abweichung vom Normalfall Unter einer Software Anomalie lie e sich demnach eine Abweichung des tats chlichen vom erwarteten Verhalten eines Programms verstehen Die Ursachen hierf r sind im klassischen Fall Fehler in der theoretischen Konzeption oder Program mierfehler die bei der Umsetzung der entwickelten Algorithmen in die Zielsprache ge macht wurden Falls diese beiden Fehlerquellen ausgeschlossen werden k nnen bleibt als Grund f r abweichendes Verhalten nur der Programmcode brig der nicht zur Realisierung der geplanten und vom Anwender aus der Beschreibung des Programms e
99. ber die Lage der zugeh rigen Teilliste der Dateinamen subdir start subdir end 296 ANHANG A SOFTWARE Funktion Read And Compile Transport Rights int read_t_rights char fmame WORD t_rights M_DRIVE M_DRIVE Aufrufparameter f_name Name der Rechtedatei t_rights Array f r Transportrechte Seiteneffekte t_ rights Transportrechte Riickgabewert 0 kein Fehler 1 Rechtedatei nicht gefunden Tabelle A 49 read_t_rights Lese und kompiliere Transportrechte Abbildung A 1 Zugriff auf die Referenzliste von ChkState int get_ref char f_spec struct T_FILE file int f_nr char f_subdir char f_name struct T_SUBDIR subdir Verzeichniseintrag int handle Datei Handle char path 65 name 13 Pfad und Name F_SPEC char flag gefunden Flag if handle open f_subdir O_BINARY O_RDONLY 1 return 1 3 split_fspec SM_PATH f_spec path while read handle amp subdir sizeof struct T_SUBDIR 1 if flag stricmpu subdir name path 0 break close handle A 4 AVSYS LIB 297 if flag return 3 Diese wird ebenfalls sequentiell nach einem passenden Eintrag durchsucht Zu r ckgeliefert werden der ausgef llte Referenzeintrag file und dessen Nummer f_nr die f r den Aufruf der Funktion put_ref von Bedeutung ist if handle open f_name O_BINARY O_RDONLY 1 return 2 F sp
100. bleiben oder aber vom n chsten gestarteten Programm benutzt und berschrieben werden Abb 3 10 Resultat ist da der Name des Programms nicht mehr sicher ermittelt werden kann Der Zeiger auf das Environment env ist demnach nur g ltig wenn der Speicherblock auf den er verweist dem betrachteten Programm geh rt Als n chster Schritt wird das eflag Environment Flag gesetzt falls der momen tan betrachtete MCB den Speicherblock kontrolliert der das Environment seines Besit zers enth lt Diese Pr fung mu jetzt erfolgen weil der Aufruf von get_owner_mcb in der n chsten Zeile den Zeiger mcb_ptr ver ndert env MAKE_FARPTR WORD far MAKE_FARPTR owner 0x2C 0 EFLAG dieser Block ist Environment des Besitzers eflag PARA env PARA mcb_ptr 1 Mit Hilfe der weiter unten besprochenen Funktion get_owner_mcb wird nun der tats chliche Besitzer env_owner des Environments bestimmt Das Environment ist 108 KAPITEL 3 SYSTEMPROGRAMMIERUNG UNTER MS DOS Abbildung 3 10 Verwaister Environment Zeiger ung ltig falls der tats chliche env_owner und der vorgebliche Besitzer owner des En vironments nicht identisch sind oder das Environment nicht am Anfang des Speicher blocks beginnt Der Besitzer des MCBs ist dann entweder ein Teil des Betriebssystems oder kann schlicht nicht ermittelt werden Kein Environment angegebenes Environment gehoert nicht dem Besitzer oder beginnt nicht am Anfang des Speicherbl
101. bp cs auf neuen Stack umschalten cli mov ss bp mov sp OFFSET _new_stack 512 sti Der C Prototyp der vom Interrupt Interface aufgerufenen ISR sieht folgenderma en aus int isr_ lt nr gt void far return_adr WORD ax WORD bx WORD cx WORD dx WORD si WORD di WORD ds WORD es Mit Hilfe der Daten Index und Segmentregister kann die Kontrollroutine die Parameter des Aufrufs auswerten Eine Spezialit t ist der FAR Zeiger return_adr der die auf dem Stack hinterlegte R cksprungadresse enth lt Diese zeigt in das Programm das die Unterbrechung ausgel st hat Mit Hilfe der Funktionen get_mcb_owner und get_name_mcb l t sich der Name des aufrufenden Programms bestimmen was f r Kontrollzwecke von gro er Bedeutung ist push es Parameter auf Stack ablegen push ds push di push si push dx push cx push bx push ax 4 5 REALISIERUNG DES RESIDENTEN TEILS 191 mov bp cs _old_sp Ruecksprungadresse ablegen mov es cs _old_ss push es bp 22 Offset siehe Kommentare push es bp 20 neben Startsequenz Der call Befehl ruft die in C geschriebene Kontrollfunktion auf Zuvor werden DS und ES mit CS gleichgesetzt damit die Bedingungen des Speichermodells TINY erf llt sind Dazu noch mehr unter Anmerkungen zur Funktion weiter unten Der Weg ber den Stack ist erforderlich weil es keine mov Befehle f r das CS Register oder den Transfer zwischen zwei Segmentregistern gibt push cs DS
102. der bergabe von Daten befassen Bei einem intercom Aufruf pr ft die ISR zun chst ob die Nachricht an die eigene Adresse gerichtet ist Falls nicht wird der Aufruf hnlich dem Token Ring Verfahren ber den urspr nglichen Interruptvektor weitergereicht Damit erh lt das n chste Pro gramm der Interruptkette die Chance die Nachricht anzunehmen message gibt eine Nachricht auf dem Bildschirm aus ohne den Inhalt zu zerst ren einfuegen in Defines Bedeutung s Text define IM_RUTHERE 0x00 define IM_DEINST 0x01 define IM_I_TABLE 0x02 define IM_INVAL_PWD 0x04 define IM_UNKNOWN OxFF define PRG_ID Ct lt lt 8 Identifikationsnummer define PRG_NAME STD_TSR define PWD 0x123456781 Password globale und externe Variablen extern WORD __brklvl fuer Groessenbestimmung volatile BYTE in_isr in ISR Flag BYTE new_stack 512 neuer Stack void interrupt far old_int21 alter INT 0x21 Vektor WORD old_psp alte Segmentadresse PSP WORD old_ss alter Stackpointer WORD old_sp WORD isr_21 void far ret_adr WORD ax WORD bx WORD cx WORD dx WORD si WORD di WORD ds WORD es struct T_I_MESSAGE far msg_ptr Zeiger auf Nachricht interner Service angefordert if ax amp 0xFF00 0xC400 msg_ptr struct T_I_MESSAGE far far MAKE_FARPTR ds dx Nachricht fuer dieses Programm if msg_ptr gt prg_id PRG_ID gt gt 8
103. der Abwehr von Krankheitserregern Immunsysteme lebender Organismen wehren Viren ab indem sie spezifische Antik rper bilden die die Eindringlinge bek mpfen Durch Impfungen wird der Organismus ange regt bereits Antik rper gegen Erreger zu bilden die ihm noch gar nicht begegnet sind Die meisten Antivirenprogramme Scanner besitzen eine Art starres Abwehrsystem das Viren an besonderen Merkmalen erkennt Es macht ihre Anwesenheit dem Benut zer bekannt oder vernichtet sie W hrend ein biologischer Organismus aber von selbst dazulernt und ihm unbekannte Viren auch Mutationen bek mpfen kann versagt hier gem Cohen s Theorien das programmierte Immunsystem Die Erweiterung des Wis sens kann bei manchen Programmen wie z B F Prot und ViruScan manuell durch den Benutzer erfolgen indem dieser der Tabelle der Erkennungsmerkmale weitere Eintr ge hinzuf gt Cohen versteht unter der Immunisierung eines Programms da die Programm datei mit dem ist infiziert Merkmal des abzuwehrenden Virus versehen wird Dieses Verfahren versagt aus zwei Gr nden Einmal widersprechen sich z T die Kennungen 58 KAPITEL 2 THEORIE DER ABWEHR verschiedener Viren und zum anderen ignorieren manche Viren evtl nach einer be stimmten Strategie eine bereits erfolgte Infektion Es ist unm glich einen perfekten universellen Virusdetektor UVD zu program mieren der ber ein Programm eine Aussage machen kann ob es einen Virus enth lt oder nicht
104. der Systemzeit um Logdaten unbrauchbar zu machen Zu 3 Sch digung Nicht jedes Virus versucht seine Umgebung zu sch digen w hrend dies bei Trojanern meist die Hauptfunktion ist Es lassen sich vier Schadensarten un terscheiden e Verbrauch von Ressourcen Rechenzeit Speicherplatz schon durch Anwesenheit gegeben e L schung von Daten 132 KAPITEL 4 ENTWICKLUNG DER SYSTEMPROGRAMME e Verf lschung von Daten e Besch digung der Hardware Der Begriff Daten ist dabei weit gefa t In Frage kommen einzelne Dateien die Dateisystemstruktur Datenverwaltungsinformation ganze Datentrager der Inhalt des Arbeitsspeichers RAM und die Konfigurationsdaten CMOS RAM Wahrend MS DOS bis zu diesem Punkt eher neutral betrachtet wurde geht es in den folgenden Abschnitten konkret um MS DOS in seiner Eigenschaft als Betriebs mittel fiir Softwareanomalien Durch unsere Untersuchungen wissen wir bereits welche Funktionen ein Virus f r seine Aktivit ten ben tigt Es soll nun untersucht werden welche Funktionen und Eigenschaften von MS DOS konkret an Virenattacken beteiligt sind und welche Rolle die Systemstruktur dabei spielt F r jede Ebene von MS DOS wird gepr ft welche Dienste durch Softwareanomalien in Anspruch genommen wer den Erkannte Sicherheitsl cken sind durch Ma nahmen organisatorischer Natur und durch Systemprogramme mit berwachungsfunktionen zu schlie en 4 1 1 Kommandoebene Dieser Abschnitt umfa t Kon
105. des Betriebssystems sondern auf Unzul nglichkeiten der Systemverwaltung Zugriff einschr nken Need to Know Prinzip Immerhin unterst tzt MS DOS vier Dateiattribute Tab 2 1 Interessant ist vor allem der Schreibschutz der ohne ein entsprechendes Programm nicht umgehbar ist Das readonly Bit ist au erdem das einzige Attribut das mit attrib beeinflu bar ist Dateien mit hidden oder system Status werden beim Auflisten mit dir nicht angezeigt Programme und Dateien die f r den Benutzer nicht zug nglich oder ver nderbar sein sollen k nnen mit entsprechenden Werkzeugen unbeschreibbar und unsichtbar gemacht werden Prinzip Need to Know nur wissen was man braucht Werden der externe DOS Befehl attrib und andere Programme mit hnlichen F higkeiten aus dem System entfernt kann der Benutzer kein Attribut mehr ver ndern Wichtige Dateien wie die Programme und Konfigurationsdaten eines Antivirus Pakets Enth lt die mit crypt einwegverschl sselten Pa w rter 38 KAPITEL 2 THEORIE DER ABWEHR Attribut Bedeutung archive zu archivieren readonly nur lesen hidden versteckt system Systemdatei versteckt Tabelle 2 1 Dateiattribute unter MS DOS sind verborgen und schreibgesch tzt nicht mehr ohne weiteres manipulierbar aber wei terhin normal zu benutzen Ein derartiger Schutz erschwert das Auffinden und die Ma nipulation sicherheitsrelevanter Daten auch f r manche Viren Programme wie fa
106. die Aufgabe jedes Dateizugriffs informiert Insbeson dere ist die berwachung von Transportwegen m glich da Quell und Ziellaufwerk verzeichnis und datei bekannt sind Auch Typwechsel ausf hrbar nicht ausf hrbar und das Umbenennen von Programmen unterliegen exakter Kontrolle Aus der Bestrebung eine Transportkontrolle zu errichten und aus den angef hr ten Gr nden ergibt sich die Notwendigkeit ein eigenes externes Kopierprogramm AVCopy und Umbenennungsprogramm AVRename zu erstellen Abb 4 7 Abbildung 4 7 Ein Ausgabe AVCopy AVRename Aufgabenbeschreibung AVCopy AVRename Der Transport von Dateien im pliziert die Existenz einer Quelle und eines Ziels Die Ortsangabe soll auf logische 172 KAPITEL 4 ENTWICKLUNG DER SYSTEMPROGRAMME Laufwerke beschr nkt sein H chstens auf Festplatten w re evtl die weitere Gliede rung in Unterverzeichnisse sinnvoll Doch sind z B in Rechenzentren die Laufwerke meist so organisiert da sich auf einer Partition das Betriebssystem und alle f r den Betrieb notwendigen Programme befinden und auf einer anderen Partition die Anwen der zu Hause sind Das Laufwerk mit der Betriebssoftware Compiler Linker Textver arbeitung etc sollte vor Aktivit ten der Benutzer sicher sein w hrend sich auf der Anwenderpartition beliebige Programme befinden d rfen In Zusammenarbeit mit einem Watcher lassen sich wirkungsvolle Schutzma nah men realisieren Ein Beispiel Der Start von Programmen auf
107. die Forderung Nummer zwei des Aufgabenkataloges pas siv vorliegende Viren infizierte Programme detektieren und identifizieren Aus den schon dargelegten Gr nden arbeitet ChkSys nicht wie ein gew hnlicher Scanner sondern macht den Anwender auf Dateien die durch bestimmte Merkmale auffallen aufmerksam Problemstellung Manche Softwareanomalien legen versteckte Dateien und Ver zeichnisse an um Daten zwischenzuspeichern oder weil ihr Funktionsprinzip dies erfor dert Trojaner wie AIDS bzw Spawning Viruses Mit einem gesetzten hidden oder system Flag markierte Dateien tauchen beim Auflisten mit dir nicht auf und werden z B bei der Ausf hrung von del bersehen Mit normalen MS DOS Kommandos sind solche Dateien und Verzeichnisse nicht zu entdecken oder zu l schen Ebenfalls gebr uchlich ist die Verwendung von besonderen Leerzeichen wie sie durch Dr cken der Tastenkombination ait 2 5 5 entstehen zur Verschleierung von Dateinamen Einige Computerviren benutzen die Zeitmarke der Datei als ist infiziert Kri terium So ist es z B m glich in das Feld f r die Sekundenangabe die Werte f r 60 und 62 Sekunden einzutragen Da dir nur Stunden und Minuten anzeigt bleibt diese Manipulation ebenfalls vor dem Benutzer verborgen Die Systemsicherheit wird aber nicht nur durch Softwareanomalien bedroht So stellen viele Programme Funktionen zur Verf gung welche die F higke
108. dieser Art des elektronischen Vandalismus nicht sondern erschweren bestenfalls die rasche Ausbreitung Computer ohne Schutz auf Hard und Softwareebene erleichtern ebenso wie Schwachstellen in den vorhandenen Sicherheitssystemen die Arbeit der Compu terviren Die gro en Computer sind gegen ber den kleinen nicht prinzipiell im Vorteil Abhilfe k nnten zuk nftige Normen und Pr fverfahren schaffen wie sie das Orange Book und die IT Sicherheitskriterien vorsehen Einzig der Schutz der Datenintegrit t im Zusammenhang mit sicheren Betriebssystemen kann Soft wareanomalien Paroli bieten 2 4 Konzepte zur Virenabwehr Cohen s Theorien Fred Cohen besch ftigte sich in seinen Arbeiten nicht nur mit der Theorie der Com puterviren sondern entwickelte auch Methoden zur ihrer Abwehr Insgesamt ver ffent lichte Cohen drei Aufs tze u a in der Zeitschrift Computers and Security Der erste Artikel Computer Viruses Theory and Experiments 21 wurde bereits in Kapitel 1 angesprochen soweit er Informationen zur prinzipiellen Funktion und Experimenten mit Computerviren betrifft Der zweite Teil des Aufsatzes befa t sich mit der Funktion und Wirksamkeit g ngiger Sicherheitskonzepte sowie Untersuchungen zur Detektier barkeit und Abwehr von Viren Dazu kl rt Cohen zun chst folgende Begriffe e Informationsaustausch oder Sharing von engl to share teilhaben Informa tion mu wenn sie n tzlich sein soll auf Tr
109. engl gateways Listen von Knoten auf anderen Netzen und Hilfsprogramme zur Netz Verwaltung nur f r Mainframes Beispiel Hilfe von NETSERV anfordern Um einen Hilfetext anzufordern schickt man das Kommando help an netserv Jedes europ ische Land besitzt einen zentralen EARN Knoten der netserv Dienste anbietet Dessen Name ergibt sich aus der L nderkennung f r Deutschland D und dem Wort EARN was zur Netzwerkadresse netserv dearn f hrt F r Griechenland oder die T rkei lautet das Ergebnis entsprechend grearn bzw trearn Die Bestellung get netserv helpfile sei empfohlen B 7 Mailboxen In Tabelle B 5 finden sich Netzwerkadressen und Anschlu nummern einiger Institute und Privatleute Das Verfahren bei den durch aufgeteilten BITNET und INTERNET 3Computer Emergency Response Team Eingreiftruppe des BITNET Der Benutzer anonymous ben tigt kein Pa wort B 8 DER NETZ KNIGGE 309 Syntax Bedeutung HELP lt Thema gt Hilfe zu einem bestimmten Thema anfordern GET lt Dateiname gt lt Dateityp gt Datei bestellen Query CMD Liste aller Kommandos ausgeben Tabelle B 4 Befehlsauswahl netserv Adressen ist bereits bekannt Letztere haben i d R mehr als einen Dezimalpunkt im Adressteil und enden oft mit edu education Universit ten Schulen com commer ce Unternehmen gov government Regierung oder mil military Milit r Auch X 400 Adressen sind durch Punkte in Felder unterteilt
110. err Fehlerstatus if handle open f_name O_WRONLY O_APPEND O_BINARY 1 message 0xCF Logfile open error return 1 err 0 xgetdate amp log date baue Logeintrag auf xgettime amp log time strcpy log subject subject log func_code func_code strcpy log object object schreibe Logeintrag if write handle amp log sizeof struct T_LOG_ENTRY sizeof struct T_LOG_ENTRY message 0xCF Logfile write error err 2 33 close handle return err 5 Hinweis Die Logdatei mu vor dem ersten Gebrauch mit der Eingabe von copy con avwatch log gefolgt von ctr z in dem Verzeichnis angelegt werden in dem sich auch die Watcher befinden Um die Logdaten vor unbefugtem Zugriff zu sch tzen sollten die Attribute hidden und system gesetzt werden das ndern von Dateiattri buten sollte nicht zul ssig sein Log Report LogRep Der Reportgenerator konvertiert die Logdatei in eine f r Menschen verst ndliche Form indem statt der rohen Parametern der Funktions aufrufe symbolische Namen verwendet werden So wird die knappe Loginformation 213D00001 zum aussagef higen Text Open File Read Access Compatibility Mo 4 5 REALISIERUNG DES RESIDENTEN TEILS 229 Funktion Add Entry to Logfile int add2log char fname char subject DWORD func_code char object Aufrufparameter f_name vollst Name der Logdat
111. ger stet Das gilt auch f r den eigenen PC zu Hause der eine per manente Virenquelle darstellen kann gegen die z B der Betreiber eines vom diesem Anwender ebenfalls genutzten Rechenzentrums wenig ausrichten kann Auch aus Un tersch tzung werden viele Rechner Opfer von Viren Die meisten Computeranwender die ber Grundkenntnisse auf diesem Themengebiet verf gen untersch tzen dennoch die F higkeiten von manchen Computerviren Programme zu verseuchen und Infektio nen lange Zeit erfolgreich vor dem Benutzer zu verbergen bes Stealth Viruses wie 4096 Whale etc 38 3 156 3 357 3 358 Selbst diejenigen die sich mit Computerviren aktiv besch ftigen gef hrden u U sich und andere durch ihre Unachtsamkeit und Fahrl ssigkeit Sie wissen zwar da z B laut Benutzerordnung keine Programme von Diskette gestartet werden d rfen tun dies aber trotzdem weil sie ein Programm schon kompiliert vorliegen haben und im ersten Moment der Start des Kompilats bequemer erscheint Benutzer der Gruppe 1 brauchen quasi nur eine Ged chtnisst tze die sie an die Regeln der Benutzerordnung erinnert 2 2 KONVENTIONELLE SICHERHEITSMASSNAHMEN 31 Gruppe 2 Es gibt auch Benutzer die wissentlich Rechner des Betriebs oder Rechenzentrums der Gefahr der Infektion aussetzen indem sie fremde Programme mit bringen und diese starten Grund daf r ist z B da Programme als notwendig erachtet werden die aber nicht auf dem System gespeic
112. hrt diese Normalisierung nach adre arithmetischen Operationen automatisch durch 3 1 GRUNDLAGEN ASSEMBLER 79 Abbildung 3 4 Fehlerhafte Adressierung bei Offsetiiber und unterlauf 3 1 4 Interrupts Eine besondere Art des Unterprogrammaufrufs stellen Unterbrechungen engl inter rupts dar Diese werden durch Signale oder bestimmte Zust nde der CPU Hardwarein terrupt sowie durch spezielle Maschinensprachebefehle Softwareinterrupt ausgel st F r unsere Belange ist die Betrachtung der Softwareinterrupts ausreichend die durch den Befehl int lt nummer gt aktiviert werden Funktion Die CPUs der 80 86 Serie bieten die Verwendung von 256 verschie denen Interrupts an Die Adresse des aufzurufenden Programms wird indirekt ber die Interruptnummer bestimmt Diese bezeichnet einen Eintrag in der Tabelle der In terruptvektoren die ab Adresse 0000 0000 im Speicher steht und ver ndert werden kann Jeder Tabelleneintrag ist ein FAR Zeiger auf eine Serviceroutine die den Inter rupt bedient Der Offset des Eintrags berechnet sich zu 4 lt Interruptnummer gt da die Speicherung einer FAR Adresse vier Bytes ben tigt Wie bei konventionellen Unterprogrammaufrufen auch mu die Stelle gespeichert werden an die nach der Unterbrechung zur ckgekehrt werden soll Dazu rettet der Prozessor zuerst das Flagregister PSW und dann analog zu einem call far den ak tuellen Programmz hler CS IP auf den Stack Anschlie end verzweigt die Programm a
113. if err fprintf stderr s n err_msglerr while xfindnext amp dta 0 return 0 chk_copy Untersucht wird ob der Kopiervorgang von source nach dest un ter Ber cksichtigung der Transportrechte t_rights zul ssig ist Sind Quelle und Ziel identisch f hrt dies sofort zu einem Abbruch 4 4 KOMMANDOS MIT KONTROLLFUNKTIONEN 177 einfuegen in Defines s Text define TR_DATA 0x0001 define TR_EXEC 0x0002 define TR_TYPECHG 0x0004 define TR_TYPEDIF 0x0008 define TR_PATHCHG 0x0010 define TR_NAMECHG 0x0020 int chk_copy char source char dest WORD rights char source_part 65 dest_part 65 Teil Quell Zielpfad char source_geno source_pheno Geno Phaenotyp Quelle char dest_pheno Phaenotyp Ziel Quelle und Ziel identisch if stricmp source dest 0 return 6 3 Die Funktion meldet einen Fehler zuriick falls ein oder mehrere der genannten Rechte verletzt werden rights wird zur Vereinfachung mit dem fiir die Operation relevanten Rechtewort aus t_rights geladen rights t_rights source 0 A dest 0 A split_fspec SM_PATH source source_part split_fspec SM_PATH dest dest_part check path change if stricmp source_part dest_part amp amp rights amp TR_PATHCHG return 7 split_fspec SM_NAME source source_part split_fspec SM_NAME dest dest_part check name cha
114. in Zukunft als Externisieren bezeichnen Im Folgenden ein kurzes Beispiel das die Externisierung von copy mit Hilfe von symdeb zeigt starten SYMDEB laden Shell nach Text COPY suchen Ergebnis der Suche sei lt adr gt Eintrag ueberschreiben Abspeichern Quit symdeb command com s 100 100 cx COPY eb lt adr gt copy W q Das solcherma en modifizierte command com erkennt den Befehl copy nicht mehr und versucht ein Programm gleichen Namens zu laden Hier kommt AVCopy ins Spiel das in copy umzubenennen ist Analog ist mit den internen Befehlen ren und rename f r AVRename zu verfahren Wer m chte kann weitere interne Befehle gegen externe Befehle mit Kontrollfunktionen austauschen Damit die Transportkontrolle nicht unterlaufen werden kann sind die externen Kommandos xcopy replace restore und ggf weitere Kopier und Umbenennungsprogramme aus dem System zu entfernen 4 5 Realisierung des residenten Teils 4 5 1 Das Interrupt C Interface Std INTC Die speicherresidente Installierung eines Programms ist nicht weiter schwierig Nach Aufruf der Funktion Terminate and Stay Resident wird das Programm beendet aber nicht aus dem Speicher entfernt In dieser Form haben wir lediglich ein Stiick RAM kunstvoll verschwendet Es fehlt der Anschlu an Interrupts die ISRs des Pro gramms aktivieren In diesem recht umfangreichen Abschnitt werden wir uns mit dem Interrupt C Interface besch ftigen Ziel is
115. in 1 4 angesprochen gef hrden Computerviren Programme Daten und Hardware Neben nicht me baren Sch den wie Vertrauensverlust entstehen konkrete Kosten durch den Verbrauch von Ressourcen wie Speicherplatz und Rechenzeit All dies l t den Wunsch nach Schutz vor und Bek mpfung von Softwareanomalien entstehen Prinzipiell besteht die M glichkeit diese als Schicksalsschl ge wie Diebstahl Sabotage Blitz oder Hochwasser hinzunehmen und konventionelle Ma nahmen zur Wiederherstellung der Daten zu ergreifen Dagegen gibt es allerdings einige gewichtige Einw nde Das R ckladen der zer st rten Daten von Sicherheitskopien Backups erfordert Personal und Zeit die f r planm ige Anwendungen nicht zu Verf gung steht Blieb das Virus lange unbemerkt k nnte auch das Backup infiziert sein Schlie lich wurden vielleicht nicht alle Daten ge sichert die Neubeschaffung w re unvermeidlich Zus tzlich stellen Softwareanomalien auch ein Sicherheitsrisiko dar da sie zum unbefugten Erlangen von Zugriff auf vertrau liche Daten benutzt werden k nnen So war es z B dem INTERNET Worm m glich sich durch Ausprobieren von Pa w rtern von System zu System verbreiten und eine 25 26 KAPITEL 2 THEORIE DER ABWEHR Liste erfolgreicher Einbr che an den Verursacher zur ckzuschicken Ebenso sind Soft wareanomalien denkbar die nach einem erfolgreichen Einbruch Hintert ren installieren und so ihrem Sch pfer beliebigen Zugriff auf das attackier
116. in den FCB iibertragen Riickgabeparameter AL 0016 keine Jokerzeichen 0116 Jokerzeichen FF j fehlerhafte Laufwerksangabe DS SI return Zeigt auf erstes Zeichen im Dateinamen nach Ende Analysevorgang Analyse wird durch Trennzeichen wie Leerzeichen Semikolon etc beendet Tabelle A 4 Parse Filename INT 2116 Funktion 2916 262 ANHANG A SOFTWARE Funktion Get Date void xgetdate struct T_DATE date Interrupt 2116 Funktion 2Ai Aufrufparameter AH 2A16 Seiteneffekte xdate aktuelles Systemdatum Riickgabeparameter CX date gt year Jahr DH date gt month Monat DL date gt day Tag AL Wochentag 0 Sonntag Tabelle A 5 Get Date INT 2116 Funktion 2Ai A 3 MSDOS_S LIB 263 Funktion Get Time void xgettime struct T_TIME time Interrupt 2116 Funktion 2C16 Aufrufparameter AH 2Ci6 Seiteneffekte time aktuelle Systemzeit R ckgabeparameter CH time gt hour Stunde CL time gt minute Minuten DH time gt second Sekunden DL time gt centi Zehntelsekunden Tabelle A 6 Get Time INT 2116 Funktion 2Ci Funktion Terminate and Stay Resident Interrupt 2116 Funktion 311g void xkeep unsigned char status unsigned size Aufrufparameter AH 3l s AL status R ckgabewert des Programms DX size Gr e des zu reservierenden Speichers in Paragraphs Seiteneffekte Das Programm wird beendet der Speicher jedoch ni
117. int check_seal char argv BYTE buf BUF_SIZE CRC Puffer FILE in Eingabedatei struct T_SEAL seal Programmsiegel long to_go Anzahl zu lesende Bytes size_t bytes Anzahl gelesene Bytes WORD sig aktuelles Siegel if in fopen argv 0 rb NULL printf CHECK_SEAL Couldn t open program file n return 1 lese und pruefe Programmsiegel fseek in long sizeof struct T_SEAL SEEK_END to_go ftell in if fread amp seal sizeof struct T_SEAL 1 in 1 fclose in printf CHECK_SEAL Couldn t read program seal n return 2 3 Die Identifikationsnummer id hat normalerweise den Wert 234216 Dadurch l t sich bestimmen ob ein Programm ein g ltiges Siegel tr gt oder nicht 158 KAPITEL 4 ENTWICKLUNG DER SYSTEMPROGRAMME if seal id 0x2342 fclose in printf CHECK_SEAL Seal not found n return 3 Zur Berechnung der aktuellen Pr fsumme kann nicht die Funktion sig_cre ver wendet werden welche die Pr fsumme ber die gesamte Programmdatei inklusive Siegel bilden w rde Die eigene Pr froutine l t die letzten Bytes die das Siegel enthalten weg Diese sind n mlich erst nach Berechnung des Programmsiegels durch AVConfig hinzugekommen und w rden das Ergebnis verf lschen R ckgabewert ist das Ergebnis des Tests auf Ungleichheit zwischen der Referenzpr fsumme seal sig und der zuvor berechneten aktuellen Pr fs
118. jeweils eine kombinierte Beschreibung ein Teil f r den Aufruf aus Assembler heraus und ein Teil f r die Realisierung als C Funktion Aus diesen Anga ben kann sich jeder der das 3 Kapitel durchgearbeitet hat den Assembler Quellcode f r die C Funktion herleiten Funktion voller Funktionsname ggf C Prototyp Aufrufparameter Parameter Bedeutung Seiteneffekte Parameter Inhalt nach Funktionsende oder Erl uterungen zur Funktion R ckgabewert Bedeutung Tabelle 4 4 Standardaufbau Funktionsbeschreibung Die meisten Funktionsbeschreibungen wurden in den Anhang A ausgelagert um die Besprechung der Programme bersichtlich zu halten Falls Sie also im Text auf eine Funktion sto en die nicht vor Ort besprochen wird finden sie die n tigen Informatio nen im Anhang A 3 MSDOS_S LIB oder A 4 AVSys LIB Die meisten Routinen der MS DOS Bibliothek sind daran zu erkennen da der Funktionsname mit einem x beginnt Die Beschreibung der Av Systembibliothek enth lt ein Register aus dem er sichtlich ist welche Funktion wo besprochen wird 4 2 2 Pr fprogramme Die Pr fprogramme sind konventioneller Bauart d h es handelt sich um keine speicher residenten Programme In die hier besprochene Kategorie fallen Scanner und Checker die manuell vom Benutzer zu starten sind Diese Programme sind au erdem MS DOS unspezifisch berwachen also keine Kommandos oder Funktionen des Betriebssys
119. k nnen nur auf Kernelebene abgefangen werden Ein Nachteil ist da der Interrupt 1316 wirklich nur physikalische Laufwerke un terscheidet Falls ein physikalisches Laufwerk in mehrere logische Laufwerke unterteilt ist k nnen Aufrufe f r verschiedene Partitions eines Laufwerks nicht ohne weiteres erkannt werden Beispiel Das Festplattenlaufwerk 0 sei in die logischen Laufwerke C D und E unterteilt Trotzdem ist die Laufwerksnummer f r jede beliebi ge Operation die eine dieser Partitions betrifft immer 8016 Die Umsetzung findet offensichtlich durch Ger tetreiber auf h herer Ebene statt Turbo C stellt die Funktionen int biosdisk int cmd int drive int head int track int sector int nsects void buffer und int absread int drive int nsects int lsect void buffer zur Verf gung die dem Zugriff auf BIOS und Kernelebene entsprechen Tab A 24 A 19 Aus den Parametern ist gut ersichtlich da auf Kernelebene die reale Organi sation des Datentr gers keine Rolle mehr spielt Zur Beachtung Bei einigen der durch cmd ausgew hlten Funktionen haben manche Parameter z T eine andere oder keine Bedeutung F r die Funktionen Lesen Schreiben und Verifizieren ist der angegebene Prototyp korrekt define BDM_RESET 0x00 Reset define BDM_STATUS 0x01 Status abfragen define BDM_READ 0x02 lesen define BDM_WRITE 0x03 schreiben define BDM_VERIFY 0x04 verifizieren define B
120. l t sich ein Trend zu verbesserter Zugriffskontrolle und Schutz der Datenintegrit t auch oder gerade auf PCs feststellen Betriebssysteme wie das DOS 6 0 f r PCs von Digital Research realisieren einen Pa wortschutz und die berwachung von kritischen Operationen Mit dem Aufkommen von speziellen Hardwarebausteinen zur Ver und Entschl sselung von Daten stellt umfassender Integrit tsschutz kein Hindernis mehr dar auch was den Aufwand an Rechenleistung betrifft 5 2 2 Sinnvolle Erweiterungen Das mit AV System realisierte Schutzkonzept l t sich relativ leicht auch auf andere DOS Kommandos Kernel Funktionen und Interrupts ausweiten Um weitere Befehle zu berwachen m ssen interne Kommandos externisiert und externe Kommandos er setzt werden F r zus tzliche Interrupt Kontrollen stehen Std_TSR und Std_INTC zur Verf gung An den konventionellen Programmen gibt es an sich nicht viel zu verbessern es sei denn der Komfort f r den Anwender soll mit einer ansprechenden Benutzeroberfl che und einem Hilfesystem erh ht werden Bei den residenten Programmen g be es noch eine Menge zu tun Als Erstes w re die vollst ndige Umsetzung in Assembler zu nennen um den Platzbedarf und den Verbrauch an Rechenzeit auf ein Minimum zu reduzieren Der Autor w rde allerdings nicht versuchen die Funktionen der Watcher noch stark auszuweiten Ein Virus oder trojanisches Pferd kann bereits beim ersten Aufruf das System mit einem Schlag verw sten we
121. m ssen in die sich der Watcher eingeklinkt hat Zwei Arten des Aufrufs sind m glich Entweder ber einen zuvor unbenutzten Interrupt oder ber unbelegte Funktionsnummern eines schon anderweitig verwendeten Std_TSR macht von der zwei ten Methode Gebrauch und f gt dem Dos Interrupt 21j6 neuen Funktionen hinzu die dem internen Service dienen Das vorgeschlagene Verfahren schl gt zwei Fliegen mit einer Klappe weil sich der Watcher sowieso zu berwachungszwecken in die Kernel Funktionen einschalten mu Auf diese Weise wird Platz gespart eine einzige ISR dient den zwei Aufgaben Kontrolle und Programmservice Die ber die C Funktion intercom aufrufbaren Servicefunktionen dienen ver schiedenen Zwecken In Registern k nnen Werte z B Zeiger auf Datenbereiche ber geben und damit Nachrichten ausgetauscht werden So kann main bei Start des Pro gramms die Anwesenheit einer installierten Kopie feststellen Bei der Deinstallation sind alle bernommenen Interruptvektoren durch restore auf ihre urspr nglichen Wer te zur ckzusetzen Danach kann der durch das Programm belegte Speicher freigegeben werden Die Servicefunktionen sind gegen unbefugte Aktivierung zu sch tzen Die Ab sicherung erfolgt durch ein im Quelltext festgelegtes Pa wort 4 Bytes das bei jedem Aufruf berpr ft wird Problemstellung intercom Die durch Std_INTC praktizierte Parameter ber gabe ber Register hat den Nachteil da kein echter Datenaustausch
122. m ssen also auch Sor ge daf r tragen da diese Dateien unver nderlich sind Dazu bietet sich die Deklaration als hidden und readonly an an der sich MS DOS beim Urladen nicht st rt Werkzeu ge zum Ver ndern von Dateiattributen sind von Festplatte zu verbannen Ein anderer Weg w re der aktive Schutz durch ein Watcher Programm der keine Manipulationen an Inhalt und Attributen zul t Fazit Jede Installationsmethode hat ihre Vorteile die bei TSR Programmen in der Einfachheit und bei Ger tetreibern im rel sicheren Start liegen Doch auch Ger te treiber sind nicht unfehlbar sp testens dann nicht wenn das Betriebssystem von Dis kette geladen wird Wenn dies geschieht kann der Rechner sofort mit einem Bootvirus verseucht werden Durch Urladen von Diskette l t sich jedes Schutzsystem auf Soft warebasis umgehen Weil der Sicherheitsvorteil der Ger tetreiber verglichen mit dem Mehr an Programmieraufwand nur gering ist werden wir TSR Programme als Plattform f r unsere Watcher verwenden Kapitel 4 Entwicklung der Systemprogramme Was w re wenn Programmiersprachen Autos w ren Assembler Ein Go Cart ohne Sicherheitsgurte und Uberrollbiigel Gewinnt jedes Rennen wenn es nicht vorher im Graben landet C Ein offener Gel ndewagen Kommt durch jeden Matsch und Schlamm der Fahrer sieht hinterher auch entsprechend aus Aus Happy Computer In den vorangegangenen drei Kapiteln ging es um Grundlagen der Softwarean omalien
123. msg object strcat msg strcat msg Allow y es no if message 0x4F msg amp OxFF y return OxFFFF 33 Im Fehlerfall ist der R ckgabewert gleich der zu simulierenden Fehlernummer Abbruch des Aufrufs bestimme zu simulierenden Fehler switch GET_E_MODE set n_set mode case 0x00 Carry 1 AX errno case 0x01 FCB1 AL case 0x02 FCB2 AL return set n_set errno Fs TS Logging AVWatchF leistet in der aktuellen Entwicklungsstufe eigentlich schon alles was f r den Schutz vor Manipulationsversuchen durch Softwareanomalien und 4 5 REALISIERUNG DES RESIDENTEN TEILS 227 Anwender notwendig ist Beim Einsatz von APCs in Rechenzentren oder Betrieben ist eine st ndige Sichtkontrolle aus Gr nden des Aufwands und anderen Gesichtspunk ten nicht m glich Abhilfe schafft die automatische Protokollierung von bestimmten Systemoperationen mit deren Hilfe eine nachtr gliche Kontrolle erfolgen kann Noch einmal zur ck zur Flugdatenschreiber Analogie Selbst bei einem Crash des Flugzeugs kann nachtr glich noch ermittelt wer den was zum Ungl ck f hrte Daf r mu sichergestellt sein da der Flugda tenschreiber so gepanzert ist da dieser den Aufprall und Feuer bersteht Eine Untersuchungskommission kann durch Auswertung der Daten die Absturzur sache feststellen Verantwortung zuwei sen sowie dazu bei
124. nden nicht implementiert und mu manuell durch den Anwender erfolgen F r den Betrieb in feindlicher Umgebung Rechenzentrum Betrieb etc sollte I_INTERACT gleich 0 sein damit kein Anwender modifizierte und evtl verseuchte Programme starten kann 4 5 7 AV WatchP artition Mit der berwachung von Sektorzugriffen steigen wir zwei Schichten in der Betriebs systemhierarchie auf die Ebene des BIOS hinab Zwar bietet das DOS Kernel neben den Datei und Verzeichnisfunktionen auch Funktionen zum Lesen und Schreiben von abso luten Sektoren ber die Interrupts 2516 und 2616 an Da aber alle Zugriffe auf Diskette und Festplatte letztendlich ber den BIOS Interrupt 1316 abgewickelt werden m ssen wir nur diese Funktion mit einer zweiten Kontroll ISR berwachen Problem Die Partitionierung Die Kernel Funktionen zum Lesen und Schrei ben von Sektoren ben tigen als Parameter die logische Laufwerksnummer den Start sektor die Anzahl der Sektoren und die Adresse des bergabepuffers Der Hinweis auf die logische Laufwerksnummer zeigt da das Kernel Partitions der Festplatte sehr wohl 4 5 REALISIERUNG DES RESIDENTEN TEILS 211 unterscheidet Der Disk Interrupt hingegen erwartet die Ubergabe einer physikalischen Laufwerksnummer also die Angabe eines konkreten Ger tes Beispiel Zugriff auf Partitions Die erste Festplatte sei in die Partitions C und D unterteilt Ein Programm greife ber den Interrupt 2516 Absolute Disk Rea
125. nnen bergeben wir einen Zeiger auf einen Zeiger Die Bezeichnung Zeiger auf Zeiger ist weniger kompliziert als sie sich vielleicht anh rt wie die Grafik 4 9 ver deutlicht ptr ist ein FAR Zeiger auf einen weiteren FAR Zeiger data der auf die zu bergebenden Daten zeigt Mit ptr bergeben wir der ISR die Adresse von data Falls Daten an das aufrufende Programm zur ckgegeben werden sollen kann die ISR ber ptr die Adresse der Daten in data eintragen Tab 4 14 Abbildung 4 9 Zeiger auf Zeiger auf Datenobjekt Funktionsbeschreibung intercom Wie der folgende Quellcode zeigt ist das Verfahren simpel Der FAR Zeiger ptr wird in DS DX bertragen Analog zu norma len Kernelfunktionen enth lt AH die Funktionsnummer C416 willk rlicher Wert und AL die Nummer der Subfunktion subfunc R ckgabewert ist der Funktionswert der Servicefunktion der sich bereits in AX befindet param STRUC old_bp DW ip DW subfunc DW ptr_seg DW ptr_off DW param ENDS PUBLIC _intercom 4 5 REALISIERUNG DES RESIDENTEN TEILS 197 Funktion Intercom intercom WORD intercom BYTE subfunc void far far ptr Aufrufparameter ptr FAR Zeiger auf FAR Zeiger auf Daten subfunc Subfunktionsnummer Seiteneffekte keine Riickgabewert Riickgabewert der Servicefunktion Tabelle 4 14 intercom Kommunikation mit residentem Programm _TEXT SEGMENT PUBLIC BYTE CODE ASSUME CS _TEXT _intercom PROC NEAR push bp Regist
126. of Lists Zeiger auf ersten MCB Zeiger auf ersten DPB Zeiger auf SFT Zeiger auf CLOCK Device Zeiger auf CON Device max Sektorgroesse 512 Adresse DOS Diskpuffer int Daten log Laufw Memory Control Block M o k Z letzter Block Segmentadresse PSP Groesse in Paragraphs reserviert Programmname undok Mit diesem Vorwissen ausgestattet k nnen wir uns an den eigentlichen Pro grammtext wagen Die Funktion getlol liefert einen FAR Zeiger auf die List of Lists Tab A 15 Mit dieser Angabe k nnen wir den FAR Zeiger mcb_ptr auf den ersten MCB setzen Der verketteten Liste wird nun so lange gefolgt bis festgestellt wird da der zuletzt bearbeitete Block der letzte mit Z markierte war Die Segmentadresse des jeweils n chsten MCBs ergibt sich aus der Segmentadresse des alten MCBs plus die Gr e des Speicherblocks in Paragraphs plus die L nge eines MCBs ein Paragraph Der Offset ist immer 000016 Die MCB Liste ist so lange zu durchlaufen bis der letzte Block bearbeitet wurde daher der Umweg ber last Noch eine Anmerkung zum Li 104 KAPITEL 3 SYSTEMPROGRAMMIERUNG UNTER MS DOS sting Die weiter unten besprochene Funktion get_mcb_name ermittelt den Namen des Besitzers eines MCBs void main void struct T_MCB far mcb_ptr Zeiger auf MCB char name 65 Name des Besitzers char last letzte MCB Kennung mcb_ptr getlol
127. pop ds pop ax ret _brkdis ENDP Der neue Break Handler ist recht einfach gehalten Es wird von unserer Seite nichts unternommen und dem Kernel signalisiert da die Break Anforderung zu ignorieren ist ctrl_stop iret brken Break Enable ist das Gegenstiick zu brkdis und restauriert den alten Vektor _brken PROC NEAR push ax push es mov ax 0000h Vektor restaurieren mov es ax mov ax cs ctrl_off 194 KAPITEL 4 ENTWICKLUNG DER SYSTEMPROGRAMME mov es 4 23h ax mov ax cs ctrl_seg mov es 4 23h 2 ax pop es pop ax ret _brken ENDP _TEXT ENDS END 4 5 2 Die TSR Plattform Std_TSR Problemstellung Basis aller Watcher des Programmpakets Av System bildet eine residente Programmplattform als Tr ger f r die Kontrollfunktionen Diese sollte als speicherresident installierbares TSR Programm konzipiert werden um den Program mieraufwand gering zu halten Aus dem gleichen Grund soll die Implementation so weitgehend wie m glich in der Sprache C erfolgen F r die Kontrolle von Interrupt aufrufen sind eigene Serviceroutinen notwendig deren Programmierung jedoch nicht von jedem C Compiler und in der von uns ben tigten Form unterst tzt wird Das Interrupt C Interface Std_INTC erm glicht uns trotzdem wesentliche Teile der ISRs in C zu realisieren Aufgabenbeschreibung Ziel der Entwicklung ist die TSR Plattform Std_TSR Standard TSR die sich f r die Realisierung beliebiger speicher
128. r das Einloggen zust ndige Programm login eine Fallt r eingebaut werden kann Die berlegung verl uft in drei Schritten 1 In login wird direkt die Fallt r eingebaut der Quelltext soll nicht ver ndert werden Nachteil Bei der n chsten Kompilierung liegt das Programm wieder in der Originalversion vor 2 Der C Compiler cc wird so ver ndert da er bei der Kompilierung von login den Trojaner einbaut Nachteil Auch der Compiler kann aus dem Original Quelltext kompiliert werden 3 Der Compiler wird so modifiziert da er bei der Kompilierung seines Quelltextes eine Kopie der drei Manipulationsfunktionen in den neuen Compiler aufnimmt Mit der letzten Ver nderung erf llt der Manipulationsteil des Compilers die De finition eines Virus Er ver ndert ein Programm das gerade erzeugte so da es eine Kopie seiner selbst enth lt Demnach lag bereits 1983 das Konzept f r ein raffiniertes Computervirus aus berufenem Munde vor Quelle 38 3 130 3 132 K nnen Computerviren zuf llig entstehen Anfang 1991 haben bulgarische Virenprogrammierer ein funktionsf higes Virus mit einer L nge von 42 zweiundvierzig Bytes entwickelt Soll das Virus durch Bitfehler entstehen ist die Wahrscheinlichkeit einer zuf lligen Erzeugung bei Gleichverteilung der Bytewerte sae 10 101 Ob das wenig ist oder nicht h ngt von der H ufigkeit der Erzeugung der 42 Bytes ab Jedes ca 10 te mal entsteht statistisch gesehen einmal das Viru
129. r entwickelte lag an einer Fehlein 1Die Sprache C in der fingerd geschrieben ist f ngt solche Fehler nicht automatisch ab 6 KAPITEL 1 THEORIE DER SOFTWAREANOMALIEN sch tzung des Programmierers Das Programm befiel um unn tiges Aufsehen durch Verbrauch an Rechenzeit zu vermeiden nur Rechner die noch nicht von der Infektion erreicht worden waren Da sich durch Vort uschung einer Verseuchung Immunisie rung die M glichkeit ergeben h tte den Wurm zu stoppen sah Morris vor da das Programm mit einer Wahrscheinlichkeit von p 0 1 auch bereits infizierte Rechner befallen sollte Angesichts der hochgradigen Vernetzung der Rechner erwies sich dieser Wert als viel zu gro gew hlt Die Rechner die Opfer einer vielfachen Infektion wur den brachen unter der zus tzlichen Rechenlast zusammen Zum Gl ck f r die Rech nerbetreiber machte Morris von seinen M glichkeiten s o Bugs keinen Gebrauch sondern beschr nkte sich darauf Pa w rter auszusp hen 2 Ein anderer bekannter Fall ist der des DECNET oder WANK Worms der Teile des NASA eigenen Computernetzes befiel 1 2 Trojaner 1 2 1 Definition Def Trojaner Ein Trojaner ist ein eigenst ndiges Programm das unter anderem Funktionen ausf hrt die nicht Bestandteil der vorgeblichen Programmfunktion sind Etymologie Der Name r hrt vom ber hmten Trojanischen Pferd her mit dessen Hilfe die Griechen einst Troja eroberten Nach zehnj hrige
130. sind Interne Kom mandos sind im Kommandointerpreter selbst implementiert und werden durch interne Funktionen Name behandelt Externe Kommandos sind alle Befehle die der Be fehlsinterpreter nicht selbst bearbeitet Wird vom Benutzer ein Befehl eingegeben der dem Kommandointerpreter unbekannt ist versucht dieser ein Programm mit diesem Namen zu starten Durch den Ladevorgang ist die Ausf hrung externer Befehle wie xcopy genauer xcopy exe gegen ber den internen Kommandos etwas verz gert Fallbeispiel type Ein kleines Fallbeispiel soll die Zusammenarbeit der vier Ebenen von MS DOS beglei tend zu den folgenden Abschnitten erl utern Die gestellte Aufgabe sei die Ausgabe einer Datei auf dem Bildschirm mit Hilfe des internen Kommandos type command com nimmt die Eingabe C gt TYPE README DOC 96 KAPITEL 3 SYSTEMPROGRAMMIERUNG UNTER MS DOS des Benutzers entgegen und fiihrt eine Analyse des Textes durch sog Parsing In unserem Beispiel wird der Befehl TYPE erkannt und die interne Funktion type mit dem Dateinamen readme doc als Argument aufgerufen Der Pseudocode k nnte wie folgt aussehen Funktion TYPE Dateiname Datei oeffnen Fehler Datei nicht vorhanden Ja Meldung ausgeben Nein Datei bis zum Ende lesen und auf Bildschirm ausgeben Datei schliessen Funktions Ende Und etwas konkreter in C int type char filename FILE in Eingabefile char c Zeichenpuffer if in fopen filenam
131. soll da alle Schutzma nahmen nichts nutzen wenn der Anwender War nungen nicht korrekt zu deuten wei Ende 1989 sicherte ein Studienkollege des Autors seinen Rechner mit einem Watcher Flushot einem Checker VTest und einem Scan ner ViruScan Alle drei Programme arbeiteten wie sich nachtr glich herausstellte einwandfrei Der Checker meldete keine Ver nderungen der Scanner fand nichts nur der Watcher monierte gelegentlich da ein gerade gestartetes Programm versuchte auf ein anderes Programm zuzugreifen Das h tte nat rlich jeden stutzig machen m ssen aber gerade der Watcher gab so oft falschen Alarm da auch diese Warnung ignoriert wurde 2 6 ANALOGIEN ZUR BIOLOGIE 55 Die rein zuf llige Untersuchung eines Programms mit debug zeigte das Ausma der Fehleinsch tzung Der Rechner war vollst ndig mit dem Hall chen Virus ver seucht so da in Ermangelung potentieller Opfer gar keine Verbreitung mehr m glich war der Checker schwieg Dazu kam da dieses spezielle Virus eine deutsche Erfin dung ist und von der damaligen Version von ViruScan noch nicht erfa t wurde auch der Scanner blieb deshalb ruhig Der Autor nahm daraufhin Kontakt mit Fridrik Sku lason auf dessen n chste Version seines Programmpakets F Prot das Virus entdecken und beseitigen konnte 2 6 Analogien zur Biologie Der Begriff Virus wurde der Biologie entlehnt weil die Analogie das Verhalten eines Computervirus in Funktion und A
132. stop amp INT_STOP printf directory s added n get_name ptr gt text hlp scan_subdir EXT_STOP ptr gt text sin_file ein_file sout_file amp eout_file write_subdir amp sout_file eout_file ptr gt text ptr ptr gt next stop ptr NULL INT_STOP continue F Verzeichnis geloescht if decide gt 0 stop amp INT_STOP amp amp stop amp EXT_STOP printf directory s deleted n get_name ext hlp scan_subdir INT_STOP ptr gt text sin_file ein_file sout_file amp eout_file stop read_subdir amp sin_file amp ein_file ext continue Verzeichnis existiert if decide 0 168 KAPITEL 4 ENTWICKLUNG DER SYSTEMPROGRAMME printf s n get_name ptr gt text hlp check_stamp ptr gt text ext 65 scan_subdir 0x00 ptr gt text sin_file ein_file sout_file keout_file write_subdir amp sout_file eout_file ptr gt text ptr ptr gt next stop ptr NULL INT_STOP stop read_subdir amp sin_file amp ein_file ext continue 3 Nach Verlassen des Schleifenk rpers wird an die Verzeichnisliste noch ein Leerein trag angeh ngt um die Daten verschiedener Laufwerke zu trennen schreibe Trenneintrag write_subdir amp sout_file eout_file delete_list amp sub_anchor return F3 Dateiebene scan_subdir ist der kompliziertere Part des Funktionsduos weil hi
133. strncmp stampi gt date stamp2 gt date 10 strcat changes date flag 0x01 gt gt dito Zeit 8 Bytes Attribute 16 Groesse 7 Signatur 32 lt lt if flag Veraenderungen get_name entry1 hlp printf 12s shas changed nwas is n entry1 changes printf s n s n entry2 13 entryi 13 return flag Erl uterungen get_name extrahiert aus einem Texteintrag den Namen der Datei oder des Verzeichnisses Dieser ist mit Leerzeichen aufgef llt und von anderen Angaben durch ein Leerzeichen getrennt get_name verwendet die Funktion strcpyu die einen String bis zu einem Trennzeichen in diesem Fall ein Leerzeichen kopiert Erweiterungsm glichkeiten ChkState ist eine Plattform f r alle Verfahren die auf Vergleichsdaten zur ckgreifen m ssen ber die beschriebenen Ma nahmen hin aus k nnen noch weitere Pr froutinen installiert werden Der Zustand einer Datei ist z B nicht nur durch die oben angef hrten Attribute bestimmt sondern durch weitere nicht so augenscheinliche Eigenschaften e Erster Cluster der Datei Start des Speicherplatzes welcher der Datei zugeordnet ist e Abfolge der Cluster Cluster Chain Lage der Datei auf dem Datentr ger e Position Startadresse des Dateieintrags im Verzeichnis e Inhalt der unbenutzten Bereiche im Dateieintrag Manipulationen auf Dateiebene ver ndern u U die angef hrten Eigenschaften Eine gel schte und sp ter wied
134. sucht nach seiner Aktivierung sofort nach anderen noch nicht befallenen Programmen infiziert diese und startet dann das Wirtsprogramm Das Virus wird aus Tarnungsgr nden nur kurz aktiv f hrt die ihm zugedachten Aufgaben aus und beendet sich indem es die Kontrolle vollst ndig ab gibt Bis zum n chsten Aufruf eines verseuchten Programms wird kein Viruscode mehr ausgef hrt s Abb 1 1 oberes Diagramm Diese Infektionsmethode hat den Vorteil da nur normale Betriebssystemfunktionen und Rechte erforderlich sind spezielle Ma nipulationen auf Systemebene sind nicht notwendig Solche Viren sind auf jedem System sehr einfach zu implementieren und kommen mit einem Minimum an Programmbefeh len aus wie ein nur 42 zweiundvierzig Bytes gro es Virus unter MS DOS bewiesen hat Indirect Action Das Virus oder ein Teil davon installiert sich nach seiner Ak tivierung resident im Speicher gibt die Kontrolle ebenfalls ab bleibt aber w hrend das Wirtsprogramm abl uft und dar ber hinaus pr sent und wird durch bestimmte Freignisse aktiviert Dies geschieht indem das Virus f r sich Speicher reserviert und Interruptvektoren auf Routinen des Virusprogramms umsetzt Dazu sind Eingriffe auf Betriebssystemebene notwendig zu der normale Anwender auf Rechnern mit Schutz einrichtungen keinen Zugang haben Auf PCs und Homecomputern dagegen sind solche Manipulationen der Regelfall weil deren Betriebssysteme ber keinerlei Schutzmecha nismen verf
135. uns beim Entwurf der Schutzprogramme auf Schritt und Tritt begleiten um nicht zu sagen verfolgen Segmentregister Die INTEL CPUs besitzen eine Reihe von 16 Bit breiten Regi stern die sich in vier Klassen einteilen lassen Segment Index Arbeits und Spezial register Tab 3 1 Vier Segmentregister legen die Basis von Segmenten mit bestimmten Aufgaben fest Das CS Register enth lt den Beginn des Codesegments in dem sich die Pro grammbefehle befinden Spr nge und Unterprogrammaufrufe beziehen sich stets auf das CS Register das nicht direkt ver ndert werden kann s a Abschnitt ber NEAR FAR Adressierung DS und ES Register bestimmen die Basis des Daten bzw Extra segments die beide Daten enthalten Normalerweise liegt den Schreib und Leseope rationen implizit immer eine Adressierung relativ zum DS Register zugrunde Spezielle Befehle die Daten von einem Segment in ein anderes transportieren verwenden das ES Register als Basis des Zielsegments SS ist der Name des Stacksegment Registers dessen Funktion wir sp ter noch ausf hrlich behandeln werden Indexregister Allein mit den Segmentregistern l t sich noch nicht viel an fangen denn zum Aufbau einer kompletten Adresse ist noch die Angabe des Offsets erforderlich Dieser wird entweder direkt durch eine Zahl oder durch den Inhalt ei nes der Indexregister bestimmt Die Angabe von Segment und Offset bezeichnet man als FAR Adressierung Bei dieser intersegmentalen Adressie
136. von IBM lie sich 1 5 HISTORIE UND DYNAMIK DER ENTWICKLUNG 17 die horizontale Ablenkfrequenz fiir den Schreibstrahl auf null setzen Die intensive Be strahlung nur einer einzigen Zeile besch digte auf Dauer die Leuchtschicht des Monitors Murray William Hugh in 38 3 157 1 5 Historie und Dynamik der Entwicklung 1 5 1 Die Experimente und Theorien von Fred Cohen Der erste der sich mit Computerviren wissenschaftlich auseinandersetzte war Fred Cohen Sein Aufsatz Computer Viruses Theory and Experiments 21 erschien 1984 1986 folgte eine Doktorarbeit ber das gleiche Thema Cohen definiert den Begriff Computervirus wie folgt A computer virus is a program that can infect other programs by modifying them to include a possibly evolved copy of itself In dieser vorausschauenden Definition sind auch mutierende Viren die sich nicht nur verbreiten sondern auch selbst modifizieren mit eingeschlossen obwohl dieser Typ erst Ende 1990 zum ersten Mal aufgetreten ist Das 2 Kapitel besch ftigt sich noch ausgiebig mit den von Cohen entwickelten Theorien zur Abwehr von Computerviren Doch nun zu den Experimenten die Cohen Mitte der 80er Jahre durchgef hrt hat 22 Datum Ereignis 03 11 83 Entwicklung eines Virus unter UNIX VAX 11 750 10 11 83 Experiment mit ber Bulletin Board eingeschleustem verseuchtem Programm Tests unter Tops 20 DEC VMS IBM vM 370 07 84 Test auf Bell LaPadula System
137. von read_file automatisch erh ht Die Funktion gibt einen von 0 verschiedenen Wert zur ck falls das Ende des Teilbereichs in der Dateiliste berschritten wurde sin_file gt ein_file write_file schreibt einen Dateieintrag an die durch eout_file bezeichnete Stel le der Dateiliste Ausgabe und erh ht den Z hler write_subdir schlie lich bertr gt sout_file und eout_file in den aktuellen Verzeichniseintrag und f gt diesen an die Verzeichnisliste Ausgabe an Zus tzlich erh lt sout_file den Wert von eout_file Abbildung 4 6 Dateiindizes und deren Verwendung bei ChkState Verzeichnisebene Nun kommen wir zu den Hauptfunktionen scan_structure liest zun chst die komplette Dateistruktur d h die Namen der Verzeichnisse in die mit sub_anchor referenzierte interne Liste ein Das Wurzelverzeichnis wird dabei separat behandelt weil es nicht als Verzeichnis an sich bei der Suche auftaucht void scan_structure char drive struct T_ENTRY ptr Zeiger in interne Liste struct T_SUBDIR subdir Verzeichniseintrag int decide Entscheidungsflag int sin_file ein_file Start Ende externe Liste char ext 200 externer Eintrag Text char hilp 65 Hilfsstring char stop Stop Flag lese Verzeichnisse ein 4 3 PRUFPROGRAMME 167 printf scanning directory structure n sub_anchor NULL Eintrag fuer Wurzelverzeichnis generieren in Liste eintragen sprintf subdir name c
138. vor dem Kopieren dienen Die Kommandos join und subst bewirken da der Herkunftsort einer Datei u U verschleiert wird s a C 2 Assign Join Subst Mit date und time lassen sich Systemdatum und zeit ver ndern und dadurch Logdaten unbrauchbar machen 4 1 ANFORDERUNGSANALYSE 133 Befehl Typ Funktion Informationstransport backup E Dateien sichern copy I Dateien kopieren und umbenennen diskcopy E Diskette kopieren format E Diskette formatieren replace E Erweiterte copy Version restore E Mit backup gesicherte Dateien wieder einlesen sys E Betriebssystemdateien kopieren xcopy E Verbesserte copy Version Ver nderung Dateiattribute attrib E Dateiattribute anzeigen ndern ren ame I Dateien umbenennen Beg nstigung append E Pfad f r Daten Dateien definieren date I Datum anzeigen ndern join E Laufwerk als Unterverzeichnis anh ngen subst E Verzeichnis als Laufwerk ansprechen time I Zeit anzeigen ndern Tabelle 4 1 Sicherheitsrelevante Kommandos unter MS DOS Wie bereits angesprochen unterscheidet die MS DOS Shell command com zwischen internen Befehlen und normalen Programmen zu denen auch die externen Kommandos z hlen Dieser Sachverhalt ist insofern bedeutsam als da sicherheitskritische externe Kommandos einfach durch L schen der Programmdatei entfernt werden k nnen Falls die Befehle f r den bestimmungsgem en Betrieb des Rechners notwendig s
139. 0 printer output on stdprn 0616 1 0 direct console I O from stdin to stdout 0716 1 0 unfiltered character input without echo from stdin 0816 1 0 character input without echo from stdin check CTRL break 0916 1 0 display string to stdout OAig 1 0 buffered keyboard input from stdin OBig 1 0 check input status of stdin OCig 1 0 flush input and then input stdin ODig 1 0 disk reset OEi 1 0 select disk OFig 1 0 open file FCB 1016 1 0 close file FCB 1116 1 0 find first file FCB 1216 1 0 find next file FCB 1316 1 0 delete file FCB 1416 1 0 sequential read open FCB 1516 1 0 sequential write open FCB 1616 1 0 create file FCB 1716 1 0 rename file special FCB 1816 reserved 1916 1 0 get current disk 1Aig 1 0 set DTA address 1Big 1 0 get default drive data 1Ci6 2 0 get drive data 1Di g reserved 1E16 reserved 1Fi get default DPB undoc Tabelle C 6 Funktionen DOS Funktions Interrupt Teil 1 Die zweite Spalte gibt die DOS Version an ab der die Funktion zur Verf gung steht Die Hinweise FCB und open FCB bzw ASCIIZ und handle geben an auf welche Weise ein Dateiname bergeben und eine ge ffnete Datei referenziert werden 5 asc String entsprechend C Konvention mit Null Zero Byte abgeschlossen C 1 KOMMANDOS INTERRUPTS FUNKTIONEN Nr ab
140. 0 0 OxFFFF einfuegen in INIT rette alten INT 0x13 Vektor installiere neue ISR old_int13 xgetvect 0x13 xsetvect 0x13 void interrupt far MAKE_FARPTR old_psp unsigned int13 einfuegen in RESTORE restauriere alten INT 0x13 Vektor xsetvect 0x13 old_int13 Klassifizierung der Zugriffe Jede Funktion des Disk Interrupts wird zun chst klassifiziert Belegung der Register s Tab A 24 Das Array req_list enth lt Informa tionen dar ber welche Funktion Nummer dient als Index welche Rechte erfordert In jedem Byte sind die Rechte bitweise verschl sselt wie Tabelle 4 16 zeigt Sind keine Rechte erforderlich Wert 0 oder untersteht die Funktion keiner Kontrolle nicht im 4 5 REALISIERUNG DES RESIDENTEN TEILS Array enthalten sorgt der R ckgabewert FFFF16 f r die normale Ausf hrung Bit erforderliches Recht 0 Zugriff au erhalb Partition z B Master Boot Record 1 Zugriff auf Partition Boot Record 2 formatieren 3 schreiben 4 lesen Tabelle 4 16 Bitmuster erforderliche Rechte unter AVWatchP 213 214 KAPITEL 4 ENTWICKLUNG DER SYSTEMPROGRAMME WORD isr_13 void far ret_adr WORD ax WORD bx WORD cx WORD dx WORD si WORD di WORD ds WORD es static char msg 81 Meldungspuffer WORD req_list erforderliche Rechte 0x0000 0x0000 0x0010 0x0008 0x0000 0x000C 0x000C Ox000C 0x0000 0x0000 0x0010 0x0008 WORD req ang
141. 0x00 lt lt 5 0x00 0x0001 0x0002 0x6C 0x00 lt lt 11 0x02 lt lt 5 0x00 0x0000 0x0005 4 5 REALISIERUNG DES RESIDENTEN TEILS 223 static char rights_text execute write read n static char object 65 Objekt Datei static char subject 65 Subjekt Programm static char msg 150 Meldungspuffer struct T_MCB far mcb_ptr fuer GET_OWNER_MCB WORD rights Rechte aus F_RIGHTS LST WORD req erforderliche Rechte int i j Indizes in String int n_set Pruefeintragsnummer BYTE func Funktionsnummer BYTE far text FAR Zeiger auf Objekt char decide Entscheidungsflag suche Pruefeintrag func ax gt gt 8 n_set 0 while n_set lt M_SET amp amp set n_set func func n_set Das Modus Wort in set ist in drei Bitfelder aufgespalten Bits Funktion Bedeutung 15 11 Objekt Modus 0 Handle Aufruf DS DX oder DS SI zeigt auf Ob jekt 10 5 Rechte Modus 0 in rights 1 Handle Open 2 ext Handle Open 4 0 Fehler Modus 0 Handle 1 FCB Typ 1 2 FCB Typ 2 Tabelle 4 20 Aufbau des Modus Wortes in set isr_21 Zur Extraktion der einzelnen Modi stehen drei Makros zur Verf gung aus dem Kopf von AVWatchF C define GET_E_MODE x x amp Ox1F Fehler Modus define GET_O_MODE x x gt gt 11 Objekt Modus define GET_R_MODE x x gt gt 5 amp Ox3F Recht
142. 3 5 3 Der Urladevorgang Beim Urladen werden eine Reihe von Daten und Programmen automatisch geladen interpretiert oder direkt ausgef hrt Wann immer dies der Fall ist besteht auch f r Softwareanomalien die M glichkeit aktiv zu werden Urladeviren sind ein besonderes Problem da sie vor jedem anderen Programm au er der Bootstrap Routine des ROM BIOS ausgef hrt werden Insbesonde re Stealth BsIs k nnen ihre Tarnma nahmen installieren bevor Antivirus Programme die Systemkontrolle bernehmen Es mu deshalb verhindert werden da das Betriebssystem von einem externen Datentr ger urgeladen werden kann Soviel schon vorab Ohne nderung der Urlade software ROM BIOS l t sich kein echter Schutz erzielen 4 1 4 Qualit t der Schutzma nahmen Schutz des Systems Perfekter Schutz ist nach Cohen nur bei perfekter Isolation m glich Das bedeutet da jegliche Programmerstellung wegen der Allgemeinheit der Interpretation sogar jegliche Dateneingabe verboten ist Computer im milit rischen Bereich kommen noch am ehesten an diese Forderung heran Andere Anwendungen erfordern aber den Austausch von Informationen mit der Au enwelt Die Forderung an die Undurchdringlichkeit der Abwehrma nahmen wird deshalb je nach Anwendungs gebiet unterschiedlich ausfallen Aus den genannten Gr nden werden wir unsere An spr che auf ein Erschweren der Verseuchung herunterschrauben m ssen Grund daf r sind nicht zuletzt wirtschaftliche Erw gung
143. 316 2 0 get or set file attributes ASCIIZ 4416 2 0 IOCTL 1 0 control 4516 2 0 duplicate handle 4616 2 0 redirect handle 4716 2 0 get current directory 4816 2 0 allocate memory block 4916 2 0 release memory block 4A 2 0 resize memory block 4Big 2 0 execute program alias EXEC ASCIIZ 4Cig 2 0 terminate process with return code 4Die 2 0 get return code 4Ei 2 0 find first file ASCTIZ 4Fig 2 0 find next file ASCIIZ 5016 set PSP undoc 5116 get PsP undoc 5216 get list of lists undoc 5316 translate BPB to DPB undoc 54 6 2 0 get verify flag 5516 create PSP undoc 5616 2 0 rename file ASCIIZ 5716 2 0 get or set file date and time handle 5816 3 0 get or set allocation strategy 5916 3 0 get extended error information 5Aig 3 0 create temporary file ASCTIZ handle 5Big 3 0 create new file Asc z handle 5Cig 3 0 lock or unlock file region share handle 5D16 rename file with wildcard and others undoc 5E g 3 1 get machine name get or set printer setup 5Fig 3 1 device redirection ASCIIZ Tabelle C 8 Funktionen DOs Funktions Interrupt Teil 3 C 1 KOMMANDOS INTERRUPTS FUNKTIONEN TE 7F Nr ab Beschreibung 6016 canonicalize path string undoc 6116 reserved 6216 3 0 get PSP address 6316 2 25 get DBCS lead byte table 6416 reserved 6516 3 3 get extended c
144. 416 pointer on video parameter table 1E 6 0007816 pointer on floppy disk parameters 1F 6 0007Cig pointer on font graphics characters Tabelle C 3 Interrupts Teil 1 315 Die zweite Spalte gibt die Adresse des Eintrags in der Tabelle der Interruptvek toren an der auf die zugeh rige ISR verweist Die Tabelle steht ab Adresse 0000 0000 im Speicher 316 ANHANG C INFORMATIONEN ZU MS DOS Nr Adresse Funktion MS DOS Interrupts 2016 2116 2216 2316 2416 2516 2616 2716 2816 2916 2A16 2B16 2C16 2D16 2E16 2F 16 3316 4016 416 4216 4316 4416 4516 4616 Ais 5016 6716 7016 7716 0008016 0008416 0008816 0008C16 0009016 0009416 0009816 0009C16 0004016 000A416 0004816 O00ACi 000B016 000B416 000B816 000BC16 000CC16 0010016 0010416 0010816 0010C16 0011016 0011416 0011816 TON ee nice R 001DC16 terminate process DOS functions terminate handler address CTRL C handler address critical error handler address absolute disk read absolute disk write terminate and stay resident internal keyboard busy loop undoc internal fast putchar undoc internal network redirector undoc internal IRET internal IRET internal IRET internal execute command multiplex interrupt print assign share append Microsoft mouse driver floppy disk driver relocated interrupt 1316 pointer on fixed disk parameters
145. 6 064016 Um aus der Segmentnummer die Basisadresse zu erhalten wird diese um 4 Bits oder eine Sedezimalstelle nach links geschoben was gleichbedeutend mit einer Multiplikation mit 16 ist Dazu noch ein Beispiel Die tiefgestellte Zahl stellt die verwendete Basis dar 3 1 GRUNDLAGEN ASSEMBLER 71 Segment 3F7E16 eine 0 anh ngen gt Basisadresse 3F7E016 Beispiel Berechnung lineare Adresse aus Segment Offset Innerhalb eines Segments erfolgt die Adressierung ber den Offset der zu der durch das Segment festgelegten Basisadresse hinzuaddiert wird Beispiel Segment 006416 Basisadresse 0064016 Offset 000F 16 gt lineare Adresse 0064016 000F 16 0064F 1 Besonders einfach wird der Vorgang wenn man die Zahlen untereinander schreibt 0064 Segment um eine Sedezimalstelle nach links verschoben 000F Offset 0064F lineare Adresse Die Beispiele zeigen wie eine aus Segment und Offset bestehende Adresse in eine lineare Adresse umgeformt wird Linear deshalb weil die n chste Adresse ein fach durch Erh hen oder Erniedrigen des Adre z hlers angesprochen werden kann Der Adre raum erscheint fortlaufend und in einem St ck ohne da zwei separate Register Segment und Offset gleichzeitig betrachtet werden m ssen Das Verst ndnis des eben Dargelegten ist wesentlich f r die folgenden Ausf hrungen und die Programmierung von IBM kompatiblen pcs Die Aufteilung von Adressen in Segment und Offset wird
146. 6 1990 S 503 507 Der Computer Kriminelle von Morgen m gliche Datenbank Katastophen Freiheit der Rede auf Computern Datensicherung per DFU Drahtlose WANs Abwehr in Theorie und Praxis BRUNNSTEIN Klaus Computer Viren Report WRS Verlag Miinchen 1989 Grundlagen Computerviren BURGER Ralph Das gro e Computer Viren Buch Data Becker Verlag 1988 Grundlagen Computerviren Viren zum aptippen COHEN Fred Models of Practical Defenses Against Computer Viruses engl in 29 S 343 354 urspr nglich in C amp S 8 89 S 149 160 Grundlagen philosophische Hintergriinde Modelle zur Virendetektion in sicheren und unsicheren Systemen durch Zeitmarken Verschliisselung Einschrankungen bei der Detektion 342 LITERATURVERZEICHNIS 29 HIGHLAND Dr Harold Joseph Computer Virus Handbook engl 30 31 32 33 34 35 36 37 Elsevier Science Publishers Ltd Oxford England 1990 Aufs tze von Fred Cohen Theorie zu Computerviren Management Gefahrenbe schr nkung HUTT Arthur E Information Security Is There More Than Hackers and Viruses engl C amp A Volume 89 1 S 25 26 29 not yet reviewed JONES Scott K amp WHITE Jr Clinton E The IPM Model of Computer Virus Management engl C amp S Vol 6 No 5 1990 S 411 418 Viren Theorie Vergleich mit biologischen Seuchen in der Landwirtschaft Flora Ana logie der Ma nahmen IPM Integrated Pest Management am Beispiel
147. 6 selten 80286 80386 Sx und Dx und 80486 aus ger steten ATs stellen die zweite Entwicklungsstufe dar Der 24 Bit breite Adre bus erm glicht den Zugriff auf 274 16 MB Speicher W hrend der 80186 nur eine erwei terte Version des 8086 ist kamen mit dem 80286 und den folgenden Modellen v llig neue F higkeiten hinzu wenn der Betrieb im Protected Mode erfolgt Dazu z hlen virtuelle Adressierung bis 1 GB gesch tzter Speicher Protected Memory und Multitasking Die Prozessoren sind zueinander abw rtskompatibel d h Programme die den Befehlssatz einer bestimmten CPU verwenden laufen auch auf sp teren Versionen des Prozessors Sie profitieren auf diese Weise zwar nicht von den neu hinzugekommenen Befehlen laufen aber wegen dem h heren Durchsatz der durch h here Taktfrequenzen und nderung der internen Struktur erreicht wird schneller ab Eine Neu bersetzung des Programms macht den Code durch Ausnutzung der neuen Befehle und der dadurch m glichen Optimierung meist kompakter und schneller Um abw rtskompatibel zu sein bieten die neueren Prozessoren neben dem Protected Mode den Real Mode an in dem sich die CPU wie ein schneller 8086 verh lt Ein Wermutstropfen MS DOS nutzt die F higkeiten die die neuen Prozessoren bieten nicht aus sondern l uft aus Kompatibilit tsgr nden im Real Mode ab Durch die seit den Gr ndertagen unver nderte Speicherverwaltung ist f r MS DOS oberhalb von 1 MB der Speicher zu Ende und nur ber Hi
148. B UNIX ist der Quellcode erh ltlich anhand dessen sich bestimmte Funktionen gezielt auf Schwachstellen untersuchen lassen z B der fingerd Bug e bestehende Schutzm glichkeiten werden oft nur unzureichend genutzt zu gro z gig vergebene Rechte zu lasche Voreinstellungen f r Wegla werte nicht ver nderte Pa w rter des Herstellers triviale Pa w rter etc e einige Hersteller streben die Bin rkompatibilit t ihrer Systeme an Damit k nn ten Programme einfach zwischen Systemen verschiedener Herkunft ausgetauscht werden die Ausbreitung von Viren wird beg nstigt e Juelltext Viren k nnen durch Hardware auferlegte Grenzen berwinden und sind nur noch vom Betriebssystem abh ngig Bereits 1983 zeigte Ken Thompson einer der Entwickler von UNIX wie der C Compiler des Systems geeignet manipuliert werden kann s 5 2 3 und der ganze Rest e vielleicht wurden in der Vergangenheit erfolgreiche Mainframe Viren nur Ver schwiegen Hersteller und Anwender meist gro e Firmen haben einen Ruf zu verlieren Fazit Sowohl Mainframes Micros als auch APCs bis zu den Homecomputern herunter sind f r Computerviren anf llig wenn auch in unterschiedlicher Weise Cohens in Experimenten best tigte Theorien besagen da sich ein Virus nur der normalen 44 KAPITEL 2 THEORIE DER ABWEHR Rechte der Benutzer eines Systems bedienen mu um sich erfolgreich zu verbrei ten Konventionelle Schutzsysteme greifen daher bei
149. Buch wurde darauf geachtet da m glichst keine Abh ngigkeit von einem bestimmten C Compiler besteht Der Autor hat die Programme mittels Borlands Turbo C 2 0 und dem Turbo Assembler erstellt Daf r war die Verwendung speziel ler Funktionen und Bezeichner erforderlich die in den Bibliotheken dieses Compilers enthalten sind und die nicht zum ANSI Standard f r C geh ren Grund daf r sind Er fordernisse der Hardware wie z B NEAR und FAR Adressierung sowie direkte Aufrufe von MS DOS Funktionen Insbesondere die Betriebssystemaufrufe sind von Compiler zu Compiler meist verschiedenartig implementiert Auf der Begleitdiskette sind deshalb Quelltexte zu C Funktionen enthalten die funktional insofern identisch mit den ver wendeten Turbo C Funktionen sind als dies f r die erstellten Programme erforderlich ist Bis auf den Funktionsnamen dem ein x vorangestellt wurde und einigen Be zeichnern f r MS DOS spezifische Datenstrukturen sind die Funktionsprototypen gleich denen in den Turbo C include Dateien Dazu kommen weitere Funktionen die auch Turbo C nicht zur Verf gung stellt sondern neu implementiert werden mu ten Programmierrichtlinien Bei der Erstellung der Quelltexte kamen einige Re geln zur Anwendung die die Lesbarkeit und Verst ndlichkeit des Codes erh hen sollen e Alle Programme und Funktionen weisen eine einheitliche Struktur auf Reihen folge der Deklarationen Format des Quelltextes und der Kommentar
150. C Programme beginnt Es hei t tats chlich _main und nicht main weil der Compiler jedem im Quelltext defi nierten Symbol einen Unterstrich voranstellt Zun chst wird Platz f r die vier lokalen int Werte a b c und d reserviert und die Variablen vorbelegt 86 KAPITEL 3 SYSTEMPROGRAMMIERUNG UNTER MS DOS F r den Aufruf der Funktion add_cbr werden die Adresse von c sowie die Werte von b und a in dieser Reihenfolge die umgekehrt zu der im Quelltext ist auf dem Stack abgelegt Der Befehl lea load effective address bewirkt da AX nicht der Inhalt sondern die Adresse des rechten Operanden zugewiesen wird Hier zeigen sich die ersten Unterschiede zwischen LARGE und SMALL Version im Code _main selbst ist als FAR Funktion deklariert und mu zus tzlich zum Offset der Adresse von c auch das Segment SS angeben Der Aufruf von _add_cbr erfolgt im Unterschied zum SMALL Modell mit einem FAR call Dies wiederum bedingt da ein Wort mehr als der Offset n mlich das aktuelle Codesegment als R cksprungadresse auf den Stack gebracht wird memory model SMALL gekuerzt _main proc near Retten BP SP Reservierung und Vorbelegung von A B und C lea ax word ptr BP 2 push ax near Adresse von C auf Stack push word ptr BP 4 push word ptr BP 6 Werte von B und A auf Stack call near ptr _add_cbr addieren add sp 6 Stack bereinigen mov word ptr BP 6 ax Ergebnis an A zuweisen Restaurieren SP BP return _main endp
151. DM_FORMAT 0x05 formatieren define BDM_PARAMS 0x08 Parameter abfragen Beispiel ReadPart Fangen wir mit einigen Hilfskonstruktion an Die Makros GET_TRACK und GET_SECTOR extrahieren Zylinder und Sektor aus der BIOS blichen Kombinationsangabe die ein Wort umfa t Die Sektornummer besteht aus 6 die Zylindernummer aus 10 Bits Um es kompliziert zu machen hat Microsoft die h chsten 2 Bits der Zylindernummer in den ungenutzten h chsten zwei Bits des Sektor Bytes untergebracht define GET_TRACK a a amp 0x00C0 lt lt 2 a gt gt 8 define GET_SECTOR a a amp 0x003F Das Hauptprogramm versucht beginnend mit dem ersten Festplattenlaufwerk die Partitionsdaten des Systems auszugeben Die Suche wird abgebrochen falls der MBR nicht eingelesen werden kann weil entweder das Laufwerk nicht existiert oder ein Fehler aufgetreten ist void main BYTE pdrive BYTE ldrive 0x80 0 solange der MBR gelesen werden kann while read_part_data amp ldrive pdrive 0 0 1 0 pdrive naechstes phys Laufwerk return 3 5 VERWALTUNG EXTERNER SPEICHER 115 Die eigentliche Arbeit leistet die Funktion read_part_data die aber auch nicht sehr aufwendig geraten ist Konnte der MBR erfolgreich in die Struktur T_BOOTSEC eingeladen werden gibt die Routine Informationen zu allen vier Eintr gen aus Eine Besonderheit stellt die erweiterte Partition dar die exakt wie ein physikalisches L
152. Da Systemprogrammierung ganz ohne praktische Beispiele aber etwas zu trocken ist mu te eine Auswahl getroffen werden Es wurden deshalb keine Funktionen abgedruckt die in eine der folgenden Kategorien fallen e Triviale Funktionen die aufgrund der Funktionsbeschreibung einfach nachzuemp finden sind Beispiel strepyu String bis zu einem bestimmten Zeichen kopieren e Routinen zum Aufruf von Betriebssystemfunktionen die nur den Inhalt von Va riablen in Register transportieren und umgekehrt z B alle in msdos_s 1ib ent haltenen Funktionen Mit Sicherheit dabei sind Funktionen die e einen wesentlichen Beitrag zur Realisierung eines Konzeptes leisten und die f r die Funktion eines Programms von zentraler Bedeutung sind e so komplex sind da eine Besprechung des Quelltextes erforderlich ist e stellvertretend f r andere Funktionen des gleichen Typs eine bestimmte Vorge hensweise verdeutlichen z B das Interrupt C Interface e Algorithmen verwenden die evtl nicht jedem zur Verf gung stehen Beispiel Berechnung von CRC Priifsummen Auf der Programmdiskette befinden sich natiirlich alle englisch kommentierten Quell texte sowie die fertig bersetzten Programme und Bibliotheken 140 KAPITEL 4 ENTWICKLUNG DER SYSTEMPROGRAMME Aufrufparameter Seiteneffekte und Riickgabewerte sind fiir jede Funktion in ei ner kurzen bersicht zusammengestellt Tab 4 4 F r den Aufruf von Betriebssystem funktionen existiert
153. Datei Das Polynom kann ber make_crc_table vorgegeben werden Der Startwert crc wird normalerweise mit 0 initialisiert ein ande rer Wert kann quasi als Pa wort dienen und erschwert dadurch z B Computerviren die korrekte Pr fsumme einer ver nderten Datei nachzubilden In der while Schleife wird von der M glichkeit Gebrauch gemacht die Berechnung der Pr fsumme ber einen gro en Block Datei in mehrere kleine Abschnitte zu zerlegen Das ist auch notwen dig weil die C Funktion read nicht mehr als 32767 Bytes mit einem Aufruf einlesen kann int sig_crc BYTE buf size_t buf_size char f_spec WORD crc size_t bytes Anzahl gelesene Bytes int handle Dateihandle if handle open f_spec O_BINARY O_RDONLY 1 return 1 while bytes read handle buf buf_size 0 crc block_crc buf bytes crc 3 close handle return 0 282 ANHANG A SOFTWARE Funktion Make CRC Table void make_crc_table WORD polynomial Aufrufparameter polynomial Generatorpolynom Seiteneffekte crc_table vorberechnete Daten fiir block_crc Riickgabewert keiner Tabelle A 29 make_crc_table Berechne CRC Tabelle Funktion Compute CRC Checksum Over File int sig_crc BYTE buf size_t buf_size char f_spec WORD crc Aufrufparameter buf Adresse Puffer buf_size Puffergr e in Bytes f_spec vollst ndiger Dateiname cre Adresse Startwert fiir P
154. Datei die analog zu einem Brief die zu tibermittelnde Information und Zusatzdaten wie Zieladresse und Bef rderungshinweise enth lt Es gibt zwei grunds tzliche Kommunikationsformen In teraktive Kommunikation und die Kommunikation ber Nachrichtendateien Bei der interaktiven Kommunikation steht der Anwender direkt mit dem Zielrech ner engl remote host in Kontakt Durch die Dialogverbindung ist das Ergebnis jeder Eingabe und der dadurch ausgel sten Aktion unmittelbar sichtbar jedenfalls so unmit telbar wie es die Belastung der Rechner und des Netzes zul t Falls Dateien bestellt werden sendet der Rechner meist nur eine Auftragsbest tigung zur ck Der Versand der Dateien erfolgt oft zeitversetzt um die Belastung des Rechners zu verteilen und billige Nachttarife zu nutzen Die Kommunikation ber Nachrichtendateien entspricht der Stapelverarbeitung von Informationen z B bat Dateien unter MS DOS Der Benutzer versendet eine Da tei die eine ganze Reihe von Anweisungen enthalten kann Der Zielrechner verarbeitet diese irgendwann und sendet die Ergebnisse als Datei zur ck Bei manchen Servern bil den sich lange Warteschlangen und es kann ein paar Tage dauern bevor der Auftrag auch nur bearbeitet wird Besonders bei fehlerhaften Auftr gen kann das sehr rger lich sein Komfortablere Server pr fen die Bestellung vorab und schicken zumindest eine Auftragsbest tigung evtl mit Hinweisen zum Verfahren und zur Serverbelastung zu
155. Dateien dienen die Funktionen int findfirst const char filename struct T_DTA dta int attrib und int findnext struct T_DTA dta Zum Einleiten der Suche ist findfirst aufzurufen danach lassen sich weitere Datei namen mit findnext ermitteln Tab A 14 filename darf die Jokerzeichen und enthalten die fiir eine Folge bzw ein beliebiges Zeichen stehen attrib legt fest welche Arten von Dateien in die Suche einbezogen werden sollen Die Typdefinition T_DTA definiert die Struktur des DTAs Disk Transfer Area ber das Daten ber die Datei und die aktuelle Suchposition ausgetauscht werden Datum und Zeit sind wie in T_FTIME kodiert Durch den Autor ermittelte undokumentierte Felder und Sachverhalte stehen in eckigen Klammern struct T_DTA Disk Transfer Area BYTE drive log Laufwerk A 1 BYTE res1 11 reserviert alles BYTE res2 1 reserviert WORD entry_nr Eintragsnr im Verz WORD cluster Verzeichnis cluster BYTE res3 4 reserviert BYTE attr Attribut Byte WORD time Zeit kodiert WORD date Datum kodiert DWORD size Groesse in Bytes char name 13 Name beendet durch 0 Fs Aktueller Pfad Bei Dateioperationen ohne Angabe von Laufwerk und oder Verzeichnis wird das aktuelle Laufwerk bzw das aktuelle Verzeichnis des Laufwerks herangezogen Das aktuelle Laufwerk wird ber die Funktion int getdisk
156. Dazu geh ren die Pro grammodule des Anwenders und zus tzliche Module und Bibliotheken wie avsys lib und msdos_s 1lib Beispielsweise enth lt die Projektdatei f r AVWatchI avwatchi prj folgende Angaben avwatchi obj avsys lib msdos_s lib Fiir die Kompilierung mit der Entwicklungsumgebung sind einige Compiler und Linker Optionen Menti Options Untermenii Compiler bzw Linker einzustellen e Compiler Code generation 253 254 ANHANG A SOFTWARE Alignment Byte bei Alignment Word wiirden die Strukturen in msdos h falsch behandelt Merge duplicate strings Off und Test stack overflow Off fiihrt sonst bei TSR Programmen zu Proble men Rest auf On e Optimization Optimize Size Rest auf Off andernfalls wird der Code sehr undurchsichtig e Source Identifier length 32 Standard Rest auf Off wir ben tigen z B dir non ANSI Bezeichner near und far e Errors alles auf On bei der TSR Programmierung ist jeder Hinweis hilfreich Linker Stack Warning On warnt bei TSR Programmen Speichermodell TINY da diese noch in com Dateien umzuwandeln sind Warn duplicate symbols On s a n chster Punkt Rest auf Off Case sensitive link mu Off sein weil tasm Symbole in Gro buchstaben produziert z B in den Bibliotheken tc aber normaler weise alle Symbole in Kleinbuchstaben erwartet F r die automatische Generierung der Bibliotheksdateien und Programme mit make sind im jeweil
157. Die aktuelle Cursorposition wird in old_x und old_y gerettet der Inhalt der Nachrichtenzeile Zeichen und Attribute in old gespeichert und mit Leer zeichen berschrieben Alle Ausgaben erfolgen generell mit dem Zeichenattribut attr struct T_CHAR einfuegen in Typedefs BYTE chr BYTE attr Fs BYTE message BYTE attr char text int x Zaehler int old_x old_y alte Cursorposition BYTE key gedrueckte Taste struct T_CHAR old 80 Zeichenpuffer Cursorposition und Zeileninhalt retten Zeile loeschen 284 ANHANG A SOFTWARE xwherexy amp old_x amp old_y for x 0 x lt 80 x xgotoxy 1 x 12 readchar amp old x attr amp old x chr writechar attr 3 Anschlie end wird die Nachricht text zentriert ausgegeben und auf einen Ta stendruck key des Benutzers gewartet der gleichzeitig R ckgabewert der Funktion ist Evtl bereits anstehende Zeichen im Tastaturpuffer werden berlesen Nachricht ausgeben auf Tastendruck warten x 40 strlen text gt gt 1 while text xgotoxy x 12 writechar attr text F while xbioskey 1 xbioskey 0 F while xbioskey 1 key xbioskey 0 In der Nachbearbeitung wird der Inhalt der Zeile restauriert und der Cursor auf seine alte Position zur ckgesetzt Zeile und Cursorposition restaurieren for x 0 x lt 80 x xgotoxy 1 x 12 writechar old x at
158. Effekt Zeichentreiber werden au er dem nul Treiber an der Spitze der Treiberliste eingef gt Das Kernel durchsucht beim Zugriff auf ein Ger t die Liste der Ger tetreiber von vorne nach hinten und stoppt beim ersten passenden Eintrag Dies bedeutet da sp ter geladenen Zeichentreiber ltere gleichen Namens ersetzen Ein Beispiel daf r ist ansi sys der den Treiber mit dem Namen con ersetzt 3 3 DER AUFBAU VON MS DOS 99 Anmerkungen Bei Dateioperationen mit Ger tedateien gilt es einige Dinge zu beachten die beim Umgang mit normalen Dateien keine Rolle spielen Im Gegensatz zu konventionellen Dateien unterscheidet das Kernel bei diesem Typ einen ASCII und einen Bin r oder Binary Modus an dessen Realisierung der Ger tetreiber nicht beteiligt ist Im Asc r Modus transportiert das Kernel immer nur ein Zeichen auf einmal zwischen dem Ger t und einem internen Puffer Die Eingabe stoppt falls ein Dateiendezeichen EOF 1Aj Control z erkannt wird Im Falle von CR 1316 Return gibt das Kernel den Inhalt seines internen Puffers weiter Im Bin r Modus wird exakt die bestellte Anzahl von Zeichen eingelesen oder ge schrieben Da die Daten im Eingabestrom nicht interpretiert werden bleiben Steuerzei chen wie Dateiende und CR wirkungslos Eingabe von Tastatur wird somit unm glich es sei denn es werden immer nur ein Zeichen auf einmal angefordert und entspre
159. Einflu auf die gesamte Leistung des Programms hat Andererseits sollte ein TSR Programm m glichst kurz gehalten sein und dazu tragen simple Algorithmen bei Im Einzelfall ist also abzuw gen ob Geschwindigkeit oder verf gbarer Hauptspeicher Optimierungsziel sind Das Gegenst ck zu get_ref put_ref ist erheblich simpler aufgebaut Das liegt daran da kein Eintrag mehr gesucht werden mu sondern die Nummer direkt mit f_nr bergeben wird file enth lt die in die Datei f_file zu schreibenden Daten int put_ref struct T_FILE file int f_nr char f_name int handle Handle Dateiliste if handle open f_name O_BINARY O_WRONLY 1 298 ANHANG A SOFTWARE Funktion Get File Reference Entry int get_ ref char f_spec struct T_FILE file int fmr char f_subdir char f_file Aufrufparameter f_spec vollst Name der gesuchten Datei file Adresse zu lesende Daten f_subdir Name der Referenzdatei Verzeichnisliste fur Zeiger auf Eintragsnummer f_name Name der Referenzdatei Dateiliste Seiteneffekte file gelesene Daten f_nr Eintragsnummer R ckgabewert 0 kein Fehler 1 Verzeichnisliste nicht gefunden 2 Dateiliste nicht gefunden 3 Verzeichnis nicht gefunden 4 Datei nicht gefunden 5 Lesefehler Tabelle A 50 get_ref Suche und lese Dateieintrag in Referenzdatei return 1 auf Eintrag positionieren Eintrag schreiben lseek handle f_nr sizeof struc
160. Error Handler INT 2416 1616 word Segmentadresse des PSPs des aufrufenden Pro gramms undok 1816 see JFT Job File Table der offenen Dateien mit Verwei sen in den SFT System File Table undok 20 JFT Eintr ge 2C16 word Segmentadresse Environment 2E16 FAR Adresse Systemstack undok 3216 word max Anzahl offener Dateien Gr e JFT 1416 20 3416 FAR Adresse Indextabelle der offenen Dateien relativ zu PSP normal 001816 undok 3816 vee reserviert 5016 code int 21h retf 5316 tee reserviert 5C16 FCB FCB 1 bei Start Parameter 1 als Dateiname 6C16 FCB FCB 2 bei Start Parameter 2 als Dateiname 8016 DTA DTA bei Start L nge Parameterzeile 8216 DTA Fortsetzung DTA bei Start Parameter Tabelle 3 10 Aufbau PsP Program Segment Prefix void main void char far ptr Zeiger in environment ptr MAKE_FARPTR WORD far MAKE_FARPTR xgetpsp 0x2C 0 while ptr bis zur doppelten 0 x while ptr gebe Variable aus putch ptr putch r putch n ptr F Die folgende 1 0 Sequenz wird auf Vorhandensein berpr ft und bersprungen um den folgenden Programmnamen auszugeben 3 4 VERWALTUNG INTERNER SPEICHER 107 if ptr 1 Programmname folgt ptr 2 1 0 ueberspringen while ptr gebe Programmname aus putch ptr 33 Funkt
161. F r Barbara Horst Norbert und Sabine vi Vorwort vii Vorwort Computerviren und andere Softwareanomalien wie trojanische Programme und elek tronische Wiirmer haben seit 1986 mehr Aufsehen erregt als irgendein anderes Thema aus der Welt der Datenverarbeitung Die Vorstellung da etwas mysteri ses gerade zu lebendiges Computer wie eine Krankheit befallt und Daten vernichtet wurde von den Medien dankbar aufgenommen und ausgebaut Darstellungen der Fahigkeiten von Computerviren und der Umfang der durch sie verursachten Sch den waren und sind oft ma los bertrieben Trotzdem stellen Softwareanomalien eine neue Art Gefahr dar die niemand der sich mit Datenverarbeitung befa t bersehen kann und darf Die Existenz einer Bedrohung der Daten und Rechnersicherheit l t eine Nach frage nach Ma nahmen zur Abwehr von Softwareanomalien entstehen In den Gold gr berjahren der Computerviren ab etwa 1988 kamen die ersten Abwehrprogramme auf den Markt Mittlerweile ist die Situation fast un berschaubar geworden Die An zahl der bekannten Viren hat die Tausendermarke berschritten und es gibt Dutzende Programme zu ihrer Abwehr Auch bei den Printmedien hat sich einiges getan Das gro e Publikumsinteresse auf breiter Front hat die unterschiedlichsten Ver ffentlichun gen hervorgebracht Nach ersten fr hen Artikeln in Computerzeitschriften kam ab etwa 1989 eine ganze Anzahl Brosch ren und B cher heraus Warum also noch ein Buch be
162. FATs 1116 word Anzahl der Eintr ge im Wurzelverzeich nis 1316 word Gesamtanzahl Sektoren 1516 byte Media Descriptor Byte 1616 word Sektoren pro FAT 1816 word Sektoren pro Spur 1Ai word Anzahl der Lesek pfe 1Cig dword Anzahl der versteckten Sektoren 2016 dword Gesamtanzahl der Sektoren ab hier DOS 4 0 2416 byte physikalische Laufwerksnummer 2516 byte reserviert 2616 byte erweiterte Boot Signatur 2916 2716 dword Datentr ger Kennung Nummer 2B16 text Datentr ger Kennung Text 3616 reserviert 3E16 code Bootprogramm Tabelle 3 13 Aufbau PBR Bootsektor Master Boot Record Festplatten verf gen im Unterschied zu Disketten ber eine bergeordnete Organisationsebene die ein physikalisches Laufwerk in mehrere logische Laufwerke die Partitions unterteilt Die Aufteilungsinformation ist im er sten physikalischen Sektor eines Festplattenlaufwerks dem Master Boot Record MBR Tab 3 14 enthalten und wird nur einmal beim Bootvorgang ausgewertet Der MBR kann nicht ber Kernel Aufrufe gelesen oder geschrieben werden weil er nicht Bestand teil einer Partition ist Jeder der Partitioneintr ge ist wie in Tabelle Tab 3 15 dargestellt aufgebaut Durch die Angabe des Start und Endsektors wird die Ausdehnung einer Partition vollst ndig definiert Der Typ gibt zus tzliche Informationen zur Datenorganisation an Ein besonderer Fall ist der der erweiterten Partition die exakt wie ein Festplatten laufwerk m
163. Gruppe verwenden weil dies immer zu Fehlern f hrt die interne Ursachen haben Zugriff auf Dateiattribute Dateiattribute sind Daten die nicht Inhalt der Datei sind diese aber beschreiben Dazu z hlen Eigenschaften wie Name L nge Er stellungsdatum und zeit sowie die Attribute im Sinne von MS DOS readonly etc Mit den Turbo C Funktionen int xgetftime int handle struct T_FTIME ftime und int xsetftime int handle struct T_FTIME ftime werden Dateidatum und zeit gelesen bzw gesetzt Tab A 17 Da die Funktionen die bergabe eines Dateihandles erwarten mu die Datei zuvor ge ffnet werden Die Struktur T_FTIME verwendet Bitfelder die zeigen wie die Datums und Zeitinformation kodiert ist Hinweis Die Sekundenangabe erfolgt in Einheiten zu zwei Sekunden So steht z B der Wert 16 f r 32 Sekunden Die Wertebereiche der Bitfelder lassen auch unzul ssige Eintragungen zu Auf diesen Umstand kommen wir noch einmal bei der Entwicklung des Programms ChkState zu sprechen 5 Alle existierenden Eintr ge im FCB berschreiben 118 KAPITEL 3 SYSTEMPROGRAMMIERUNG UNTER MS DOS struct T_FTIME unsigned second 5 Wort 1 Bits O 4 unsigned minute 6 Wort 1 Bits 5 10 unsigned hour 5 Wort 1 Bits 11 15 unsigned day 5 Wort 2 Bits O 4 unsigned month 4 Wort 2 Bits 5 8 unsigned year 7 Wort 2 Bits 9 15 3 5 VERWALTUNG EXTERNER SPEICHER 119 Dateisuche Zur Suche nach
164. Knoten bertragen werden Gemeinsamer Nenner aller Mail Programme ist die korrekte bermittlung von reinem ASCI Text Gesucht ist also ein Verfahren da den Wertebereich eines Bytes von 0 255 256 Werte auf ASCIr Zeichen abbildet die keine Steuerzeichen sind Man hat dazu die 64 Zeichen mit den Codes von 32 Leerzeichen bis 93 Apostroph ausgew hlt Eine solche Umsetzung leistet das weit verbreitete Programm uuencode Drei Bytes des Quellcodes mit jeweils 8 Bits werden in vier Bytes des Zielcodes mit jeweils 6 Bits transformiert Das dies funktioniert zeigt eine kleine Rechnung 3 8 Bits 4x6 Bits 24 Bits Das Ergebnis der Umwandlung tr gt normalerweise die Endung uue Durch diese Behandlung bl ht sich jede Datei um den Faktor 3 amp 1 33 auf Die Umcodierung in nur 64 Zeichen ist bei weitem nicht optimal Mittlerweile sind auch verbesserte Programm wie xxencode verfiigbar die aber auf Servern noch nicht in breiter Front eingesetzt werden Damit sich die Katze bei der Bestellung der uu code Programme nicht in den Schwanz bei t sind diese als Quelltext in Pascal und C erh ltlich der sich problemlos verschicken l t Wer noch keine Kodier und Packprogramme besitzt sollte sich in den Verzeichnissen lt MSDOS STARTER gt Codierpro gramme Hilfetexte und lt MSDOS ARC LBR gt Packprogramme auf den trickle Servern umschauen s a B 4 Um bertragungskosten einzusparen werden Dateien vor dem Versand zumeist komprim
165. Liste einsortiert anchor u U ver ndert Riickgabewert 0 kein Fehler 1 zu wenig freier Speicher Tabelle A 43 add2list Sortiere Text in Liste ein Funktion Delete List void delete_list struct T_ENTRY anchor Aufrufparameter anchor Adresse des Zeigers auf erstes Element Anker Seiteneffekte Der durch die Liste belegte Speicher wird freigegeben anchor auf NULL gesetzt Riickgabewert keiner Tabelle A 44 delete_list Gebe durch Liste belegten Speicher frei l sche Liste 3 return anchor NULL 3 A 4 5 Zugriff auf die Kommandozeile Die zwei Routinen der Argument Gruppe sind in der Datei chk4args c zusammen gefa t Sie dienen zur Bearbeitung der Kommandozeile die aus geordneten Textpara metern und Schaltern vorangestelltes oder in beliebiger Reihenfolge besteht Wie kommt man von C aus an die Kommandozeile heran Prinzipiell besteht wie bei ReadEnv die M glichkeit mit eigenen Routinen das Environment des Programms zu durchsuchen C genauer der Startcode macht es uns einfacher Bei der Deklaration von main als int main int argc char argv enth lt das Array argv argument values Zeiger auf die Parameter der Komman dozeile und argc argument count die Anzahl der Eintr ge argv 0 ist reserviert A 4 AVSYS LIB 293 Funktion Load Textfile In List int load_list char name struct T_ENTRY anchor Aufrufparameter n
166. M 86 durchsetzte Im Laufe der Jahre wurde MS DOS immer wieder verbessert und der Hardwareentwicklung angepa t 8 1987 brachte Microsoft 08 2 heraus das endlich der Lage ist die F higkeiten der INTEL Prozessoren ab dem 80286 zu nutzen Leider konnte sich 08 2 bis heute 1991 nicht gegen das veraltete MS DOS durchsetzen sondern wurde im Gegenteil durch Mi crosoft Windows eher noch behindert Grund daf r ist sicherlich die weltweite Ver breitung von MS DOS und der Unwille sich von einem riesigen Angebot an Software zu trennen bzw sich auf ein neues Betriebssystem einzulassen Microsoft zeigte 1991 durch die Freigabe der Version 5 0 da MS DOS wohl noch lange nicht zum alten Eisen geh rt Es sollte sich aber jeder fragen ob es sinnvoll ist mit dem 80386 oder h her best ckte Computer in einem Modus zu betreiben der diese sehr leistungsf higen 32 Bit Prozessoren zu einem schnellen 8086er degradiert Nach dieser kleinen Historie ist nun die Systemarchitektur von MS DOS Gegen stand unserer Betrachtungen Die folgenden Abschnitte erl utern den Aufbau und die Funktion von MS DOS soweit es f r unsere Zwecke relevant ist Der Abschnitt 4 1 An forderungsanalyse im n chsten Kapitel betrachtet MS DOS aus dem Blickwinkel der Computerviren und der Programme die sie abwehren sollen Zur Vertiefung seien 14 und 8 empfohlen 3 3 1 Kommandoebene Die Kommando oder Programmebene ist die Ebene die nach dem Einschalten des Computer
167. MB 70 KAPITEL 3 SYSTEMPROGRAMMIERUNG UNTER MS DOS Adre raums Das untere niederwertige Wort legt die Adresse oder den Offset inner halb eines Segments relativ zu dessen Anfang fest Mit diesem Verfahren erh lt man 16 Segmente mit jeweils 64 kB die an 64 kB Grenzen beginnen wie in Abb 3 1 oben zeigt Abbildung 3 1 M gliche und tats chliche Segmentierung des Adre raums Wie wir sp ter noch sehen werden verwenden die meisten Programme mehr als ein Segment um den von ihnen belegten Speicher in Code und Datenbereiche zu strukturieren Bei der momentanen Technik m te ein Programm mit zwei Segmen ten mind 64 kB umfassen weil Segmente nur an 64 kB Grenzen beginnen k nnen Deshalb entschied sich INTEL daf r alle 16 Bits des oberen Adre worts der Segment adresse Segmentnummer Segment zu nutzen Dadurch ergibt sich ein minimaler Segmentabstand von nur noch 55530 Sepa 16 Bytes d h ein Segment beginnt an einer durch 16 ohne Rest teilbaren Adresse Die Einheit von 16 Bytes bezeichnet man als Paragraph eine Adresse an der ein Segment beginnen kann als Paragraphengrenze Diese neue Situation ist in Abb 3 1 unten dargestellt Weil die Segmentgr e von 64 kB beibehalten wird k nnen sich Segmente berschneiden Beispiel Berechnung Basisadresse aus Segmentnummer Das Segment Nummer 100 beginnt an der Adresse 10019 1610 160019 oder einfacher noch in sedezimaler Schreibweise also zur Basis 16 006416 00101
168. Netzbetreiber und Universit ten haben Verhaltensma regeln erstellt deren Befolgung einen Mi brauch verh ten und unn tiger Belastung der Netze oder Rech nereinrichtungen vorbeugen soll FTP Sammlung in ethics auf unma unm edu Im GAO General Accounting Office Report der zuk nftige Verwaltungsformen f r das INTERNET vorschl gt sind drei Handlungen aufgef hrt die als unethisch und nicht akzeptabel betrachtet werden 1 Unautorisierter Zugriff auf Ressourcen des INTERNETS 2 St ren des bestimmungsgem en Betriebs des INTERNETS 3 Verschwenden von Ressourcen Zerst ren der Integrit t von gespeicherter Infor mation Verletzen der Vertraulichkeit von Daten Damit sind Zwischenf lle wie der INTERNET Worm aber auch die Aktivit ten von Hackern voll abgedeckt Die Vereinigung Computer Professionals for Social Responsi bility in Deutschland Forum Informatiker f r Frieden und gesellschaftliche Verant wortung kurz FIFF und andere Gruppen haben sich ausdr cklich f r 1 die Durchsetzung strenger ethischer Regeln 2 Ethik Vorlesungen f r Studenten der Informatik und die 3 Wahrnehmung individueller Verantwortlichkeit 1 Zugriff auf Rechnernetze s Anhang B 28 KAPITEL 2 THEORIE DER ABWEHR ausgesprochen Das Problem wird aber weiterhin sein da noch so oft proklamierte ethische Verhaltensweisen nur eine Richtlinie sein k nnen an die sich viele nicht halten werden Der Chaos Computer
169. OS spezifische Funktionen die nicht Bestandteil von ANSI C sind Manche Compiler wie Turbo C enthalten zwar bereits entsprechende Bibliotheksfunktion aber nicht jeder arbeitet mit diesem bersetzungsprogramm Des halb stellt msdos_s 1lib eine Reihe von Funktionen bereit die den Turbo C Routinen funktional nachempfunden sind den Funktionsnamen wurde lediglich ein x vorange stellt Parameter bergabe und Arbeitsweise sind identisch soweit es f r unsere Zwecke erforderlich ist Die Quelltexte f r msdos_s lib sind brigens ein gutes Beispiel f r den Aufruf von Betriebssystemroutinen von Hochsprachen aus Funktionsbeschreibun gen und prototypen f r Assembler und C Aufrufe finden sich im Anhang A 3 avsys lib ist eine Zusammenstellung recht unterschiedlicher Funktionen die nur zum Teil speziell f r das Av System entworfen worden sind Die meisten Routinen lassen sich auch f r andere oder hnliche Zwecke einsetzen ohne an bestimmte Programme gebunden zu sein Die Bibliothek setzt sich aus sechs Funktionsgruppen zusammen die im Anhang A 4 beschrieben sind Anmerkungen Wegen der gro en Anzahl von Bibliotheksfunktionen und Pro grammen ist es unm glich alle Quelltexte oder auch nur einen gr eren Teil davon abzudrucken Allein avsys lib enth lt 41 Objektdateien die 49 Funktionen exportie ren bei msdos_s 1lib sind es 26 Funktionen Die 15 Programme die diese Funktionen benutzen sind z T selbst recht umfangreich
170. Private Key AT Kurzform von gt IBM AT steht f r Advanced Technology fortgeschrittene Tech nik Authentifizieren Eine Person sicher identifizieren die Urheberschaft einer Nachricht sicher rechtsverbindlich f r z B Vertr ge feststellen AUTOEXEC BAT Batch Datei die von command com nach einem Neustart au tomatisch ausgef hrt wird Backslash engl Der R ckw rts Schr gstrich Batch Datei engl Datei die Befehle zur Batch Stapel Verarbeitung d h DOSs Befehle enth lt BIOS Das BIOS ist das allgemeine Ein Ausgabe System Basic Input Output System eines Pcs ber das die Kommunikation mit Disketten Controllern seriellen z B Maus und parallelen z B Drucker Schnittstellen abgewickelt wird Bootprogramm Kurzes Programm im Bootblock das nach einem Reset vom Bootstrap Loader geladen und ausgef hrt wird L dt das eigentliche Betriebs system 327 328 ANHANG E GLOSSAR Bootstrap Loader Das englische Aquivalent zu Sich an den eigenen Haaren aus dem Sumpf ziehen M nchhausen hei t Lifting yourself by your own boot straps Sich selbst an den eigenen Schn rsenkeln hochheben L dt das Bootprogramm Bootstrap ROM s ROM BIOS Bootblock Erster logischer Block einer Diskette Festplatte der ein kurzes Bootprogramm enth lt welches das eigentliche Betriebssystem l dt Boot ROM s ROM BIOS BDSG D
171. Programm nach den System programmen gestartet werden damit nicht ein anderes Programm Interrupt Vektoren auf sich umsetzen kann bevor das Wachterprogramm die Kontrolle erh lt Die zu ergreifenden Schutzma nahmen sind von der Realisierung der Kontrollpro gramme TSR Programm Ger tetreiber und der Ausstattung des Rechners abh ngig Steht ein schreibgesch tzter Server zur Verf gung ergeben sich keine Probleme Auf einem normalen Rechner im Stand Alone Betrieb sind Schwierigkeiten durch den Ur ladevorgang vorprogrammiert Selbst bei APCs die mit einem besonderen ROM BIOS ausgestattet sind stellen die Konfigurationsdateien config sys Ger tetreiber und autoexec bat TSR Programme eine Schwachstelle dar Diese m ssen unver nderbar sein Die Ausf hrung von Stapeldateien wie autoexec bat kann zudem vom Anwender abgebrochen werden command com m te deshalb so ver ndert werden da dies nicht mehr m glich ist 4 2 Systementwurf Die geplanten Schutzma nahmen m ssen wie oben gezeigt Operationen auf Programm und Interruptebene berwachen und ggf verhindern Die Teilung der potentiellen Ge fahren macht eine Teilung der Schutzma nahmen notwendig DOS Kommandos f r den Dateitransport werden durch eigene Programme mit Kontrollfunktionen ersetzt Da zu kommen Programme die auf Anfrage den Zustand des Systems und der externen Speicher berpr fen Der residente Teil ist im Hintergrund aktiv und schaltet sich in relevante Kerne
172. R Programme werden resident installiert indem das Betriebssystem die Ausf hrung beendet den belegten Speicher aber nicht freigibt ROM BIOS Dieser 64kB gro e nichtfl chtige Teil des Betriebssystems stellt wichtige Grundfunktionen sektorweises Lesen Schreiben etc auf Disketten und den Bootstrap Loader zu Verf gung RSA VonR Rivest A Shamir und L Adleman am MIT entwickelter rel langsamer Algorithmus zur asymmetrischen Verschl sselung Sicher durch die Schwierig keit sehr gro e Zahlen in ihre Primfaktoren zu zerlegen Basis des Verfahrens Setup engl Daten zur Systemkonfiguration beim Reset die bei ATS in ei nem nichtfl chtigen aber ver nderbaren CMOS RAM gespeichert sind Kann mit spez Programmen oder durch Dr cken einer bestimmten Tastenkombination beim Reset ver ndert werden symmetrische Verschl sselung Ver und Entschl sselung erfolgen mit dem glei chen Schl ssel der deswegen geheim bleiben mu TSR Programm Programm das resident im Speicher liegt Urlader s Boot validiert Von engl to validate f r zul ssig erkl ren f r eine bestimmten Zweck zugelassen Wildcards engl s Jokerzeichen Write Protect Tab engl Der Write Protect Tab Schreibschutzaufkleber verdeckt einen kleinen Ausschnitt am Rand der Diskettenh lle um so dem Controller mitzuteilen da das Beschreiben der Diskette verboten ist 332 ANHANG E GLOSSAR X
173. RT ldrive 0 so lange der MBR gelesen werden kann while chk_part_data amp ldrive BYTE drive 0 0 1 amp sig 0 drivet naechstes phys Laufwerk ret rn sig seal_disk Wirklich neu und etwas aufwendiger ist die Funktion seal_disk Das Gros der Routine macht Code zur Geschwindigkeitsoptimierung und Fehlerbehandlung aus Zun chst ist festzustellen wie viele Sektoren sec_togo insgesamt zu berpr fen sind Diese Zahl ergibt sich aus dem Produkt von Clustern pro Datentr ger cpd und Sek toren pro Cluster spc Die Funktion 1C16 des Kernels get_drive_data C Funktion drivedata liefert die n tigen Informationen Tab A 2 einfuegen in Defines 154 KAPITEL 4 ENTWICKLUNG DER SYSTEMPROGRAMME define BUF_SIZE 20480 Groesse CRC Puffer 4 3 PRUFPROGRAMME einfuegen in globale und externe Variablen BYTE buf BUF_SIZE WORD seal_disk int drive struct T_BOOTSEC pbr PBR WORD bufs Puffergroesse Sektoren WORD bps Bytes pro Sektor dummy WORD cpd Cluster pro Laufwerk BYTE spc Sektoren pro Cluster BYTE far media Zeiger auf Media Byte WORD sec aktueller Sektor WORD sec_togo noch zu bearb Sektoren WORD sec_toread zu lesende Sektoren WORD sig Signatur WORD step Sektoren pro Durchlauf WORD wait Wartezaehler initialisiere Variablen berechne Gesamtzahl Sektoren if drivedata
174. RUNG DES RESIDENTEN TEILS 217 Hinweis Falls auf Ihrem Rechner das Lesen der Partitionsdaten aus irgendwel chen Gr nden nicht korrekt funktioniert k nnen Sie die notwendigen Informationen mit dem externen Kommando fdisk bestimmen Die Werte sind dann manuell in den Quellcode einzutragen und zwar in die Initialisierung von i_table In diesem Fall l t sich Speicherplatz einsparen weil die Gr e der internen Tabelle den Verh ltnissen ge nau angepa t werden kann Die Funktion IM_I_TABLE der isr_21 ist dann berfl ssig und wird ersatzlos gestrichen 4 5 8 AVWatchF ile Die berwachung der Dateizugriffe ist der komplexeste Teil der Watcher Serie Dank umfangreicher Vorarbeiten in den vergangenen Kapiteln und Abschnitten ist der R ck griff auf Funktionen m glich die die Arbeit stark erleichtern und das Hauptprogramm bersichtlich halten Systemarchitektur Die Aufgaben von AVWatchF gliedern sich in vier Abschnit te e Bestimmung des Subjekts Benutzer bzw stellvertretend das aufrufende Pro gramm e Bestimmung der erforderlichen Rechte abh ngig von Operation e Bestimmung des Objekts zu bearbeitende Datei e Bewertung der Zul ssigkeit Das Rechtekonzept Wir werden uns zuerst der Konzeption der Rechte zuwen den weil dies einige berlegungen erfordert und einen gr eren Teil dieses Abschnitts in Anspruch nimmt Auch dieser Problemkreis l t sich in mehrere Unterpunkte gliedern e Art der Rechte Lesen Sch
175. S DOS durch Eintragen der korrekten Adressen aufgel st Durch die einheitliche Benennung der Code und Datensegmente mit _TEXT bzw _DATA werden alle Codeteile und alle Daten in jeweils einem Segment untergebracht Da CS Basis des Codesegments und DS Basis des Datensegments ist k nnen alle Symbole innerhalb eines Segments ber NEAR Adressierung erreicht werden genau das fordert das Speichermodell SMALL Beispiel Fehler beim Linkproze In den Speichermodellen MEDIUM LARGE und HUGE spielt der Name des Codesegments keine Rolle denn mehrere verschiedene Codesegmente sind zul ssig Mit FAR Spr ngen die der Compiler dann standardm ig verwendet wird das Codesegment gewechselt sowohl die Register CS als auch IP ver ndern sich Im Fall des SMALL oder COMPACT Modells generiert der C Compiler NEAR Aufrufe weil er wei da sich der Code in einem einzigen Segment mit dem Namen _TEXT befindet Wenn externe Module einen anderen Namen f r ihr Codesegment verwenden f hren Unterprogrammaufrufe zwischen verschiedenen Modulen beim Binden zu einem Fixup Overflow Fehler Der Linker nimmt aufgrund der verschiedenen Segmentnamen an da mehrere Codesegmente existieren zwischen denen er nur mit FAR Aufrufen wechseln kann Die tats chliche Gr e des Programms spielt dabei keine Rolle allein die Deklaration ist ausschlaggebend Andererseits verlangt der Code des C Moduls da die externen Routinen ber NEAR Spr nge
176. T Kurzform von gt IBM XT steht f r Extended Technology erweiterte Technik Besondere Zeichen amp z Der Adressoperator der Sprache O Beispiel Puffer bedeutet Adresse von Puffer x s Zahl in sedezimaler hexadezimaler Darstellung Beispiel AAi bedeutet 170 in dezimaler Schreibweise Abbildungsverzeichnis 1 1 1 2 1 3 4 1 4 2 4 3 4 4 4 5 4 6 4 7 4 8 4 9 4 10 4 11 A l Aktivierung und Residenz von Viren 00004 10 Infektions Typologie 2 2 2 nn 12 Von ViruScan erkannte Viren 2 2 2 0 0002002000004 19 Wie kommt das Virus ins System 2 2 Connor 29 Schutzzonen und Kontrollpunkte 000 60 M gliche und tats chliche Segmentierung des Adre raums 70 Verhalten des Stack bei call near far und int 74 NEAR und FAR Adressierung 2 2 ee ee 77 Fehlerhafte Adressierung bei Offsetiiber und unterlauf 79 Bearbeitung eines Software Interrupts 2 2 nun 80 Einklinken in Interrupts 2 2 2 on En 81 Parameter bergabe via Stack 2 2 2 ee 85 Der Aufbau von MS DOS n cecer rrt Enr aana R Baa 95 Speicherverwaltung unter MS DOS sooo e 102 Verwaister Environment Zeiger ooo ee 108 Ein Ausgabe ChkSys aoaaa a 146 Ein Ausgabe Seal u ope bad eae ehe b bebe ae 153 Abh ngigkeit Pr fzeit von gelesenen Sektoren pro Zugriff 155 Aufbau Textform Datei Verzeichniseintrag
177. TSEC buf bufs 0 while bufs pbr gt spt lt BUF_SIZE gt gt 9 amp amp pbr gt heads bufs pbr gt spt step enth lt die Anzahl der Sektoren pro Lesezugriff und wird mit der Puffer gr e bufs vorbelegt Solange noch Sektoren zur Bearbeitung anstehen wird versucht step oder die restliche Anzahl Sektoren zu lesen Im Erfolgsfall wird die Pr fsumme berechnet und die Anzahl der verbleibenden Sektoren sec_togo reduziert step bufs sec 0 wait 0 sig CRC_START bearbeite Diskette while sec_togo sec_toread min sec_togo step if xabsread drive sec_toread sec void amp buf 0 sig block_crc buf sec_toread lt lt 9 sig sec_togo sec_toread sec sec_toread else Fehler Bei einem Lesefehler mit dem praktisch auf jeder Festplatte zu rechnen ist wird versucht das Sektorenb ndel in einzelnen Sektoren zu lesen step 1 Ein Fehler der bei Schrittweite 1 auftritt ist nicht behebbar In diesem Fall wird eine kurze Meldung ausgegeben und der defekte Sektor bersprungen Nachdem das fehlerhafte Sektorbiindel in Einzelschritten gelesen wurde wait wird von step auf 0 heruntergez hlt erh lt step seinen alten Wert bufs zur ck if step 1 Start Fehlerbehandlung wait bufs nur 1 Sektor Zugriff step 1 else erneuter Fehler printf Read error at sector u n sec sect lasse Sektor aus sec_to
178. Tab A 25 define BKM_GETKEY 0x00 lese Zeichen define BKM_PEEPKEY 0x01 pruefe auf Zeichen define BKM_FLAGS 0x02 lese Sondertasten cmd bestimmt den Abfragemodus Modus 0 liest ein anstehendes Zeichen oder wartet auf ein neues Zeichen von der Tastatur Im Modus 1 wird nur angefragt ob ein Zeichen ansteht nein R ckgabewert 0 und wenn ja welches Der Aufruf im Modus 2 schlie lich liefert ein Bitmuster das den Zustand der Sondertasten repr sentiert Ein gesetztes Bit steht f r eine gedr ckte Taste die Reihenfolge von Bit 0 bis Bit 7 ist Shift rechts Shift links Control Alternate Scroll Lock Numkey Lock Capitals Lock Insert Unsere Programme benutzen nur die Modi 0 und 1 um auf einen Tastendruck des Benutzers zu warten Sinn der Aktion ist es die Verwendung der Funktion getch zu vermeiden die eine ganze Kette speicherfressender Module nach sich zieht Vor allen Dingen bei residenten Programmen spielt der Platzverbrauch durchaus eine Rolle 3 7 Speicherresidente Programme Mit Blick auf die angestrebten Kontrollma nahmen wenden wir uns nun den spei cherresidenten Programmen zu Diese Programmklasse hat die Eigenschaft auch nach ihrer Beendigung st ndig im Arbeitsspeicher zu verbleiben und auf bestimmte Freig nisse zu reagieren Dies sind entweder Interruptaufrufe von Anwenderprogrammen oder Dienstanforderungen an das Betriebssystems Residente Programme sind in der Lage im Hintergrund unsichtbar f r de
179. Werte erhalten 9 Geschieht das nicht werden weiterhin die ISRs im mittlerweile f r andere Programme verf gbaren Speicher benutzt Das n chste Programm das geladen wird k nnte den Bereich des ehemaligen TSR Programms und damit auch die ISRs mit fatalen Folgen berschreiben Die Aufforderung zur Deinstal lierung wird von intercom an eine neue Funktion der Serviceroutine bermittelt einfuegen in Defines define PRG_NAME STD_TSR in Service Funktion Abteilung Subfunktionen einfuegen 204 KAPITEL 4 ENTWICKLUNG DER SYSTEMPROGRAMME case IM_DEINST deinstallieren restore message 0x5F PRG_NAME deinstalled if xfreemem old_psp message OxDF Couldn t free memory return PRG_ID IM_DEINST restore macht alle durch init durchgef hrten Operationen r ckg ngig Das be deutet insbesondere da alle Interruptvektoren ihre urspr nglichen Werte erhalten int restore void Hier eigene Restaurierungsfunktionen einfuegen alten INT 0x21 Vektor wiederherstellen xsetvect 0x21 old_int21 return 0 Fo 4 5 3 TSR Programme und Datenzugriff Residente Programme k nnen auf vier Arten an Informationen wie Referenzdaten Da teirechte Partitionsrechte und globale Rechte gelangen Die folgende Aufstellung ist nach Grad der Auslagerung der Daten und der Lademechanismen von so intern wie m glich bis so extern wie m glich gegliedert 1 Integration der Date
180. Wie leider das AIDS ausl sende Retrovirus HTLV beweist sind auch biologi sche Immunsysteme nicht unfehlbar wenn die Abwehr selbst zum Opfer wird Analog dazu sind viele der moderneren Computerviren in der Lage Schutzprogramme zu umge hen wenn sie erst einmal aktiviert worden sind Schlimmer noch Da Scanner auf jedes Programm zu Pr fzwecken zugreifen bekommt ein aktives Infect on Open Virus jede infizierbare Datei quasi auf dem Pr sentierteller angeboten Isolation Ein andere Abwehrma nahme ist das Anlegen eines Schutzanzuges der vor jeglicher Einwirkung von au en sch tzt und z B Menschen ohne intaktes Im munsystem das berleben erm glicht Aufwendige Filter sorgen daf r da die Atem luft keine gef hrlichen Krankheitserreger oder Allergene enth lt F r Rechner hei t das Verseuchte Programme werden gar nicht erst in das System gelassen sondern abgewie sen bevor Schaden m glich ist Gerade f r MS DOS Rechner die ber kein Immunsy stem Zugriffskontrolle verf gen scheint dieses Schutzkonzept ein vielversprechender Weg zu sein Generell gilt da es immer einfacher ist prophylaktisch t tig zu werden als erst Ma nahmen zu ergreifen wenn schon etwas passiert ist Benutzer privater Computer werden eigenverantwortlich darauf achten da sie keine infizierten Programme einschleppen Wie sieht die Sachlage bei Rechenzentren und betrieblich genutzten Rechnern aus Wenn man davon ausgehen k nnte da aus sc
181. Ziel verwenden aber da scan stets gr er oder gleich to ist kommt es innerhalb von new zu keinem Konflikt to scan do naechstes Verzeichnis in SUBDIR und NEW kopieren sub subdir while scan amp amp scan bis Ende Teilpfad sub scan to scan scant new 3 to scan Anfang Verz to sub 0 8 Anmerkung zum Code Wenn name leer ist ist wg der Arbeitsweise von split_fspec auch subdir leer d h die berpr fung ob evtl subdir Zeichen enth lt kann dann entfallen 4 4 KOMMANDOS MIT KONTROLLFUNKTIONEN 183 Ist der erste Buchstabe von subdir ein Punkt mu das gerade angeh ngte relative Verzeichnis wieder entfernt werden Ist der zweite Buchstabe ebenfalls ein Punkt und in new noch ein Verzeichnis enthalten geht es ein weiteres Verzeichnis zuriick relative Verzeichnisangaben entfernen if subdir 0 while to letztes Verz entfernen if to 1 noch ein Verzeichnis da if subdir 1 zurueck zu Vaterverz while to letztes Verz entfernen Fs Falls scan nicht auf das Ende d h das abschlie ende 0 Byte von new zeigt folgt noch ein Verzeichnis oder Dateiname der mit einem Backslash vom restlichen String zu trennen ist Der Vorgang wird wiederholt bis alle Zeichen bearbeitet sind if scan Backslash anhaengen tot
182. Zugriffen Au erdem kann der Bootsek tor auch Code enthalten der beim Urladen automatisch gelesen und ausgef hrt wird s 3 5 3 Der Urladevorgang Logische Laufwerke Festplatten k nnen softwarem ig in mehrere logische Laufwerke aufgeteilt sein Diese Partitions sind genau wie Disketten organisiert Im Fall von Diskettenlaufwerken sind physikalisches und logisches Laufwerk quasi iden tisch denn Disketten k nnen nicht partitioniert werden Jedes logische Laufwerk hat beginnend mit Sektor 0 folgenden Aufbau e Partition Boot Record e Tabelle der Sektorzuordnung zu Dateien FAT File Allocation Table e evtl Kopien des FAT e Wurzelverzeichnis e Datenbereich mit Unterverzeichnissen Welche Datei welche Sektoren belegt ist im FAT festgehalten Damit die Anzahl der Eintr ge in der Zuordnungstabelle nicht zu gro wird faBt MS DOS mehrere Sek toren zumeist zwei oder vier zu einem Cluster engl Gruppe zusammen Dies ist die kleinste Zuordnungseinheit die vergeben werden kann Im Verzeichniseintrag einer Datei steht die Nummer des ersten Clusters Zeiger im FAT verweisen auf den jeweils n chsten Cluster oder signalisieren das Ende der Datei 112 KAPITEL 3 SYSTEMPROGRAMMIERUNG UNTER MS DOS Offset Typ Bedeutung 0016 code Sprung zum Bootprogramm 0316 text OEM Name und Versionsnummer OB16 word Bytes pro Sektor ODi word Sektoren pro Cluster OE16 word _reservierte Sektoren ab Sektor 0 1016 byte Anzahl der
183. Zur Realisierung der Dateizugriffe setzt das Kernel die logische Dateistruktur in eine logische Sektorstruktur um die vom Sektor null bis zur h chsten verf gbaren 3 3 DER AUFBAU VON MS DOS 97 Sektornummer des Datentr gers reicht Zum Bearbeiten der Datei oder von Datei verwaltungsdaten erteilt das Kernel dem Ger tetreiber eine Folge von Auftr gen ab einem bestimmten Startsektor eine Anzahl von Bl cken in einen Puffer zu lesen oder aus dem Puffer auf das Speichermedium zu schreiben Fallbeispiel type Verfolgen wir die Umsetzung der C Funktion fgetc durch den Compiler in Aufrufe des Betriebssystems Uber den Dos Funktions Interrupt 2116 werden alle Funktionen zur Dateibearbeitung aufgerufen fgetc benutzt die Funktion 3F ig Read File or De vice die ein Zeichen aus einer ge ffneten Datei liest In diesem Fall kommt das Kernel dem Compiler sehr entgegen Von der internen Dateiverwaltung der C Bibliothek einmal abgesehen entspricht der C Funktionsaufruf direkt einem Interrupt Aufruf Intern l uft sehr viel mehr ab denn wir wollen sequentiell lesen obwohl Disketten zu den blockorientierten Speichern geh ren und der Datentransfer stets in Paketen zu 512 Bytes erfolgt Das Kernel nimmt deshalb eine Umsetzung vor und sorgt daf r da wenn der gerade bearbeitete Block zu Ende ist der n chste Block der Datei vom Ger tetreiber eingeladen wird Die Blockfolge und die Lage der Bl cke werden aus dem FAT s a
184. _ENTRY fr_entry Dateirechteeintrag char rights_str 17 printf Compiling s gt s n source dest if in fopen source r NULL fprintf stderr Couldn t open file rights file n return 1 if out fopen dest wb NULL fclose in fprintf stderr Couldn t open destination file n return 2 while fscanf in 64s 16s 64s fr_entry subject rights_str fr_entry object 3 konvertiere Rechte String in Rechte Wort fr_entry rights tokenise rights_str sfi trwx if fwrite amp fr_entry sizeof struct T_FR_ENTRY 1 out 1 fprintf stderr Write error n return 3 4 5 REALISIERUNG DES RESIDENTEN TEILS 233 Js fclose in fclose out return 0 im_i_table dient zum Beladen von AVWatchP mit den Partitionsdaten und rechten Die Funktion beginnt mit einem Trick der ausnutzt da Disketten wie Fest plattenpartitionen aufgebaut sind Es gen gt die Startspur auf 0 und den Endspur auf eine Zahl zu setzen die gr er oder gleich der letzten Spur der Diskette ist FFFF16 erf llt diesen Zweck ganz sicher Die Kontroll ISR f r den Interrupt 1316 mu diesen Kunstgriff nat rlich ber cksichtigen Durch die Gleichbehandlung l t sich der Pro grammieraufwand stark verringern int im_i_table char source FILE in Liste Partitionsrechte char drive 3 Laufwerk char rights_str 17
185. _crc make_crc_table sig_crc basiert auf der Funktion block_crc die eine Pr fsumme ber den Inhalt des Puffers buf bildet Mit crc kann ein Anfangswert angegeben werden um z B mehrere Einzelberechnungen miteinander zu verkn pfen oder eine Art Pa wort einflie en zu lassen WORD block_crc BYTE buf size_t n WORD crc while n cre cre gt gt 8 cre_table cre amp OxFF buf i 3 return crc Vor dem ersten Aufruf von block_crc oder sig_crc und zum Wechsel des Ge neratorpolynoms ist die Funktion make_crc_table aufzurufen die die globale Tabelle crc_table initialisiert Durch die Vorberechnung kann block_crc die Pr fsumme an statt bitweise gleich byteweise berechnen was die Verarbeitung stark beschleunigt WORD crc_table 256 im CRC OBJ global def void make_crc_table WORD polynomial int value bit WORD result for value 0 value lt 255 value result value for bit 0 bit lt 8 bit result result gt gt 1 result amp 0x01 polynomial 0 crc_table value result 280 ANHANG A SOFTWARE Abschnitt Funktion Seite Allgemein einsetzbare Funktionen block_crc 281 get_genotype 179 get_mcb_name 109 get_owner_mcb 110 get_phenotype 178 4 4 1 AVCopy 3 4 1 Organisation des Arbeitsspeichers 3 4 1 Organisation des Arbeitsspeichers 4 4 1 AVCopy is_device 283 make
186. _crc_table 282 message 284 scan_dir 148 4 3 1 Check System sig_crc 282 tokenise 285 Bearbeitung von Dateinamen add_path 286 cmp_fname 287 cmp_fspec 221 4 5 8 AV WatchF comp_fspec 287 fill_in 288 norm_path 185 4 4 2 AV Rename norm_path2 183 4 4 2 AV Rename split_fspec 289 Stringverarbeitung clean 290 strcpyu 290 stricmpu 290 stristr 291 Listenverwaltung add2list 292 delete_list 292 load_list 293 select_p 293 Zugriff auf die Kommandozeile arg_p 294 get_arg 295 Spezielle Funktionen f r Av System add2log 229 4 5 8 AVWatchF check_seal 158 4 3 2 Seal und Check Seal get_ref 298 get_rights 300 intercom 197 4 5 2 Std_TSR put_ref 298 read_t_rights 296 Tabelle A 26 Funktions bersicht AVSys LIB A 4 AVSYS LIB 281 Polynom Code Bezeichnung X16 X15 X 1 1010 0000 0000 0001 A00O1 6 CRC 16 X64 X1 X5 1 1000 0100 0000 1000 840415 CCITT Tabelle A 27 bliche Generatorpolynome buf n cre Funktion Compute CRC Checksum Over Block WORD block_crc BYTE buf size_t n WORD crc Aufrufparameter Seiteneffekte keine Riickgabewert Priifsumme tiber Puffer Adresse Puffer Anzahl Bytes Startwert 3 si Tabelle A 28 block_crc Berechne CRC Pr fsumme ber Puffer g crc schlie lich ist eine Anwendung von block_crc zur Berechnung der Pr fsumme ber eine namentlich spezifizierte
187. a Viren begannen sich unangenehm bemerkbar zu machen Die FU Berlin mu te sich gegen Viren r sten die von Studenten eingeschleppt wurden 20 Panikmeldungen geisterten durch die Presse Aktivierungsdaten von Com puterviren wurden wie der j ngste Tag der Computer gehandelt 53 Abbildung 1 3 Von ViruScan erkannte Viren Bis Mitte 1989 war es trotz einiger Vorf lle auf dem Virensektor vergleichsweise ruhig etwa 77 Typen waren bekannt Ende 1989 nahm die Entwicklung eine Wen dung die man getrost als dramatisch bezeichnen kann und die bis heute Anfang 1992 anh lt Die Anzahl der Virentypen erh hte sich von Monat zu Monat die Autoren von Abwehrprogrammen hielten nur mit M he schritt s Abb 1 3 Woran liegt das Viren sind im Prinzip einfach zu programmieren und erfordern keine Spezialinformationen die sich nicht aus ganz normalen Betriebssystemunterlagen des Herstellers entnehmen lie en Informationen zur Funktion und Programmierung wurde auf breiter Ebene f r jedermann verf gbar Bei der Erstellung eines Virus geht es tats chlich weniger um das technische Kann ich das als um das ethische und rechtliche Will sollte darf ich das Nicht zuletzt durch die Aufmerksamkeit die den Viren durch die Medien entge gengebracht wird besteht f r offensichtlich immer mehr Menschen ein Anreiz sich an die Virenprogrammierung zu wagen Der Gro teil der Viren sind einfallslose Modifikationen rel weniger Grundli nien engl str
188. a tion f r beide Programme gleicherma en zug nglich sein Dazu bieten sich Prozessorre gister und gemeinsam genutzte Speicherbereiche engl shared oder common memory an Parameter werden bei MS DOS und BIOS Aufrufen ber CPU Register bergeben Diese k nnen als Zeiger auf gr ere und komplexere Datenstrukturen verweisen Hoch sprachen wie C und Pascal verwenden den Stack als Zwischenablage f r lokale Varia blen und die Parameter bergabe sowie ein bestimmtes Registerpaar f r die R ckgabe von Funktionswerten Call by Value Reference Als Argumente bezeichnet man die konkreten an die Funktion bergebenen Werte als Parameter die Variablen in der Funktionsdeklaration die diese aufnehmen Call by Value Aufruf durch Wert bergabe bedeutet da der aktuelle Wert eines Arguments bergeben wird Die aufgerufene Funktion kann den Parameter der lokal zur Funktion ist ver ndern nicht aber das Argument in der aufrufenden Funktion Bei einem Call by Reference Aufruf durch Adre bergabe wird die Adresse des Arguments an den korrespondierenden Parameter bergeben ber diese kann die Funktion das Argument manipulieren Beispiel Call by Value Call by Reference C Betrachten wir das folgende Beispielprogramm das uns in z T abgewandelter Form in diesem Kapitel noch fters begegnen wird Eine Prozedur mit den Parametern x y und z wird mit den Argumenten a b und c aufgerufen Nach der R ckkehr soll
189. a w rter Bugs Der INTERNET Worm Am 2 November 1989 startete Robert Tappan Morris 23 Student an der amerika nischen Cornell Universit t ein Wurm Programm das unter dem Namen INTERNET Worm weltweite Ber hmtheit erlangte 66 67 Das INTERNET ist ein komplexes Netz werk unterschiedlichster Rechner das sich ber Jahre hinweg entwickelt hat und vor allen Dingen Universit ten und Forschungsst tten miteinander verbindet Die Vorge hensweise des Wurmprogramms zeigt gleich drei Arten von Schwachstellen auf die ganz allgemein Angriffspunkte f r Rechnerattacken bilden und die z T nur schwer zu vermeiden oder zu beheben sind Trapdoors Durch eine sog Hintert r im sendmail Programm der attackierten UNIX Rechner war es m glich ein Programm nicht nur zu verschicken sondern auf dem Zielrechner auch ausf hren zu lassen Eine Hintert r ist eine vom Programmierer 1 1 WURMER 5 eingebaute Funktion mit deren Hilfe sich dieser nach Installation des Programms im mer wieder Zugriff auf sonst nicht verfiigbare durch Sicherheitsfunktionen geschiitzte Dienste verschaffen kann Im klassischen Fall handelt es sich dabei um ein besonde res Pa wort das unbefugten Zugang zum System erm glicht Joshua in Warga mes US Spielfilm oder auch wie beim sendmail Programm um eine Funktion zur Erm glichung der Fernwartung Abhilfe w re nach dem 4 Augen Prinzip m glich nach dem bei einem sicherheitskritischen Vorgang mindesten
190. aben weder eine Gr e noch eine Signatur deshalb werden diese Felder mit 0 bzw einer Folge von Minus Zeichen vorbelegt Defines define EXT_STOP 0x01 define INT_STOP 0x02 void add_subdir char path struct T_DTA dta char tmp 160 Hilfsstring char name 65 Verzeichnisname char date 11 Dateiattribute char time 9 4 3 PRUFPROGRAMME char attr 17 char size 8 DTA Eintraege in Textstrings umwandeln sprintf name s s path dta gt name dta2date dta gt date date dta2time dta gt time time dta2attr dta gt attr attr dta2size dta gt size size baue Textstring zusammen sprintf tmp 64s s fs s oO ae i pe a pn as et i a fs a Py Si Ni eset ed name date time attr size add2list amp sub_anchor tmp Eintrag gt in Liste return 165 Bei Dateien kommt zu den Daten aus dem DTA die zu berechnende Signatur hinzu Das Verfahren kann durch den Anwender frei gew hlt werden F r die Signatur sind max 32 Zeichen entsprechend 16 Bytes in sedezimaler Darstellung vorgesehen wie sie z B das MD4RSA Verfahren liefert void add_file char path struct T_DTA dta char tmp 100 Hilfsstring char date 11 Dateiattribute char timel9 char attr 17 char sizel8 char f_spec 65 vollst Dateiname WORD sig Pruefsumme DTA Eintraege in Textstrings umwandeln if selectp list_anchor d
191. ack in den Pro grammz hler und bewirken so die Fortsetzung des Hauptprogramms Das Verfahren bei einer Programmunterbrechung engl interrupt mit int l uft analog zu einem call far nur wird vor der R cksprungadresse noch das Statusregister des Prozessors auf den Stack gerettet Der ad quate Befehl zur Beendigung der Interrupt Routine hei t iret return from interrupt Standardsegmente Beim Zugriff auf Speicherinhalte verwendet die CPU je nach Situation standardm ig bestimmte Segmente damit nicht bei jedem Befehl ein Seg mentregister angegeben werden mu s a Tab 3 1 Bei Lese und Schreiboperationen bilden die Registerpaare DS SI Quelle und ES DI Ziel eine vollst ndige Adresse Adressierung ber das BP Register erfolgt standardm ig relativ zum Stacksegment Warum das sinnvoll ist lernen wie bei der Parameter bergabe kennen Diese Zuord nungen lassen sich ber sog Segment Override Prefixes aufheben die dem Offset durch einen Doppelpunkt getrennt vorangestellt werden z B CS SI Dadurch ist der Zu griff auf beliebige Segmente m glich Wie schon angesprochen bilden au erdem CS IP und SS SP ein festes Paar Arbeitsregister Mit Hilfe der Segment und Indexregister kann auf vielf ltige Art und Weise auf Speicherinhalte zugegriffen werden Als Quell und Zielregister als Zwischenspeicher zum Rechnen und zum Durchf hren von logischen Operationen ste hen vier weitere 16 Bit Arbeitsregister zur Verf gung F r
192. ains Insbesondere Viren deren Quelltext in Zeitschriften oder ber BBS Bulletin Board Systems ffentliche elektronische Tauschb rse f r Program me ver ffentlicht wurde sind Gegenstand dieser Art von Programmierung die den Sch pfer von eigener geistiger T tigkeit weitgehend entbindet Zur Not k nnte der Kopierer auch ein Virus selbst entschl sseln und ver ndern Reverse Engineering 20 KAPITEL 1 THEORIE DER SOFTWAREANOMALIEN Einem automatischen Mutationsgenerator der Unterroutinen des Virus zufallig mischt und verschl sselt steht leider nichts au er dem vielleicht in Relation zum Geltungs bed rfnis unterentwickelten eigenen Gewissen und Verantwortungsbewu tsein entge gen Selbst der kleinen Freude eines selbstentwickelten Virusgenerators der aus einer Anzahl von vorgefertigten Modulen auf Anweisung ein einsatzf higes Virus konstru iert kam eine Firma mit dem Virus Construction Set f r den ATARI ST zuvor Derlei Werkzeuge versetzen auch des Programmierens g nzlich Unkundige in die Lage Viren zu produzieren Die Frage wie schnell sich ein bestimmtes Virus verbreitet ist Gegenstand ver schiedener Untersuchungen Da jeder Wurm und jedes Virus eine bestimmte Anzahl von Nachkommen erzeugt und jeder dieser Nachkommen sich selbst wieder vermehrt m te die Verbreitung theoretisch exponentiell erfolgen Sch tzungen ber die tats chli che Ausbreitungsgeschwindigkeit variieren stark untereinander Da
193. ake 1 Arbeitskopie der Originaldiskette anfertigen und f r alle weiteren Operationen verwenden 2 PATH so setzen da tcc exe tasm exe tlink exe tlib exe und make exe erreichbar sind 3 Erzeugen avsys lib in LIB Wechseln in Verzeichnis AVSYS Aufruf make 4 Erzeugen msdos_s 1ib in LIB Wechseln in Verzeichnis MSDOS_S Aufruf make 5 Erzeugen der Programme in PACKAGE Wechseln in Verzeichnis SOURCE Aufruf make Ablauf der Programmerstellung integrierte Entwicklungsumgebung 1 4 s o 5 tc exe aufrufen Namen der Projektdatei eingeben 6 Optionen fiir Compiler und Linker wie beschrieben setzen 7 Kompilieren Inhaltsiibersicht Begleitdiskette SOURCE Programme und Beispielprogramme Quelltexte aller Programme und Beispielprogramme makefile f r die automatische Generierung e AVSYS Av Systembibliothek Speichermodell SMALL Quelltexte avsys lib makefile f r die automatische Generierung Dateiliste file 1st f r makefile MSDOS_S MS DOoS Bibliothek Speichermodell SMALL Quelltexte msdos_s 1lib Ersatzfunktionen f r Turbo C Routinen zus tzli che Ms Dos Funktionen makefile f r die automatische Generierung Dateiliste file 1st f r makefile e INCLUDE include Dateien lt Programmname gt h avsys h msdos_s h msdos h Datenstrukturen unter MS DOS e PRJ Projektdateien f r die Kompilierung der Programme mit Turbo C integrier te En
194. alarmieren Die Protokollierung von Operationen Logging Auditing ent spricht etwa einer berwachung nachdem etwas passiert ist Da auf dem Mainframesektor keine Scanner existieren liegt daran da es kei ne bekannten Viren gibt nach denen man suchen k nnte Mittlerweile sind einige Checker f r verschiedene Systeme auf dem Markt Die bisherigen Attacken erfolgten durch Wurmprogramme gegen die Scanner und Checker machtlos und normale korrekt angewandte Sicherheitsvorkehrungen ausreichend sind Das Mittel der Zukunft gegen Manipulationen jegliche Art sind nach Cohens Auffassung Betriebssysteme welche die Integrit t der gespeicherten Daten berwachen Dieser Ansicht schlie t sich der Autor aus berzeugung gerne an 2 7 ALTERNATIVE KONZEPTE 65 Alternative Konzepte Das vorgestellte Schutzzonenkonzept geht von einer anderen Situation aus als sie bei normalen Antivirusprogrammen gegeben ist Beim Einsatz von APCs im Betrieb oder Rechenzentren mu der Systemverwalter wissen da die Benutzer zum einen nicht Fachleute f r Softwareanomalien sind und zum anderen die Rechner mehr oder weniger mutwillig gef hrden s a 2 1 3 Motive der Anwender Das Schutzsystem mu so ausgelegt sein da einer unabsichtlichen Verseuchung ebenso vorgebeugt wird wie einer willentlichen Die vorgestellten drei Schutzzonen wehren Softwareanomalien auf verschiedenen z T redundanten Ebenen ab Auf vorderster Front wird der Rechner durch sz II und
195. alie sowie eine Reihe weiterer Termini aus diesem Umfeld Jeder Anomalietyp wird beschrieben und anhand eines Fallbeispiels aus der Praxis in Funktion und Auswirkun gen anschaulich vorgestellt Eine kleine Historie der Computerviren stellt die Experi mente von Fred Cohen und die Entwicklung der Computerviren bis heute vor Eine bersicht ber die Rechtslage und Ma nahmen ffentlicher Stellen beschlie t das Ka pitel Im Kapitel Theorie der Abwehr werden aus Informationen zur Funktion von Softwareanomalien Strategien zu ihrer Abwehr entwickelt Betrachtet werden sowohl technische als auch menschliche Aspekte Welche Rolle spielen die Anwender bei der Verbreitung und Verseuchung Inwiefern eignen sich konventionelle Sicherheitsma nah men zur Abwehr von Softwareanomalien Ein Vergleich von MS DOS mit anderen Be triebssystemen zeigt generelle Sicherheitsl cken auf Cohen s Theorien zur Abwehr und kommerziell verf gbare Schutzkonzepte werden anhand von Fallbeispielen vorgestellt und kritisch auf ihre Schutzwirkung hin untersucht Den Abschlu bildet die Entwick lung und Diskussion alternativer Methoden auch aus ungew hnlichen Ans tzen z B Analogien zur Biologie heraus Das Kapitel Systemprogrammierung unter MS DOS vermittelt die n tigen Kenntnisse zur Entwicklung von Systemprogrammen gegen Computerviren Eine Ein f hrung in die Architektur der INTEL Prozessoren 80 86 Assembler und die Zusam menarbeit zwischen Maschinensp
196. ame Name der Textdatei anchor Adresse des Zeigers auf erstes Element Anker Seiteneffekte Die Textdatei wird zeilenweise gelesen und in die Liste einsortiert Riickgabewert 0 kein Fehler 1 Datei nicht gefunden 2 zu wenig freier Speicher Tabelle A 45 load_list Lese Textdatei zeilenweise in sortierte Liste ein Funktion Check if Selected int select_p struct T_ENTRY anchor char f_name Aufrufparameter anchor Zeiger auf erstes Element der Liste Anker f_name Dateiname kein Pfad Seiteneffekte keine Riickgabewert 0 nicht in Liste 1 in Liste Tabelle A 46 select_p Pr fe ob Dateiname in Liste enthalten ist und enth lt den Namen des Programms inklusive Startpfad Die folgenden Funktionen erwarten die genannten zwei Angaben und ggf noch andere Parameter Check For Argument arg_p pr ft das Vorhandensein eines Arguments Kommt der gesuchte Text arg in der Kommandozeile vor Gro Kleinschreibung uner heblich gibt die Funktion einen von 0 verschiedenen Wert zur ck Der Programmname wird nicht als Bestandteil der Kommandozeile betrachtet int arg_p int argc char argv char arg arge while argc amp amp stricmp argvlargc arg arge 33 return argc 0 Get Argument get_arg ermittelt das nr ste Argument der Kommandozeile wobei Schalter nicht mitgez hlt werden Dadurch d rfen Schalter und Textargumente gemischt auftreten ohne da es zu Schw
197. amme zur Codewandlung Falls kein Programmpaar zum Packen und Entpacken angegeben ist werden die entsprechenden Funktionen ber Aufrufparameter ausgew hlt Unter anderen Betriebssystemen als MS DOS existiert eine Vielzahl von Archivierungs und Kompressionsprogrammen die z T von Namen und Funktion her etwa gleich denen der Tabelle sind Zwei bedeutende UNIX Programme wurden schon der Tabelle hinzugef gt Die Beschreibung der Aufrufparameter ist hier nicht m glich aber fast jedes Programm gibt bei Aufruf ohne Parameter einen kurzen Hilfetext aus Endung Pack Entpackprogramm arc arc pkpak pkunpak pkxarc lhz lharc lha tar tar UNIX uue uuencode uudecode xxe xxencode xxdecode z compress UNIX zip pkzip pkunzip Zoo Zoo Tabelle B 1 Dateiendungen und zugeh rige Pack Entpackprogramme Wir kommen nun zur Anwendung des Besprochenen und schreiten zur Durchfor schung von Netzen und Servern zumindest auf dem Papier Die folgenden Abschnitte beschreiben Informationsquellen die nach steigender Komplexit t der Benutzung ge ordnet sind Besonders empfohlen seien die Diskussionslisten auf listservern die auch dem Anf nger schnell zug nglich sind und eine unersch pfliche Informationsquelle dar stellen B 3 LISTSERV Server Diskussionslisten Eine Diskussionsliste ist eine Liste von Netzadressen die von einem Programm z B listserv auf bitnet Knoten verwaltet wird An einem bestimmten Thema interes sierte Be
198. anbietet zur Verf gung Jeder APC Benutzer ist falls keine Sicherungsma nahmen getroffen werden Anwender Operator und Systemverwalter in einer Person Angesichts der unter 2 2 1 aufgef hrten Anforderungen des BDSG darf demnach mit einem ungesch tzten MS DOS PC keine Verarbeitung personenbezogener Daten vorgenommen werden Die Installation von Sicherheits Hard und Software ist deshalb ein Mu Neben dem Einsatz alternativer Betriebssysteme f r APCs wie UNIX besteht die M glichkeit MS DOS kompatible Betriebssysteme zu verwenden die ber Sicherheits einrichtungen verf gen Den ersten Schritt auf diesem Gebiet machte Digital Research 1990 mit seinem DR DOS 5 0 das Schutz auf Datei und Verzeichnisebene realisiert L cken in der Zugriffskontrolle Es lassen sich zwei grunds tzliche Arten von Schw chen in Schutzma nahmen unterscheiden Zum einen existieren Designfehler im Systemkern oder Systemprogrammen die zu Fehlfunktionen f hren Zum anderen gibt es konzeptionelle Fehler die ihre Ursache nicht im Programmversagen sondern in der Spezifikation haben Als Beispiel f r einen Designfehler diene das UNIX Systemprogramm fingerd bei dem ein interner berlauf unerw nschte Effekte hervorrufen konnte s a 1 1 INTERNET Worm Ein anderer denkbarer Fehler w re z B die Freigabe aller Ope rationen f r hohe Benutzernummern weil der Kontrollalgorithmus f r eine bestimmte maximale Zahl ausgelegt ist Bei der bergabe einer zu
199. andeln bekommt Pluspunkt Schutz der Systemintegrit t Die einzige erfolgversprechende Methode scheint die des Integrit tsschutzes zu sein der auf unterster Systemebene ansetzen und Bestandteil des Betriebssystems sein mu Durch hardwarem ige Ver schl sselung und Integrit tspr fung spielt die zus tzliche Verarbeitungszeit kaum eine Rolle Man k nnte sogar Verfahren zur Datenkompression auf Sektorebene integrieren die die Kapazit t eines Datentr gers erh hen und die Ladezeiten verk rzen lyon DR DOS 6 0 schon softwarem ig realisiert 5 2 AUSBLICK 245 Die Schwierigkeit bei der Integrit ts berwachung besteht darin da um vern nf tig mit dem System arbeiten zu k nnen Dateien auch erstellt ge ndert und gel scht werden m ssen Doch welche Instanz ist dazu berechtigt und welche nicht Cohen s Experimente haben ja deutlich gezeigt wie sich Viren erfolgreich der Rechte ihrer Wirtsprogramme und damit der Anwender bedienen Ebenso bringt uns die Authenti fizierung des Anwenders nicht weiter denn selbst eine durch Pa wort und Chipkarte legitimierte Person kann Sabotage betreiben Daher m ssen Meldungen des Systems ber manipulierte Dateien unver nderbar protokolliert werden F r den Kontrollzugriff auf die Datei und f r die Kommunikation mit dem Anwender sind sichere Kan le erfor derlich denn sonst k nnten Softwareanomalien bes Stealth Viren den Benutzer oder die Schutzsoftware t uschen Allgemein
200. angelegt wird 180 KAPITEL 4 ENTWICKLUNG DER SYSTEMPROGRAMME int phys_copy char source char dest struct T_FTIME f_time Zeitmarke der Quelldatei size_t bytes Anzahl gelesene Bytes int f_source f_dest Zeiger Quell Zieldatei char err Fehlercode Dateien im korrekten Modus oeffnen if f_source open source O_RDONLY is_device source O_TEXT O_BINARY 1 return 1 Zeitmarke der Quelldatei merken if xgetftime f_source amp f_time 1 return 2 3 if f_dest open dest O_CREAT O_WRONLY is_device dest O_TEXT O_BINARY S_IWRITE 1 return 3 3 Datei kopieren err 0 while bytes read f_source buf min BUF_SIZE 32767 0 if write f_dest buf bytes 1 fprintf stderr Write error n err 4 Zeitmarke Zieldatei Zeitmarke Quelldatei if xsetftime f_dest amp f_time 1 return 5 close f_source close f_dest return err 4 4 2 AVRename AVRename Bei der Entwicklung von AVRename zeigt sich da sich der modulare Auf bau von Programmen bezahlt macht Die Architektur ist die gleiche wie bei AVCopy Statt _copy tragen die Funktionen die Endung _rename Lediglich die unterste Ebe ne phys_rename ist nat rlich von phys_copy verschieden gen_rename Der einzige Unterschied zu gen_copy besteht in der anderen Be handlung von Wegla werten AVRename ver
201. anomalien 2 2 22 1 4 1 Denial of Service 2 Coon 1 42 SoftwareSch den nn sa ae nr ae 1 4 3 Hardware Sch den 2 222 Coon nn 1 5 Historie und Dynamik der Entwicklung 2 2 2 1 5 1 Die Experimente und Theorien von Fred Cohen 1 5 2 Die Verbreitung von Viren bis heute 2 22 1 6 Ma nahmen ffentlicher Stellen 2 2 2 2 2 nn nn 1 6 1 Die Rechtslage in Deutschland 2 2 2m 1 6 2 Die Rechtslage inden USA 2 2 2 m nme 1 6 3 Sicherheit von IT Systemen 2 2 nn nn 1 6 4 Organisationen zur Virusbek mpfung 2 Theorie der Abwehr 2 1 Analyse Ursachen der Verseuchung o oao 2 1 1 Motive der Programmierer 2 2 on 2 1 2 Verbreitungswege 2 mono 2 1 3 Motive der Anwender 0 0005 2 2 Konventionelle Sicherheitsma nahmen 2 2 2 nennen 2 2 1 Organisation Kontrollma nahmen 2 2 2 Grundlegende Ma nahmen 2 2 nn nn ix INHALTSVERZEICHNIS 2 29 Bthiky er 2A coe Goes tote be ee De aR a hed hak eh 38 2 3 MS DOS und andere Betriebssysteme 38 2 3 1 Innere Sicherheit Zugriffskontrolle 39 2 3 2 u ere Sicherheit Zugangskontrolle 22 2 2222 2 2 2020 41 2 4 Konzepte zur Virenabwehr Cohen s Theorien 44 2 5 Kommerziell verf gbare Konzepte aoaaa 46 2 5 1 berwachung Watcher 2 2 2222 a 46 2 5 2 Detektion Scanner 22
202. ansportkan len ausgetauscht werden k nnen Ein System das keine Informationen mit seiner Umgebung austauscht hei t isoliert e Transitivit t Wenn eine Instanz Benutzer oder Programm A Daten mit B aus tauschen kann und B mit C dann kann auch A mit C kommunizieren e Allgemeinheit der Interpretation Allgemein ist keine Unterscheidung zwischen Daten und Programmen m glich da Daten potentiell durch ein Programm inter pretiert werden k nnen Daraus ergeben sich eine Reihe von Implikationen e Wenn Informationen interpretiert gelesen bearbeitet und geschrieben werden ist eine Infektion m glich e Wo Information ausgetauscht wird k nnen sich Computerviren verbreiten e Falls es keine Beschr nkung des Informationsflusses gibt kann eine Infektion von jeder Quelle aus jedes Ziel erreichen Auf dieser Grundlage zeigt Cohen auf da g ngige Schutzsysteme nicht in der Lage sind Infektionen durch Computerviren generell zu verhindern Doch auch bei der 2 4 KONZEPTE ZUR VIRENABWEHR COHEN S THEORIEN 45 gezielten Abwehr von Computerviren ergeben sich Schwierigkeiten wie die folgenden Beweise zeigen Unm glichkeit eines universellen Virus Detektors UVD Beweis Es existiere eine Funktion D die ber eine Datei eine Aussage macht ob sie ein Virus enthalt nach Cohen ob sie ein Virus ist Es existiere ein Programm virus das die Funktion D auf sich selbst anwendet und auf das Ergebnis folgenderma en reagiert
203. argc char argv struct T_ENTRY ptr Zeiger auf Dateieintrag char tmp 65 temp String char pos Index Ende von TMP char nr Index 1 Argument zu wenig Parameter if nr get_arg argc argv 0 0 fprintf stderr Syntax CHKSYS lt start directory gt n return 1 3 Lese schwarze Liste ein add_path argv 0 chksys lst tmp if load_list tmp amp list_anchor fprintf stderr Couldn t read list file n return 2 F Der n chste Part liest die Verzeichnisstruktur d h die Namen aller Verzeichnisse in die Liste sub_anchor ein Die Suche startet ab dem in der Kommandozeile angege benen Verzeichnis und umfa t alle Verzeichnisse des logischen Laufwerks Das Start verzeichnis mu der Liste separat hinzugef gt werden da es bei der Suche nicht mehr auftaucht Da keine Dateinamen bearbeitet werden f llt die tue nichts Funktion dummy den offenen Platz im Aufruf von scan_dir Lese und pruefe die Namen aller Verzeichnisse printf scanning directory structure n sub_anchor NULL strcpy tmp argv nr add2list amp sub_anchor tmp Startverz hinzufuegen alle Verzeichnisse hidden und system inklusive scan_dir 255 0x16 tmp chk_subdir dummy Die Funktion zur Verzeichnisbearbeitung chk_subdir setzt die Gr e des Ver zeichnisses auf 1 damit es zu keinen Beschwerden bei der L ngen berpr fung dur
204. ariablen Notwendig wird dieser Abstieg auf die tiefste Ebene der Programmierung durch die Verwendung eigener in Maschinenspra che geschriebener Funktionen und Interfaces Diese sollen mit in C implementierten Programmodulen zusammenarbeiten Beispiele zeigen wie der Compiler Quelltext in Assemblerprogramme umsetzt Daraus ergeben sich an den Aufbau der eigenen As semblermodule bestimmte Anforderungen die Bestandteil des Abschnitts 3 2 4 Der Bindeproze sind 3 2 1 Speichermodelle Theoretisch lie en sich viele Probleme der Segmentierung vermeiden w rde man stets FAR Adressierung in der normalisierten Form verwenden Das hat aber den Nachteil da der Code durch die permanenten Segmentwechsel aufwendiger und undurchschau barer wird sowie mehr Platz und Zeit verbraucht Microsoft schl gt daher die Benut zung bestimmter Speichermodelle vor um je nach Gr e von Code und Datenbereichen einen m glichst geringen Aufwand zu treiben Tab 3 4 Das Speichermodell TINY ist eine Sonderform die dem Programmtyp com unter MS DOS besonders angepa t ist Code Daten und Stack befinden sich in einem einzigen Segment d h das Programm mu alles in allem kleiner als 64 kB sein Ebenfalls ein Spezialfall ist der Typ HUGE bei dem durch Zeigernormalisierung Datensegmente mit mehr als 64 kB zul ssig sind F r unsere Belange reicht das Modell SMALL v llig aus Code und Datenbereich sind jeweils kleiner als 64 kB F r ein Datenbankpr
205. attrib int xfindnext struct T_DTA dta Aufrufparameter AH 4E16 bzw 4F ig CX attrib Suchattribut Find First File DS DX filename FAR Adresse Suchmaske Find First File Seiteneffekte Das aktuelle DTA wird mit Dateiinformationen gef llt die C Funktion macht dta zum aktuellen DTA Riickgabeparameter CF 0 kein Fehler 1 Fehlercode in AX AX return 0 kein Fehler n Fehlercode Tabelle A 14 Find First Next File INT 2116 Funktion 4E 4F 16 A 3 MSDOS_S LIB 269 Funktion Get Address of List of Lists Interrupt 2116 Funktion 5218 struct T_LOL far getlol void Aufrufparameter AH 5216 Seiteneffekte keine R ckgabeparameter ES BX return FAR Zeiger auf die List of Lists Offset Korrektur bei C Funktion schon durchgef hrt Tabelle A 15 Get Address of List of Lists INT 2116 Funktion 5216 270 ANHANG A SOFTWARE Funktion Rename File int renfile char old_file char new_file Aufrufparameter AH 5616 DS DX old_file FAR Adresse alter Dateiname ES DI new_file FAR Adresse neuer Dateiname Seiteneffekte Die spezifizierte Datei wird umbenannt R ckgabeparameter CF 0 kein Fehler 1 Fehlercode in AX AX return 0 kein Fehler n Fehlercode Tabelle A 16 Rename File INT 211g Funktion 5616 A 3 MSDOS_S LIB 271 Funktion Get or Set File Date and Time Interrupt 2116 Funktion 5716 int xgetftime int handle struct T_FTIME ftime
206. auf werk aufgebaut ist Wird eine erweiterte Partition angetroffen ruft sich die Funktion elegant und platzsparend rekursiv mit den Positionsdaten des MBRs der erweiterten Partition auf Aufbau Partitionseintrag fuer T_BOOTSEC struct T_PART BYTE bootflag 0x80 bootbar aktiv BYTE start_head Startkopf WORD start_combi Startzylinder sektor BYTE type Partitions Typ BYTE end_head Endkopf WORD end_combi Endzylinder sektor DWORD sec_before Sektoren vor Partition DWORD sec_in Sektoren in Partition Aufbau PBR MBR kombiniertes Format struct T_BOOTSEC BYTE jump 3 Code JMP lt Urladeprg gt char oem 8 Herstellername WORD bps Bytes pro Sektor 512 BYTE spc Sektoren pro Cluster WORD res_sectors Anzahl reservierte Sekt BYTE fats Anzahl FATs WORD root_entries Anzahl Eintraege Wurzel WORD sectors Anzahl Sektoren BYTE mdb Media Descriptor Byte WORD spf Sektoren pro FAT WORD spt 3 0 Sektoren pro Spur WORD heads 3 0 Anzahl der Koepfe DWORD hid_sectors 3 0 Anz verst Sektoren DWORD tot_sectors 4 0 ges Anz Sektoren BYTE phys_drive 4 0 phys Laufwerksnr BYTE resif i 4 0 reserviert BYTE ext_signature 4 0 erw Boot Signatur DWORD volume_id 4 0 Kennzahl char volume_label 11 4 0 Datentraegername BYTE res2 8 4 0 reservi
207. auf das Laufwerk physdrive auf das Verzeichnis path umgeleitet Das Laufwerk physdrive wird durch das Verzeichnis path ersetzt engl to substitute Funktion join und subst installieren sich weder speicherresident noch ber nehmen sie Interrupts oder verwalten interne Tabellen Statt dessen wird eine MS DOS interne Datenstruktur manipuliert deren Lage im Speicher ebensowenig dokumentiert ist wie ihr Aufbau Nach eigenen Nachforschungen ist der Eintrag f r ein Laufwerk unter DOS 4 0 wie in Tab C 10 beschrieben aufgebaut C 2 ASSIGN JOIN SUBST Offset Bedeutung 0016 4416 5716 Je nach Mode Offset 4416 4016 aktuelles Verzeichnis 5016 statt Laufwerk anzusprechendes Verzeichnis 6016 Verzeichnis unter dem das Laufwerk erscheint Mode 4016 normal 5016 SUBST 6016 JOIN Ende Eintrag Tabelle C 10 Aufbau Eintrag in interner Laufwerkstabelle 323 Die Adresse des ersten Eintrags erh lt man durch Aufruf der undokumentierten aber oft benutzten Funktion 5216 Get List of Lists des DOS Funktionsinterrupts 15 Die Vermutung da diese Liste einen Zeiger auf die oben beschriebene interne Tabelle enth lt best tigte sich bei mehreren Tests An Offset 1616 steht der gesuchte FAR Zeiger Da die Manipulation dieser Tabelle jenseits der Interruptebene wirksam ist kann ein Watcher egal zu welchem Zeitpunkt dieser installiert wurde das tats chliche Lauf werk nicht bestimmen Eine Alt
208. auf die Hardware kommt hier weniger in Frage weil das betrachtete Objekt nicht ein Sektor sondern eine rel komplex organisierte Datei ist Schw chen allgemein Ein so ungesichertes Betriebssystem wie MS DOS bietet Softwareanomalien viele M glichkeiten in interne Abl ufe einzugreifen oder an der Sy stemsoftware vorbeizuarbeiten Das ist kein Fehler der Schutzprogrammen vorgeworfen werden kann aber der durch andere Betriebssysteme und Hardwarema nahmen beho ben werden sollte Schutz und Selbstschutzfunktionen k nnen durch Programme des Benutzers ausgeschaltet oder umgangen werden wenn er diese als Quelltext auf die Festplatte bringt dort kompiliert und schlie lich benutzt Diese Methode wurde bereits am Bei spiel uuencode erl utert Das mithin sicherste System ist daher eines das keine Soft ware zur Programmerstellung enth lt und nur ungef hrliche Daten mit der Umgebung austauscht Die Allgemeinheit der Interpretation macht eine Pr zisierung notwendig gef hrlich sind Programme die sicherheitsrelevante Operationen ausf hren k nnen die Interpretation gef hrlicher Daten veranla t diese Operationen Grad der Zielerreichung Hier gilt es zwei verschiedene Einsatzarten der Schutzsoftware zu betrachten Der private PC Anwender wird daf r sorgen da die Antivirusprogramme die er installiert hat auch korrekt arbeiten F r ihn w rde die kontrollierte Isolation eher eine Behinderung seiner Arbeit bedeuten der Sch
209. aufgerufen werden sich also im gleichen Segment befinden Da mit NEAR Aufrufen kein Segmentwechsel m glich ist bricht der Linker mit der genannten Fehlermeldung ab Beispiel Einbinden eines Assembler Moduls Die Einf hrung in Assembler ist angef llt mit theoretischen Einzelheiten die in die sem Beispiel zu einem praktischen Ganzen verkn pft werden sollen Die Aufgabe Es ist eine neue C Funktion rol zu erstellen die zwei Parameter x und n erwartet und als Ergebnis den n mal nach links gerollten Wert von x ausgibt Rollen bedeutet bitwei ses schieben C Operator lt lt nur da Bits die links herausfallen rechts wieder eingeschoben werden Zu Demonstrationszwecken wird x by reference bergeben um den Umgang mit dieser Art Parameter zu verdeutlichen Die Bedingungen e Funktionsprototyp WORD rol WORD x BYTE n e Implementation in Assembler e Speichermodell SMALL NEAR Funktion NEAR Daten Name des Codesegments _TEXT Alle Deklarationen mit DGROUP und _DATA k nnen entfallen weil unser Programm kein Datensegment ben tigt Der Rahmen der Funktion lautet aufgrund der Vorbedingungen wie folgt PUBLIC _rol _TEXT segment byte public CODE assume cs _TEXT 3 2 GRUNDLAGEN HOCHSPRACHEN 93 _rol proc near Code _rol endp _TEXT ends end Zweckm igerweise erleichtert man sich den Zugriff auf die Funktionsparameter durch die Vereinbarung einer Datenstru
210. aufwerk physdrive umgeleitet Funktion Beim ersten Aufruf installiert sich assign als TSR Programm resident im Speicher und bernimmt den Dos Funktionsinterrupt 2116 Durch die bernahme des Interrupts empf ngt assign Funktionsaufrufe vor dem Kernel und liefert diesem Dateinamen mit bereits ver nderter Laufwerksangabe In einer internen Tabelle von assign Offset 010316 zu PSP wird die aktuelle Zuordnung festgehalten Als Tabel lenindex dient die Laufwerksangabe wobei A der 0 entspricht Der Tabelleneintrag gibt das statt dessen zu verwendende Laufwerk an wobei hier aber die Nummer 1 dem Laufwerk A zugeordnet ist Ein Watcher der vor assign installiert wurde und Kernel Aufrufe kontrolliert bekommt die tats chlichen Dateinamen geliefert Ein nach assign installiertes Pr fpro gramm dagegen das deswegen vor assign in der Interruptkette steht empf ngt die Dateinamen vor der Umsetzung was zu falschen Schl ssen f hren kann Da ein Wat cher aber so fr h wie m glich vor allen Dingen vor jeglichen anderen Programmen gestartet werden sollte ergeben sich durch assign keine Probleme join und subst Wird nach der Eingabe von join lt physdrive gt lt path gt eine Datei angesprochen deren Pfad mit path beginnt wird der Zugriff auf das Laufwerk physdrive umgeleitet physdrive wird quasi als Verzeichnis path an das Dateisystem angeh ngt engl to join Nach der Eingabe von subst lt physdrive gt lt path gt wer den Zugriffe
211. aum zur Verbreitung von Softwareanomalien bei weil die meisten Betreiber die auf dem BBS verf gbare Software sorgf ltig pr fen bis zum n chsten noch unbekannten Virus Ein ganz anderes Kapitel sind BBS deren Ziel es ist Informationen ber die Programmierung von Computerviren oder sogar Viren programme selbst zu vertreiben Durch den unbeschr nkten Zugriff und mangelnde Kontrolle der BBS ist schnell und auf breiter Basis gro er Schaden sprich Verbreitung der Information angerichtet Auch Angriffe von Anwendern auf BBS wurden bekannt In einem konkreten Fall konnte ein Benutzer ermittelt werden der wiederholt versuchte ein verseuchtes Programm in ein BBS zu laden Die Betreiberfirma erstattete daraufhin Anzeige 92 2 1 3 Motive der Anwender Den meisten Benutzern von Computersystemen kann nicht unterstellt werden da sie Computer wissentlich oder absichtlich infizieren Was gibt es also an Ursachen daf r da Rechner immer wieder mit Viren infiziert werden Die folgende Aufteilung der Motive orientiert sich am Rechnerbetrieb in einem Betrieb oder Rechenzentrum z B einer Hochschule das den Benutzern Arbeitsplatzrechner vernetzt oder im Stand Alone Betrieb zur Verf gung stellt Gruppe 1 Die meisten Rechner werden wohl durch Unwissenheit verseucht und bleiben dies auch Wer um die Bedrohung durch Computerviren nur etwas aus der Zeitung wei ist nicht gen gend f r die Arbeit mit und an ffentlich zug ngli chen Rechnern
212. bare Operationen in Form einer Logdatei aufgezeichnet Die Logdatei sowie alle Rechtedateien sind vor fremdem Zugriff zu sch tzen Systemarchitektur Es werden vier separate Versionen von AVWatch erstellt die jeweils eine der genannten Aufgabengruppen abdecken Dadurch wird die Entwicklung einfacher und durchschaubarer die Einzelprogramme sind leichter zu testen und k nnen auch separat eingesetzt werden Ebenso ist es m glich die Funktionen verschiedener Watcher in einem Programm zu integrieren Die Programme und ihre Funktionen sind s a Abb 4 11 1 AVWatchG berwachung fixer globaler Rechte keine Rechtedatei 2 AVWatchI Schutz der Programmintegrit t mit R ckgriff auf die Referenzliste von ChkState Implementation von Cohen s Betriebssystem S3 3 AVWatchP berwachung von Sektorzugriffen Partitionorientiert Rechtedatei p rights 1st 4 AVWatchF berwachung von Dateizugriffen Rechtedatei f_rights 1st 4 5 REALISIERUNG DES RESIDENTEN TEILS 207 Von den Quelltexten der Watcher werden nur die Teile abgedruckt die zum Code von Std_TSR hinzukommen Eine Kommentarzeile vor jedem Fragment gibt an an welcher Stelle der Code einzufiigen ist Diese Punkte sind im Quelltext von Std_TSR markiert soweit es die Erweiterung von Funktionen betrifft Abbildung 4 11 Ein Ausgabe AVWatch 4 5 5 AVWatchG lobal Die berwachung einiger einfacher Funktionen dient uns als Vor bung f r gr ere Aufgaben Konkret geht es
213. barer magnetischer Datentr ger der zumeist in den Formaten 33 54 und 8 Zoll Anwendung findet ein Zoll ein Inch 2 54cm GAO United States General Accounting Office Ger tetreiber s Device Driver Harddisk Magnetisches unflexibles Speichermedium harte Scheibe das hohe Po sitioniergenauigkeit zul t und damit gro e Speicherkapazit ten erm glicht Bei Pcs meist nicht austauschbar sonst Wechselplatte IBM PC Personal Computer Arbeitsplatzrechner des Herstellers Industrial Bu siness Machines Corporation Hier auch stellvertretend f r alle dazu kompatiblen Rechner Interrupt engl Programm Unterbrechung die durch Hardware oder Software ausgel st wird Die Ausf hrung des aktiven Programms wird gestoppt und an die Interrupt Service Routine gt ISR bergeben Danach wird an der Stelle der Unterbrechung fortgefahren ISR Interrupt Service Routine die die Interrupt Anforderung bedient Jokerzeichen Die Jokerzeichen und stehen f r eine Reihe von Zeichen bzw einzelne Buchstaben in einem Dateinamen dir exe listet z B alle Dateien auf die einen beliebigen Namen und die Erweiterung exe haben 330 ANHANG E GLOSSAR MCB Speicherkontrollbl cke Memory Control Blocks die MS DOS zur Verwal tung des Arbeitsspeichers verwendet MIT Massachusetts Institute of Technology bedeutende Universitat in den USA MS DOS Das Microsoft Disc Op
214. bei ChkState 161 Ein Ausgabe ChkState 2 Coon 164 Dateiindizes und deren Verwendung bei ChkState 166 Ein Ausgabe AVCopy AVRename 200000 171 Systemarchitektur AVCopy AVRename 2 2 22mm nennen 174 Zeiger auf Zeiger auf Datenobjekt 2 2 Cu nn a 196 Aufbau Startcode f r das Speichermodell TINY Turbo C 201 Ein Ausgabe AVWatch ooo 207 Zugriff auf die Referenzliste von ChkState 2 222mm 296 333 334 ABBILDUNGSVERZEICHNIS Tabellenverzeichnis 1 1 Cohen s Experimente auf Gro rechnern 2 2 222 1 2 Sicherheitsstufen des Orange Book 2 nn 2 1 Dateiattribute unter MS DOS 2 2 CE on nn 3 1 Bedeutung der Register 2 222mm 3 2 Adressierungsarten 2 Coon 3 3 Probleme beim Adre vergleich 2 22 2222 nn nn 3 4 Speichermodelle si saa 2222 ar re VARA Be en 3 5 Werteriickgabe bei C Funktionen 2 2 2 nn 3 6 Namen und Deklarationen von Segmenten 2 2 2 22 Bet Geratenamen cd Ne eh N ee a Mi Mice Be Be gd eR A 3 8 Aufbau MCB Memory Control Block 0 3 9 Aufbau List of Lists 2 oo ee ee ee 3 10 Aufbau PSP Program Segment Prefix 0 3 11 get_mcb_name Ermittle Name des Besitzers eines MCBS 3 12 get_owner_mcb Ermittle f r Adresse zugeh rigen MCB 3 13 Aufbau PBR Bootsektor 0 000000 00000 3 14 Aufbau MBR Master Boot Record 0
215. bei gibt es drei m gliche Ergebnisse Tab 4 9 1 Beide Eintr ge sind gleich keine nderung im Bestand Attribute vergleichen beide Zeiger erh hen 2 Der neue Eintrag ist gr er die durch den alten Eintrag bezeichnete Datei wurde gel scht zum n chsten Eintrag in alter Liste bergehen 3 Der neue Eintrag ist kleiner die durch den neuen Eintrag spezifizierte Datei kam hinzu zum n chsten Eintrag in neuer Liste wechseln alte Liste neue Liste moo mOoao Tabelle 4 8 Beispiel Dateibestand Dazu kommen noch Sonderf lle die dadurch entstehen da eine Liste bis an ihr Ende gelesen wurde die andere aber noch Eintr ge enth lt Zusammenfassend gesagt 4 3 PRUFPROGRAMME 161 alte Liste neue Liste Vergleich Bedeutung Aktion a a a a o k beide Listen weiter b c b lt c b gel scht alte Liste weiter c c c c o k beide Listen weiter d d d d o k beide Listen weiter f e f gt e e neu neue Liste weiter f f f f o k beide Listen weiter Ende Ende Ende Tabelle 4 9 Beispiel Vergleich von Dateibest nden Es wird die Liste ausgew hlt die nicht leer ist und deren aktueller Eintrag kleiner als der der anderen ist Ist eine Liste leer wird stets aus der anderen gelesen Sind beide Listen aufgebraucht ist der Vergleich beendet Genauso gehen wir beim Bestandsvergleich auf Verzeichnisebene vor Existiert das Unterverzeichnis wird zur n chsten Hierarchiestufe gewe
216. bel aber m glichst zeit und platzsparend angelegt sein Wie das Auslesen der Aufteilungsdaten funktioniert wurde in Abschnitt 3 5 3 mit dem Programm ReadPart gezeigt Eine genaue Beschreibung der Lesefunktion f r AVWatchP findet sich in 4 5 10 AVConfig Funktion im_i_table Die Wahl f llt auf ein fixes Array das f r maximal f nf Laufwerke mit insg 10 Partitions ausgelegt ist Die Bestimmung der Partition aus der Spurnummer ist eine Kombination von direktem Zugriff und sequentieller Suche Die modifizierte physika lische Laufwerksnummer dient als Index in start_part s Funktionsbeschreibung Der so ermittelte Wert liefert den Index des ersten Partitionseintrags in part ab dem sequentiell gesucht werden mu Der Speicherverbrauch von nur 65 Bytes rechtfertigt nicht den Aufwand einer dynamischen Verwaltung der Partitionsdaten Damit hat die Partitionstabelle folgende Struktur struct T_I_TABLE BYTE start_part 5 max 5 phys Laufwerke struct T_P_ENTRY part 10 max 10 log Laufwerke struct T_P_ENTRY WORD start erste Spur WORD end letzte Spur 1 WORD rights Partitionsrechte In start und end ist eine lineare Spuradresse eingetragen die sich aus Zylindernummer 16 max Anzahl K pfe Kopfnummer ergibt Damit wird vermieden da wir 212 KAPITEL 4 ENTWICKLUNG DER SYSTEMPROGRAMME zwei Angaben n mlich Zylinder und Kopfnummer getrennt behandeln m ssen Die Nichtbeac
217. bst verwendete Indexregister sind der Offset Teil des Programmz hlers IP Instruction Pointer und des Stapelzeigers SP Stack Pointer Das Paar CS IP zeigt stets auf den Befehl der gerade ausgef hrt wird Des halb besteht auf IP wie auf CS aus naheliegenden Gr nden kein direkter Schreibzugriff denn dadurch w rde sich der Programmablauf ver ndern Bei Spr ngen und Unter programmaufrufen dagegen ist dies durchaus erw nscht und deshalb ver ndern diese Kommandos den Programmz hler Einschub Funktion des Stack Der Stapelzeiger engl stackpointer besteht aus dem Registern SS Stack Segment und SP Stack Offset und zeigt auf die oberste Adresse des Stapels Dieser dient der CPU zur Speicherung der R cksprungadresse falls das Hauptprogramm ein Unterprogramm aufruft oder durch einen Interrupt unterbro chen wird Aber auch der Anwender kann Daten wortweise auf dem Stack deponieren und wieder zur ckholen Im weiteren Text ist mit Stackpointer oder Stapelzeiger das Registerpaar SS SP und nicht nur der Offset Teil SP gemeint Auf dem Stack werden Daten wie auf einen Kartenstapel gt Name abgelegt Der Stapel w chst durch Hinzuf gen und Wegnehmen einzelner Karten wobei stets nur Zugriff auf die oberste Karte besteht Die letzte aufgelegte Karte wird zuerst auf genommen Diese Methode hei t LIFO was f r Last In First Out steht Genau so 3 1 GRUNDLAGEN ASSEMBLER 73 funktionieren die Befehle push und pop
218. bung geplant ist Hierbei zeigen sich zwei Hauptangriffspunkte Der Start des W chterprogramms und der Erhalt der Funktionsf higkeit Sicherer Start Wenn der Rechner eingeschaltet wird mu das W chterpro gramm vor allen anderen Nicht System Programmen aktiviert werden was am ein fachsten ber die autoexec bat Datei erfolgt Deren Ausf hrung kann aber durch Ctrl Break unterbrochen oder durch Urladen von Diskette v llig umgangen werden Der Abbruch der Stapeldatei l t sich durch Modifikation von command com verhindern Gegen den Start von Diskette sind softwaregest tzte Ma nahmen machtlos Funktionsf higkeit Es existieren Software Werkzeuge mit denen TSR Pro gramme deaktiviert und oder entfernt werden k nnen Diese sollten sich normaler weise nicht auf dem System befinden Theoretisch verhindern AVWatchF AVCopy und AVRename da derartige Programme gestartet werden k nnen Dieser Schutz ist aber wie oben gezeigt nicht unfehlbar Deaktivierung Eine Deaktivierung erfolgt dadurch da die in das TSR Pro gramm zeigenden Interruptvektoren auf andere ISRs umgesetzt werden Die einzige schwache Ma nahme dagegen besteht darin sich in m glichst viele Interrupts ein zuklinken und bei einem Aufruf alle anderen Vektoren zu kontrollieren und notfalls wieder auf das eigene Programm zu setzen Neben Programmen wie sidekick be nutzen manche Viren diese Technik 9 Gleichbedeutend mit Deaktivierung ist die
219. c die Summe von a und b enthalten Ein Call by Value add_cbv bringt nicht das gew nschte Ergebnis Zwar wird mit z x y die Summe von x und y dem Parameter z zugewiesen doch das Er gebnis geht beim R cksprung mit der Freigabe des Speichers f r die lokalen Variablen verloren das Argument c wird nicht beeinflu t Nur wenn c by Reference add_cbr 84 KAPITEL 3 SYSTEMPROGRAMMIERUNG UNTER MS DOS also die Adresse von c mit amp c tibergeben wird kann die Funktion c beeinflussen Die Ausf hrung von z x y wirkt dann wie c x y void main void int a b cc a 2 b 3 c 23 add_cbv a b c printf call by value Ya n c add_cbr a b amp c printf call by reference d n c void add_cbv int x int y int z z x y 3 void add_cbr int x int y int z 2 x y 3 Die C Calling Convention Die aufrufende Funktion legt Werte sowie Zeiger auf Werte Strukturen und Funktionen auf dem Stack ab Die dabei verwendete C Calling Convention besagt da die Werte in umgekehrter Folge auf den Stack gebracht werden in der sie im Quelltext erscheinen F r Werte die zwei Worte umfassen gilt da der h herwertige Teil zuerst abgelegt wird Durch diese Prozedur liegt das erste Argument im Stack an von der Adresse her unterster Stelle das letzte am weitesten oben Damit liegen die Argumente so im Speicher wie es der Quelltext vermuten l t Doppel
220. ch check kommt Der Aufruf von add2list f gt das Verzeichnis zur Liste sub_anchor hinzu void chk_subdir char path struct T_DTA dta 3 char tmp 132 dta gt size 0x000000011 Setze Groesse 1 check c dta sprintf tmp sis path dta gt name add2list amp sub_anchor tmp return Der dritte Teil von main berpr ft den f r uns wesentlichen Inhalt der gefunde nen Verzeichnisse die Dateinamen Dazu wird die Liste der Verzeichnisse sub_anchor durchlaufen und fiir jedes Verzeichnis scan_dir aufgerufen Falls es sich nicht um das Wurzelverzeichnis handelt wird der Pfadname um einen Backslash erg nzt Die Be arbeitungsfunktion fiir die Dateinamen chk_file nimmt die eigentliche Uberpriifung 150 KAPITEL 4 ENTWICKLUNG DER SYSTEMPROGRAMME vor Verzeichnisse werden nicht bearbeitet was durch die Verwendung von dummy zum Ausdruck kommt Lese und pruefe den Inhalt der Verzeichnisse printf scanning files n ptr sub_anchor Start mit 1 Verzeichnis while ptr NULL fuer alle Unterverz printf s n ptr gt text strcpy tmp ptr gt text fuege ggf Backslash an pos strlen tmp 1 if tmp pos amp amp tmp pos strcat tmp 4 3 PRUFPROGRAMME F3 scan_dir 0 0x16 tmp dummy chk_file ptr ptr gt next delete_list amp sub_anchor delete_list amp list_anchor return 0
221. chen de Reaktionen selbst implementiert Der Bin r Modus ist besonders dann fatal wenn das aufrufende Programm z B von der seriellen Schnittstelle mehr Zeichen zum Lesen angefordert hat als der Sender schickt MS DOS wartet dann beliebig lange auf ein Zei chen ohne jemals zum Auftraggeber zur ckzukehren Nur ein Reset hat dann noch die n tige berzeugungskraft Interna Die Kommunikation Kernel Ger tetreiber erfolgt nicht ber Softwarein terrupts sondern ber direkte Aufrufe des Treibers Die Tabelle der Einsprungpunkte wird bei der Initialisierung der Treiber im Urladeproze erstellt Diese Adre tabelle ist im Gegensatz zur Vektortabelle der Interrupts nicht ffentlich zug nglich oder ber Kernelfunktionen manipulierbar Die Parameter bergabe l uft ber Prozessorregister und spezielle Nachrichtenbl cke Das Gesagte impliziert da Aufrufe der Ger tetreiber durch das Kernel nicht kon trollierbar sind Falls die Treiber keine BIOS Funktionen verwenden kann eine Kontrolle allenfalls auf Kernelebene erfolgen So f hrt z B ein Zugriff auf RAM Disk zu keinen Reaktionen auf BIOS Ebene Der zust ndige Ger tetreiber nimmt neben Anpassung der Organisation lineare RAM Adressen in Bl cke auch gleich den Zugriff Lesen und Schreiben von Speicherinhalten vor hnliches gilt f r Treiber die direkt mit einem Controller kommunizieren und daher das BIOS weder brauchen k nnen noch benutzen Fallbeispiel type Der Ger tetr
222. cherheit und schlie lich die Unkenntnis mancher Systemadministratoren f hrten zum Zusammenbruch vieler Systeme Infektiosit t Die theoretisch m gliche Ausbreitungsgeschwindigkeit einer In fektion ist durch die Infektiosit t bestimmt Biologische Viren sind w hrend ihrer Ver mehrung in der Wirtszelle praktisch nicht vorhanden Das infizierende Virus hat seine DNA abgegeben und ist nur noch eine leere Proteinh lle die Nachkommen befinden sich noch im Bau Die Ansteckung kann nicht weitergegeben werden bevor die mani pulierte Zelle platzt und die neuen Viren freigibt Computerviren dagegen sind sofort beim ersten Start zur Infektion anderer Programme f hig Andererseits kann es der Programmierer aus Tarnungsgr nden f r w nschenswert erachtet haben da erst nach Ablauf einer gewissen Zeitspanne oder Anzahl von Ereignissen eine Verbreitung erfolgt 2 6 ANALOGIEN ZUR BIOLOGIE 57 Schaden Ein Virus sch digt einen Organismus auf drei Arten Biologische Viren 1 Die vom Virus zur Verbreitung be nutzten Zellen werden in ihrer Funktion zun chst beeintr chtigt und schlie lich bei der Freisetzung der Viren zerst rt 2 Manche Bakterien z B Botulinus produzieren als Nebeneffekt der Infek tion Gifte die den Organismus sch di gen 3 Durch die Abwehrma nahmen wird der Organismus belastet Computerviren 1 Programme werden bei der Infekti on ver ndert wenn nicht sogar zerst rt z B durch berschreibende Vi
223. chnern blockierte und neben Aufsehen in den Medien ber 60 Millionen Dollar Schaden gesch tzt verursachte 68 1 6 3 Sicherheit von IT Systemen Das BSI Auf der anderen prophylaktischen Seite werden von ffentlichen Stellen Anstrengungen unternommen Methoden und Verfahren zu entwickeln um Rechnersy steme allgemein sicherer zu machen Die zsI Zentralstelle f r Sicherheit in der Informa tionstechnik ehem ZCh Zentralstelle f r Chiffriertechnik ver ffentlichte in Zusammen arbeit mit Beh rden Verb nden und der Industrie am 11 1 89 Kriterien zur Bewertung von IT Systemen Systemen der Informationstechnik die im Februar 1990 um ein Handbuch erg nzt wurden 82 Die Grundkriterien sind Vertraulichkeit Verf gbarkeit und Integrit t Anhand dieser werden die zu bewertenden Systeme aus den Bereichen Gro rechner mittlere Datentechnik APC Arbeitsplatzcomputer Workstations und Netzwerke in F Funktionalit ts Klassen und Q Qualit ts Klassen eingeteilt Es werden dabei folgende Produkttypen unterschieden Zugriffsschutz f r bel Ressourcen Kopierschutz Bootschutz Zugriffsschutz f r den APC als Ger t z B Sicherheitsschlo etc Verschl sselung Virusschutz und erkennung Logging Protokollierung sonstige Sicherheitsfunktionen Datensicherung Authentifikation sicheres L schen von Dateien etc Die zs wurde am 1 1 1991 in das Bsr Bundesamt f r Sicherheit in der Informations technik umge
224. chselt und der Inhalt d h der Dateibestand wie oben besprochen berpr ft Wurde ein Verzeichnis gel scht oder hinzugef gt sind alle Dateien darin ebenfalls gel scht oder neu Um den Programmier aufwand gering zu halten wird der Vergleichsroutine f r den Dateibestand in diesem Fall vorget uscht da eine der beiden Listen leer ist Zur internen Verwaltung von Verzeichnis und Dateidaten werden sequentielle vorw rts verkettete sortierte Listen verwendet Weil das Paket zur Listenverwaltung nur mit konventionellen Strings nach der C Konvention arbeitet m ssen die Daten in Textform vorliegen Ursache daf r ist da Daten im DTA z B die Uhrzeit Bytes mit dem Wert 0 enthalten k nnten was gleichzeitig String Ende bedeutet Au erdem lassen sich die Dateieigenschaften in Textform einfacher vergleichen Abb 4 4 Abbildung 4 4 Aufbau Textform Datei Verzeichniseintrag bei ChkState Die externe Referenzdatei ebenfalls sortiert ist zweistufig in Verzeichnisliste und Dateiliste organisiert um anderen Programmen den schnellen und einfachen Zugriff zu erm glichen Jeder Verzeichniseintrag Format struct T_SUBDIR enth lt Angaben ber den ersten und letzten zugeh rigen Dateieintrag Format struct T_FILE in der Dateiliste s a get_ref in A 4 Alle Datens tze haben eine feste L nge und Auftei lung damit der Datensatz und einzelne Felder direkt adressierbar sind 162 KAPITEL 4 ENTWICKLUNG DER SYSTEMPROGRAMME
225. cht freigegeben Riickgabeparameter keine keine Riickkehr Tabelle A 7 Terminate and Stay Resident INT 2116 Funktion 3116 264 ANHANG A SOFTWARE Funktion Get Interrupt Vector Interrupt 2116 Funktion 3516 void interrupt xgetvect int intr num O Aufrufparameter AH 3516 AL intr_num Interruptnummer Seiteneffekte keine R ckgabeparameter ES BX return FAR Adresse der ISR Tabelle A 8 Get Interrupt Vector INT 2116 Funktion 3516 Funktion Set Current Directory Interrupt 211g Funktion 3B16 int xchdir const char path Aufrufparameter AH 3Bis DS DX path FAR Adresse Pfadname Seiteneffekte Das aktuelle Verzeichnis wird festgelegt R ckgabeparameter CF 0 kein Fehler 1 Fehlercode in AX AX return 0 kein Fehler n Fehlercode Tabelle A 9 Set Current Directory INT 2116 Funktion 3B16 A 3 MSDOS_S LIB 265 Funktion Get Device Information Interrupt 2116 Funktion 4416 Subfunktion 0016 int xisatty int handle Aufrufparameter AH 4416 AL 0016 BX handle Handle Seiteneffekte keine R ckgabeparameter CF 0 Ger teinformation in DX 1 Fehlercode in AX DX return Bit 7 0 Datei 1 Ger t AX return Fehlercode Tabelle A 10 Get Device Information INT 2116 Funktion 4416 Subfunktion 0016 266 ANHANG A SOFTWARE Funktion Get Current Directory Interrupt 2116 Funktion 471g int xgetcurdir int drive char
226. chten vom Server bitftp auf dem Knoten pucc Hilfe anfordern Unter manchen 1Diese ehemalige Adresse des Autors ist nicht mehr g ltig B 2 BESONDERHEITEN UUENCODE 303 Betriebssystemen sind Kommunikationsfunktionen fest vorgesehen s Beispiele Wo dem nicht so ist variiert das genaue Verfahren stark da es eine gro e Anzahl von Mail Programmen gibt Betriebssystem Kommando IBM VM CMS TELL bitftp AT pucc help IBM VM TSO und MVS TRANSMIT pucc bitftp help NOPROLOG VAX VMS SEND bitftp pucc help Beispiel Kommunikation per Nachrichtendatei Erstellen Sie eine Textdatei hier mail die nichts als das Wort help enth lt und schicken Sie diese an bitftp pucc Betriebssystem Kommando IBM VM CMS SENDFILE mail A bitftp AT pucc IBM VM TSO und MVS TRANSMIT pucc bitftp DATASET mail Eine Nachricht l uft i d R ber mehrere Zwischenrechner Ankommende Nach richten werden in eine Warteschlange engl wait queue eingereiht und je nach Bestim mungsort in die entsprechende Ausgangswarteschlange gestellt Wie schnell und wann das erfolgt h ngt von der Netzbelastung und der lokal verfolgten Rechenzentrumspo litik ab Manche Rechner bearbeiten Nachrichten nur in den Nachtstunden wenn die Rechenlast gering ist Das bedeutet da Rechner in anderen Zeitzonen u U zu ande ren Zeiten aktiv sind als die vor oder nachgeordneten Knoten was zu zus tzlichen Verz gerungen f hrt Bei ung nstigen Kombinationen von N
227. chtliche Konsequenzen nach sich ziehen Allerdings steht bei Softwareanomalien einer strafrechtlichen Verfol gung und Beweisf hrung entgegen da fast grunds tzlich der Urheber nicht ermittelt werden kann Dem Programmierer gen gt es an einer f r andere Benutzer erreichba ren Stelle das Manipulationsprogramm zu installieren die weitere Verbreitung erfolgt unbewu t durch ahnungslose Benutzer die das Programm auf Wegen transportieren die der Kontrolle durch Sicherheitssoftware entzogen sind Vor allen Dingen die auf dem Homecomputer und PC Sektor weit verbreitete Praxis der illegalen Weitergabe von Raubkopien macht eine nachtr gliche Feststellung des Infektionsweges unm glich Selbst wenn der Verursacher feststellbar ist entstehen aus Mangel an eindeutigen 1 6 MASSNAHMEN OFFENTLICHER STELLEN 21 Gesetzen Probleme wie sie aus der pr elektrischen Zeit bekannt sind Der Diebstahl von elektrischer Energie konnte nicht betraft werden weil Strom keine fremde be wegliche Sache im Sinne des Gesetzestextes war Gem dem Prinzip nulla poena sine lege keine Strafe ohne Gesetz lag kein Straftatbestand vor nach dem Recht h tte gesprochen werden k nnen W hrend in den USA in neuerer Zeit Gesetze erlassen wurden die sich ganz konkret mit Softwareanomalien befassen ist die Rechtsgebung in Deutschland deutlich hinter den Gegebenheiten zur ck und wird es vermutlich auch noch f r eine ganze Weile bleiben Wie bei allen Hi Tech
228. com die Stapeldatei mit dem Namen autoexec bat falls im Wurzelverzeichnis vorhanden ab Ansonsten wird der Benutzer nach Datum und Uhrzeit gefragt Jetzt steht der PC dem Anwender f r seine Zwecke zur Verf gung 122 KAPITEL 3 SYSTEMPROGRAMMIERUNG UNTER MS DOS Aus der Beschreibung des Urladeprozesses ist ersichtlich da es mehrere Stellen gibt an denen in den Ablauf eingegriffen werden kann e Bootstrap Loader ROM BIOS unver nderlich e Bootblock erster phys Sektor bzw erster log Sektor der aktiven Partition e Systemdateien im Wurzelverzeichnis e config sys im Wurzelverzeichnis e Kommandointerpreter evtl spezifiziert durch shell in config sys e autoexec bat im Wurzelverzeichnis 3 6 Ein und Ausgabe Video Die Ausgabe auf den Bildschirm stellt das wichtigste Mittel dar um mit dem Anwender zu kommunizieren Die IBM PCs sind ber die Jahre hinweg mit verschiedenen Grafikkarten ausgestattet worden Trotz vieler Gemeinsamkeiten w re die Programmie rung recht kompliziert wenn ein Programm mit jeder Karte und jedem Modus zurecht kommen m te Das BIOS trennt den Anwender von der Hardware indem es ber den Interrupt 1016 Video Interrupt Funktionen zur Videoausgabe zur Verf gung stellt Unabh ngig von der Videokarte k nnen bestimmte Modi gesetzt Zeichen und Gra fik ausgegeben sowie der Cursor gesetzt und abgefragt werden Insgesamt bedient der Video Interrupt ber 50 verschiedene Funktionen und Subfu
229. d auf beide Partitions lesend zu Ein Kontrollprogramm das sich in den Interrupt 1316 eingeklinkt hat empf ngt nur Aufrufe f r Festplattenlaufwerk 0 Auswertung der Partitionsdaten Das geschilderte Verhalten wird f r uns zu einem Problem wenn wir z B softwarem ig einen Schreibschutz f r einzelne Partitions und nicht f r ganze Festplatten vort uschen wollen Ein Programm das alle Schreib zugriffe auf Festplatte 0 abblockt verhindert schreibenden Zugriff auf alle Partitions dieses Laufwerks Die Frage ist wie man aus den Aufrufparametern der BIOS Funktion R ckschl sse auf die Partition ziehen kann Die L sung bringt die Auswertung des MBRs der uns bereits in Abschnitt 3 5 3 begegnet ist Dieser enth lt n mlich Informa tionen dar ber welche Sektoren zu welcher Partition geh ren Beim Start von AVWatchP legen wir aus diesem Grund eine Tabelle mit den Par titionsdaten an auf welche die ISR f r den Disk Interrupt bei Aufrufen zur ckgreifen kann Theoretisch k nnte man sich den Platz f r die Partitionstabelle sparen und bei jedem Aufruf die Daten neu von Festplatte lesen doch das kostet Zeit die wir auf diesem Systemlevel nicht haben Die Tabelle enth lt f r jede eingebaute Festplatte ein Verzeichnis in das f r jedes logische Laufwerk Start und Endspur eingetragen sind da zu sp ter mehr Da AVWatchP beim Start nicht bekannt ist wieviele Festplatten mit wievielen Partitions installiert sind mu die Tabelle flexi
230. d der Benutzer entsprechend informiert In beiden Fehlerf llen beh lt decide seinen Wert von 1 bei Ging bis hierher alles glatt wird das Ergebnis des Vergleichs zwischen alter und aktueller Signatur decide zugewiesen Falls die Werte nicht bereinstimmen wird eine entsprechende Nachricht in msg geschrieben decide 1 lese Referenzeintrag fuer Programmdatei if err get_ref object amp file amp f_nr f_subdir f_file 0 berechne aktuelle Signatur sig CRC_START if sig_crc buf BUFSIZE object amp sig 0 vergleiche mit Referenz Signatur if decide sig file sign 0 0 strcpy msg Integrity violated else Ulpdate amp Execute message OxCF Couldn t compute signature err 6 Ist decide kleiner 0 konnte entweder kein Eintrag gefunden oder die Signatur nicht berechnet werden In diesem Fall tritt die Voreinstellung I_DEFAULT f r decide in Kraft decide_old nimmt dabei den alten Wert von decide auf Gleichzeitig wird in msg vermerkt da aufgrund eines Fehlers keine Aussage ber die Integrit t des Programms gemacht werden kann Von einer Fehlermeldung in Klartext wurde aus Platzgr nden abgesehen Ist decide gleich 1 ist der Aufruf zul ssig und die Original ISR wird ausgef hrt Ein Wert von 0 bedeutet da der Aufruf unzul ssig ist if decide_old decide lt 0 decide I_DEFAULT strcpy msg Uncertai
231. d tritt in die Kontroll Isr ein Das Sicherheitsprogramm gibt z B etwas auf eine Logdatei aus und macht dabei selbst wieder von Funktionen des ber wachten Interrupts Gebrauch Erneut wird auf den gleichen Stack umgeschaltet und die Daten des ersten Durchlaufs berschrieben Falls die ISR au erdem bei jedem Durchlauf den berwachten Interrupt aufruft kommt es zu einer Endlosschleife Die angef hrten Schwierigkeiten sind unter dem Begriff Reentrancy Wiederein trittsfestigkeit bekannt Reentrant sind Programme die zur gleichen Zeit mehrfach aufgerufen werden k nnen Besonders bei Multitasking Betriebssystemen l t sich auf 188 KAPITEL 4 ENTWICKLUNG DER SYSTEMPROGRAMME diese Weise Speicher sparen Mehrere Programme k nnen z B eine Unterroutine die nur einmal im Speicher liegen mu gemeinsam zur gleichen Zeit benutzen Wie wird unsere Kontroll ISR reentrant Abhilfe schafft das in_isr Flag das am Anfang der ISR abgefragt wird Ist es gel scht darf die Kontrollroutine der kritische Abschnitt betreten werden und das Flag wird gesetzt Ist das in_isr Flag gesetzt geht die Kontrolle an die alte ISR ohne Kontrolle ber Das ist statthaft weil in die sem Fall nur das Sicherheitsprogramm den Interrupt ausgel st haben kann Annahme Die Kontroll ISR wird nicht durch andere asynchrone Interrupts unterbrochen Beim Verlassen des kritischen Abschnitts wird in_isr wieder gel scht Die L sung Std_INTC Das Interrupt
232. d_path argv 0 chkstate fii f_file make_crc_table POLYNOMIAL Kernst ck von AVWatchl ist die ISR zur Kontrolle der Kernel Aufrufe Im Falle der Funktion 4B Load and Execute wird zun chst der durch das Registerpaar DS DX referenzierte Programmname in den String object umkopiert Dies ist notwendig weil wir mit dem Speichermodell TINY arbeiten und deshalb alle Funktionen die berga be von NEAR Zeigern erwarten Die bergabe eines FAR Zeigers an get_ref w rde im g nstigsten Fall Fehlfunktionen wahrscheinlich aber den Absturz des Programms her vorrufen 4 5 REALISIERUNG DES RESIDENTEN TEILS einfuegen in ISR_21 static char msg 80 static char object 65 struct T_FILE file WORD sig int i int f_nr char far text char decide decide_old char err if ax gt gt 8 0x4B text MAKE_FARPTR ds dx i 0 while object i text 0 i Meldungspuffer Programmname Objekt Referenzeintrag Datei aktuelle Signatur Index in String Nummer des Dateieintrags f NEAR FAR Umsetzung Entscheidungs Flag Status GET_REF Load amp Execute FAR String nach NEAR 209 err h lt fest ob ein passender Eintrag f r das Programm in der Referenzdatei gefunden und gelesen werden konnte Im Erfolgsfall wird die aktuelle Signatur sig f r die Programmdatei ermittelt Falls die Berechnung nicht erfolgen konnte wir
233. da die blo e Namens nderung eines Programms aus einem nicht validierten ein zul ssiges Programm machen kann Ma nahmen Betriebssystemaufrufe zum Programmstart werden abgefangen und der Programmname bez glich des Berechtigung berpr ft Unzul ssige Startver suche werden abgebrochen 2 7 6 Offenes System Wahrung der Integrit t Kontrollpunkt 1 Start von Programmen auf Festplatte 2 7 ALTERNATIVE KONZEPTE 63 Ansatz Kodiert gespeicherte Programme werden beim Start dekodiert Pro gramme und Daten sind beliebig kopierbar Diese alternative Form der sz I sch tzt den Rechner vor der Ausf hrung mani pulierter Programme Jedes Programm wird bei seiner Installation durch Rechenzen trumspersonal verschliisselt Bei geeigneter Wahl des Kodierungsverfahrens ist es prak tisch unm glich ein Programm erfolgreich zu dekodieren Dadurch kann das Programm weder modifiziert Wahrung der Integrit t noch f r den Hausgebrauch kopiert wer den Kopierschutz Die berwachungsfunktion dekodiert das aufgerufene Programm bevor es die Kontrolle und das Originalprogramm an das Betriebssystem bergibt Die se Methode ist insbesondere bei Betriebssystemen ohne Zugriffskontrollen wie MS DOS sinnvoll und erfolgreich einzusetzen und kann theoretisch auf beliebige Dateien aus geweitet werden Es stehen heute bereits Hardwarebausteine zur Verf gung die die Verschl sselung Entschl sselung von gro en Datenmengen in kurzer Zeit bewerks
234. den Turbo Linker lauten in der Reihenfolge Objektdateien Zieldatei Protokolldatei Bibliotheken ggf Dateinamen um Verzeich nis erweitern tlink cs test_rol rol test_rol cs 94 KAPITEL 3 SYSTEMPROGRAMMIERUNG UNTER MS DOS 3 3 Der Aufbau von MS DOS Das Disk Operation System der Firma Microsoft MS DOS ist das Betriebssystem der meisten IBM kompatiblen PCs die alle auf der 8086 Familie von INTEL aufbauen Wie kam es dazu In den 70er Jahren war CP M 80 von Digital Research ein weit verbreitetes Betriebssystem f r Microcomputer auf Basis des 8080 INTEL und Z80 Zilog Diese Prozessoren verf gten ber eine 8 Bit breite Architektur und mit dem Aufkommen des 8086 INTEL entstand Bedarf an einem 16 Bit Betriebssystem Mitte der 70er Jahre entwickelte der Hersteller Seattle Computer Products 86 Dos das CP M in vielerlei Hinsicht sehr hnlich war um die Portierung bestehender Software zu erleichtern 86 DOS war allerdings an Produkte von Seattle Computer Products gebunden und so warteten andere Hersteller auf CP M 86 von Digital Research Unter anderem ben tigte IBM f r seine neue Modellreihe die PCs ein 16 Bit Betriebssystem Die neben anderen Softwareh usern beauftragte Firma Microsoft erwarb die Rechte an 86 DOS f hrte grundlegende nderungen durch und nannte das Produkt MS Dos das 1981 auf den Markt kam IBM stattete seine PCs mit diesem als PC DOS bezeichneten Betriebs system aus das sich schnell gegen CP
235. der bersichtlichkeit weggelassen e Kontrolle von ANSI Sequenzen an den Bildschirm Tastaturtreiber e Hardwarem iger Bootschutz e Pa wortabfrage beim Bootvorgang durch Ger tetreiber e Abschlie en des Computers per Pa wort f r kurze Abwesenheit e Dateiverschl sselung auf Soft und Hardwarebasis 230 KAPITEL 4 ENTWICKLUNG DER SYSTEMPROGRAMME e L schen von Dateien durch berschreiben bis Clustergrenze e Pa wort berpr fung Pr fung der Qualit t e Shells f r die berpr fung von gepackten Programmen Manche dieser Optionen haben nicht unmittelbar mit der Abwehr von Computerviren zu tun sind aber trotzdem n tzlich und unterst tzen die Systemsicherheit ANSI Sequenzen Ein trojanischer Text k nnte ber ANSI Sequenzen Tasten mit Befehlen belegen deren Ausf hrung unerw nschte Effekte nach sich zieht Zur Ab wehr ist die Kontrolle aller Funktionen erforderlich die Zeichen auf den Bildschirm ausgegeben und dazu den ANSI Treiber benutzen Allerdings wurde noch keine Softwa reanomalie dieser Art bekannt CMOS RAM Die Kontrolle des sog CMOS Speichers ist ein nicht unbedingt not wendiges Extra mancher Watcher Der Chip f r die Echtzeituhr den jeder AT enth lt ist in besonders stromsparender CMOS Technologie ausgef hrt Dies erm glicht den kon tinuierlicher Betrieb auch bei ausgeschaltetem Rechner mit Hilfe eines Akkus Der Uh renbaustein besitzt neben den Timerfunktionen einen 64 Byte gro en Speic
236. der Kompilierung auf Festplatte Ein Hauptnachteil dabei ist da eine Liste der dazu validierten Programme angelegt gewartet und gesch tzt werden mu Dazu kommt die Schwierigkeit unter MS DOS von der Anforderung eines Schreibzugriffs auf das aufrufende Programm zu schlie en Mit dieser Technik werden wir uns noch ausgiebig in den folgenden Kapiteln besch ftigen Ma nahmen Alle Kommandos und Funktionen die ausf hrbare Dateien trans portieren schreiben oder umbenennen k nnen sind zu berwachen Je nach anfordern dem Programm Ort der Herkunft Zielort und Dateityp ist die Operation zu verweigern oder zuzulassen 2 7 5 Offenes System Explizite Validierung Kontrollpunkt 1 Start von Programmen auf Festplatte Ansatz Nur Programme die als validiert gekennzeichnet sind k nnen gestartet werden Programme und Daten sind beliebig kopierbar Schutzzone I sch tzt den Rechner vor dem Start verseuchter Programme Wenn ein Programm ausgef hrt werden soll wird zun chst anhand einer Tabelle die Berech tigung dazu gepr ft die vom Systemadministrator vergeben wird Ansonsten ist es m glich beliebige Daten und Programme auf Festplatte zu kopieren daher offen die Menge und Art der Dateien auf Festplatte ist ver nderlich Einen Nachteil dieser Methode stellt die Tabelle der validierten Programme dar die zu erstellen modifizieren und vor unberechtigtem Zugriff zu sch tzen ist Weitere Probleme entstehen dadurch
237. dern von System datum und zeit gegen unbefugte Benutzung gesichert sein s a AVWatchG Zur Kennzeichnung der Operation eigenen sich Subjekt Operation und Objekt Operation sollte nicht nur in Lesen Schreiben Ausf hren etc untergliedert sein sondern genau die Betriebssystemfunktion angeben Unter MS DOS geh ren dazu die Nummern von Interrupt Funktion Subfunktionen oder statt dessen weitere Parameter Add Entry to Logfile add2log f gt einen Logeintrag an die Logdatei f_name an Tab 4 21 Dieser hat die Form struct T_LOG_ENTRY struct T_DATE date struct T_TIME time char subject 65 DWORD func_code char object 65 228 KAPITEL 4 ENTWICKLUNG DER SYSTEMPROGRAMME struct T_DATE int year char day char month struct T_TIME unsigned char minute unsigned char hour unsigned char centi 100stel Sekunden unsigned char second Datum und Zeit werden von add2log aktuell ermittelt und eingesetzt Die Bele gung von func_code sollte so erfolgen da die Operation m glichst genau spezifiziert wird Das Reportprogramm LogRep auf der Begleitdiskette erwartet folgenden Auf bau vom h chstwertigen zum niederstwertigen Byte Interruptnummer je nach ISR Funktion meist in AH Subfunktion meist AL und Subsubfunktion int add2log char f_name char subject DWORD func_code char object struct T_LOG_ENTRY log Logeintrag int handle Handle Logdatei char
238. diglich kommerzielle Nutzung wie z B das Versenden von Werbung ist verboten Dazu sollte man die lokalen Regelungen und Vorschriften beachten Dennoch Wer st ndig hochaufl sende 1 MB Grafik Dateien unzurei chend bekleideter Frauen M nner aus Neuseeland bestellt wird sich auf Dauer bei den Betreibern der Zwischenknoten unbeliebt machen Dies ist kein fiktiver Fall sondern in den USA mittlerweile ein echtes Problem Anhang C Informationen zu MS DOS C 1 Kommandos Interrupts Funktionen 1Unter 08 2 mu chcp f r Real und Protected Mode getrennt gegeben werden Unter 05 2 im Protected Mode entf llt die Angabe der Hauptspeicherbelegung 3Im Protected Mode k nnen mehrere Dateispezifikationen angegeben werden 311 312 ANHANG C INFORMATIONEN ZU MS DOS Befehl Typ Mode Funktion ansi E P Zul ssigkeit ANSI Sequenzen anzeigen ndern append E IR Pfad f r Daten Dateien definieren assign E IR Laufwerk logisch umbenennen attrib E RP Dateiattribute anzeigen andern backup E RP Dateien sichern break I R berwachung ctri Break anzeigen ndern chcp I RP Codepage anzeigen ndern ch dir I RP Aktuelles Verzeichnis anzeigen wechseln chkdsk E RP Daten ber Laufwerk ausgeben cls I RP Bildschirm l schen cmd E RO os 2 Kommandointerpreter starten command E R MS DOS Kommandointerpreter starten comp E RP Dateien miteinander vergleichen copy I RP Dateien kopieren und umben
239. directory Aufrufparameter AH 4716 DL drive Laufwerksnummer 0 aktuell 1 A DS SI directory FAR Adresse 64 Byte Puffer Seiteneffekte Das aktuelle Verzeichnis wird in den Puffer bertragen R ckgabeparameter CF 0 kein Fehler 1 Fehlercode in AX AX return 0 kein Fehler n Fehlercode Tabelle A 11 Get Current Directory INT 2116 Funktion 4716 A 3 MSDOS_S LIB 267 Funktion Release Memory Block Interrupt 2116 Funktion 491g int xfreemem unsigned segx Aufrufparameter AH 4916 ES segx Segmentadresse des freizugebenden Blocks Seiteneffekte Der spezifizierte Speicherblock wird freigegeben R ckgabeparameter CF 0 kein Fehler 1 Fehlercode in AX AX return 0 kein Fehler n Fehlercode Tabelle A 12 Release Memory Block INT 2116 Funktion 4916 Funktion Load and Execute Interrupt 214g Funktion 4B16 Aufrufparameter AH 4B16 AL 0016 laden amp ausf hren 0316 nur laden ES BX FAR Adresse Parameterblock DS DX FAR Adresse Dateiname Seiteneffekte Das spezifizierte Programm wird geladen und ausgef hrt R ckgabeparameter CF 0 kein Fehler 1 Fehlercode in AX AX return 0 kein Fehler n Fehlercode Tabelle A 13 Load and Execute INT 2116 Funktion 4B16 268 ANHANG A SOFTWARE Funktion Find First File und Find Next File Interrupt 2116 Funktionen 4E jg und 4F j int xfindfirst const char filename struct T_DTA dta int
240. dnis aufkommt Die Segmentierung des Speichers ist prinzipiell w nschenswert und f r Mul titaskingsysteme schlicht notwendig Speicherschutzmechanismen lassen sich nur auf diese Weise n mlich ber die Trennung der Adre r ume der einzelnen Programme und von Code Daten und Stack verwirklichen Das Problem im Real Mode ist da die Segmentregister bei gro en Programmen oder bei Zugriffen auf gro e Speicherbereiche st ndig umgeladen werden m ssen weil der Adre raum nicht linear ber 64 kB hinaus durchadressiert werden kann Program me die mehr als jeweils 64 kB Speicher f r Programm und oder Daten ben tigen kommen mit einem Segment allein nicht aus und m ssen daher Code und oder Da tensegment wechseln Abb 3 3 Deshalb spielen die Begriffe NEAR und FAR eine gro e Rolle in der Programmierung der INTEL CPUs Abbildung 3 3 NEAR und FAR Adressierung Beispiel Probleme bei NEAR FAR Aufrufen Ein absoluter Sprung innerhalb eines Segments intrasegmental ben tigt nur die An gabe des Ziel Offsets also eines Wortes F r einen Sprung in ein anderes Segment intersegmental sind zwei Worte n mlich Segment und Offset notwendig Beim Auf ruf eines Unterprogramms wird die R cksprungadresse Adresse des dem Aufruf folgenden Befehls auf dem Stack hinterlegt um nach Ablauf des Unterprogramms mit der Abarbeitung des Hauptprogramms fortfahren zu k nnen Je nach NEAR oder FAR Sprung belegt die R cksprungadresse ein oder zw
241. dressierungsarten zur Verf gung die bei Operationen Quelle und Ziel spezifizieren Diese sollen zun chst einmal vorgestellt werden um bei der sp teren Programmierung von in Assembler geschriebenen Programmodulen Verwendung zu finden Einen guten Teil dieses Ab schnitts macht die Problematik der NEAR FAR Adressierung aus die sich wie ein roter Faden ein rotes Tuch durch die Programmierung der INTEL CPUS zieht Erl utert werden m gliche Klippen und ihre Umschiffung sowie die korrekte Verwendung von Befehlen und Deklarationen 3 1 GRUNDLAGEN ASSEMBLER 75 Adressierungsarten Die Prozessorbefehle verlangen entweder keinen einen oder zwei Operanden Bei zwei Operanden ist der eine je nach Befehlstyp ein Register oder eine Konstante Adresse Immediate bzw Absolute Adressierung der andere je nach Modus ebenfalls ein Register oder eine Speicherzelle Zuweisungen von Speicher zelle zu Speicherzelle oder zwischen Segmentregistern sind nicht m glich und erfordern einen Umweg ber z B ein Arbeitsregister Load and Store Architektur Tabelle 3 2 zeigt wie sich die effektive Adresse EA der anzusprechenden Spei cherzelle je nach Adressierungsart berechnet Die ersten beiden Eintr ge stellen keine Adresse dar der Wert der Ausdr cke wird unmittelbar verwendet Die eckigen Klam mern bedeuten Inhalt von Disp steht f r Displacement engl Verr ckung und bezeichnet einen festen Wert der zur Adresse hinzuaddiert w
242. drive end GET_TRACK mbr part i end_combi lt lt 4 234 KAPITEL 4 ENTWICKLUNG DER SYSTEMPROGRAMME mbr part i end_head 1 ldrive inkr log Laufwerksnr if ldrive gt M_DRIVE Limit ueberschritten fprintf stderr More than 10 logical drives gt abort n return 1 F return 0 Zur ck zu im_i_table Nach Ermittlung der Partitionsdaten wird die Liste der Partitionsrechte p_rights 1st zeilenweise gelesen und analog zu compile_f_rights konvertiert Teil 2 Partitionsrechte lesen und konvertieren if in fopen source r NULL fprintf stderr Couldn t open partition rights file n return 1 while fscanf in 2s 16s drive rights_str 2 Plausibilitaetspruefung 12_drive tolower drive 0 a if 0 gt 12_drive 12_drive gt l_drive fprintf stderr Illegal drive specification c n A 12_drive else konvertiere Rechte in Eintrag i_table part 12_drive rights tokenise rights_str rwfbm fclose in Ein Aufruf von intercom fragt die FAR Adresse der Partitionstabelle innerhalb von AVWatchP ab Falls der Watcher korrekt antwortet kopiert im_i_table die Tabelle in das residente Programm bestimmte Adresse der Partitionstabelle in AVWatch msg prg_id p msg pwd PWD f_ptr BYTE far amp msg if intercom IM_I_TABLE void far amp f_ptr am
243. dung 1 1 Aktivierung und Residenz von Viren Single Multiple Infector Diese Unterscheidung erfolgt je nachdem ob ein Vi rus pro Infektionsvorgang nur ein oder gleich mehrere Programme infiziert Die meisten Viren sind vom Single Infector Typ weil die Infektion mehrerer Programme hinter einander evtl vom Benutzer wahrnehmbare Verz gerungen und Diskettenoperationen verursacht Infektions Manipulations Trigger Viele besonders die moderneren So phisticated engl raffiniert Viruses beschr nken sich aus den unterschiedlichsten Gr nden in ihrer Verbreitungs und Manipulationst tigkeit M gliche Motive sind e m glichst weite Verbreitung langsame Verbreitung und unaufl llige subtile Manipulationen oder sp te Ausl sung der Schadensfunktion schleichende Infektion schnelle Verbreitung sofortiger Schaden e Vort uschen eines m glichst schwer lokalisierbaren und identifizierbaren Fehlers sporadische simulierte Tippfehler Fehler bei Daten bertragung zu und von Pe ripherieger ten etc e Schadensausl sung an einem bestimmten Datum z B Jahrestage politischer Er eignisse Verschiedene gleichzeitig vorhandene Zust nde aktivieren einen Trigger engl Abzug Ausl ser der die Verbreitungs oder die Manipulationsfunktion ausl st H ufig wer den Systemdatum und zeit Dateidatum zeit l nge und inhalt sowie bestimmte Freignisse wie Interrupts und Tastatureingaben f r diesen Zweck herangezogen
244. e Definitionen Makros symbolische Konstanten und Typdefinitionen einfache Typen und structs erscheinen in Gro buchstaben e Typdefinitionen sind durch den Anfang T_ gekennzeichnet e Symbolische Konstanten die f r Betriebsarten stehen beginnen mit einem Kenn buchstaben f r die Funktion und M_ f r Modus z B CM_DOUBLE Funktion clean Modus remove double spaces hnliches gilt f r R ckgabewerte die mit R_ gekennzeichnet sind e Jeder Anweisungsblock ist ob notwendig oder nicht in eingefa t wird durch ein Semikolon beendet und um zwei Leerzeichen einger ckt e Die Dokumentation der Quelltexte auf Diskette erfolgt in englischer Sprache weil Kommentare knapper und pr gnanter erfolgen k nnen und viele Fachtermini sowieso aus dem Angels chsischen stammen gt gt zeigt an da an dieser Stelle Programmcode einzuf gen ist 3 1 Grundlagen Assembler 3 1 1 Die INTEL Prozessorfamilie Alle IBM kompatiblen PCs sind mit Prozessoren der INTEL 80 86 Serie ausger stet Die erste PC Generation die xTs verwendeten den 8086 oder 8088 Prozessor die sich nur durch die unterschiedliche Breite des Datenbusses unterscheiden Der 16 Bit Datenbus des 8086 machte ihn 20 schneller als den 8088 mit seinem 8 Bit Bus Beide CPUs 3 1 GRUNDLAGEN ASSEMBLER 69 verf gen ber einen 20 Bit breiten Adre bus k nnen also 27 1 MB Speicher adres sieren Die mit den Prozessoren 8018
245. e 0 eout_file 0 gt gt oeffne alle Dateien falls eine Referenzdatei fehlt lt lt gt gt oeffne statt dessen NUL Datei falls Eingabe lt lt gt gt IN_SUBDIR chkstate sui OUT_SUBDIR chkstate suo lt lt gt gt IN_FILE chkstate fii OUT_FILE chkstate fio lt lt 6Subdirectory File input 164 KAPITEL 4 ENTWICKLUNG DER SYSTEMPROGRAMME lade Auswahlliste add_path argv 0 chkstate lst f_spec if load_list f_spec amp list_anchor fprintf stderr Couldn t load selection list n return 6 make_crc_table POLYNOMIAL reserviere Pufferspeicher fuer CRC Berechnung if buf BYTE malloc BUF_SIZE NULL return 7 return 0 Abbildung 4 5 Ein Ausgabe ChkState Lesen der aktuellen Daten Wir werden uns zun chst mit einigen Support funktionen besch ftigen um die Beschreibung des Hauptteils bersichtlich zu halten Die Routinen add_subdir und add_file werden von der Funktion scan_dir aufge rufen Beide f gen den Namen des Verzeichnisses bzw der Datei und den sonstigen Inhalt des DTA in Textform in die entsprechende Liste ein Da die Parameterliste der Bearbeitungsfunktionen durch die Deklaration von scan_dir bereits vorgegeben ist sind die Listen Anker global definiert eine Methode die sonst nicht zu empfehlen ist Zwischen der Bearbeitung eines Verzeichnisses und einer Datei bestehen ge ringf gige Unterschiede Verzeichnisse h
246. e r NULL fprintf stderr file not found n return 1 F while c fgetc in EOF fputc c stdout Felge in return 0 Fi type verwendet die C Funktion fopen zum ffnen der Datei fgetc um aus der Datei ein Zeichen zu lesen und fclose um die Datei zu schlie en Der Begriff Datei ist sehr abstrakt und sagt nichts ber Ger t Speichermedium und Zugriffsverfahren aus Die Eingabe kann z B von Diskette Harddisk oder ber reservierte Dateinamen von der seriellen Schnittstelle com oder Tastatur con erfolgen 3 3 2 DOS Kernel Interruptebene I Das Kernel ist die h chste Abstraktionsebene unter MS DOS Es realisiert Dateifunktio nen auf blockorientierten Ger ten die Ein Ausgabe mit seriellen Ger ten die inter ne Speicherverwaltung sowie das Laden und Starten von Programmen Dienste werden ber Softwareinterrupts und Parameter bergabe via Register aufgerufen Das Kernel greift selbst wieder auf primitivere Teile des Betriebssystems zur ck Dazu z hlen die Ger tetreiber f r die Arbeit mit seriellen und blockorientierten Ger ten und Funktio nen des BIOS Durch das Kernel wird der Benutzer von den Niederungen der Hardware getrennt und mu sich beispielsweise nicht darum k mmern ob er Daten auf Disket te Harddisk Drucker oder ber ein Netzwerk ausgibt Er kann jedesmal die gleichen Funktionsaufrufe verwenden die Umsetzung und Anpassung nimmt das Betriebssystem vor
247. e Modus Bestimmung Subjekt Die Kombination der Aufrufe von get_owner_mcb und get_mcb_name f llt subject mit dem Namen des aufrufenden Programms rights 0 kein Eintrag gt kein Log if n_set lt M_SET Eintrag gefunden bestimme Subjekt aufrufendes Programm decide 1 if get_owner_mcb ret_adr amp mcb_ptr OxFFFF get_mcb_name mcb_ptr subject Dabei ergeben sich einige durch das Betriebssystem verursachte Probleme MS DOS wei intern nicht welches Programm es gerade ausf hrt Deshalb m ssen wir umst nd lich ber R cksprungadresse MCB Kette und Environment den Aufrufer einer Funktion bestimmen Leider gibt es au erdem noch Programme die ihr Environment manipu lieren und damit die Ermittlung des Programmnamens erschweren oder verhindern 224 KAPITEL 4 ENTWICKLUNG DER SYSTEMPROGRAMME Bei command com beispielsweise ergibt die Feststellung des Programmnamens stets command com d h ohne Laufwerk und Unterverzeichnis Eine Normalisierung wird des halb generell nicht durchgef hrt da dies zu falschen Schl ssen f hren k nnte Fatal wird die Situation bei Programmen die an MS DOS komplett vorbeiwirt schaften Z B lagert der alternative und gut gelungene Kommandointerpreter 4dos Teile des Programmcodes in den Erweiterungsspeicher aus Zur Ausf hrung einer Funk tion wird der Programmcode oder Teile davon in den normalen Speicher zur ckver lagert allerdings ohne da dazu konventio
248. e heute gebr uch liche Verschl sselung des MAC wird im folgenden Text vorgestellt Asymmetrische Verfahren Dies sind Verschl sselungsverfahren die bei Ver und Entschl sselung mit unterschiedlichen Schl sseln arbeiten Ein Schl ssel der sog Public Key darf und kann jedermann bekannt sein und wird z B in einer Art Te lefonbuch ver ffentlicht Der andere Schl ssel der Private Key wird wie beim sym metrischen Verfahren geheimgehalten Dadurch kann entweder genau eine Person die Nachricht verschl sseln und alle anderen sie lesen oder jeder kann sie verschl sseln aber nur einer wieder entschl sseln Die erste Methode eignet sich dazu sicher den Sender einer Nachricht zu iden tifizieren Nur der Sender der Nachricht kann mit seinem Private Key die Nachricht verschl sselt haben wenn die Entschl sselung mit seinem Public Key erfolgreich war Auf diese Weise l t sich eine Nachricht Authentifizieren auch die Integrit t ist gew hr leistet Dieser Modus eignet sich f r den Schutz vor Manipulationen so auch vor Com puterviren Beim Versand von Programmen z B ber ein Computernetz schl gt dieses Verfahren zwei Fliegen mit einer Klappe Zum einen ist die Herkunft verifizierbar und zum anderen die bereinstimmung mit dem Original gew hrleistet Bei der zweiten Methode ist zwar nicht sicher von wem die Nachricht stammt aber kein anderer au er dem Inhaber des passenden Private Key kann sie lesen Auf diese Weise ist die Vertra
249. e m glichen Konsequenzen Unwiederbringliche Zerst rung von Daten und Programmen evtl Formatierung der Festplatte Verlust an Zeit und Geld und viele andere unangenehme Dinge mehr Die Benutzer sehen dann schnell ein warum ein Rechenzentrum besonders gesch tzt werden mu 2 3 MS DOS und andere Betriebssysteme Die folgenden beiden Abschnitte behandeln und vergleichen die Sicherheit von MS DOS und anderen Betriebssystemen Zu unterscheiden ist zwischen der inneren Sicherheit die vom Betriebssystem und der verwendeten Hardware geboten wird und der u eren 2 3 MS DOS UND ANDERE BETRIEBSSYSTEME 39 Sicherheit die von organisatorischen Ma nahmen und von der Art des Rechnerbetriebs abh ngt F r jeden Sicherheitsaspekt wird dessen Bedeutung f r den Schutz vor oder die Beg nstigung von Softwareanomalien untersucht 2 3 1 Innere Sicherheit Zugriffskontrolle F r Gro rechner konzipierte Betriebssysteme wie UNIX AT amp T VMS DEC und MVS IBM verf gen ber Zugriffskontrollsysteme auf Datei und Verzeichnisebene Durch sie wird festgelegt welcher Benutzer Subjekt welche Operationen mit welchen Objekten durchf hren darf Operation Objekt Kombinationen sind z B das Lesen einer Datei Ver ndern des Datums Formatieren eines Datentr gers Umbenennen eines Programms usw MS DOS verf gt wie alle lteren Betriebssysteme f r APCs ber keinerlei Zugriffs kontrollen Dem Benutzer stehen alle Operationen die MS DOS berhaupt
250. eal dient zur automatischen Selbst berpr fung von Programmen beim Start ChkState Der Dateibestand wird von dem Programm ChkState berwacht das gleichzeitig die Referenzliste f r AVWatchI liefert Festgehalten werden die Struktur des Dateisystems der Bestand an Dateien Dateiattribute und stellvertretend ber eine Signatur der Dateiinhalt Regelm ig angewendet liefert ChkState Informationen ber Ver nderungen im Dateisystem die dem Benutzer als Report zur Beurteilung vorgelegt werden Schwachpunkt Stealth Viren Aktive Viren die Interruptaufrufe abfangen um den korrekten Zustand einer Datei oder des System vorzuspiegeln lassen sich von Programmen die Dateien untersuchen nicht entdecken In diese Kategorie fallen alle Scanner und Checker wobei ChkState zur letzten Gruppe geh rt Das einzige worauf sich ein Schutzprogramm bei aktiviertem Stealth Virus noch verlassen kann sind Zu griffe auf den Arbeitsspeicher Aus diesem Grund berpr fen gute Scanprogramme vor dem Suchlauf ob sich ein Virus im Speicher installiert hat Alternativ dazu gen gt es vor dem Start des Pr fprogramms den Rechner auszuschalten und von einer sauberen Diskette urzuladen damit ist der erste Schwachpunkt behoben AVCopy Das Kopierprogramm AVCopy verhindert da verseuchte Programme berhaupt auf den Rechner gelangen Dabei wird nur zwischen Text und anderen Daten unterschieden d h AVCopy ist nicht auf bestimmte Softwareanomalien zurecht
251. ear Retten von BP 3 2 GRUNDLAGEN HOCHSPRACHEN 87 mov ax word ptr BP 4 AX x add ax word ptr BP 6 AX y mov bx word ptr BP 8 BX z amp c mov word ptr bx ax ez c AX Wiederherstellen BP return _add_cbr endp memory model LARGE gekuerzt _add_cbr proc far Retten von BP mov ax word ptr BP 6 alle Parameter sind um ein add ax word ptr BP 8 Wort nach oben verschoben bzw BP um ein Wort nach unten les bx dword ptr BP 10 far Adresse von c laden mov word ptr es bx ax Ergebnis an z c zuweisen Wiederherstellen BP return _add_cbr endp F r selbstentwickelte Programmodule in Assembler ist die Kenntnis dieser Fein heiten unbedingt notwendig weil sonst das resultierende Programm bestenfalls nicht wie erw nscht funktioniert normalerweise wohl aber abst rzt Ein Beispiel f r ein ein faches hausgemachtes Assemblermodul werden wir im n chsten Abschnitt erarbeiten R ckgabe von Funktionswerten Funktionen die einen einzelnen Wert zu r ckgeben tun dies ber das Register AX oder das Registerpaar DS AX wobei die Be legung je nach Typ des Wertes differiert Tab 3 5 Der Inhalt nicht verwendeter Teile der Register ist undefiniert C Typ L nge Register char BYTE AL short int unsigned enum NEAR Zeiger WORD AX long FAR Zeiger DWORD DS AX Tabelle 3 5 Werter ckgabe bei C Funktionen Flie kommazahlen werden ber das oberste El
252. earbeitung an Dazu kommen Aufrufe f r die Ein Ausgabe auf best Ger ten die interne Spei cherverwaltung und Funktionen f r den Zugriff auf Systemdaten wie Datum und Zeit Interruptvektoren und andere mehr Es erscheint sinnvoll die F lle der Systemaufrufe hinsichtlich der Arbeitsweise von Computerviren in bersichtliche funktionale Gruppen zu unterteilen Das Ergebnis unserer Auslese ist in Tabelle 4 2 wiedergegeben Am wichtigsten ist der Aufruf zum Starten von Programmen weil dadurch potentiell ein Virus aktiviert wird Hier greifen Schutzma nahmen wie berpr fung der Integrit t und kontrollier te Isolation an Die zweite Gruppe enth lt Funktionen die sich ganz konkret mit der Manipulation von Dateien besch ftigen Besonders interessant sind Zugriffe auf Pro grammdateien die auf dieser Ebene im Gegensatz zum BIOS Level einfach zu erkennen sind Normalerweise schreiben nur Compiler und Kopierprogramme ausf hrbare Datei en Eine Warnmeldung zur Beurteilung durch den Anwender oder eine automatische berpr fung w rde Programme gegen illegale Manipulationen sch tzen Die anderen Funktionsgruppen befassen sich mit sekund ren Effekten wie Tar nung und Sch digung Manipulationen an Dateiname und attributen k nnten ihre Ursache in versuchter T uschung des Schutzprogramms Tarnung oder in Vorberei tungen zur Dateiver nderung Infektion Sch digung haben Infect on Open sowie Stealth Viren m ssen sich resident installier
253. ebenfalls mit diesem Ansatz besch ftigt doch dazu sp ter mehr Dieses Prinzip erlaubt die Entdeckung unbekannter Viren und Trojaner hat aber zwei gravie rende Nachteile Zum einen mu eine Flut von Hinweisen korrekt interpretiert werden und zum anderen versagt die Suche wenn die Information kodiert vorliegt und das ist bei modernen Viren durchweg der Fall 50 KAPITEL 2 THEORIE DER ABWEHR 2 5 3 Schutz der Integrit t Checker V Test Def Checker Ein Checker engl to check kontrollieren berpr ft Dateieigen schaften oder daraus abgeleitete Merkmale anhand einer Vergleichsliste auf Ver nderungen Funktion Die dritte Abwehrm glichkeit besteht im Schutz der Integrit t lat Unversehrtheit von Programmen und Daten Die zugrundeliegende Theorie besagt folgendes 1 Jedes Virus mu um ein Programm infizieren zu k nnen dieses ver ndern 2 Jede Ver nderung von Dateien ist detektierbar In einem sicheren System engl trusted system in dem kein Virus irgendwelche Informationskan le kontrolliert wird demnach jeder Virenbefall durch eine detektier bare Ver nderung des infizierten Programms gekennzeichnet Einfach w re die Dupli zierung aller Programme auf ein schreibgesch tztes Medium um Anhand der Origi nalprogramme sog Spiegeldateien oder Mirror Files die Arbeitskopien berpr fen zu k nnen Der daf r ben tigte Speicherplatz ist ebenso gro wie f r die zu berpr fenden Programme selbst und dami
254. ede Bibliothek enth lt eine Reihe von Objektdateien die Funktionen und Va riablen zur Verf gung stellen oder und selbst wieder ben tigen Die Deklaration eines Symbols als public engl ffentlich stellt dieses anderen Modulen zur Verf gung Ben tigte Symbole sind mit dem Schl sselwort extern versehen Es handelt sich hier bei um sog offene Bez ge Aufgabe eines Linkers ist es nun fehlende Bez ge zwischen Modulen herzustellen Dazu wird dem Linker eine Liste von Einzelmodulen und Biblio teksdateien bergeben die dieser zu einem lauff higen Programm verbinden soll Die Reihenfolge der Module bleibt dabei erhalten und ist u U von wesentlicher Bedeutung f r die korrekte Funktion des Programms Startmodul Unter Turbo C enth lt das erste Modul jedes Programms den Startup Code der je nach Speichermodell c t obj bis c h obj hei t Hier wer den Speicherreservierung f r Stack und Heapbereich vorgenommen diverse Variablen Speicherbereiche Emulatoren und Bildschirmadapter initialisiert die Programmgr e an die Notwendigkeiten angepa t Register vorbelegt und schlie lich das Hauptpro gramm _main wie ein Unterprogramm aufgerufen Nach Ende des Hauptprogramms erfolgt der R cksprung zum Startup Code wo eine Nachbehandlung und der Aussprung zum aufrufenden Programm i d R command com erfolgt Hinweis Der C Compiler stellt intern jedem im Quelltext benutzten Symbol automatisch einen Unterstrich vor an Die f r den A
255. eforderte Rechte WORD 1_track lineare Spuradresse BYTE func Funktionsnummer BYTE p_drive phys Laufwerksnummer BYTE 1_drive log Laufwerksnummer char decide Entscheidungs Flag nicht ueberwachte Funktion func ax gt gt 8 if req req_list func 0 func gt 0x0B return OxFFFF Unterliegt die Funktion der Kontrolle wird zun chst die physikalische Laufwerks nummer d_drive festgestellt Diese ist noch in die korrekte Eintragsnummer f r die Partitionstabelle umzuwandeln Die Nummern der Diskettenlaufwerke k nnen direkt bernommen werden Zugriffe auf Festplattenlaufwerke sind daran zu erkennen da Bit 7 der Laufwerksnummer in DX gesetzt ist Durch Ausmaskieren von Bit 7 und Ad dition von zwei Anzahl der Eintr ge f r Floppylaufwerke erh lt man Nummer des Festplatteneintrags berechne phys Laufwerksnummer p_drive dx amp 0x007F if dx amp 0x0080 Festplatte p_drive 2 wg 2 Floppy Eintraegen d_drive dient als Index in das Array start_part das die Nummer des ersten lo gischen Laufwerks 1_drive liefert 1_drive wird so lange erh ht bis die aus Zylinder und Kopf Nummer ermittelte lineare Spuradresse 1_track zwischen Start und End spur eines Tabelleneintrags liegt berechne log Laufwerksnummer l_drive i_table start_part p_drive l_track GET_TRACK cx lt lt 4 dx gt gt 8 decide TRUE 4 5
256. egungen wie im vorherigen Abschnitt Eine ganz andere Sache sind mutierende Viren die sich selbst ver ndern um ihre Entdeckung durch Scanner zu behindern Das Whale Virus spickt die Dekodierse quenz f r den Hauptcode mit unn tzen Befehlen ndert soweit das m glich ist die Reihenfolge der Kommandos und benutzt verschiedene Schl ssel Auf diese Weise wird erreicht da sich zwei Whale Exemplare u U in keinem Byte gleichen 55 Eignen sich Computerviren f r das Milit r Praktisch alles findet An wendung auf milit rischem Gebiet fast nichts k nnte nicht auch f r Zwecke der Kriegsf hrung mi braucht werden Bestimmte Anforderungen an eine Waffe existie ren nicht sie sollte nur m glichst dem Gegner und nicht der eigenen Truppe schaden Warum dann nicht Computerviren verwenden die sich doch so gut f r die Vernichtung von Daten und Rechenkapazit t eignen Diese Frage stellte das amerikanische Vertei digungsministerium DoD sich und jedem Patrioten der meint zur Entwicklung eines Kampf Virus beitragen zu k nnen In der mit US 50000 dotierten Ausschreibung K rzel cv ECM wird vor allen Dingen nach einer Methode gesucht um das Vi rus drahtlos in feindliche Systeme zu implantieren Dem Gewinner stehen US 500000 zur Entwicklung zur Verf gung Dazu die Stimme eines Diskussionsteilnehmers auf VIRUS L I don t think they could be used as a battlefield weapon Quick Lieutenant fire that Brain viru
257. ei subject Subjekt aufrufendes Programm func_code Operation Interruptnummer Funktion Subfunktion Sub subfunktion object Objekt Dateiname Seiteneffekte An die Logdatei wird ein Eintrag angeh ngt Riickgabewert 0 kein Fehler lt 0 Fehler Tabelle 4 21 add2log Fiige Eintrag an Logdatei an de Child Inherits Handle Das auf der Diskette enthaltene Programm LogRep ist ein Beispiel fiir eine einfache Textausgabe der Logdatei ohne weitere Extras Ein komfortableres Reportprogramm sollte die Suche nach bestimmten Zeitr u men Operationen Parametern etc unterstiitzen damit das Datenmaterial auf sicher heitskritische relevante Vorg nge reduziert werden kann Praktisch ist ein Stapelpro gramm das z B automatisch am Ende des Tages alle Logdateien auf suspekte Mani pulationen untersucht und einen Sicherheitsbericht zusammenstellt 4 5 9 M gliche Erweiterungen Schaut man sich bei kommerzieller Software zur Abwehr von Computerviren um kann man eine Reihe Funktionen entdecken die wir noch nicht angesprochen haben und um deren Relevanz man sich streiten kann Der Autor hat insgesamt mehr als 25 Antivi rusprogramme die ber den Server trickle dsOrus1i bitnet s a B 4 TRICKLE Server vertrieben wurden oder werden auf funktionale Eigenschaften untersucht Die folgende Aufstellung kann uns vielleicht noch einen Hinweis auf sinnvolle Erweiterun gen geben Schon angesprochene Konzepte wurden aus Gr nden
258. ei Worte auf dem Stack Auf die Verwendung des korrekten ret Befehls zur Beendigung des Unterprogramms der in den Versionen f r NEAR retn und FAR retf zu haben ist ist unbedingt zu achten 78 KAPITEL 3 SYSTEMPROGRAMMIERUNG UNTER MS DOS Ein Riicksprung mit dem falschen Exemplar hat fatale Folgen Entweder endet der Riicksprung im Chaos und oder der Stack wird verwiistet Problem Adre vergleich Das Verfahren der Speichersegmentierung hat wei terhin den unangenehmen Nachteil da Adressen nicht ohne weiteres miteinander ver gleichbar sind wie das Beispiel in Tab 3 3 zeigt Segment Offset lineare Adresse Segment Offset 001015 100016 0110016 011016 00006 008816 088016 0110016 011016 000016 123416 567816 179B816 179B16 000816 OFBC16 7DF816 179B816 179B16 000816 Tabelle 3 3 Probleme beim Adre vergleich Obwohl Segment und Offset jeweils voneinander verschieden sind beschreiben die Paare dennoch die gleiche lineare Adresse Einen Ausweg bietet die Normalisierung der linearen Adresse an bei der die Aufteilung zwischen Segment und Offset so vorge nommen wird da der Offset kleiner gleich 151 000F16 ist Anders gesagt werden Segment und Offset in die zugeh rige lineare Adresse umgewandelt und anschlie end die niederwertigen vier Bits als Offset und die h herwertigen 16 Bits als Segmentadresse verwendet Tab 3 3 letzte beide Spalten Turbo C bietet als Ausweg den Zeiger Typ huge an bei dem der Zeiger au
259. eiber erh lt vom Kernel Anweisungen zum Lesen logischer Sektoren Dieser rechnet mit seinem Wissen ber die Organisation des Datentr gers die lineare Sekto radresse in eine Positionsangabe mit Zylinder Kopf und Sektor um Im Fall des im ROM BIOS eingebauten Treibers erfolgt der eigentliche Zugriff ber Funktionen des BI OS 3 3 4 BIOS Interruptebene II Das BIOS Basic Input Output System Grundlegendes Ein Ausgabe System stellt die Schnittstelle zwischen Hard und Software dar zu der Anwenderprogramme das Kernel sowie die Ger tetreiber geh ren Es besteht aus zwei Teilen dem ROM BIOS das sofort nach dem Einschalten benutzt werden kann und dem RAM BIOS das im Laufe des Bootprozesses geladen wird Der ROM Teil stellt zusammen mit eingebauten 100 KAPITEL 3 SYSTEMPROGRAMMIERUNG UNTER MS DOS Ger tetreibern elementare Funktionen zur Ein und Ausgabe bereit wie sie u a zum Laden des Betriebssystems von Diskette oder Festplatte notwendig sind Alle Aufrufe des BIOS erfolgen ber Interrupts die durch Software oder ein neuer Aspekt Hardwarebausteine wie z B den Tastaturcontroller ausgel st werden Anwen derprogramme rufen Dienste wie beim Kernel ber verschiedene Interruptnummern auf die ihrerseits evtl noch weiter in Funktionen und Subfunktionen aufgegliedert sind Eine bersicht ber die Gesamtheit der Interrupts vermittelt die Tabelle C 3 im Anhang C 1 Die Besprechung der einzelnen Funktionen w rde leicht ein eigenes
260. eits neu und vergleicht die Ergebnisse miteinander Sind sie voneinander verschie den so wurde entweder die Nachricht nicht vom vermeintlichen Sender aufgegeben oder der Inhalt der Nachricht ver ndert Da bei der elektronischen Unterschrift die Nachricht selbst nicht verschl sselt wird ist die Vertraulichkeit nicht gew hrleistet Falls dies erw nscht ist mu die umst ndliche Prozedur der Schl ssel bermittlung in Kauf genommen werden Asym metrische Verfahren k nnen Vertraulichkeit Integrit t und Authentifikation nicht zur gleichen Zeit bieten falls einer der beiden Schl ssel ffentlich sein soll was den Vorteil dieser Methode ausmacht Anwendung Cohen schl gt in seinem dritten Artikel Models of Practical De fenses Against Computer Viruses 28 ein Betriebssystem vor das den Start von Pro grammen nach folgenden Regeln handhabt S3 P K S C pxk gt S M V k Programs P pi p2 Pn nEl 2 1 Keys K k ka kmy mel 2 2 Checksums S 81 52 50 0EI1 2 3 Transformation C C PxK gt S5 2 4 Moves M m ma msz M4 2 5 Values V v1 Un Vu V Js ES v Si 2 6 secret key kek 2 7 Times T ty to tn neEI V m unmt Vp E P wobei Vu V vi C pi k zum Zeitpunkt t 2 8 tj Yren ty gt t 2 9 Das sieht beeindruckend aus aber was steckt dahinter Fangen wir von oben mit der Definition der Mengen und Operationen an Es existiert eine Menge P mit n Pro
261. elete_list Gebe durch Liste belegten Speicher frei l sche Liste 292 A 45 load_list Lese Textdatei zeilenweise in sortierte Liste ein 293 A 46 select_p Pr fe ob Dateiname in Liste enthalten ist 293 A A7 arg p Suche Kommandozeilenparameter 2 2 22 294 A 48 get_arg Bestimme Index des n ten Kommandozeilenparameters 295 A 49 read_t_rights Lese und kompiliere Transportrechte 296 A 50 get_ref Suche und lese Dateieintrag in Referenzdatei 298 A 51 put_ref Schreibe Dateieintrag in Referenzdatei 298 A 52 get_rights berpr fe Rechtm igkeit einer Operation 300 B 1 Dateiendungen und zugeh rige Pack Entpackprogramme 305 B 2 Befehlsauswahl listserv 2 2 22 Co oo nn 306 B 3 Befehlsauswahl trickle 2 CC Coon nn 307 B 4 Befehlsauswahl netserv 2 2 22 0 000000000000 00 8 309 B 5 Mailboxadressen 2 2 2 a 309 C 1 Kommandos unter MS Dos os 2 Tell 1 2 2 22 312 C 2 Kommandos unter MS Dos os 2 Teil 2 22 313 C33 Interrupts Teil Wy wu fete aie sere ana ee eS eS Saal ee 315 C4 Interrupts Teil 2 2 2 en ls aa ea ae eee a haare 316 C 5 Funktionen BIOS Disk Interrupt 2 2 2 2 on nn nn 317 C 6 Funktionen Dos Funktions Interrupt Teill 22222220 318 C 7 Funktionen Dos Funktions Interrupt Teil 2 22 222220 319 C 8 Funktionen Dos Funktions Interrupt Teil3 2 222222 320 C 9 Funktionen DOS Funk
262. ement des Stackregisters des ma thematischen Coprozessors oder seiner Softwareemulation zur ckgegeben Strukturen einer L nge von mehr als vier Bytes werden als Zeiger auf diese zur ckgeliefert bis zwei Bytes wird direkt das AX Register bis vier Bytes das Registerpaar DX AX verwendet Dimensionierung des Stack Wichtig ist die korrekte Dimensionierung des Stack Bereichs Er mu gro genug sein um lokale Variablen bergabeparameter und R cksprungadressen aufnehmen zu k nnen und gleichzeitig m glichst klein sein damit dem Hauptprogramm gen gend Speicher zur Verf gung steht Rekursive Funktionen die sich selbst vielleicht hundertfach aufrufen verdienen besondere Beachtung Bei je dem Eintritt in die Routine werden lokale Variablen angelegt und Parameter bergeben Bei einem unkontrollierten Stack berlauf werden u U Teile des Programms und der Daten berschrieben oder das Programm berschreibt Teile des Stack Beides kann zu einem Programmabsturz f hren 88 KAPITEL 3 SYSTEMPROGRAMMIERUNG UNTER MS DOS 3 2 4 Der Bindeproze Programmodule Programme bestehen oft nicht nur aus einem einzigen Block son dern aus verschiedenen Modulen Diese k nnen als Quelltext mit include oder als bereits bersetzte Objektdateien eingebunden werden Diese tragen die Endung obj und stellen das Endprodukt eines Kompilierungslaufs dar Das Bindeprogramm engl linker bindet die einzelnen Objektdateien zu einem ablauff higen Programm zusam me
263. emnach hat das Virus zwei prinzipielle M glichkeiten einen MS DOS Rechner zu befallen 1 Durch Infektion von Programmdateien oder Daten die durch Programme in terpretiert werden fertige Kompilate Zwischenprodukte wie Objektdateien und Bibliotheken Quelltexte 2 Durch Infektion von besonderen Programmen Bootsektor einer Diskette oder Festplatte Fast alle modernen Viren verwenden die erste Methode weil alle Programmda teien als Infektionstr ger nutzbar sind und deshalb die Vermehrung auf breiter Basis erfolgen kann Dateien werden auf Speichermedien wie Disketten magnetisch optisch 56 KAPITEL 2 THEORIE DER ABWEHR oder per DF Datenfern bertragung transportiert Durch den gerade auf dem PC Sektor weit verbreiteten Austausch von Programmen bes Raubkopien Share und Freeware werden Infektionen schnell verbreitet Bei der zweiten Methode ist das Virus auf den Austausch von Disketten oder Wechselplatten und das Urladen von diesen angewiesen Da das vergleichsweise selten geschieht wenn sich eine Festplatte im System befindet verbreiten sich solche Viren nur in geringen Raten Dennoch waren Urlader Viren die ersten Computerviren berhaupt weil das Prinzip einfach zu realisieren ist und in der Anfangszeit der PCs Festplatten nicht standardm ig zum System geh rten Trotz der angef hrten Hemmnisse ist zu beobachten da auch in neuerer Zeit moderne Bootviren mit Stealth Eigenschaften immer wieder Rechner verseuchen
264. empor r zum Dateisystem geh ren Der Bestand und Zustand von Dateien auf Festplatte ver ndert sich durch e Kopieren von Dateien von externen auf interne Datentr ger e Eingabe von Daten und Quelltexten per Tastatur e Daten bertragung per DFU und e interne Manipulationen umbenennen ver ndern kompilieren von Dateien Das System kann in Schutzzonen unterschiedlicher Restriktivit t unterteilt wer den die verschieden weit gefa te Sicherheitsbereiche um den Prozessor bilden Je h her die Nummer desto umfassender der Schutz und eingeschr nkter die Manipu lationsm glichkeiten Der Prozessor Schutzzone sz I ist der Ort an dem ein passives gespeichertes und harmloses Virus durch die Ausf hrung eines Programms zu einem aktiven wird das Daten und Hardware bedroht Auszuf hrende Programme die po tentielle Infektionstr ger sind werden vor dem Ablauf kontrolliert sz II beinhaltet Programme auf Festplatte die als sauber gelten Zu diesem Bestand d rfen keine Pro gramme hinzukommen denn dadurch k nnten passive Viren ins System gelangen Un terst tzt wird diese Forderung durch sz III die Programmdateien vor Manipulationen sch tzt Dazu z hlt auch die berwachung von dem Namen nach nicht ausf hrbaren Dateien Diese k nnten immerhin ein getarntes Virus enthalten und durch Umbe nennung ausf hrbar werden In den folgenden Abschnitten wird untersucht welcher Ansatz diesen Schutzzonen zugrunde liegt wie sie realisie
265. en Wer m chte sein Konto bei einer Bank behalten von der bekannt wird da sie Opfer eines Virenangriffs wurde Was sind aufwendig beschaffte geheime Daten noch Wert wenn sie m glicherweise manipuliert und weitergegeben wurden Blo e Mund zu Mund Propaganda kann einem Unternehmen mehr schaden als es ein Virus je vermocht h tte Nicht zuletzt aus diesem Grund d rfte die Dunkelziffer f r Attacken durch Softwareanomalien recht hoch liegen Einige Firmen wie z B die BASF hingegen werben geradezu damit da sie die Zeichen der Zeit erkannt haben und treten mir ihren Schutzaktivit ten an die ffentlichkeit heran Dies ist eine Methode die wahrscheinlich mehr Vertrauen schafft als die vermutlich inkorrekte Behauptung bei uns kann so etwas gar nicht passieren Wenn sich die Manipulation der Daten bei der Untersuchung des verursachen den Programms als irreversibel erweist bleibt nur noch das L schen der fehlerhaften Datensicherung und die Neuerstellung falls diese berhaupt m glich ist Reversible Besch digungen lassen sich nach Analyse der Schadensfunktion wieder r ckg ngig ma chen Dennoch sollte falls m glich das Original von der Sicherheitskopie zur ckgela den werden um m gliche bei der Reparatur gemachte Fehler und das Wiedereinspielen bersehener verseuchter Programme zu vermeiden 1 4 3 Hardware Sch den Viren k nnen nicht nur Daten vernichten sondern auch die Hardware eines Rechners besch digen
266. en denn besserer Schutz ist i d R auch mit mehr Aufwand verbunden So ben tigt der Anwender zu Hause nur einen Warnmechanismus f r dessen Funktionsf higkeit er Sorge tragen wird In einem Betrieb oder Rechenzentrum dage gen ist mit mutwilliger Verseuchung und Arbeit gegen die Schutzsoftware zu rechnen Ein Zwischenfall verursacht meist Kosten die durch Wiederbeschaffung oder Restaurie rung der Daten entstehen Dazwischen liegt z B das Rechenzentrum einer Hochschule in dem das versehentliche Einspielen und Starten von Programmen unterbunden wer den soll Eine berwindung des Schutzsystems hat keine gravierende Folgen stellt aber u U einen Versto gegen die Vorschriften f r die Nutzung der Rechner dar der ent sprechend geahndet werden kann Dieser Gedanke folgt 202a des Strafgesetzbuches der das Aussp hen von Daten nur dann unter Strafe stellt stellen kann wenn der Rechner mit Schutzvorrichtungen ausger stet ist Selbstschutz Ein wichtiger Punkt der besonders ber cksichtigt werden mu ist der Start des W chterprogramms Es m ssen folgende Anforderungen die dem Selbstschutz dienen erf llt sein 1 Sicherer Start Der Startvorgang darf nicht vom Benutzer unterbrochen wer den k nnen wie es z B mit Ctr1 Break m glich ist w hrend die Stapeldatei autoexec bat abgearbeitet wird 138 KAPITEL 4 ENTWICKLUNG DER SYSTEMPROGRAMME 2 Umgehung vermeiden Der Watcher mu als erstes
267. en Form abgelegt um den Aufwand f r die Schreibroutine im residenten Teil m glichst gering zu halten Die Umsetzung in eine verst ndliche Textform erfolgt durch LogRep M gliche Erweiterungen sind Retrieval Funktionen um z B nach be stimmten Operationen in einem bestimmten Zeitraum suchen zu k nnen AVConfig AV System Configuration Die Aufgaben von AVConfig wurden bereits durch die vorangegangen Beschreibungen der anderen Programme definiert Der Vollst ndigkeit halber sei hier noch einmal eine bersicht angegeben e Anf gen Entfernen Programmsiegel f r chk_seal e Einlesen und bertragen der Partitionsdaten und rechte zu AVWatchP e bersetzung der Rechtedatei f_rights raw in die maschinenfreundliche Form f_rights 1st e Deinstallierung von Watchern Dazu kommen zwei kleinere Programme die bereits als Ubungen im Kapitel iiber die Systemprogrammierung entwickelt wurden Diese k nnen als Toolbox fiir den Vi renj ger dienen e Read MCB List ReadMCB Ausgabe der McB Liste mit Angabe des belegten Adre bereichs und des Besitzers F r die Suche nach illegalen speicherresidenten Programmen e Read Partition Information ReadPart Ausgabe der MBRs und PBRs aller Festplattenlaufwerke oder einzelner Diskettenlaufwerke 4 3 PRUFPROGRAMME 145 4 3 Priifprogramme 4 3 1 Check System ChkSys Check System ist das erste unserer konventionellen d h nicht speicherresidenten Programme Es geht um
268. en Infektion oder Manipulation nachweisbar ist Liefert der Checker keinen Hinweis auf eine Ver nderung l t dies zwei Schl sse zu Entweder ist das System virenfrei oder das System ist verseucht und das Virus verh lt sich ruhig In manchen F llen f hrt ein nachtr glich in ein Programm eingebauter Selbsttest zu Schwierigkeiten Manche Programme besitzen die Unart sich selbst zu ver ndern oder werden durch Konfigurationsprogramme manipuliert Ein Selbsttest bringt daher keinen Informationsgewinn in Sachen Sicherheit Andere Programme berpr fen bereits ab Werk ihre Integrit t Diese geht durch das Eintragen der Pr fsumme f r den Selbsttest verloren das Programm verweigert die Arbeit Ganz anders ist die Situation in einem System auf dem ein Virus bereits aktiv ist Wie bei den Watchern s dort kann ein Checker nur das berpr fen was ihm die Be triebssystemfunktionen liefern Stealth Viren besitzen die Eigenschaft den Zugriff auf eine verseuchte Datei abzufangen diese tempor r zu desinfizieren und dann erst weitere Operationen zuzulassen Dadurch erscheint das Programm bei einer berpr fung und aktivem Virus unverseucht eine geradezu paradoxe Situation Wichtig ist deshalb bei allen Ma nahmen gegen Viren da sich zum Zeitpunkt der System berpr fung kein Virus aktiv im Speicher befindet das System also sauber ist Aus eigener Erfahrung Zum guten Schlu noch eine reale Begebenheit die verdeutlichen
269. en Report mit gel schten hinzugekommenen und ver nderten Verzeichnissen und Dateien erstellen Anderungsreport quantitativ und qualitativ Bei der Auswahl des Signaturverfahrens m ssen wir Sicherheit und Geschwindig keit gegeneinander abw gen Pr fsummenverfahren wie simples Aufaddieren und CRC Verfahren sind zwar relativ schnell aber auch leicht zu durchbrechen Viel sicherer sind kryptische Pr fsummen wie sie z B das DES oder MDARSA Verfahren erzeugen Die ser Vorteil wird mit einem erheblich gr eren Zeitaufwand erkauft F r ein Virus gilt allerdings da dieses weder das Signaturverfahren noch die Stelle kennt an der die Vergleichsdaten gespeichert sind AVWatchl ist ein noch zu entwickelnder Watcher der hnlich dem Betriebssystem S3 von Cohen die Integrit t von Programmen vor dem Start berpr ft Dazu ben tigt AVWatchI eine Referenzliste die sicherheitsrelevante Daten wie z B die Pr fsumme ber das Programm enth lt Damit das TSR Programm klein bleibt und schnell auf die Referenzdaten zugreifen kann ist der Aufbau der Referenzliste entsprechend zu gestal ten Allgemein gilt f r den Pr falgorithmus hinsichtlich des Einsatzes in AVWatchI 160 KAPITEL 4 ENTWICKLUNG DER SYSTEMPROGRAMME e Die Pr fsumme mu schnell zu berechnen sein e Der Priifsummenalgorithmus sollte nicht viel Platz verbrauchen e Der Zugriff auf Daten der Referenzliste mu schnell und einfach erfolgen k nnen Somit sind schnelle Implem
270. en oder sie umgehen helfen Die Einschr nkungen sollten aber nicht so weit gehen da quasi ein Zwang ent steht Programme mitzubringen Hier mu ein Kompromi zwischen Gef hrdung des Rechners und des Schutzprogramms durch installierte Programme und dem empfunde nen Zwang verseuchte Programme mitzubringen gefunden werden Vorhandene M glichkeiten aussch pfen MS DOS verf gt ber keine Schutz mechanismen wie sie f r ein wirklich professionelles Betriebssystem wie z B UNIX selbstverst ndlich sind UNIX verlangt vom Benutzer eine Identifikation durch Namen und Pa wort F r den Schutz von einzelnen Dateien und Katalogen werden verschie dene Zugriffsrechte engl read write execute Lesen Schreiben Ausf hren und Benutzergruppen engl user group others Benutzer Gruppe Rest unterschieden Trotzdem h rt man oft da in uUnIx Rechner eingebrochen wurde oder das UNIX gene rell unsicher sei Das h ngt in den meisten F llen aber damit zusammen da die vorhandenen Schutzma nahmen nicht ausgesch pft wurden Paradebeispiel sind triviale Pa w rter die sich mit der meist frei zug nglichen Datei passwd und Computerunterst tzung leicht raten lassen Auch bei der Vergabe von Dateirechten bes Set UID Bit sind Feh ler m glich die Unbefugten die Erlangung des Superuser Status erm glichen Bekannte aber nicht beseitigte Bugs sind eine weitere Gefahrenquelle Keine der drei Schwach stellen basiert auf Fehlern
271. en physikalischen Sektor der Diskette oder Festplatte an die Adresse 07C0 0000 und gibt die Kontrolle an diesen 3 5 VERWALTUNG EXTERNER SPEICHER 121 ab Bis zu diesem Punkt erfolgt der Bootvorgang quasi Betriebssystem neutral Das im Bootblock enthaltene Urladeprogramm ist dagegen betriebssystemspezifisch gestaltet und z B fiir MS DOS UNIX und OS 2 unterschiedlich Diese Methode hat den Vorteil das PCs unter beliebigen Betriebssystemen betrieben werden k nnen Unter MS DOS unterscheiden sich Start von Diskette und Start von Festplatte in sofern als da der Urlader im MBR erst noch den Urlader der aktiven Partition l dt und ausf hrt Dann pr ft das Bootprogramm ob die ersten beiden Dateien im Wurzel verzeichnis mit den versteckten Systemdateien io sys ibmbio com und msdos sys ibmdos com identisch sind in Klammern die Dateinamen unter IBMs PC Dos Falls dem nicht so ist wird der Benutzer zum Einlegen einer anderen Diskette und zum Dr cken einer Taste aufgefordert Sind die Dateien vorhanden l dt das Bootprogramm entweder gleich beide Dateien oder nur die Datei io sys und startet deren Ausf hrung Unter Betriebssystemversionen mancher Hersteller liest io sys die Datei msdos sys erst zu einem sp teren Zeitpunkt ein io sys selbst besteht aus zwei verschiedenen Teilen mit unterschiedlichen Aufga ben Der erste ist das eigentliche herstellerspezifische BIOS das eine Reihe von Ger te treibern f r Tastatur und Bildschirm con
272. en und Interrupts bernehmen um so in die 3ascu String durch Null Zero Byte beendet 4 1 ANFORDERUNGSANALYSE Nr ab Ver Beschreibung Ausf hrung von Programmen 4Big 2 0 execute program ASCIIZ Ein Ausgabe von Dateiinhalten OFi 1 0 open file FCB 3Dig 2 0 open file AScI z handle 6Cig 4 0 extended open file Ascr z handle 1516 1 0 sequential write open FCB 2216 1 0 random write open FCB 2816 1 0 random block write open FCB 4016 2 0 write file or device handle Lesen Schreiben von Dateiattributen 1716 1 0 rename file special FCB 5616 2 0 rename file ASCIIZ 4316 2 0 get or set file attributes ASCIIZ 5716 2 0 get or set file date and time handle Manipulation der Dateisystemstruktur 1316 1 0 delete file FCB Alig 2 0 delete file ASCIIZ 1616 1 0 create file FCB 3Cig 2 0 create file ASCTIZ handle 5Aig 3 0 create temporary file AsciIz handle 5Big 3 0 create new file ASCIIZ handle 6Cig 4 0 extended open file ASCTIZ handle 3916 2 0 create directory 3Ai6 2 0 delete directory ASCIIZ Auffinden von Dateien 1116 1 0 find first file FCB 1216 1 0 find next file FCB AE 6 2 0 find first file ASCIIZ 4Fig 2 0 find next file ASCIIZ Beeinflussung des Systems 2516 1 0 set interrupt vector 2Big 1 0 set date 2Dig 1 0 set time 3116 2 0 terminate and stay residen
273. en von getarnten Programmen tarnen und enttarnen Ma nahmen Analog zu den unter Schutzzone II angesprochenen Ma nahmen m ssen zus tzlich zu kopierende Daten auf ihren Inhalt berpr ft werden Operationen bei denen Abweichungen zwischen vorgeblichen und tats chlichem Dateityp vorliegen oder hervorgerufen w rden sind zu verweigern 64 KAPITEL 2 THEORIE DER ABWEHR 2 7 8 Vergleich der Konzepte In diesem Abschnitt werden konventionelle Sicherheitssysteme Antivirusprogramme und die alternativen Konzepte gegen bergestellt und miteinander verglichen Konventionelle Sicherheitssysteme Zugriffskontrollsysteme gebr uchlicher Art greifen genau dann nicht wenn Viren nur das tun was sie bzw der Benutzer des sen Rechte sie sich bedienen auch tun darf Wie Cohen gezeigt hat sind solche Viren ohne weiteres in der Lage die Schutzeinrichtungen von Mini und Mainframebetriebs systemen in Minuten oder h chstens Stunden zu unterlaufen Was bleibt dann von der gegebenen oder angeblichen Sicherheits berlegenheit der Mainframes und Minis gegen ber den APCs brig Zumindest werden Logdateien gef hrt die protokollieren wer wann welche Ope ration durchgef hrt hat Hier bietet sich die Analogie zu einem Flugdatenrekorder an der absturzsicher gepanzert ist und alle relevanten Informationen des Fluggesche hens aufnimmt Er kann zwar einen Crash nicht verhindern aber nachtr glich ber den Unfallhergang Auskunft geben Anal
274. endet Das hat aber wieder den Nachteil da wir keine Werte an das aufrufende Programm zur ckgeben k nnen weil die Registerinhalte vor dem Aussprung mit den Originalwerten berschrieben werden Problem Benutzung des Stack Davon abgesehen da nicht jeder C Compiler ber diese F higkeit verf gt stellt die Verwaltung des Stack ein weiteres Problem dar Falls die ISR 1 lokale Variablen verwendet oder 2 Unterprogramme in Anspruch nimmt die u U weitere Unterprogramme aufrufen und evtl 3 Parameter an diese Unterroutinen bergibt wird in jedem der drei F lle Speicherplatz auf dem Stack verbraucht Dieser ist durch die Unterbrechung Riicksprungadresse Flagregister und das Retten der CPU Register bereits vorbelastet Da die ISR nicht wissen kann wie gro der Stackbereich des un terbrochenen Programms ist den sie ja implizit benutzt empfiehlt es sich auf einen eigenen Stack umzuschalten Der Stackbereich kann z B durch eine globale oder als static deklarierte Variable des TSR Programms reserviert werden Zur Umschaltung auf den eigenen Stack sind der Inhalt des SS und SP Registers zu retten und auf das Ende des neuen Stack zu setzen Scheinbar merkw rdig Auf das Ende deshalb weil der Stack in Richtung der niedrigen Adressen w chst Problem Reentrancy Mit der Umschaltung des Stackbereichs ist folgen des Szenario vorstellbar Ein berwachter Interrupt wird aufgerufen durchl uft die Stackumschaltung un
275. ennen date I RP Datum anzeigen ndern del erase I RP Dateien l schen det ach I P Hintergrundproze erzeugen dir I RP Dateiverzeichnis ausgeben diskcomp E RP Disketten miteinander vergleichen diskcopy E RP Disketten kopieren dpath I P append Ersatz in 0S 2 exit I RP Kommandointerpreter verlassen fdisk E RP Partitions anzeigen andern find E RP Nach String in Datei suchen format E RP Diskette formatieren graftabl E R Zeichen f r Grafikbildschirm laden helpmsg E RPO Erkl rung zu letztem Fehler ausgeben join E R Laufwerk als Unterverzeichnis anh ngen keyb E RP Tastaturbelegung andern label E RP Diskettennamen anzeigen ndern Tabelle C 1 Kommandos unter MS Dos os 2 Teil 1 C 1 KOMMANDOS INTERRUPTS FUNKTIONEN Befehl Typ Mode Funktion m k d ir I RP Unterverzeichnis anlegen mode E RP Ports konfigurieren und umleiten more E RP Eingabe wiederholen evtl warten patch E RPO Datei an best Stellen ndern path I RP Suchpfade f r Programme festlegen print E RP Datei in Druckspooler einreihen prompt I RP Prompt String festlegen recover E RP Dateien mit zerst rten Bl cken lesen ren ame I RP Dateien umbenennen replace E RP Erweiterte copy Version restore E RP Mit backup gesicherte Dateien wieder einlesen r m d ir I RP Verzeichnis l schen set I RP Environment Variablen anzeigen ndern sort E RP Eingabe sortiert ausgeben spool E P Spoolprogramm fiir best
276. entationen des CRC Algorithmus das Mittel unserer Wahl Entwurf der Datenstrukturen und Algorithmen Die einfachste Metho de zur Erzeugung der Vergleichsliste besteht darin mit scan_dir das Dateisystem zu durchforsten und jede Datei inklusive Verzeichnis abzuspeichern Das br chte eine Men ge Nachteile mit sich Durch das Abspeichern der Verzeichnisse bei jedem Dateinamen wird viel Speicherplatz verbraucht F r jede vorgefundene Datei mu die alte Liste nach einem passenden Eintrag durchsucht werden der bei zuf lliger Verteilung der Namen nach durchschnittlich 5 Suchschritten gefunden w rde wenn n die L nge der Liste ist Hinzugekommene Verzeichnisse und Dateien w rden dadurch entdeckt da in der al ten Liste kein passender Eintrag existiert Wie steht es mit gel schten Objekten Diese w ren in der alten Liste berz hlig und m ten z B durch Markierung aller bereits angesprochenen Eintr ge ausgefiltert werden Das alles ist vom software sthetischen Standpunkt her gesehen nicht sehr sch n Wie bei vielen anderen Gelegenheiten werden die gestellten Aufgaben durch die Ver wendung sortierter Listen vereinfacht obwohl der Sortiervorgang selbst wieder Zeit verbraucht Betrachten wir zun chst den Vergleich des Dateibestands und zustands innerhalb eines Verzeichnisses Im Beispiel wurde die Datei b gel scht e kam hin zu Tab 4 8 Der aktuelle Eintrag in der alten Liste wird jeweils mit dem in der neuen verglichen Da
277. enzung von Direktaufrufen nicht weit her Speicherschutz Ohne Mechanismen die Zugriffsschutz auf Speicherebene rea lisieren ist solchen Viren sind sie erst einmal aktiv nicht beizukommen Betriebssy steme wie UNIX schirmen die Speicherbereiche gleichzeitig laufender Programme be sonders gegen ber dem Betriebssystems voneinander ab Die neueren INTEL CPUS wie der 80386 und h her bieten ebenfalls Speicherschutz auf Hardwareebene an Protected Memory Von dieser F higkeit wird unter MS DOS leider kein Gebrauch gemacht Eine besondere Form der Watcher stellen Programme dar die als ausf hrbare Datei vorliegenden Programmcode auf verd chtige Funktionsaufrufe und andere su spekte Eigenschaften untersuchen Dieser Typ wird am Ende des n chsten Abschnitts besprochen da er eine Kombination der Konzepte Watcher und Scanner darstellt 2 5 2 Detektion Scanner F FChk Def Scanner Ein Scanner engl to scan etwas absuchen untersucht Dateien auf bestimmte Codesequenzen und meldet deren Vorhandensein Funktion Die Definition sagt bereits fast alles Das als Datei vorliegende Pro gramm wird vom Scanner nach bestimmten Merkmalen durchsucht die von einfachen Bytesequenzen bis zu komplexen Suchmasken reichen Ein schneller Vergleichsalgorith mus dient dabei vor allen Dingen dem Komfort des Anwenders Viel wichtiger ist die sorgf ltige Auswahl und Anzahl der Suchmuster die die eigentliche Leistungsf higkeit eines Sca
278. er Am be w re von der Komplexit t her angemessener wenn hnlich wie bei Virus eine Parallele zu einfachen biologischen Lebensformen gezogen werden soll Sowohl Bakterien als auch Am ben sind allein lebensf hig und k nnen sich unter geeigneten Bedingungen durch Teilung vermehren Da aber Wurm die eingeb rgerte Bezeichnung ist wird diese hier auch im weiteren verwendet Wurmprogramme werden von ihrem Erzeuger an einer beliebigen Stelle ins Netz gebracht und gestartet Die weitere Verbreitung erfolgt dann automatisch ohne weiteres menschliches Zutun Ein Wurm pflanzt sich fort indem er sich selbst dupliziert und die Kopie startet Das erzeugende Programm kann nur dann weiter aktiv bleiben wenn es entweder m glich ist mehrere Programme auf einem Rechner gleichzeitig ablaufen zu lassen Multitasking oder andere Rechner z B ber Netzwerke zu nutzen Da auf ei nem isolierten Rechner keine fl chige Verbreitung erfolgen kann sind Wurmprogramme typisch f r Netzwerke ber die die Duplikate automatisch verschickt und ein wichtiger Punkt aktiviert werden Der quasi ferngesteuerte Start ist ein kritischer Aspekt bei der Wurm Programmierung weil die meisten Netzwerkprogramme diese M glichkeit nicht vorsehen oder aus Sicherheitsgr nden verbieten Das es trotzdem geht zeigt das folgen de Beispiel aus der Praxis in dem ein Wurmprogramm Sicherheitsl cken unter UNIX clever und gezielt ausnutzt 1 1 2 Trapdoors triviale P
279. er bereinstimmung zur ckliefert um den am besten passenden Eintrag ausw hlen zu k nnen cmp_fspec vergleicht im FM_LAX Modus nur die Teile des Dateinamens mit der Maske die in der Maske vorkommen Tab 4 19 Laufwerk und Verzeichnis k nnen fehlen und tragen dann nicht zum Vergleichsergebnis bei Der Dateinamen wird immer mit cmp_fname berpr ft und bewertet Wir wollen so verfahren da bereinstim mungen bei Laufwerk und Verzeichnis eine h here Priorit t als bei Dateinamen haben F r jeden passenden Teil Laufwerk oder Verzeichnis gibt es 25619 010016 Punkte die zu den Punkten von cmp_fname addiert werden Der R ckgabewert von cmp_fspec enth lt demnach im h herwertigen Byte die Anzahl der Laufwerks Pfadtreffer und im niederwertigen Byte die Anzahl der Treffer im Dateinamen Maske Nr 1 aus dem Bei spiel br chte es beim Subjekt auf die Wertung 000016 w hrend Maske Nr 2 mit 020516 den Zuschlag erh lt Die Funktion get_rights addiert die Wertungen von Subjekt und Objekt um zu einem Ergebnis zu gelangen s Beschreibung im Anhang A 4 Funktion Compare Filespecifications WORD cmp_fspec char mode char f_spec char mask Aufrufparameter mode berpr fung 0 FM_STRICT vollst Spezifikation 1 FM_LAX nur in mask vorhandene Namensteile f_spec Dateispezifikation mask Maske kann Jokerzeichen enthalten Seiteneffekte keine R ckgabewert niederwertiges Byte s cmp_spec h herwertiges Byte Anzahl pa
280. er ndert werden Da fingerd mit den Privilegien eines Systemadministrators abl uft war es m glich bei geschickter Wahl des Parameters Zugriff auf Systemfunktionen zu erhalten Wegen der fehlenden Gewaltenteilung unter UNIX bedeutete dies da dem Wurmprogramm alle Funktionen uneingeschr nkt zur Verf gung standen die das Betriebssystem berhaupt anbietet An dieser Stelle dr ngt sich die Frage auf ob der Quelltext von Betriebssystemen wie im Falle von UNIX ver ffentlicht werden sollte oder nicht Neben dem Vorteil selbst am Quellcode Anpassungen und Erweiterungen vornehmen zu k nnen ergibt sich f r entsprechend Interessierte die M glichkeit gezielt nach Schw chen der Programmierung Ausschau zu halten und diese f r eigene Zwecke zu nutzen Bliebe der Quelltext dagegen geheim w rden Einbr che ber Software Bugs wie z B im fingerd Kommando sehr erschwert wenn nicht unm glich Die Antwort auf die oben gestellte Frage hat einen eher philosophischen Charakter Das Wissen um einen Sachverhalt ist nicht erst seit der Erforschung der Kernenergie meist ambivalent zum Wohle und zum Schaden anderer verwendbar Auch die in diesem Buch vermittelten Kenntnisse lassen sich neben der Abwehr auch zur Programmierung von Computerviren einsetzen Dennoch ist der Autor der Meinung da der freie Austausch von Information der Isolation vorzuziehen ist weil Wissen nur so erweitert und gewonnen werden kann Da sich der INTERNET Worm so spektakul
281. er Codeteil aus jedem Modul sein eigenes Codesegment und ist nur ber FAR Adressierung erreichbar Der Stack ist nicht mehr Bestandteil der DGROUP sondern in einem eigenen Segment untergebracht Aus diesem Grund sind auch DS und SS voneinander verschieden memory model LARGE gekuerzt EX2_TEXT segment byte public CODE DGROUP group _DATA assume cs EX2_TEXT ds DGROUP 3 2 GRUNDLAGEN HOCHSPRACHEN 91 _main proc far Code _main endp _add_cbr proc far Code _add_cbr endp EX2_TEXT ends Export von _add_cbr und _main end Beide Programmversionen exportieren durch Deklaration als PUBLIC die Symbole _main f r den Startup Code und _add_cbr Das gilt brigens f r alle Funktionen und globale Variablen eines C Programms Das eben vorgestellte Beispiel kommt ohne externe Referenzen aus und ben tigt deshalb keine Bibliotheksfunktionen Wie sieht die Sache bei der Verkn pfung mehrerer Programmodule aus Beispiel Modul Import Export Das in Turbo C geschriebene Programm cd c verwendet die non ANSI Funktion chdir um das aktuelle Dateiverzeichnis zu wechseln Der Compiler bemerkt bei der bersetzung da das Programm das Symbol _chdir zwar ben tigt aber nicht selbst definiert In cd obj wird der Aufruf von _chdir im Code als offener Bezug markiert und das Symbol _chdir als extern deklariert Auszug aus Ausgabe von tdump cd obj 00012F EXTDEF 1 _chdir Type 0 Damit sind alle bersetzungsvo
282. er Ma nahmen wurden aus 70 entnommen Der Begriff sensitive Daten ist f r unsere Betrachtung durch den Begriff infizierbare Daten zu ersetzen Zugangskontrolle Nur Befugte haben Zutritt zu Datenverarbeitungsanlagen mit denen sensitive Daten verarbeitet werden e Berechtigte Benutzer festlegen e R ume und Datentr ger abschlie en bzw wegschlie en konventionelle Schl ssel Ausweisleser Chipkarten Closed Shop Betrieb 2 2 KONVENTIONELLE SICHERHEITSMASSNAHMEN 33 e Ger te durch Hardwarema nahmen abschlie bar machen e berwachungs und Alarmanlagen vorsehen Die Zugangskontrolle befa t sich mit dem physischen Zugang zu Rechneranlagen und Datentr gern eine Ma nahme die dem PC Benutzer zu Hause nur insofern vertraut ist als da er sein Haus abschlie t wenn er dieses verl t Zugangskontrolle ist nur dann realisierbar wenn Rechenzentrum und Rechner entsprechend ausger stet sind und der Zweck des Rechenzentrumsbetriebs dies zul t Ersteres ist bei konventionellen PCs nicht der Fall die mit entsprechender Hardware auszur sten sind Zweiteres ist bei Universit tsrechenzentren u nicht gegeben weil eine wirksame Personenkontrolle zu aufwendig ist und der Grad der Sicherheitsanforderungen meist nicht die Anschaffung teurer Hardware rechtfertigt oder notwendig macht Nat rlich ist es weiterhin m glich da eine berechtigte Person unabsichtlich oder willentlich einen Virus auf den Rechner bringt Mit d
283. er auf den Datentr ger kopierte Datei kommt falls in zwischen andere Dateioperationen erfolgt sind h chstwahrscheinlich an einem anderen Platz in Verzeichnis und Datenbereich zu liegen Die konventionelle berpr fung k nnte keinen Unterschied zum vorherigen Zustand feststellen wohl aber ein Test der erweiter ten Attribute Diese bei Manipulationen beizubehalten ist als sehr schwer wenn nicht 4 4 KOMMANDOS MIT KONTROLLFUNKTIONEN 171 unm glich einzustufen Noch ein Hinweis Programme zur Defragmentierung von Da teibest nden ver ndern die eben angef hrten Attribute ebenfalls Nach jedem Reorga nisationslauf m te die erweiterte Version von ChkState den Zustand des Dateisystems neu erfassen 4 4 Kommandos mit Kontrollfunktionen 4 4 1 AVCopy Problemstellung Die im Kapitel 2 entwickelte Methode der kontrollierten Isolation l t sich nicht allein mit Watchern verwirklichen Bei z B einem Kopiervorgang werden eine Vielzahl von Dateien aus den unterschiedlichsten Gr nden ge ffnet und geschlos sen In erster Linie werden Daten gelesen und geschrieben aber auch die Existenz von Pfaden und Dateien berpr ft sowie Dateidatum und zeit ermittelt Der Zusammen hang zwischen den einzelnen Operationen ist nicht oder nur schwer nachvollziehbar Ein externes Kommando wie xcopy hingegen wird f r einen ganz bestimmten Zweck aufgerufen n mlich zum Kopieren von Dateien Eine im Kopierprogramm befindliche Kontrollfunktion ist genau ber
284. er bearbeiteten Information des verarbeitenden Programmes und damit seiner Aus gaben sichergestellt Andererseits wird die Menge der Relationen schnell sehr gro 54 KAPITEL 2 THEORIE DER ABWEHR komplex undurchschaubar und unwartbar Bei jedem Programmstart mu u U eine Vielzahl von Dateien berpr ft werden was die Leistung des Systems in Bezug auf andere Aufgaben vermindert Besonders elegant ist der Selbsttest beim Start eines Programms Dies funktio niert nur bei Programmen die sich nicht selbst ver ndern wie z B Turbo Pascal vor Borland oder system exe auf vMS Systemen Viele Antivirusprogramme wenden diese Methode an und berpr fen beim Start ob sie nicht selbst Opfer einer Infektion oder sonstigen Manipulation geworden sind Das Verfahren bietet zwar keinen Schutz vor Verseuchung warnt aber den Benutzer vor weiteren Folgen CAware von engl C aware aufmerksames C ist eine als Objektdatei vorliegende C Funktion die in jedes Programm eingebunden werden kann und einen Selbsttest wie oben beschrieben realisiert Ein separates Programm berechnet die endg ltige Pr fsumme und tr gt sie in das mit CAware ausger stete Programm ein Schw chen Die Detektion von Ver nderungen ist auf einem sauberen System sicher m glich Bevor ein Check Programm eine Manipulation feststellen kann mu diese erst einmal eingetreten sein Das bedeutet da die Anwesenheit eines Virus im System fr hestens nach einer erfolgt
285. er noch drei Modi unterschieden werden Die Variable stop enth lt wie bei scan structure Informationen dar ber welche Liste nicht bearbeitet werden darf Nur kann hier durch mode ein Startwert vorgegeben und dadurch von vornherein eine Liste ausgeschlossen werden Das macht Sinn wenn ein neues Verzeichnis hinzugekommen ist es existiert keine interne Liste oder ein bestehendes gel scht wurde es existiert keine externe Liste Eingangs der Funktion liest scan_dir die Dateidaten in die Liste mit dem Anker file_anchor ein falls mode dies zul t void scan_subdir int mode char path int sin_file int ein_file int sout_file int eout_file struct T_ENTRY ptr Zeiger auf int Eintrag char hlp 65 Hilfsstring char ext 200 externer Eintrag int decide Entscheidungsflag int stop Stop Flag stop mode eout_file sout_file if mode amp INT_STOP int Liste bearbeiten file_anchor NULL Ja lese Dateien ein get_name path hlp scan_dir 0 0x16 hlp dummy add_file ptr file_anchor stop ptr NULL INT_STOP if mode amp EXT_STOP ext Liste bearbeiten stop read_file amp sin_file ein_file ext 3 Die weitere Verarbeitung erfolgt analog zu scan_structure wobei die Endekri terien wegen der Organisation der Listen anders formuliert sind Die interne Liste ist zu Ende wenn der letzte Folgezeiger auf kein weiteres Element verweist
286. er retten mov bp sp push ds push dx mov ds bp ptr_off Register laden Aufruf mov dx bp ptr_seg mov al byte ptr bp subfunc mov ah OC4h int 21h pop dx Register restaurieren pop ds pop bp ret _intercom ENDP _TEXT ENDS END Anwendung intercom Zun chst ist ein Nachrichtenformat zu definieren mit dem externe und residente Programme miteinander kommunizieren Die Nachricht um fa t immer die Identifikationsnummer des residenten Programms Zieladresse ein Pa wort die Nummer der Servicefunktion und evtl weitere Daten Die Servicefunktion ist durch den Parameter subfunc direkt bestimmt der Datenblock auf den ptr indirekt verweist enth lt die anderen Informationen struct T_I_MESSAGE BYTE prg_id Zieladresse DWORD pwd Passwort Das f hrt uns zum n chsten Punkt Welche Servicefunktionen sind erforderlich symbolische Konstanten in Klammern Ben tigt werden e Pa wort ung ltig IM_INVAL_PWD Pa wort in Nachricht und internes Pa wort stimmen nicht berein 198 KAPITEL 4 ENTWICKLUNG DER SYSTEMPROGRAMME e Abfrage auf Installation IM_RUTHERE von are you there Vermeidung von Doppelinstallationen e Anforderung Deinstallation IM_DEINST Fiir Wartungszwecke die durch das TSR Programm behindert wiirden e Funktionsnummer unbekannt IM_UNKNOWN Die angeforderte Servicefunktion wird nicht unterst tzt Sp ter werden noch weitere Funktionen hinzukommen die sich mit
287. erating System ist ein Betriebssystem f r IBM PCS NIST National Institute of Standards and Technology NCSC National Computer Security Center NSF National Science Foundation Orange Book Bezeichnung f r die vom NCSC herausgegebenen Trusted Computer System Evaluation Criteria Kriterien zur Bewertung von sicheren Computersy stemen Partition engl Logisches Laufwerk Abteilung einer Festplatte Ein Fest plattenlaufwerk kann zwei oder mehr Partitions haben die jede f r sich einen Teil der Gesamtkapazit t reservieren Patching engl Gemeint ist das Flicken Ab ndern bestimmter Stellen typi scherweise nur einiger Bytes eines Programms PC s IBM PC PC DOS 1BM Betriebssystem f r PCs weitgehend identisch mit MS DOS Platte s Harddisk Power On Reset engl Der Power On Reset Spannung Ein Reset wird beim Einschalten der Versorgungsspannung ausgel st um den Rechner zu initialisieren POST Der Power On Self Test Selbsttest nach dem Einschalten f hrt eine Dia gnose der Hardware und der Systemkonfiguration durch initialisiert den Rechner und l dt das Betriebssystem s a Bootstrap Loader Public Key Der ffentliche Schl ssel eines asymmetrischen Verschl sselungsver fahrens ist jedem bekannt und wird zur Verschl sselung oder Entschl sselung benutzt Private Key Der private Schl ssel eines asymmetrischen Verschl sselungsver fa
288. erholungen Seiteneffekte Zeichenausgabe auf Bildschirm an Cursorposition auf Videoseite BH Riickgabeparameter keine Tabelle A 23 Write Character and Attribute at Cursor INT 1016 Funktion 0916 A 3 MSDOS_S LIB 277 A 3 3 Disk Interrupt BIOS Funktion Disk Interrupt Interrupt 1316 int xbiosdisk int cmd int drive int head int track int sector int nsects void buffer Aufrufparameter AH AL nsects CH track CL sector DH head DL drive ES BX buffer Seiteneffekte Je nach Funktion R ckgabeparameter Funktionsnummer Anzahl der Sektoren Zylinder Bits 0 7 Sektor Bits 6 7 Bits 8 9 von track Kopf physikalisches Laufwerk 801sf r Festplatten FAR Adresse Puffer CF 0 Anzahl bertragene Sektoren in AX 1 Fehlercode in AX AL return Anzahl bertragene Sektoren AH return Fehlercode Tabelle A 24 INT 1316 Disk Interrupt A 3 4 Keyboard Interrupt BIOS 278 ANHANG A SOFTWARE Funktion Keyboard Interrupt Interrupt 1616 Funktionen 0016 0216 int xbioskey int cmd Aufrufparameter AH cmd Funktionsnummer 0016 Zeichen lesen 011 pr fen ob Zeichen verf gbar 0216 Status Kontrolltasten lesen Seiteneffekte Funktion 0016 Zeichen wird aus Tastaturpuffer entnommen R ckgabeparameter ZF Funktion 0116 0 Zeichen verf gbar 1 kein Zeichen AH Scan Code Funktion 0216 keine Bedeutung AL return ASCI Code Funktion Olig 0 ke
289. ernative best nde darin die Tabelle auszuwerten und sich dabei auf undokumentierte Strukturen zu verlassen die sich u U von einer Be triebssystemversion zur n chsten ver ndern Deshalb sei empfohlen die sowieso nur selten verwendeten Kommando join und subst einfach aus dem System zu entfernen 6 Auch und gerade von DOS Kommandos 324 ANHANG C INFORMATIONEN ZU MS DOS 325 326 Anhang D ANHANG D ABKURZUNGSVERZEICHNIS Abk rzungsverzeichnis Abk rzung Bedeutung Abb Abbildung am amerikanisch bes besonders Bsp Beispiel engl englisch etc et cetera und andere evtl eventuell m glicherweise ff und folgende gef gegebenenfalls iallg im allgemeinen i d R in der Regel insg insgesamt max maximal min minimal mind mindestens o oder hnlich rel relativ s siehe s a siehe auch s S siehe Seite sl slang Umgangssprache sog sogenannt Tab Tabelle u a unter anderem ul unter Umst nden undok undokumentiert versch verschiedene vollst vollst ndig 2 B zum Beispiel z T zum Teil 2 2t zur Zeit Anhang E Glossar wo Die Ubersetzung der englischen Begriffe steht jeweils in Hochkommata Querver weise sind mit markiert asymmetrische Verschl sselung Ver und Entschl sselung erfolgen mit zwei ver schiedenen nicht voneinander ableitbaren Schl sseln von denen einer ffentlich bekannt sein kann Public Key und der andere geheim sein mu
290. ersionen einer Biblio theksfunktion geben mu Die Situation verschlechtert sich weiter wenn man bedenkt 3Wichtig F r jedes push zwei Bytes 3 2 GRUNDLAGEN HOCHSPRACHEN 85 Abbildung 3 7 Parameteriibergabe via Stack da bei Call by Reference je nach Speichermodell NEAR oder FAR Zeiger auf Daten bergeben werden Damit erreicht die Zahl der Kombinationen bereits vier Beispiel Call by Value Call by Reference Assembler Betrachten noch einmal das eben besprochene Programm und seine Umsetzung durch den Compiler in Assembler Code unter Verwendung der Speichermodelle SMALL und LARGE Zur Erinnerung Im Modell SMALL befinden sich Code und Daten in je einem Segment die ber die Segmentregister CS bzw DS und ES angesprochen werden Der Inhalt dieser Register mu nie ver ndert werden Das LARGE Modell hingegen verwen det sowohl mehrere Code als auch Datensegmente Zwischen Codesegmenten wird durch FAR Spr nge die implizit das CS Register ver ndern umgeschaltet Verschie dene Datensegmente werden explizit durch die Umbelegung des DS und ES Registers ausgew hlt void main void inta b cc 2 b 3 c 23 add_cbr a b amp c int add_cbr int x int y int z return z x y Nun zum Ablauf des eigentlichen Programms Der vom Linker eingebundene Startup Code des C Compilers ruft nach einigen Initialisierungen die Funktion mit dem Namen _main auf bei der ja die Ausf hrung aller
291. ersteller durch 2 3 MS DOS UND ANDERE BETRIEBSSYSTEME 43 dasselbe Virus ebensowenig m glich wie die Verseuchung eines Apple Macintoshs durch ein MS DOS Virus e Mainframes sind von der Hard und Software her viel komplizierter als APCs aufgebaut zudem sind Informationen tiber Hardware und Betriebssysteme nicht jedermann zug nglich Diese Tatsachen setzen beim Programmierer der Viren entwickeln und plazieren will mehr als das bliche Fachwissen und K nnen vor aus e Sicherheitseinrichtungen auf Organisations Hard und Softwareebene verhindern die unbefugte Benutzung des Rechners das Einspielen unerw nschter Programme und die unkontrollierte Ausbreitung von Softwareanomalien e durch Logdateien k nnen illegale oder verd chtige Operationen und ihre Verur sacher zumindest nachtr glich aufgesp rt werden Gefahr des Entdecktwerdens Es sprechen aber auch einige Anzeichen daf r da die momentane Situation viel leicht nur eine gl ckliche F gung ist und die Schwierigkeiten noch bevorstehen e wie Cohen in seinen Experimenten zeigte sind Sicherheitseinrichtungen in Bezug auf Computerviren schlicht unwirksam weil diese mit den legitimen Rechten der Systembenutzer arbeiten Intime Kenntnisse des Betriebssystems und evtl vor handener Schlupfl cher sind daher nicht notwendig k nnen aber ein Virus u U effektiver machen e alle Betriebssysteme haben Schwachstellen die von Sachkundigen ausgenutzt wer den k nnten Von z
292. ert BYTE res3 0x0180 Urladeprogramm struct T_PART part 4 Partitions Information WORD signature OxAA55 falls bootbar int read_part_data BYTE ldrive BYTE pdrive WORD track BYTE head BYTE sector struct T_BOOTSEC mbr Puffer fuer MBR WORD i Partition Zaehler BYTE type Partition Typ BYTE error Resultat Leseoperation if error xbiosdisk BDM_READ pdrive head track sector 1 BYTE far amp mbr 0 return error 116 KAPITEL 3 SYSTEMPROGRAMMIERUNG UNTER MS DOS gt gt hier zusaetzliche Funktionen zur MBR Bearbeitung einfuegen lt lt printf master boot record at cylinder d head d sector d n track sector head for i 0 i lt 4 i type mbr part i type printf entry nr d n i switch type case 0x00 printf empty n break case 0x01 printf primary DOS Partition 12 bit FAT n break case 0x02 printf XENIX Partition n break case 0x04 printf primary DOS Partition 16 bit FAT n break case 0x05 printf extended DOS Partition gt recursing n read_part_data ldrive pdrive GET_TRACK mbr part i start_combi mbr part i start_head GET_SECTOR mbr part i start_combi printf returned n break case 0x06 printf huge DOS 4 0 Partition n break default fprintf stderr unknown type d n mbr part i type normale Partition if type 0x01
293. ert char to scan sub Zeiger in Strings strupr f_spec split_fspec SM_DRIVE f_spec new split_fspec SM_DIRECTORY f_spec subdir split_fspec SM_NAME f_spec name if new 0 0 keine Laufwerksangabe new 0 A xgetdisk new 1 0 new 2 Ist der Pfad nicht ab Wurzelverzeichnis oder berhaupt nicht angegeben f gt norm_path2 der Laufwerksangabe in new das aktuelle Verzeichnis hinzu Falls das aktu elle Verzeichnis nicht das Wurzelverzeichnis ist und name Zeichen enth lt kommt noch ein Backslash zur Trennung hinzu subdir und name machen aus new eine vollst ndige Dateispezifikation if subdir 0 nicht ab Wurzelverz new 2 xgetcurdir 1 new 0 A new 3 nicht Wurzelverzeichnis Name folgt if new 3 amp amp name 0 strcat new X strcat new subdir vollst Namen aufbauen strcat new name N chster Schritt ist die Entfernung der relativen Verzeichnisangaben und Der einfache Punkt wird einfach berlesen beim doppelten Punkt geht es ein Verzeichnis zur ck soweit das m glich ist Schauen wir uns diesen Vorgang genauer an scan durchl uft new von Verzeichnis zu Verzeichnis Das gerade bearbeitete Verzeichnis wird in subdir und an die durch to bezeichnete Stelle in new kopiert Man k nnte zwar auch zwei verschiedene Strings als Quelle und
294. ert das k rzeste Verfahren malloc belegt das erste freie St ck Speicher das die gew nschte Gr e hat oder meldet einen Fehler zur ck Dem aufrufenden Programm wird im Erfolgsfall die Start adresse des neu reservierten Blocks bergeben und das ist der springende Punkt Ein Aufruf von malloc mit einer Blockgr e von eins liefert die momentane Endadresse des Heaps zur ck Da diese relativ zu DS und damit zum PSP angegeben wird wissen 11Die Angabe des Anwenders hat Vorrang weil sie im Linkproze sp ter auftaucht 202 KAPITEL 4 ENTWICKLUNG DER SYSTEMPROGRAMME wir nun die L nge des Programms Die Blockgr e von einem Byte ist notwendig weil malloc sonst einen Fehler meldet 4 5 REALISIERUNG DES RESIDENTEN TEILS 203 Die andere Methode kommt ohne Aufruf der Funktion malloc aus die eine gan ze Reihe Speicherplatz fressender Funktionen nach sich zieht ___brklvl drei Un terstriche zeigt n mlich h chst komfortabel auf das Ende des Heaps Die Deklarati on extern WORD __brklvl zwei Unterstriche und eine einfache Zuweisungen erledi gen die Bedarfsbestimmung im Handumdrehen Der Verlust eines Unterstrichs kommt durch die Eigenschaft des Compilers zustande jedem Symbol im Quelltext einen Un terstrich voranzustellen Doch Vorsicht Alle Speicherreservierungen m ssen vor der L ngenberechnung get tigt werden weil sonst die L nge des Datenbereichs und damit des Programms nachtr glich anwachsen w rde Beim Aufruf de
295. erufen Falls die max Rekursionstiefe noch nicht erreicht ist ruft sich scan_dir mit dem gefundenen Verzeichnis selbst auf Handelt es sich um eine Datei erfolgt ein Aufruf der Funktion proc_file Pro cess File Durch die bergabe von Zeigern auf Funktionen zur Verzeichnis bzw Da teiverarbeitung wird scan_dir allgemein verwendbar kann aber trotzdem elegant f r ganz spezielle Anwendungen eingesetzt werden if xfindfirst f_spec amp dta attr 0 do if dta attr amp 0x10 Verzeichnis if dta name 0 Sonderverz aussortieren proc_path path amp dta if step Rekursion sprintf tmp s s path dta name scan_dir step 1 attr tmp mask proc_path proc_file else Datei proc_file path amp dta 148 KAPITEL 4 ENTWICKLUNG DER SYSTEMPROGRAMME Funktion Scan Directory void scan_dir int step int attr char path char mask void proc_path char path struct T_DTA dta void proc_ file char path struct T_DTA dta Aufrufparameter step max Rekursionstiefe 0 keine Rekursion attr Maske fiir Dateiattribute path Startpfad mit Backslash beendet mask Maske fiir Dateinamen proc_path Zeiger auf Funktion zur Pfadbearbeitung proc_file Zeiger auf Funktion zur Dateibearbeitung Seiteneffekte Das aktuelle DTA wird ver ndert Riickgabewert keiner Tabelle 4 6 scan_dir Dateisystem rekursiv durchsuchen 3 wh
296. erwaltet aus denen gelesen und auf die geschrieben werden kann Tab 3 7 Das hat den Vorteil da sich die Ein und Ausgabe von und auf bestimmte Ger te leicht auf andere Kan le umlenken l t I O Redirection Der Kommandointerpreter gestattet beispielsweise bei der Absendung eines Befehls Dateien f r die Ein Ausgabe anzugeben Programme die von der Standardeingabe Tastatur stdin lesen und in die Standardausgabe Bildschirm stdout schreiben lesen und schreiben dann in die angegeben Dateien Dateiname Bezeichnung Character Devices CON Konsole Eingabe von Tastatur Ausgabe auf Bildschirm AUX serielle Schnittstelle synonym zu COM1 coMl 4 serielle Schnittstelle PRT parallele Schnittstelle synonym zu LPT1 LPT1 3 parallele Schnittstelle Block Devices A B Disketten und Festplattenlaufwerke Tabelle 3 7 Ger tenamen Beispielsweise liest das MS DOS Programm sort normalerweise von einer Datei namens stdin die mit der Tastatur in Verbindung steht und nimmt solange durch Return getrennte Daten an bis das Dateiendezeichen Contro1 z erkannt wird Nach dem Sortiervorgang gibt das Programm die Information auf die Datei stdout aus welche die Daten an den Bildschirm weitergibt Dahinter steckt sowohl bei stdin als auch bei stdout die Datei oder genauer der Ger tetreiber con der fester Bestandteil des BIOS ist Die Ein oder Ausgabe auf oder von der Datei con h tte genau den selben
297. es allerdings drei Einschr nkungen f r die Programmstruktur des Wirtsprogramms die vom betrachteten Betriebssystem genauer dessen Programm Lader abh ngen 1 Die Ausf hrung mu tats chlich am Programmanfang beginnen Dies ist z B bei exe Programmen unter MS DOS nicht der Fall bei denen die Startadresse 12 KAPITEL 1 THEORIE DER SOFTWAREANOMALIEN in einem besonderen Programmvorspann dem exe Header festgelegt ist Der Viruscode wird deshalb nicht gestartet 2 Das Programm darf nur relative Adressierung verwenden weil es durch das Virus um dessen L nge im Adre raum nach hinten verschoben wird Adressierung selbst relativ zum Programmanfang wird dadurch fehlerhaft 3 Programme mit einem besondererem Vorspann z B zur Berechnung von Adre bez gen wie in MS DOS exe Dateien werden durch Prepend Viren unbrauch bar weil der Lader den Viruscode als Vorspanndaten interpretieren w rde Durch die gestellten Bedingungen bleiben nur Programme brig deren Ausf hrung beim ersten Byte der Datei beginnt und die nur relative Adressierung verwenden z B com Programme unter MS DOS Ein weiterer Nachteil besteht darin da vom Be triebssystem her Dateien prinzipiell immer nur am Ende erweitert werden k nnen Das bedeutet f r das Prepend Virus da es das gesamte Wirtsprogramm zeitraubend und daher auff llig umkopieren mu Wahrscheinlich deshalb und wegen der oben angef hr ten Schwierigkeiten sind kaum Viren die
298. es die Anpassung zwischen unterschiedlichen Hardwarekom ponenten vor Dies gilt besonders f r die Vielfalt der Grafikkarten die z T ihr eigenes BIOS in einem ROM mitbringen das beim Bootvorgang eingebunden wird und den Video Interrupt 1016 bernimmt Diese Methode verwenden auch einige Festplatten controller die den Disk Interrupt 1316 kontrollieren Uber das Abfangen von Interrupts lassen sich also sogar Funktionen des ROM BIOS ver ndern und erweitern 3 4 Verwaltung interner Speicher Unter internem Speicher werden alle Daten speichernde Hardwarekomponenten ver standen die der Prozessor direkt ber Adre und Datenbus ansprechen kann Da zu z hlen Schreib Lese Speicher wie RAMs und EEPROMs und Nur Lese Speicher wie ROMS PROMS und EPROMs Manche davon sind fl chtig verlieren also beim Abschal ten der Stromversorgung ihren Inhalt RAMs manche sind nur einmal beschreibbar PROMS und wieder andere lassen sich durch Bestrahlung des Chips mit UV Licht wie der l schen EPROMs 3 4 VERWALTUNG INTERNER SPEICHER 101 3 4 1 Organisation des Arbeitsspeichers Bei den Festwertspeichern gibt es nichts dynamisch zu verwalten darum wenden wir uns gleich den fl chtigen Speichern zu Das RAM dient als Arbeitsspeicher f r Programme und Daten und mu vom Betriebssystem geeignet organisiert und verwaltet werden MS DOS teilt den Speicher in Bl cke auf die als vorw rts verkettete sequentielle Liste organisiert sind Abb 3 9 Eine
299. etriebssystemebene zul s sige Betriebssystemfunktionen zul ssige Betriebsmittel e s a Speicher und Benutzerkontrolle Die Zugriffskontrolle ist ein ganz wesentlicher Punkt fiir den Schutz vor Softwarean omalien Hier geht es um den Transport von Daten auf den Rechner und damit um die Einschleusung potentiell gef hrlicher Programme Ubermittlungskontrolle Die Stellen an die sensitive Daten bermittelt werden k nnen sind berpr ft und festgestellt e Netzwerkdokumentation e Protokollierung der DFU DF Programme Sender Daten Empf nger Ziel der bermittlungskontrolle ist es den berblick ber m gliche Datenquellen und senken zu behalten und den Datenaustausch mit diesen zu protokollieren Zusam men mit der Abgangs und der Eingabekontrolle realisiert die bermittlungskontrolle die vollst ndige Protokollierung aller Datenbewegungen zwischen Rechner Rechen zentrum und Au enwelt Auf diese Weise lassen sich Gefahrenquellen prophylaktisch erkennen und Infektionswege im Nachhinein verfolgen 2 2 KONVENTIONELLE SICHERHEITSMASSNAHMEN 35 Eingabekontrolle Es kann nachtr glich festgestellt werden wer wann welche sensi tive Daten eingegeben hat e Protokollierung der Zugriffsrechte e Logging Verarbeitung Wer Wann Was Transaktionen hnlich der Abgangs und bermittlungskontrolle l t sich evtl ber Auswertung der Protokolle post mortem der Verursacher oder Weg einer Verseuchung fes
300. etzknoten und starker Belastung des Netzes kann es manchmal Tage dauern bis eine Nachricht ihr Ziel erreicht Da die meisten Netze von Universit ten und Konzernen betrieben werden gibt es keine Garantien daf r da die Nachricht in einem bestimmten Zeitraum oder berhaupt zugestellt wird Aber so schlimm ist es meistens nicht W hrend der europ ischen Morgenstunden herrscht z B in den USA noch tiefe Nacht und die Rechner reagieren sehr schnell An guten Tagen kann eine Nachricht von 100 kB in zwei Minuten nach Aufgabe der Bestellung bereits eingetroffen sein obwohl sie vielleicht in jeder Richtung ber ein Dutzend Rechner und einen Satelliten gelaufen ist B 2 Besonderheiten UUENCODE Nicht alle Mail Programme sind in der Lage sog Bin r Dateien zu bearbeiten und wei terzuleiten Bin rdateien sind z B Programme Grafiken und gepackte Dateien deren Bytes alle der 256 m glichen Werte annehmen k nnen Wenn das Mail Programm f r Bin rdateien ausgelegt ist entstehen kein Probleme die bertragung erfolgt transpa rent Ein weniger geeignetes Mail Programm verarbeitet die Bin rdatei u U als ASCII Text interpretiert deshalb bestimmte Codew rter als Steuersequenzen und verf lscht so die Nachricht Dies erkennen Sie sp testens daran da ein bertragenes Programm zu kurz ist sich nicht entpacken l t oder bei der Ausf hrung abst rzt 304 ANHANG B OFFENTLICHE DATENNETZE Wie k nnen dennoch Bin rdateien ber beliebige
301. eutsches Bundesdatenschutzgesetz CERT Die Eingreiftruppe f r Computer Notf lle auf dem INTERNET Computer Emergency Response Team Closed Shop Betrieb engl Betrieb eines Rechenzentrums als geschlossener La den d h f r Anwender nicht zug nglich CMOS RAM Elektronische Bausteine in cMos Technologie verbrauchen besonders wenig Strom und werden daher bei ATs dazu benutzt akkugepufferte Konfigu rationsdaten Setup auch bei ausgeschaltetem Rechner ber l ngere Zeit zu speichern COMMAND COM Kommandointerpreter von MS DOS den der Anwender zur Kommunikation mit dem Rechner benutzt F hrt Befehle aus der Kommandozeile aus und interpretiert Stapeldateien CONFIG SYS Datei zur System Konfiguration in der die zu ladenden Ger tetrei ber und andere Parameter wie die Anzahl der max gleichzeitig offenen Dateien Dateipuffer etc definiert sind Controller engl Hardware zur Ansteuerung von Disketten und Festplatten Laufwerken Datei Spezifikation Laufwerk Verzeichnis Dateiname Spezifiziert eine oder bei der Verwendung von Jokerzeichen evtl mehrere Dateien DES Der Data Encryption Standard ist ein vom NIST entwickeltes schnelles und sicheres Verfahren zur symmetrischen Verschl sselung das Bestandteil des FIPS ist Device Driver engl Ein Ger tetreiber ist ein speicherresidentes Programm zur Ger testeuerung das w hrend des Bootvorgangs in MS DOS eingeb
302. ezeigt da Abhilfe zwar innerhalb weniger Tage zur Verf gung stand aber z T sogar Monate sp ter noch nicht installiert worden war Shells Nach dem Einloggen sich mit Benutzernamen und Pa wort anmelden wird unter UNIX automatisch ein Programm eine sog Shell gestartet die dem Be nutzer elementare Funktionen zur Bearbeitung von Dateien zur Verf gung stellt Diese Shell kann so gestaltet werden da nur bestimmte f r die Aufgaben des Benutzers erforderliche Funktion ausf hrbar sind Isolierte Umgebung Unter UNIX kann der Systemadministrator mit dem Kom mando chroot change root ein Verzeichnis festlegen welches als Wurzelverzeichnis f r bestimmte Benutzer dienen soll Damit kann ein Teilbaum des Dateiverzeichnisses quasi abgetrennt werden die betreffenden Anwender k nnen den Sub Baum der ihnen wie ein komplettes Verzeichnis erscheint nicht verlassen N tzlich ist diese Methode z B bei der Einrichtung eines abgeschotteten Teilbereichs f r Anwender die ber Net ze auf den Rechner zugreifen Zwar kann sich jeder in das System einloggen ist aber trotzdem gegen ber den lokalen Benutzern in seinen M glichkeiten eingeschr nkt Fast auf allen unIx Rechnern auf denen FTP f r jedermann angeboten wird Anonymous FTP s a Anhang B ist diese Sicherheitsma nahme gebr uchlich Speicherschutz Auch wenn ein APC unter UNIX oder einem anderen Betriebssy stem mit Sicherheitseinrichtungen betrieben wird ist noch lange nicht die
303. f gt n mlich ber m chtigere F higkeiten als das gew hnliche rename Dateien k nnen nicht nur umbenannt sondern zwischen Verzeichnissen eines Laufwerks verschoben werden Beim Original rename ist die An gabe eines Zielpfades weder erlaubt noch macht sie Sinn denn es k nnen nur Dateien innerhalb eines Verzeichnisses umbenannt werden Deshalb verwendet rename stan dardm ig den Quellpfad als Zielpfad Damit die Kompatibilit t gewahrt bleibt arbei tet AVRename wenn der Zielpfad nicht angegeben wird auf die gleiche Weise 4 4 KOMMANDOS MIT KONTROLLFUNKTIONEN 181 Anstatt der ganzen Routine seien hier nur die Anderungen angegeben einfuegen in Variablendeklaration char no_path einfuegen vor switch norm_path dest split_fspec SM_PATH dest dest_path no_path dest_path 0 0 einfuegen nach den drei split_fspec if no_path kein Zielpfad strcpy dest_path source_path Zielpfad Quellpfad printf Rename s gt s n source dest die while Schleife erhaelt eine neue Abbruchbedingung while xfindnext amp dta 0 amp amp err 2 phys_rename Das Umbenennen von Dateien erledigt die Kernelfunktion 5616 Rename File die als C Funktion renfile in msdos_s lib zu Verf gung steht Lediglich die Fehlerbehandlung verbraucht ein paar Zeilen Code ansonsten ist der Aufwand mit phys_copy nicht zu vergleichen Der Riickgabewert 2 signa
304. ffekte keine R ckgabeparameter AL return aktuelles Laufwerk 0 A Tabelle A 1 Get Current Disk INT 2116 Funktion 1916 A 3 MSDOS_S LIB 259 Funktion Get Drive Data Interrupt 2116 Funktion 1Cje int drivedata int drive BYTE spc BYTE far media WORD bps WORD cpd Aufrufparameter AH 1Ci6 DL drive Laufwerksnummer 0 aktuell 1 A Seiteneffekte spc media bps und cpd werden gesetzt R ckgabeparameter AL return FFje Fehler AL SPC Sektoren pro Cluster DS BX media FAR Zeiger auf Media Descriptor Byte CX bps Bytes pro Sektor DX cpd Cluster pro Drive Laufwerk Tabelle A 2 Get Drive Data INT 2116 Funktion 1C16 260 ANHANG A SOFTWARE Funktion Set Interrupt Vector Interrupt 2116 Funktion 2516 void xsetvect int interruptno void interrupt isr Aufrufparameter AH 2516 AL interruptno Interruptnummer DS DX isr FAR Adresse der ISR Seiteneffekte Der spezifizierte Interruptvektor wird auf die neue ISR gesetzt R ckgabeparameter keine Tabelle A 3 Set Interrupt Vector INT 2116 Funktion 2516 A 3 MSDOS_S LIB 261 Funktion Parse Filename Interrupt 2116 Funktion 291g char xparsfnm const char cmdline struct T_FCB fcb int option Aufrufparameter AH 2916 AL option Optionen auf 0 setzen DS SI cmdline FAR Adresse Dateiname ES DI fcb FAR Adresse FCB Seiteneffekte Der Dateiname wird analysiert und
305. g Cholera Epidemien Analog zur Seuchenbek mpfung k nnte ein Integrit tsschutz f r saubere Programme sorgen obwohl Verseuchung weiterhin m glich ist Bei der n chsten Benutzung des Programms wird diese sofort erkannt und Gegenma nahmen k nnen eingeleitet werden Anhang A Software A 1 Die Begleitdiskette Auf der Begleitdiskette befinden sich die Quelltexte s mtlicher Programme und Funk tionen die in diesem Buch besprochen werden Bestellen k nnen Sie die Diskette mit der dem Buch beigef gten Bestellkarte Die im Text eingef gten Quelltexte stellen eine z T stark gek rzte und u U ver nderte Version der Originalquelltexte dar Auf der Diskette wurden insbesondere Leerzeilen zur Strukturierung eingesetzt die Kommen tierung ist ausf hrlicher und erfolgt in englischer Sprache Inhalt Im Verzeichnis SOURCE befinden sich die Quelltexte der Programme in AVSYS und MSDOS_S die Quelltexte zu den gleichnamigen Systembibliotheken F r jede C Datei existiert eine korrespondierende Definitionsdatei h in INCLUDE und eine Projektdatei prj in PRJ Die Projektdateien sind nur dann von Bedeutung wenn einzelne Programme mit der integrierten Entwicklungsumgebung tc exe kompiliert werden sollen In diesem Fall ist die Projektdatei eine Art makefile explizit anzugeben Men Project Un terpunkt Project name Diese legt fest aus welchen Modulen au er dem Startmodul und den Standardbibliotheken das Programm aufgebaut ist
306. g per DF oder Laden Starten von Diskette Diese Programme sind in keiner Rechteliste enthalten m ssen aber ebenfalls gesch tzt und berpr ft werden z B generelles Verbot f r Programmstarts von Floppylaufwerken Problem Beschr nkung nach Aufgaben berdies ist es interessant nicht nur die Berechtigung des hinter jedem Programm stehenden Anwenders zu berpr fen sondern die des Programms selbst Der Capability Ansatz geht davon aus da jeder Programmtyp bestimmte Rechte hat Beispielsweise ist der Zugriff eines Compilers auf eine ausf hrbare Datei v llig legitim was sich von einem Textverarbeitungsprogramm nicht sagen l t Unter UNIX geht man davon aus da alle im System befindlichen Pro gramme das tun was man von ihnen erwartet Falls das aber nicht zutrifft weil z B ein Trojaner an die Stelle eines privilegierten Programms getreten ist darf dieser auf jede beliebige Datei ungehindert zugreifen Auf Programme darf sich deshalb nur verlassen werden wenn deren Integrit t und bestimmungsgem e Funktion gew hrleistet ist Beispiel Flushot Flushot Autor Ross Greenberg ist ein Programm f r MS Dos Rechner das Schutz mechanismen auf Dateiebene realisiert Tab 4 17 Flushot f hrt folgende Neuerungen gegen ber dem UNIX Konzept ein e Verwendung von Jokerzeichen in der Dateispezifikation z B Schreibschutz f r exe e Definition von Ausnahmen von Schutzoptionen x und e e Definition von
307. g von komplexen oder vernetzten System ausreichen und das Bewertungs system im Ganzen zu unflexibel ist wird seit 1985 an einem Red Book gearbeitet Auch zivile Beh rden wie das n st National Institute of Standards and Technologie bem hen sich seit 1987 um flexiblere und auf zivile Anforderungen zurechtgeschnittene Kriterien Level Bedeutung D Unsicheres System Levels mit willk rlicher Kontrolle DAC Discretionary Access Control der Anwender kann den Zugriff auf seine Daten festlegen Cl Anwender mu sich einloggen Benutzergruppen erlaubt C2 Anwender mu sich einloggen Pa wort und Logdatei erforderlich Levels mit obligatorischer Kontrolle MAC Mandatory Access Control der Zugriff wird durch DoD Richtlinien festgelegt Bl Freigabeebenen nach DoD B2 System ist testbar kein Flu von Information zu niedrigeren Freigabee benen m glich B3 System wird durch mathematisches Modell beschrieben Al System wird durch beweisbares mathematisches Modell beschrieben h chste Sicherheit Tabelle 1 2 Sicherheitsstufen des Orange Book Mittlerweile wurden eine ganze Reihe von Betriebssystemen und Sicherheitspro dukten durch das NIST bewertet oder befinden sich im Evaluationsproze f r den etwa zwei Jahre zu veranschlagen sind Die Betriebssysteme VAX VMS 4 3 und die auf Gro rechnern verbreiteten Sicherheitsprodukte ACF2 und TOP SECRET von Computer Asso ciates sowie MVS ESA RACF von IBM besit
308. ge der Segmente sowie einige globale Namen Variablen und Funktionen definiert Einige Werte stehen schon bei der Kompilierung oder beim Einladen in den Speicher fest andere werden erst zur Laufzeit berechnet Abb 4 10 zeigt welche Bezeichner zu welchem Zeitpunkt welche Adressen und Speicherbereiche referenzieren 4 5 REALISIERUNG DES RESIDENTEN TEILS 201 Abbildung 4 10 Aufbau Startcode fiir das Speichermodell TINY Turbo C Unter Turbo C beginnt der sog Heap engl Stapel Haufen von dem mittels malloc memory allocate Speicher reserviert werden kann unmittelbar nach Ende des Programms Die Gr e ist durch die Konstante __heaplen festgelegt die wiederum in der Turbo Bibliothek oder im Anwenderprogramm definiert ist W hrend der Heap in Richtung der hohen Adressen w chst kommt ihm der Stack von oben entgegen Der Wert von __stklen bestimmt analog zu __heaplen die Gr e des Stack Weil unsere ISR einen eigenen Stackbereich new_stack anstatt des Programmstack benutzt kann dieser bei der Installierung komplett freigegeben werden Es w re nun n tzlich etwas ber die Endadresse des Heaps zu erfahren aber auch f r diese Abfrage gibt es in C keine eigene Funktion Zwei Wege f hren ab jetzt zum gew nschten Resultat Der eine ist eher allgemein gehalten und geht davon aus da jeder C Compiler Programme mit dem Aufbau Code Daten Heap Stack generiert Der andere basiert speziell auf Turbo C und lief
309. ge in argv argv Array mit Zeigern auf die Kommandozeilenparameter int nr Argumentnummer Start mit 0 Seiteneffekte keine R ckgabewert Index des gesuchten Arguments in argv Tabelle A 48 get_arg Bestimme Index des n ten Kommandozeilenparameters A 4 6 Spezielle Funktionen Read And Compile Transport Rights read_t_rights liest die Asc r Datei mit den Transportrechten t_rights 1st ein wandelt die Eintr ge in ein internes For mat um und schreibt das Ergebnis in das Array t_rights s a 4 4 1 AVCopy M_DRIVE hat den Wert 10 Die prinzipielle Funktion ist praktisch identisch mit der von compile_f_rights in AVConfig s S 231 Get Put Reference Entry get_ref put_ref F r den Zugriff auf die von Chkstate angelegten Referenzdateien sind die Funktionen get_ref finden lesen und put_ref schreiben zust ndig Die Suche erfolgt in zwei Schritten jeweils sequentiell ber die Verzeichnisliste chkstate sui und die Dateiliste chkstate fii Abb A 1 Dabei kommt die Funktion stricmpu zum Einsatz die Strings unter Nichtbeachtung der Gro Kleinschreibung bis zu einem bestimmten Zeichen oder Textende vergleicht Dies ist notwendig weil Namen in den Referenzlisten mit Leerzeichen aufgef llt sind und nicht nach der signifikanten Information mit einem 0 Byte enden Ein Vergleich von z B nelson bil und nelson bil w rde sonst negativ ausfallen Die Suche nach dem Verzeichnis liefert im Erfolgsfall Informationen
310. gen davon ab welche Art von Nutzlast ihnen vom Programmierer mitgegeben worden ist Die Palette reicht von nur Verbreiten ber Pa w rter stehlen bis Hardware zerst ren Fehler in der Pro grammierung sorgen berdies daf r da auch Viren die von der Intention her harmlos sind Schaden anrichten k nnen z B nVir auf dem Apple MacIntosh Zusammen fassend ist zu sagen da die Anwesenheit solcher Programme in Rechnersystemen in h chstem Ma e unerw nscht ist Cohen sch tzt in 21 die Gefahr folgenderma en ein As an analogy to a computer virus consider a biological disease that is 100 infectious spreads whenever animals communicate kills all infected animals instantly at a given moment and has no detectable side effects until that moment Die m glichen Sch den lassen sich grob in drei Gruppen einteilen die der nachfolgende Text behandelt 1 4 1 Denial of Service Der Verbrauch von Ressourcen und das Blockieren von Dienstleistungen wird mit dem Fachausdruck Denial of Service umschrieben Von Softwareanomalien verbrauchte Re chenzeit und Speicherplatz steht anderen Programmen und damit den dahinter ste henden Benutzern nicht mehr zur Verf gung Dazu kommen Kosten die f r die Wie derbeschaffung der Daten und S uberung der Rechner anfallen Dieser Posten stellt bisher den L wenanteil der Sch den dar die Softwareanomalien verursachen 89 Dar ber hinaus gibt es Viren die gezielt
311. gender Text cont wurde vorgezogen lt lt cont Operation validiert pop di Register wiederherstellen pop si pop bp pop es pop ds 190 KAPITEL 4 ENTWICKLUNG DER SYSTEMPROGRAMME pop dx pop Cx pop bx pop ax popf jmp dword ptr cs _old_int lt nr gt mit Original ISR fortfahren _int lt nr gt ENDP Ende der Funktion _TEXT ENDS Ende des Code Segments END Ende des Quelltexts Ist das in_isr Flag gel scht wird es gesetzt und der momentane Stand des FAR Zeigers SS SP gerettet Der anschlie ende Wechsel des Stackbereichs ist von den Be fehlen cli clear interrupt flag Interrupt sperren und sti set interrupt flag Inter rupt freigeben umrahmt Sie verhindern eine Unterbrechung zwischen dem Wechsel des Stacksegments und des Stackpointers durch z B den Timer Interrupt Die Fol gen w ren katastrophal denn SS SP w rde in willk rliche Speicherbereiche zeigen Die Ablage der R cksprungadresse und des Flagregisters k nnte wahre Verheerungen an richten Durch die Realisierung als echter kritischer Abschnitt wird der Stackwechsel abgesichert Der Zusatz OFFSET vor _new_stack bewirkt da nicht der Inhalt des ersten Wortes sondern die Startadresse von _new_stack eingesetzt wird Auf die Bedeutung der Unterprogramme brkdis und brkend kommen wir noch zu sprechen mov cs _in_isr OFFh Ja setze in_isr Flag call _brkdis Unterbrechung verhindern mov cs _old_ss ss Stackzeiger retten mov cs _old_sp sp mov
312. geschnit ten Unabh ngig von der Erweiterung des Dateinamens kann z B die bertragung von Daten unbestimmten Inhalts nicht Text verhindert werden Andere Programme mit hnlicher Intention wie VCopy von McAfee Associates berpr fen wie ein Scanner die zu kopierenden Dateien auf konkrete Viren aber eben mit dem Nachteil da nur bekannte Viren ausgesondert werden k nnen Schwachpunkt Kodierung Das Konzept von AVCopy und allen anderen Scan programmen versagt falls die zu berpr fende Datei in codierter Form vorliegt Immer hin w rde AVCopy auch z B gepackte Dateien abweisen weil diese nicht die Merkmale eines Textes aufweisen Mit etwas Aufwand ist es aber m glich beliebige Dateien in Textform zu bringen Eine Methode wird im Anhang B vorgestellt die Umcodierung mit dem Pro gramm uuencode das den Wertebereich der einzelnen Bytes einer Datei transformiert Aus drei Bytes mit Werten zwischen 0 und 255 werden vier Bytes mit Werten von 32 bis 95 was ganz normalen Textzeichen entspricht Sinn der Aktion ist es Programm 5 1 EINSCHRANKUNGEN 241 dateien problemlos und ohne Datenverf lschung ber elektronische Netze bertragen zu k nnen uuencode und das zugeh rige Dekodierprogramm uudecode sind als Public Domain Quelltexte in vielen Programmiersprachen f r jedermann verf gbar Schwachpunkt Quellcode Ein Virus oder ein beliebiges anderes Programm z B uudecode oder ein Kopierprogramm kann auch als Quellcode auf den
313. glich gemacht Die ISR beginnt mit der Sicherung der Inhalte aller Register auf den Stack Die Nummern in den Kom mentaren geben die Position relativ zum Wert des Registers SP an den dieses nach Ablauf aller Sicherungsma nahmen besitzt Den Grund daf r lernen wir sp ter ken nen Die ersten drei Worte auf dem Stack das Flag CS und IP Register werden automatisch bei der Unterbrechung von der CPU dort hinterlegt PUBLIC _int lt nr gt _int lt nr gt proc near Flags 24 CS 22 IP 20 pushf 18 alle Register retten push ax 16 auch Statuswort weil push bx 14 bei Aussprung ueber push cx 12 cont kein iret push dx 10 ausgefuehrt wird push ds 8 push es 6 push bp 4 push si 2 push di 0 Anschlie end wird das in_isr Flag untersucht Ist es gesetzt befindet sich bereits ein Programm im kritischen Abschnitt und es wird zur Marke cont verzweigt Dort werden alle Register wieder vom Stack restauriert und die Ausf hrung mit der Original ISR fortgesetzt deren Anfangsadresse in der Zeigervariable _old_int lt nr gt steht Die Deklaration dword ptr zeigt dem Assembler an da der Inhalt von _old_int lt nr gt als FAR Adresse zu interpretieren ist Der iret Befehl der hier irgendwie zu fehlen scheint steht am Ende der alten Serviceroutine und bewirkt die R ckkehr zum aufrufenden Programm cmp cs _in_isr 00h in_isr Flag geloescht jne cont Nein Kontroll ISR umgehen gt gt Code siehe fol
314. go 3 3 if wait 0 Ende Fehlerbehandlung step bufs max Sektoren Zugriff else wait 5 4 3 PRUFPROGRAMME 157 return sig Fs chk_seal Programme k nnen sich beim Start selbst berpr fen indem sie ber die eigene Datei eine Pr fsumme bilden und mit einer gespeicherten vergleichen Die Referenzdaten sind zweckm igerweise Bestandteil der Datei und nicht extern abge speichert Auf diese Weise wird der Versand von Programmen m glich die im Falle einer Manipulation auf dem Transportweg den Anwender vor sich selbst warnen Eine Reihe von Antivirusprogrammen wie ViruScan von McAfee machen von dieser Methode Gebrauch Die Funktion check_seal die unmittelbar nach dem Programmstart aufgerufen werden sollte vergleicht die aktuelle Priifsumme mit einem in der Programmdatei ent haltenen Siegel Der Riickgabewert macht eine Aussage dariiber ob das Programm ver ndert wurde oder nicht Funktion Eine Funktion von AVConfig berechnet die Pr fsumme ber das fertig kompilierte Programm und h ngt diese an die Datei an Dieses Programmsiegel hat die Form struct T_SEAL WORD id WORD sig Zur berpr fung der Integrit t wird in auf das dem Programm angeh ngte Siegel positioniert dieser Stand des Dateizeigers als Programml nge in f_size festge halten und das Siegel in seal eingelesen einfuegen in Defines define BUF_SIZE 512 define CRC_START 0x0000 define POLYNOMIAL 0xA001
315. grammen die den kompletten Programmbestand eines Rechnersystems darstellt Fiir jeden der m Benutzer existiert ein geheimer Schliissel k die zusammen die Men ge aller verwendeten Schl ssel K bilden Die Funktion C bernimmt Programm und 2 5 KOMMERZIELL VERFUGBARE KONZEPTE 53 Schl ssel als Parameter und liefert die Pr fsumme zur ck die Element der Menge al ler m glichen Pr fsummen S ist V ist ein Satz der Pr fsummen aller Programme zu einem bestimmten Zeitpunkt Nach den mathematische Pr liminarien kommt der eigentlich interessante Teil Jedem Zeitpunkt t aus der Menge aller Zeitpunkte T ist ein Satz V von Pr fsummen zugeordnet der den aktuellen Inhalt aller Programme widerspiegelt Zur Bildung von V wird f r jedes Programm p die Pr fsumme v berechnet indem die Funktion C auf dieses Programm und den Schl ssel des Benutzers angewendet wird t ist einfach ein Zeitpunkt der sp ter als t liegt Das Betriebssystem S3 arbeitet wie folgt 1 Zum Zeitpunkt tj der also nach der Pr fsummenberechnung liegt wird der Start des Programms p angefordert 2 Falls C p k v ist die aktuelle Priifsumme ist gleich der gespeicherten p ist unver ndert dann f hre p aus und gehe zu 1 3 Das Programm wurde ver ndert Frage den Benutzer nach der Verfahrensweise m e m m Gehe zu 1 f hre Programm nicht aus sicher e m ma F hre p aus gehe zu 1 f hre Programm trotzdem aus unsicher e m ms Setze v
316. grit t des Programms in dem sie sich befindet Dazu bildet sie die aktuelle Pr fsumme und vergleicht diese mit der gespeicherten Referenzsumme am Ende der Programmdatei chk_seal erzeugt aus Gr nden der Platzersparnis diese Daten nicht selbst sondern ist auf Hilfe von au en angewiesen Daf r ist AVConfig mit der Funktion mod_seal zust ndig Am Anfang der Funktion wird versucht das Siegel der vom Benutzer spezifizierten Programmdatei in die Struktur seal einzulesen int mod_seal void struct T_SEAL seal FILE in char f_name 65 printf Attach remove program seal n n Program name gt scanf s f_name oeffnen fuer Kontrolle if in fopen f_name rb NULL fprintf stderr Couldn t open file n return 1 positioniere auf Programmsiegel fseek in long sizeof struct T_SEAL SEEK_END if fread amp seal sizeof struct T_SEAL 1 in 1 fprintf stderr Couldn t read file seal n 236 KAPITEL 4 ENTWICKLUNG DER SYSTEMPROGRAMME fclose in return 2 fclose in Anhand der im Siegel enthaltenen Identifikationsnummer 234216 kann das Pro gramm entscheiden ob das Siegel vorhanden ist oder nicht Je nach Ergebnis bietet mod_seal dem Benutzer an ein Siegel zu installieren attach_seal oder ein beste hendes Siegel zu entfernen remove_seal if seal id 0x2342 printf This program carries no seal n Attach seal y es NO gt if tolower
317. gro en Benutzernummer wer den Daten gelesen die nicht zum gew nschten Anwender oder berhaupt zur Tabelle der Benutzerrechte geh ren Bei konzeptionellen Fehlern funktionieren z B Algorithmen des Schutzprogramms wie vom Ersteller erwartet nur wurden m gliche Sicherheitsl cken bersehen Dazu zwei Beispiele aus der Praxis e Der Window Manager f r DEC Windows unter vMs l uft mit Systemprivilegien ab konnte aber trotzdem vom Benutzer selbst und beliebig gew hlt werden Das galt speziell auch f r eigene Programme des Anwenders 81 40 KAPITEL 2 THEORIE DER ABWEHR e Mit Hilfe des Gnu Emacs Editors unter UNIX kann eine Datei einem anderen Benutzer zug nglich gemacht werden Dazu kopiert Emacs die Datei an ein be stimmtes Ziel und tr gt den Empf nger als neuen Besitzer ein Damit erbt die Datei zugleich alle Rechte des Adressaten Weil Emacs weder Ziel noch Empf nger Superuser berpr fte konnten Systemprogramme gegen eigene Produkte aus getauscht werden Derartige Sicherheitsl cken sind schwer aufzusp ren und bleiben deshalb evtl ber lange Zeit hinweg unbekannt Findet ein Hacker sie vor den Systemverantwort lichen heraus so stehen ihm T r und Tor offen Selbst nach Aufdeckung der Sicher heitsl cke sind vom Hersteller noch Gegenprogramme zu entwickeln und an jeden Kun den zu verbreiten der sie hoffentlich auch bald oder berhaupt installiert Untersu chungen des INTERNET Worm Zwischenfalls haben g
318. h einen Reset nicht entfernt werden k nnen F r alle folgenden T tigkeiten sollte man nur mit schreibgesch tzten Originaldisketten arbeiten damit weder der Rechner noch die Origi nale verseucht werden k nnen Als n chster Schritt wird das Betriebssystem urgeladen und die Festplatte evtl formatiert Das Betriebssystem und alle anderen Programme werden auf einer sp ter m glichst schreibgesch tzten Partition logisches Laufwerk installiert Einen solchen softwarem igen Schutz implementiert z B der Ger tetreiber dmdriver sys aus dem Paket Disk Manager der Firma Seagate oder unser noch zu entwickelnder Watcher AVWatchP Saubere Software Die Verwendung von Original Software ist kein Garant daf r da die Programme virenfrei sind In der Vergangenheit kam es zu einigen Zwischenf llen mit infizierten Programmen und Disketten die schon ab Herstel ler mit einem Virus behaftet waren So verschickte Anfang 1990 das amerikanische Volksz hlungsb ro irrt mlich mit dem Jerusalem Virus verseuchte Disketten auf denen sich Retrieval Software f r Daten auf CD ROM befand 38 3 080 Ebenfalls Ja nuar 1990 verschickte die RWTH Aachen Disketten mit dem Cascade Virus an Hoch schulen und Rechenzentren in Nordrhein Westfalen Virustr ger war ein Programm namens arcx com das zu einem elektronischen Fragebogen geh rte Die Verantwortli chen wollten sich zum Vorgang leider nicht u ern dadurch blieb die Infektionsursache im Dun
319. handelt Schlie lich wird analog zu dem schon beschriebenen Verfahren ein Versuch unternommen auf test_dir zu wechseln Schl gt auch dieser fehl ist in f_spec ein illegaler Pfad enthalten result 3 Test existiert Unterverzeichnis in F_SPEC split_fspec SM_PATH f_spec test_dir 4 4 KOMMANDOS MIT KONTROLLFUNKTIONEN split_fspec SM_NAME f_spec test_name pos strlen test_dir 1 if test_dir pos amp amp pos gt 0 amp amp test_dir pos 1 test_dir pos 0 J if test_dir 0 0 test_dir 1 amp amp test_dir 2 0 strcat test_dir result xchdir test_dir NR_INVAL NR_FSPEC 185 Abschlie end wird der aktuelle Pfad den das Kernel ja in Normalform liefert in f_spec bertragen Ist result NR_FSPEC mu f_spec noch um den zuvor abge trennten Dateinamen test_name erg nzt werden normalisierten Pfad aufbauen f_spec 0 A drive f_spec 1 f_spec 2 xgetcurdir 1 drive amp f_spec 3 if result NR_FSPEC F_SPEC war Dateispez comp_fspec f_spec test_name Anschlie end ist noch der urspr ngliche aktuelle Pfad wieder herzustellen aktuelles Verzeichnis restaurieren if xchdir cur_dir result NR_ERROR sollte nicht passieren 3 return result Fs Funktion Normalize Path in
320. har argv argument values ab argv 0 ist f r den vollst ndigen Programmnamen reserviert aus dem der Startpfad ermittelt werden kann Die Anzahl der Argumente plus eins ist in int argv argument count festgehalten Environment Zu den Daten im PSP geh rt ein Zeiger auf den Speicherblock mit den Umgebungsvariablen des Programms Dieser Block wird k rzer auch als Umgebung engl environment bezeichnet Die Environmentvariablen werden von command com verwaltet und vom Betriebssystem unterst tzt Da sie global und f r jedes Programm verf gbar sind eignen sie sich f r die Definition von gewissen Rahmenbedingungen einer Programmumgebung gt Name So bestimmt z B prompt das Aussehen der Eingabeaufforderung und path die Suchpfade f r Programme weil command com auf diese Umgebungsvariablen reagiert Die Struktur des Environmentblocks ist wie folgt Environment Definition lt Definition gt 0 0 1 0 lt Programmname gt 0 lt Variablenname gt lt Text gt Sowohl die Variablendefinitionen als auch der Programmname sind gem der C Konvention mit einem 0 Byte abgeschlossen Das Ende der Liste der Environment variablen ist durch ein zus tzliches 0 Byte markiert Der vollst ndige Programmname folgt nach einem 1 und einem weiteren 0 Byte Da dieser den kompletten Startpfad enth lt kann das Programm bestimmen in welchem Verzeichnis die eigene Programm datei und evtl ben tigte Hilfsdate
321. heit beschr nkt zeigt z B das Hall chen Virus Dieses ver ndert vor eigenen Aktionen z B Infektion von Pro grammdateien Interruptvektoren direkt im Speicher Damit wird dieser Vorgang f r das W chterprogramm praktisch unsichtbar solange es die Vektoren nicht regelm ig kontrolliert Doch auch dagegen hat Hall chen etwas in petto Es ver ndert f r den laufenden Betrieb nicht den Vektor sondern den Anfang der Routine auf den dieser zeigt Dem k nnte ein W chterprogramm wieder mit der berpr fung seiner Integrit t entgegentreten ein Wettlauf den jede Seite einmal gewinnt und verliert Doch darauf allein sollte man sich nicht verlassen Schw chen Direkte Programmierung Das Prinzip der Umgehung des Be triebssystems ist f r jede Funktion anwendbar die direkt aufgerufen werden kann So kann ein Virus unmittelbar und ohne den Aufruf von Interrupts Routinen des Be triebssystems anspringen oder den Festplattencontroller programmieren wenn ihm die 8Gruppenzugeh rigkeiten werden in der separaten Datei group vereinbart 48 KAPITEL 2 THEORIE DER ABWEHR notwendigen Adressen und Parameter bekannt sind Die angesprochenen Methoden f hren allerdings zu einer mehr oder weniger starken Softwareabh ngigkeit von einer bestimmten Betriebssystemversion und zur Hardwareabh ngigkeit des Virus vom Rech nertyp Da PC Clones auch auf Hardwareebene oft perfekte Kopien des Originals sind ist es mit dieser nat rlichen Begr
322. her der das Abschalten der Versorgungsspannung ohne Datenverlust bersteht ber BIOS Funktionen oder direkte Portzugriffe nicht aber ber den normalen Adre und Da tenbus kann der Speicher gelesen und beschrieben werden Das BIOS verwendet Teile des CMOS RAMs f r Konfigurationsdaten wie Anzahl und Typ der Festplatten und Diskettenlaufwerke Gr e des Arbeitsspeichers und ei nige Angaben mehr Uber das sog Setup Programm das sich meist beim Bootvorgang ber eine spezielle Tastenkombination aufrufen l t k nnen die Parameter durch den Benutzer ver ndert werden Ein Virus das die Systemkonfiguration ver ndern will kann dazu abfangbare BIOS Funktionen aufrufen oder Portzugriffe verwenden die sich der Kontrolle entziehen Die einzige Manipulationskontrolle besteht im regelm i gen Vergleich z B ber den Timer Interrupt 1C16 des CMOS RAMs mit einer Kopie des Inhalts oder einer Pr fsumme Falls das Virus die vom Setup Programm generier te und vom BIOS beim Urladevorgang berpr fte interne Pr fsumme nicht ver ndert gibt das Betriebssystem beim n chsten Hochfahren des Systems eine Fehlermeldung aus Bei korrekter Manipulation arbeitet das BIOS u U mit falschen Laufwerkspa rametern und kann bei Schreibzugriffen Daten zerst ren Es ist aber noch kein Virus bekannt Ende 1991 das sich diese Manipulationsmethode zu nutze macht Es ist eine Legende da manche Viren ihren Code im Konfigurations RAM ablegen und v
323. hert sind Oft werden vertraute Hilfspro gramme und Spiele mit an den Arbeitsplatz gebracht dort benutzt oder mit Kollegen getauscht Mit nach Hause genommene auf dem eigenen Rechner bearbeitete und in die Firma zur ckgebrachte Arbeit ist ebenfalls eine potentielle Infektionsquelle Anwender dieser Gruppe w rden wahrscheinlich immer wieder Programme mit bringen wenn sie niemand daran hindert Sie sehen aber durchaus den Einsatz von Verboten Schutzprogrammen und die Gr nde daf r ein Ein Gegenma nahme w re die Einrichtung einer Softwarezulassungsstelle die mitgebrachte Software berpr ft und entweder abweist oder f r den regul ren Einsatz am Arbeitsplatz freigibt 95 Gruppe 3 Die dritte Gruppe umfa t Benutzer die absichtlich Rechner infizie ren oder sogar selbst Viren schreiben Hierbei kann man ohne weiteres von Computer Sabotage sprechen ein Tatbestand der seit 1986 nach 303 B StGB auch in Deutsch land u U rechtliche Konsequenzen hat s a Abschnitt 1 6 Diese Anwender sehen Schutzma nahmen h chstens als Herausforderung an ihre F higkeiten an in Rechner systeme einzubrechen Im Bereich der wahrscheinlich meist jungen Virenprogrammierer d rften Expe rimentiertrieb und Selbstbest tigung die st rksten Motive sein wie sich an typischen Nachrichten zeigt die man in Viren findet oder die diese ausgeben Rache ist h ufig das Motiv von Mitarbeitern die sich von ihrer Arbeitsstelle nicht freiwillig getrennt ha ben
324. hier tyrell corp 4 Die Rechte die mit der Datei verbundenen Zugriffsrechte hier U4511 Judo RWXRWX d h Eigent mer U4511 und Gruppe Judo d rfen alles alle anderen nichts Da Aufrufer und Eigent mer des Programms nicht identisch sind und anderen kein Zugriff gew hrt wird m te der Benutzer U4475 Mitglied in der Gruppe Judo sein um schreibend zugreifen zu d rfen Fallbeispiel Das Sharewareprogramm Flushot berwacht Zugriffe auf Da teigruppen die Integrit t von Dateien und den Zugriff auf Betriebssystemfunktionen Es gelten einige Einschr nkungen bei der Regelung des Dateizugriffs Es k nnen Da teigruppen Objekte und die Art des zul ssigen Zugriffs Operationen spezifiziert werden nicht aber Programme Subjekte f r die diese Rechte gelten oder die eine Ausnahme davon machen d rfen Das f hrt dann zu Problemen wenn Programme ko piert oder von einem Compiler geschrieben werden sollen und der Schreibzugriff auf ausf hrbare Dateien verboten ist In diesem Fall gibt es jedesmal einen Fehlalarm der den Anwender verunsichert und ihn auf die Dauer abstumpft was bei echter Gefahr zur Mi achtung der Warnungen f hren kann Schw chen Direkte Modifikationen Watcher k nnen nur Funktionen ber wachen in die sie eingeklinkt sind und nur die Parameter bewerten die sie bermit telt bekommen Wie wichtig dieses Faktum ist und wie stark es die F higkeiten von W chterprogrammen und die durch sie erreichbare Sicher
325. hl der Virenfamilien und ihrer Abk mmlinge 1991 die 1000er Marke berschritten Wie lauten nun die Erkl rungen f r den sicher nicht beklagten Mangel an Viren auf Gro rechnern e Die Mainframe Population ist verglichen mit der Anzahl der APCs sehr gering Viele Rechner hei t auch viele Programmierer unterschiedlichster Motivation und damit ein guter N hrboden f r die Ausbreitung e APC Benutzer tauschen oft Programme miteinander aus wozu zumeist Disket ten Bootviren benutzt werden Diese Software ist oft auf un berschaubaren Kan len weit gereist Betreiber von Mainframes kaufen Originalsoftware ab Her steller oder lassen Programme im Haus erstellen und beschr nken den Informa tionsaustausch auf reine Datentransfers e angestellte Programmierer haben einen Job zu verlieren und sind falls das Virus in der eigenen Firma in die Welt gesetzt wird leicht zu ermitteln e Berufsprogrammierer d rften nicht zuletzt auf Grund ihres Alters ein anderes Gef hl f r Verantwortung haben als die meist jungen Virenprogrammierer ethi sche Aspekte Berufsethos e alle IBM kompatiblen PCs sind auch bin rkompatibel d h Programme laufen auf jedem Rechner weil jede CPU die gleiche Maschinensprache spricht In der UNIX Welt ist zwar Kompatibilit t auf Quelltextebene einigerma en gegeben die verschiedenen Rechnermodelle jedoch verwenden zumeist unterschiedliche CPUs Dadurch ist eine Infektion von Gro rechnern unterschiedlicher H
326. hlie lich die virenfreien Dienstprogramme des Rechenzentrums Compiler Editoren etc benutzt werden und die Benutzer nur Quelltext kompilieren der selbst nat rlich kein Virus enthalten darf w re eine Verseuchung nicht m glich Die Rechner sind dann auf kontrollierte Art und Weise von der Au enwelt isoliert ohne unbenutzbar zu wer den Die Anbieterseite F r die Virenfreiheit der Dienstprogramme kann das Re chenzentrumspersonal garantieren wenn gewisse Regeln beachtet werden F lle in de nen Originalsoftware verseucht war sind bisher auf Disketten die z B B chern bei gef gt waren begrenzt geblieben 38 3 309 315 322 324 The Fractal System Die Rechenzentrumsseite stellt demnach keine Verseuchungsquelle dar zumal sie selbst daran interessiert ist die Rechner virenfrei zu halten Die Benutzerseite F r die Benutzer des Rechenzentrums kann eine Benut zerordnung festgelegt werden die es erlaubt Quelltext einzuspielen mit den auf dem System vorhandenen Programmen zu bearbeiten und zu speichern Nicht erlaubt hin gegen ist es das Betriebssystem von Diskette zu laden sowie ausf hrbare Dateien mit zubringen und ablaufen zu lassen Die Einhaltung der Verhaltensregeln l t sich jedoch aus verschiedenen Gr nden nicht st ndig kontrollieren Die Verletzung der Vorschriften geschieht wie in 2 1 3 Motive der Anwender untersucht unbewu t oder absichtlich Der n chste Abschnitt stellt Konzepte vor mit deren Hi
327. hren ist nur einer Person oder einer Gruppe von Personen bekannt und wird zur Verschl sselung gt Authentifikation oder Entschl sselung benutzt PROM Ein Programmable ROM ist ein ROM das durch elektrisches Durchbrennen von Widerstandsbr cken einmalig programmierbar ist PSP Jedem Programm geht ein von MS DOS beim Einladen generiertes Program Segment Prefix Programmsegmentvorspann voraus in dem Informationen ber und f r das aufgerufene Programm gespeichert sind z B ein Zeiger auf die Environment Variablen 331 RAM Ein Random Access Memory fliichtiger Speicher mit wahlfreiem Zugriff verliert seinen Inhalt beim Abschalten der Spannungsversorgung RAM Disk Ein Teil des Arbeitsspeichers gt RAM wird dazu verwendet ein Lauf werk zu simulieren das sehr schnell ist weil es keine Anfahrzeiten Latenzzeiten und Kopfbewegungen gibt Allerdings geht der Inhalt nach Abschalten der Be triebsspannung verloren Red Book Bezeichnung f r die vom NCSC herausgegebenen Trusted Network Eva luation Criteria Kriterien zur Bewertung von sicheren Netzwerken Reset engl Zur cksetzen des Systems auf einen definierten Zustand um einen Neustart durchzuf hren ROM Read Only Memories nichtfl chtige Nur Lese Speicher behalten ihren In halt auch ohne Spannungsversorgung resident engl aber eingedeutscht Gebraucht im Sinne von speicherresident bedeutet im Speicher anwesend TS
328. htung der Sektornummer ist statthaft weil fdisk die Festplatte so aufteilt da Partitionen stets an Spurgrenzen beginnen bzw enden W re das nicht der Fall m te in die Berechnung der Start Endadresse auch die Sektornummer einflie en RAM Disks CD ROM und Bandlaufwerke besitzen eigene Ger tetreiber die sich nicht der BIOS Funktionen bedienen Darum lassen sich Zugriffe auf diese Ger te nicht durch Kontrolle des Interrupts 1316 abfangen Die einzige Eingriffsm glichkeit besteht in der berwachung von Dateifunktionen auf Kernel Ebene der sich AVWatchF anneh men wird Zur ck zur Kontroll ISR Zun chst sind einige allgemeine Umbauten an Std_TSR erforderlich welche in erster Linie die neue ISR und die Tabelle der Partitionsdaten betreffen einfuegen in Defines define P_INTERACT NO define PRG_NAME AVWatch P define PRG_ID Cp lt lt 8 einfuegen in Prototypen extern void int13 void Interrupt C Interface WORD isr_13 void far ret_adr WORD ax WORD bx WORD cx WORD dx WORD si WORD di WORD ds WORD es einfuegen in globale und externe Variablen void interrupt far old_int13 alter INT 0x13 Vektor struct T_I_TABLE i_table Partitions Information 0 0 0 0 0 Startindizes 0 OxFFFF OxFFFF Partitions Tabelle 0 0 OxFFFF 0 0 OxFFFF 0 0 OxFFFF 0 0 OxFFFF 0 0 OxFFFF 0 0 OxFFFF 0 0 OxFFFF 0 0 OxFFFF
329. ich wie klaglich Daher kopieren wir vor der Weiter verarbeitung die FAR Strings in NEAR Strings um bestimme Objekt switch GET_O_MODE set n_set mode case 0x00 Handle DS DX SI text MAKE_FARPTR ds func 0x6C dx si i 0 konv FAR in NEAR String while object i text 0 i F break case 0x01 FCB text MAKE_FARPTR ds dx if text OxFF erweiterter FCB text 0x07 if i text 0 aktuelles Laufwerk i 1 xgetdisk F object 0 i Laufwerksangabe gt 0BJECT object 1 j 2 konv FAR in NEAR String for i 0 i lt 11 i if text i 7 if i 8 object j t object j text il object j 0 break norm_path2 object Bestimmung Operation Die erforderlichen Rechte ergeben sich entweder di rekt aus set oder indirekt aus der Subfunktionsnummer Bei den Funktionen 3D16 Open file und 6C16 Extended Open File bestimmt AL bzw BX den Zugriffsmodus Relevant sind in beiden Fallen die Bits 0 bis 2 die als Index in die Tabelle table dienen aus der Variablendeklaration in ISR_21 static WORD table 0x0004 0x0002 0x0006 Fortsetzung des Codes bestimme erforderliche Rechte switch GET_R_MODE set n_set mode case 0x00 rights set n_set rights break case Ox01 bx ax case
330. ichtigen Betriebssystemen undenkbar So k nnte ein Programm die Liste der MCBs durchgehen und jeden Block mit fatalen Folgen freigeben Environment freigeben if xfreemem WORD far MAKE_FARPTR xgetpsp 0x2C message 0x9F Couldn t free environment return 2 Installierung Zur Installierung ben tigt die Funktion keep die Programmgr e in Paragraphs Zum Speicherbedarf eines Programms z hlen der eigentliche Programm code Daten und der Stackbereich falls wir sp ter Funktionsaufrufe durchf hren und lokale Variablen benutzen wollen Weil die C Bibliotheken keine Funktion in der Art get_program_size oder dergleichen zur Verf gung stellen sind alternative Metho den zur Platzbestimmung erforderlich Gesucht wird ein Hinweis auf die letzte durch das Programm belegte Speicheradresse In einem Assemblerprogramm gen gt es hinter Code Daten und Stackbereichen ein Label last_byte zu vereinbaren Bei Hochspra chen geben die Bibliotheken und der Compiler die Reihenfolge der Module unsichtbar vor Der Anwender hat keinen Einflu auf die sp tere Lage seiner Module oder evtl vereinbarter Bezeichner Ein Blick in den Aufbau der Speichermodelle und die Struk tur von kompilierten C Programmen gibt wichtige Hinweise doch m ssen wir daf r etwas weiter ausholen Zun chst ist ein bestimmtes Speichermodell festzulegen weil davon alle weiteren Untersuchungen abh ngig sind Wir w hlen das Model
331. ichung Die besondere Bedeutung von join und subst f r die korrekte Funktion der Watcher Programme wird im Anhang C 2 untersucht AVCopy Als Ersatz f r alle Kommandos mit Transportfunktion dient das Pro gramm AVCopy das dem Kommando copy nachgebildet ist ohne allerdings alle und selten genutzte Optionen zu implementieren Ziel ist ja nicht die Realisierung eines luxuri sen Kopierprogramms sondern es soll aufgezeigt werden wie man Kontroll ma nahmen implementiert Diese berwachen e den Transport von Daten und Programmdateien zwischen Laufwerken und Ver zeichnissen e die Umbenennung von Programmdateien Tarnung e die nderung des Dateityps ausfiihrbar nicht ausf hrbar AVRename ersetzt das interne Kommando ren bzw rename Durch die Erwei terung der Funktion ist das Umbenennen von Verzeichnis zu Verzeichnis m glich falls dabei das Laufwerk nicht gewechselt wird Auf diese Weise k nnen Dateien zwischen Verzeichnissen eines Laufwerks ohne zeitaufwendiges Kopieren und L schen bewegt werden AVRename kennt die gleichen Rechte wie AVCopy von der Kontrolle des Trans ports zwischen Laufwerken einmal abgesehen 4 2 4 Residente Programme Alle speicherresidenten Programme des Paketes bauen auf einer einheitlichen TSR Plattform auf die universell einsetzbar ist Std_TSR realisiert die grundlegenden Funk tionen Installation erkennen Installieren und Deinstallieren Vorgesehen ist au erdem die Kommunikation mit andere
332. ie MS DOS k nnen Softwareanomalien nach belieben t tig werden Alle Typen verbrauchen durch ihre blo e Anwesenheit Ressourcen wie Speicherplatz und Rechenzeit und k nnen dar ber hinaus das System manipulieren Ein Virus verursacht zus tzliche Sch den durch die Infektion von Programmen Erm glicht werden diese Aktivit ten dadurch da Aufrufe von Betriebssystemfunktionen keinerlei Kontrolle unterliegen Obwohl jede Softwareanomalie an einem bestimmten Punkt ins System gelangt sein mu kann mangels Logdaten der Verursacher i d R nicht mehr festgestellt werden Ebensowenig lassen sich Verbreitungswege verfolgen um z B die Ausdehnung des Scha dens zu ermitteln Teilsysteme abzuschotten oder Empf nger von verseuchter Software zu warnen Aufgabenbeschreibung Zur Erf llung der Anforderungen ist ein residentes Programm vorzusehen das sich in relevante Interrupts einklinkt die Aufrufparameter anhand einer Rechtedatei berpr ft und entsprechend dem Ergebnis die Operation zul t oder abbricht Die zu berwachenden Funktionen lassen sich in vier Gruppen nach dem Wirkungsbereich zusammenfassen Global Ver nderung von Systemdatum und zeit Partition Schreib Leseschutz f r jegliche Daten oder nur Urladeinformation Datei passiv Schreiben Lesen Ausf hren residente Installierung Datei aktiv berpr fung der Integrit t Um Einbruchsversuche zu dokumentieren und evtl den T ter zu identifizieren werden spezifizier
333. ie Nutzung eines Computers nicht die Erstellung von Programmen beinhaltet sollten sich keine bersetzungsprogramme auf dem System befinden Floppy Disk Festplatte Disketten und seltener Wechselplatten sind wahrscheinlich der Hauptvektor der Softwareanomalien Ist die Festplatte fest instal liert kann sie lediglich als Reservoir f r infizierte Software dienen und ist nur indirekt an der Verbreitung beteiligt Speziell Disketten bergen die Gefahr einer Reinfektion nach erfolgreicher S uberung des Systems da sie bei dieser Prozedur oft bersehen werden Befinden sich auf diesen Datentr gern verseuchte Programme ist bei deren n chsten Benutzung die Entseuchung des Systems oft schon etwas in Vergessenheit geraten und der Umgang damit entsprechend sorglos Serielle parallele Schnittstelle F r die Datenfern bertragung DFU gilt im Prinzip das Gleiche wie f r Disketten nur das der Vektor jetzt immaterieller Natur ist Datenaustausch per DF stellt die potentiell gr te Verseuchungsgefahr dar Der Austausch von Dateien ber z B ein BBS ist durch folgende Merkmale gekennzeichnet e Jeder kann teilnehmen meistens ohne da eine beweiskr ftige Authentifikation 30 KAPITEL 2 THEORIE DER ABWEHR erfolgt e Jeder kann Programme vom BBS laden Download e Oft besteht die M glichkeit Programme in das BBS zu laden Upload e Jeder mit der n tigen Hard und Software kann BBS Betreiber werden Tats chlich tragen BBS k
334. ie im Rahmen eines Treiberaufrufs angesprochen werden F r sie gilt das Gleiche was schon im Abschnitt ber die TSR Programme gesagt wurde Die Kon trollfunktion wird aktiviert bevor der Aufruf das Betriebssystem erreicht 3 7 3 Vor und Nachteile Was sind nun die Vor und Nachteile der beiden Konzepte Die Realisierung eines speicherresidenten Programms als Ger tetreiber ist wie gesehen nur mit einem guten St ck Mehraufwand m glich der sich irgendwie bezahlt machen sollte Bei unserer Methode einen zurechtgestutzten Ger tetreiber als residente Plattform zu gebrauchen besteht der wesentliche Unterschied nur in der Art in der die beiden Programmtypen geladen werden Diesen Unterschied gilt es zu untersuchen Start von TSR Programmen TSR Programme m ssen wie alle Programme gestartet werden um sie resident zu installieren Aus Sicherheitsgr nden sollte dies nach einem Systemneustart 1 automatisch ohne Beteiligung des Anwenders 2 m glichst sicher ohne Eingriffsm glichkeit durch den Benutzer und 3 m glichst fr h vor der Aktivierung anderer Programme erfolgen Der naheliegende Weg f r Programme ist ein Eintrag in die Stapeldatei autoexec bat die von command com automatisch am Ende des Bootprozesses aus gef hrt wird Die Abarbeitung von Stapeldateien kann durch den Benutzer ber das Dr cken der Tastenkombination Control c oder Control Break abgebrochen werden Das ist dann ung nstig wenn mit Aktione
335. iegel STM ST Magazin Markt amp Technik Verlag AG Haar WELT Die Welt Axel Springer Verlag WS WirtschaftsSpiegel Deutscher Sparkassenverlag GmbH Stuttgart Anschriften Markt und Technik Hans Pinsel Stra e 2 W 8013 Haar
336. ien stehen nicht zu Verwechseln mit dem aktuellen Verzeichnis Der Startcode von Turbo C plaziert einen Zeiger auf den vollst ndigen Programmnamen in argv 0 Weil Environment und Programmcode in zwei separaten Bl cken untergebracht sind kann das Programm den Platz f r das Environment freigeben falls es dies nicht mehr ben tigt Die meisten Programme werten die Umgebungsvariablen Startparame ter und pfad am Anfang aus und k nnen sp ter auf diese Informationen verzichten Auf diese Weise l t sich Speicherplatz einsparen Das Turbo C Startmodul macht diese Erfolge teilweise wieder zunichte weil es das Environment vor dem Aufruf von _mainin eigens daf r reservierten Speicher kopiert Immerhin f llt trotzdem die Doppelbelegung weg Beispiel ReadEnv Das bungsprogramm ReadEnv zeigt wie man Environmentvariablen und den Pro grammnamen auslesen kann Der Zeiger ptr wird auf das eigene Environment gesetzt Anschlie end werden solange Zeichenketten mit Variablendefinitionen ausgelesen bis ein 0 Byte das Ende der Reihe signalisiert 106 KAPITEL 3 SYSTEMPROGRAMMIERUNG UNTER MS DOS Offset Typ Bedeutung 0016 code int 20h Programm beenden 0216 word Segmentadresse Anfang freier Speicher 04146 byte reserviert 0516 code call far lt DoS Verteiler gt Funktionsnummer in CL OAi6 FAR Adresse Programmende INT 2216 OE16 FAR Adresse ctr1 Break Routine INT 2316 1216 FAR Adresse Critical
337. ierigkeiten kommt Zur Funktion Die Liste der Argumente wird durchlaufen bis das gesuchte Element gefunden count nr 294 ANHANG A SOFTWARE Funktion Check for Argument int arg_p int argc char argv char option Aufrufparameter argc Anzahl der Eintr ge in argv argv Array mit Zeigern auf die Kommandozeilenparameter option Adresse des gesuchten Textes Seiteneffekte keine R ckgabewert 0 nicht gefunden 1 gefunden Tabelle A 47 arg p Suche Kommandozeilenparameter oder das Ende der Liste erreicht wird count z hlt dabei die Anzahl der Argumente die keine Schalter sind n dient als Index in argv Die Vorbelegung von count mit 1 bewirkt da die while Schleife mindestens einmal durchlaufen wird selbst wenn nr 0 ist Andernfalls w rde in diesem Fall f lschlicherweise berhaupt keine berpr fung vorgenommen sondern die Funktion sofort und scheinbar erfolgreich beendet Vor dem Aussprung aus get_arg wird n noch korrigiert bzw falls kein passendes Argument gefunden werden konnte auf 1 gesetzt A 4 AVSYS LIB 295 int get_arg int argc char argv int nr int count n count 1 n 1 while count nr amp amp n lt argc count argv n 0 amp amp argv n 0 ntt 3 n count nr n 0 return n Funktion Get Argument int get_arg int argc char argv int nr Aufrufparameter argc Anzahl der Eintr
338. iert Momentan am gebr uchlichsten ist das Pack Programm pkzip das auf vielen Servern bereit gehalten wird und Dateien sehr schnell auf ein Mindestma redu ziert Kompressionsraten um 30 bei Programmen 50 60 bei Texten und gt 90 sic bei Grafiken sind durchaus realistisch Die gepackten Dateien tragen die Endung zip und werden durch pkunzip wieder entpackt Beispiel Senden und Empfangen von Dateien Alle Dateien auf Laufwerk A sollen versandt werden Um Platz zu sparen und nur eine Datei verschicken zu m ssen werden zuvor alle Dateien in avsys zip zusammengefa t und komprimiert Operation add pkzip a avsys a lt CR gt lt Meldungen des Programms gt F r den Versand ist avsys zip noch in eine vertr gliche Form umzuwandeln uuencode avsys zip lt CR gt lt Meldungen des Programms gt dir lt CR gt avsys zip avsys uue Die R ck bersetzung beim Empf nger erfolgt mit dem Programm uudecode Nach dem Umcodieren liegt wieder die urspr ngliche Datei vor die meist noch zu entpacken ist uudecode avsys lt CR gt lt Meldungen des Programms gt pkunzip avsys lt CR gt lt Meldungen des Programms gt dir lt CR gt avsys uue avsys zip lt alle in avsys zip enthaltene Dateien gt B 3 LISTSERV SERVER DISKUSSIONSLISTEN 305 Tabelle B 1 gibt eine Ubersicht iiber die Endungen gepackter Dateien und die zugeh rigen Pack bzw Entpackprogramme Ebenfalls in die bersicht aufgenommen wurden Progr
339. iert werden mu daher auch der negative Offset des ersten Eintrags Unsere C Funktion get_lol nimmt diese Korrektur automatisch vor so da der erste Eintrag an Offset 0 steht Beispiel ReadMCB Betrachten wir das Beispielprogramm ReadMCB das die Kette der MCBs durchgeht und dabei Adresse Gr e und Besitzer der Speicherbl cke anzeigt Ein solches Programm ist bei der Suche nach Softwareanomalien sehr n tzlich die auf konventionelle Weise Speicher reservieren Tauchen in der Liste Programme auf die nicht vom Anwender installiert wurden oder keinen Namen tragen Sind legale TSR Programme gr er als blich Ist der freie Speicher kleiner als erwartet Existieren Speicherbl cke die schein bar keinem Programm zugeordnet sind All diese Fakten weisen auf speicherresidente 102 KAPITEL 3 SYSTEMPROGRAMMIERUNG UNTER MS DOS Abbildung 3 9 Speicherverwaltung unter MS DOS Viren hin Durch seine praktische Anwendbarkeit ist ReadMCB das erste Programm unseres Antivirus Pakets F r ReadMCB ben tigen wir einige Definitionen Makros und Typdefinitionen BYTE WORD und DWORD Double Word sind Synonyme f r vorzeichenlose Variablen mit den L ngen 1 2 und 4 Bytes die anderen Bezeichner sind symbolische Konstanten f r boolesche Ausdr cke define BYTE unsigned char define WORD unsigned short define DWORD unsigned long define FALSE 0 define TRUE 1 define ON 0 define OFF 1 define NO 0 1 define YES Mit dem
340. iesem Punkt besch ftigt sich die Zugriffs und Eingabekontrolle Abgangskontrolle Nur Befugte k nnen Datentr ger entfernen e Kataster der mobilen Datentr ger anlegen Disketten Wechselplatten portable Computer e Datentr geraustausch protokollieren e Aufbewahrungsregeln und fristen festsetzen e Nicht mehr ben tigte Datentr ger auch Druckausgaben l schen oder vernichten Die Abgangskontrolle hat die Aufgabe eines Kopier oder besser Diebstahlschutzes f r ganze Datentr ger und damit wenig mit dem Schutz vor Computerviren zu tun Aller dings l t sich mit Abgangslisten evtl noch feststellen an welche Stellen versehentlich verseuchte Software verschickt worden ist Systemverantwortliche haben so die M glich keit gezielt Warnungen zu verschicken hnliches gilt f r die bermittlungskontrolle s dort Speicherkontrolle Nur Befugte k nnen sensitive Daten eingeben zur Kenntnis neh men oder ver ndern l schen Festlegung der Benutzer und Rechte Authentifikation mit Benutzerkennung und Pa wort Sperrung oder Entfernung der Diskettenlaufwerke Verwendung sicherer Fileser ver Integrit tsschutz Verschl sselung Signierung Beschr nkung auf notwendige Programme Logging und Reporting Hier ergibt sich prinzipiell das gleiche Problem wie bei der Zugangskontrolle n mlich da die Beschr nkung des Benutzerkreises nicht garantiert da Befugte nicht auch 34 KAPITEL 2 THEORIE DER ABWEHR Schaden an
341. igen Verzeichnis makefiles verf gbar F r die Leser die nicht ber einen Compiler oder Assembler verf gen befinden sich au erdem die fertig bersetzten und gebrauchsfertigen Programme und Bibliotheken in den Verzeichnissen PACKAGE bzw LIB Diejenigen die selbst Schutzprogramme erstellen m chten k nnen unter Angabe der Quelle auf die Bibliotheken zur ckgreifen F r die C Programme stehen drei include Dateien zur Verf gung e avsys h enth lt Definitionen und Deklarationen f r die Bibliothek avsys lib In dieser sind au er den Betriebssystemaufrufen alle Funktionen enthalten die das Paket Av System ben tigt e msdos_s h ist die Definitionsdatei f r die Bibliothek msdos_s lib die C Funktionen f r alle ben tigten MS DOS Aufrufe enth lt F r Leser die nicht ber Turbo C verf gen stellt msdos_s 1ib funktional identische Module bereit e msdos h enth lt Definitionen und Strukturen welche die Arbeit mit MS DOS be treffen Vor allen Dingen handelt es sich dabei um C Strukturen die den Auf bau MS DOS interner Datenstrukturen nachbilden und den Zugriff darauf verein fachen Dazu kommen ausgew hlte Dokumente in DOCUMENT die aus Rechnernetzen stam men und z T schwierig oder gar nicht mehr zu beschaffen sind Leser ohne Netzzugriff A 1 DIE BEGLEITDISKETTE 255 erhalten so die M glichkeit einige interessante Texte zum Thema Softwareanomalien zu studieren Ablauf der Programmerstellung ber m
342. il Character int stricmpu char al char b char until Aufrufparameter a String 1 b String 2 until Endezeichen Seiteneffekte keine Riickgabewert lt 0 a lt b 0 a b gt 0 a gt b Tabelle A 40 stricmpu Vergleiche Strings bis lt Zeichen gt Funktion Copy String Until Character char strcpyu char dest char source char until Aufrufparameter dest Zielstring source Quellstring until Endezeichen Seiteneffekte dest source Riickgabewert Zeiger auf dest Tabelle A 41 strepyu Kopiere String bis lt Zeichen gt A 4 AVSYS LIB 291 Funktion Search String char stristr char al char b Aufrufparameter a zu durchsuchender String b Suchstring Seiteneffekte keine Riickgabewert NULL nicht gefunden sonst Zeiger auf gesuchten String in a Tabelle A 42 stristr Suche String in String A 4 4 Listenverwaltung Das Paket linklist c enth lt Funktionen zur Verwaltung sequentieller vorw rts ver ketteter sortierter Listen Die Funktion add2list f gt einer Liste einen Eintrag hinzu delete_list gibt den Listenspeicher wieder frei Des weiteren l dt load_list eine Textdatei zeilenweise mit add2list in eine Liste ein Add to List add2list reserviert zun chst Platz f r einen neuen Knoten vom Typ struct T_ENTRY Dann wird die Liste nach dem ersten Element durchforstet das gr er oder gleich dem einzuf genden Element ist Der neue Knoten wird vor diese
343. ile xfindnext amp dta 0 Hinweise zu scandir W rde vom Betriebssystem in der DTA Struktur nicht die aktuelle Suchposition festgehalten w re Rekursion in der durchgef hrten Weise nicht m glich Bei der R ckkehr aus einem tiefer gelegenen Verzeichnis beg nne die Suche von Neuem eine Endlosschleife w re das Resultat Wie s he eine alternative Imple mentation aus Bei der Durchsuchung eines Verzeichnisses werden alle angetroffenen Verzeichniseintr ge zun chst in einem lokalen Array von Strings gesammelt Nach der Abarbeitung der Dateieintr ge geht es an die Bearbeitung der Verzeichnisse deren Ab folge durch einen lokalen Eintragsz hler geregelt wird Nach der R ckkehr von jeder Rekursion wird der Z hler erh ht und bei Erreichen des Endes der Verzeichnisliste zur aufrufenden Funktion zur ckgekehrt Durch das lokale Array und die Rekursion ist diese Variante allerdings viel speicheraufwendiger als die erste Version Doch nun zu ChkSys Die Funktion main besteht aus drei Teilen Zuerst wird die Liste der gef hrlichen Dateien mit load_list in die durch list_anchor referenzierte sequentiell vorw rts verkettete und sortierte Liste eingelesen einfuegen in Typedefs struct T_ENTRY char text Zeiger auf Text struct T_ENTRY next Adresse naechster Knoten einfuegen in globale und externe Variablen struct T_ENTRY sub_anchor list_anchor 4 3 PRUFPROGRAMME 149 int main int
344. in C Die in diesem Buch entwickelten Funktionsbibliotheken und Programme sind pra xistauglich und k nnen als Basis f r eigene Weiterentwicklungen dienen Auf der Pro grammdiskette sind die dokumentierten Quelltexte zu allen Funktionen und Program men dieses Buches enthalten Dazu kommen gebrauchsfertig bersetzte Bibliotheken und Programme sowie Texte die sich mit der Systemprogrammierung unter MS DOS der Abwehr von Computerviren und dem Zugriff auf ffentliche Netze befassen viii Vorwort Auch wenn die Ambitionen des Lesers nicht in Richtung Softwareentwicklung ge hen so werden doch grundlegende Mechanismen vorgestellt und implementiert wie sie fast alle kommerziell verfiigbare Antivirusprogramme verwenden Diese Kenntnisse erm glichen es diese Produkte zur beurteilen und zu einer solide fundierten Entschei dung zu gelangen Auf eine konkrete Markt bersicht wird verzichtet weil das Angebot zum einen sehr reichhaltig ist und sich zum anderen ebenso wie die Bedrohungssitua tion st ndig ver ndert Zum Zustandekommen dieses Buches haben mehrere Personen beigetragen An gefangen hat alles mit dem Konzept der kontrollierten Isolation das von Prof Dr Siegmar Gro von der FH Fulda stammt Diese Methode des Schutzes von Computern vor der Ausf hrung unzul ssiger Programme wurde das Thema meiner Diplomarbeit die Herr Gro zusammen mit Prof Dr Ing Werner Heinzel betreut hat An dieser Stelle sei noch einmal Barbara Fol
345. in Plastikh lle oder nicht beschreibbare Disketten keine Schreibschutz kerbe m glich 38 3 011f Organisationskontrolle Die Organisation wird den Anforderungen des Datenschut zes gerecht e Funktionen m glichst trennen e Regeln f r Benutzer Programmierung Dokumentation Test Freigabe Bedie nung Verarbeitung Aufbewahrung und Entsorgung aufstellen e Benutzerrechte revisionsf hig dokumentieren 36 KAPITEL 2 THEORIE DER ABWEHR e Einheitliche Verfahren zur Beschaffung von Hard und Software einf hren Kontrollen auf Einhaltung der Regeln durchf hren e Hard und Softwarekataster anlegen Verfahren zu Inventur festlegen Entsprechende Versicherungen abschlie en Die Organisationskontrolle ist neben der Zugriffskontrolle ein weiterer wesentlicher Punkt bei der Bek mpfung von Softwareanomalien Zur wirksamen Abwehr geh rt neben dem Einsatz von Sicherheitssoft und Hardware die Einrichtung von Stellen in der Organisation die deren Beschaffung und Einsatz berwachen und die Einhaltung von Vorschriften stichprobenartig und ohne Vorank ndigung vor Ort kontrollieren 95 2 2 2 Grundlegende Ma nahmen Saubere Rechner Saubere d h virenfreie Rechner sind die Basis aller Ma nahmen gegen Computerviren Zun chst wird der Rechner mindestens eine Minute lang aus geschaltet um den fl chtigen Speicher RAM und damit alle in ihm gespeicherten Viren Programme sicher zu l schen Dies ist wichtig weil manche Viren durc
346. in Zei chen verf gbar Funktion 0216 Bitmuster f r Kontrolltasten Tabelle A 25 INT 1616 Keyboard Interrupt A 4 AVSYS LIB 279 A A AVSys LIB Tabelle A 26 gibt eine bersicht ber die Funktionen der Bibliothek AVSys LIB F r den Fall da eine Funktion schon im Text besprochen wurde gibt die Spalte Ab schnitt neben der Seite auch den zugeh rigen Unterpunkt an Nicht besprochen wer den die Routinen zur Umsetzung der DTA Daten in Strings und zur ck s a Hinweis in 4 3 3 ChkState A 4 1 Allgemein einsetzbare Funktionen Funktionen f r CRC Pr fsummen Das Paket crc c enth lt Funktionen zur Be rechnung von Pr fsummen nach dem cRc Verfahren Cyclic Redundancy Check Allerdings wollen wir uns hier nicht weiter mit der Theorie der Nachrichtenkodie rung besch ftigen wer m chte kann genaueres in nachlesen Grundlage des CRC Verfahrens ist ein sog Generatorpolynom mit dessen Hilfe die Pr fsumme berechnet wird G ngige Generatorpolynome f r Werte in Bytebreite sind in Tab A 27 angegeben In der Spalte Code stehen die Werte wie sie die Funktion make_crc_table ben tigt Die h chstwertige Stelle des Codes repr sentiert den niederstwertigen Exponenten des Generatorpolynoms Ein gesetztes Bit zeigt an da der korrespondierende Summand im Polynom vorkommt Der h chste Exponent 16 wird weil immer vorhanden im Code nicht ber cksichtigt und f llt weg Compute Signature sig_crc block
347. ind m ssen sie durch funktional hnliche Programme mit Kontrollfunktionen ersetzt werden Wenn auch interne Befehle Belange der Systemsicherheit betreffen steht man vor dem Problem da die berwachungssoftware die Eingabe des Benutzers pr fen m te noch bevor diese zum Kommandointerpreter gelangt Zwei Ans tze zur L sung sind denkbar Entweder sorgt man daf r da der zu berwachende Befehl extern wird oder man r stet den Kommandointerpreter mit Kontrollfunktionen aus In beiden F llen sind neue Programme zu erstellen welche die Aufgaben der sicherheitsrelevanten MS DOS Befehle bernehmen 4 1 2 Interruptebene Funktionsaufrufe ber Software Interrupts wie sie bei MS DOS und BIOS Aufrufen ver wendet werden sind einfach und flexibel zu handhaben Dem aufrufenden Programm mu die absolute Einsprungadresse der Routine nicht bekannt sein was besonders bei nderungen im Betriebssystem z B neues Release von Vorteil ist Au erdem k nnen bestehende Aufrufe leicht abgefangen erweitert oder ver ndert werden indem einfach der betreffende Aufrufvektor auf die neue Serviceroutine umgesetzt wird Speziell f r 134 KAPITEL 4 ENTWICKLUNG DER SYSTEMPROGRAMME Kontrollprogramme Watcher aber natiirlich auch fiir Softwareanomalien z B Infect on Open und Stealth Viren ergeben sich hier M glichkeiten in Betriebssystemabl ufe einzugreifen Sicherheitsrelevante Interrupts Die Tabellen C 3 und C 4 im Anhang zeigen welche
348. indem dieser die Pr fsumme berechnet und dem Empf nger bermittelt Der Empf nger berechnet erneut die Pr fsumme und vergleicht die beiden Werte Sind sie gleich wurde die bersandte Information sehr wahrscheinlich nicht ver ndert Das Programm Validate von McAfee Associates zur Pr fsummener zeugung ber Dateien arbeitet auf die beschriebene Weise Check Seal dient zur Selbst berpr fung von Programmen beim Start so da diese bei Manipulationen vor sich selbst warnen k nnen Das Prinzip ist das gleiche wie bei Seal Die aktuelle Pr fsumme wird mit einem Referenzwert verglichen Nur sind diesmal Priifalgorithmus und information im Programm selbst untergebracht Das Programmsiegel wird nach der Kompilierung von einem Konfigurationsprogramm an die Programmdatei angef gt und bei Bedarf auch wieder entfernt ChkState Checker Das Programm Check State berpr ft das Dateisy stem anhand einer Referenzliste Gegenstand der berwachung sind der Dateibestand gel schte oder hinzugekommene Dateien und Verzeichnisse und die Dateiinhalte und attribute Verletzung der Integrit t Die Ergebnisse eines Pr flaufs werden in Form eines Reports ausgegeben so da Ver nderungen leicht erkennbar sind Die Referenz liste ist so aufgebaut da ein einfacher und schneller Zugriff auf eine bestimmte Datei m glich ist Das Watcher Programm AVWatchI wird sich dieser Liste zur berpr fung der Programmintegrit t bedienen 4 2 3 Neue
349. indirekt ber das Kernel Dieses w hlt bei Dateioperationen auto matisch den Ger tetreiber aus der f r das Laufwerk auf dem sich die Datei befindet zust ndig ist Der Ger tetreiber konvertiert logische Sektoren in reale Sektoren auf dem Datentr ger Aus einer linearen Adresse der logischen Sektornummer werden Positionsangaben wie Zylinder Kopf und Sektor Der ROM BIOS interne Treiber f r zwei Disketten und zwei Festplattenlaufwerke benutzt BIOS Funktionen um einzelne Sektoren zu lesen 98 KAPITEL 3 SYSTEMPROGRAMMIERUNG UNTER MS DOS Andere Ger tetreiber f r z B RAM Disks und Magnetb nder verwenden eigene Routinen um die Organisation umzusetzen und auf die Hardware zuzugreifen F r Laufwerke die nicht ber einen Standard Controller angeschlossen sind ist ein ent sprechender Treiber durch eine device Anweisung in der Datei config sys einzu binden Zus tzliche Blockger tetreiber werden immer nach den DOS Treibern installiert und tragen daher Laufwerksbuchstaben die hinter denen des BIOS Treibers liegen Character Device Driver Die zweite Ger teklasse ist die der zeichenorien tierten Ger te zu denen z B der Drucker parallele Schnittstelle die Maus serielle Schnittstelle die Zeichenausgabe auf den Bildschirm und das Lesen von Zeichen von der Tastatur geh ren Die kleinste Transporteinheit ist hier das einzelne Zeichen Zeichenorientierte Ger te werden vom Kernel hnlich wie bei UNIX als Dateien v
350. inen alten Wert den es vor der Reservierung hatte zur ck Damit wird der Speicher den die lokalen Variablen belegten wieder freigegeben Hinweis Vom Stack darf immer nur eine gerade Anzahl Bytes angefordert wer den weil die CPU bei Unterprogrammaufrufen etc sowie die Befehle push und pop wortweise arbeiten Da BP den Zustand von SP vor der Reservierung enth lt liegen die lokalen Variablen weiter oben auf dem Stack d h auf niedrigeren Adressen Dies dr ckt in der Adressierung der Variablen relativ zu BP aus Das Displacement ist stets negativ _main proc near push bp BP und SP retten mov bp sp 3 2 GRUNDLAGEN HOCHSPRACHEN 83 sub sp 6 Speicher reservieren mov word ptr bp 6 2 a 2 mov word ptr bp 4 3 b 3 mov ax word ptr bp 6 AX a add ax word ptr bp 4 AX b mov word ptr bp 2 ax c AX mov sp bp SP und BP restaurieren pop bp ret _main endp 3 2 3 Parameter bergabe Meist l t sich ein Programm vereinfachen und bersichtlicher gestalten wenn man f r h ufig ben tigte Funktionen Unterprogramme vorsieht In der Regel tauschen aufrufen des engl caller und aufgerufenes Programm engl callee Informationen miteinander aus Das Hauptprogramm bergibt die Daten an das Unterprogramm das diese evtl unter der Verwendung von Hilfsdaten bearbeitet und die Ergebnisse der Operation an das Hauptprogramm zur ckgibt Damit ein Austausch erfolgen kann mu die Inform
351. int y Aufrufparameter AH 0216 BH implizit 0 Videoseite DH y Y Reihe DL x X Spalte Seiteneffekte Der Cursor auf Videoseite BH wird auf die Position x y gesetzt R ckgabeparameter keine Tabelle A 20 Set Cursor Position INT 1016 Funktion 0216 274 Funktion Get Cursor Position Interrupt 1016 Funktion 031g xwherexy int x int y Aufrufparameter AH 0316 BH implizit 0 Videoseite Seiteneffekte x y enthalten Cursorposition auf Videoseite BH Riickgabeparameter CH Startzeile Cursor CL Endzeile Cursor DH y Y Zeile DL x X Spalte Tabelle A 21 Get Cursor Position INT 1016 Funktion 0316 ANHANG A SOFTWARE A 3 MSDOS_S LIB 275 Funktion Read Character and Attribute at Cursor Interrupt 1016 Funktion 0816 WORD readchar BYTE char BYTE attr Aufrufparameter AH 0816 BH implizit 0 Videoseite Seiteneffekte char attr enthalten Zeichen und Attribut an Cursorposition auf Videoseite BH R ckgabeparameter AH attr Attribut AL char Zeichen AX return Kombinationsangabe AH AL Tabelle A 22 Read Character and Attribute at Cursor INT 1016 Funktion 0816 276 ANHANG A SOFTWARE Funktion Write Character and Attribute at Cursor Interrupt 1016 Funktion 091g void writechar BYTE char BYTE attr Aufrufparameter AH 0916 BH implizit 0 Videoseite AL char Zeichen BL attr Attribut CX implizit 1 Anzahl der Wied
352. intf stderr Couldn t compute seal n return 3 s haenge Programmsiegel an Datei an 4 5 REALISIERUNG DES RESIDENTEN TEILS 237 if out fopen f_name ab NULL fprintf stderr Couldn t open file to attach seal n return 4 if fwrite amp seal sizeof struct T_SEAL 1 out 1 fprintf stderr Couldn t attach seal n return 5 3 fclose out return 0 remove_seal Etwas komplizierter ist das Entfernen der Pr fdaten weil keine Funktion zum Verk rzen einer Datei zur Verf gung steht Deshalb mu remove_seal das ganze Programm in eine tempor re Datei umkopieren wobei die letzten Bytes mit dem Siegel weggelassen werden int remove_seal char f_name FILE in out Programm Hilfsdatei BYTE buf BUF_SIZE CRC Puffer long to_go zu schreibende Bytes WORD bytes Anzahl gelesene Bytes lege temporaere Datei an if out fopen avconfig tmp wb NULL fprintf stderr Can t create temporary file n return 6 kopiere Programm in temp Datei schneide Siegel ab if in fopen f_name rb NULL fprintf stderr Cant open program file n fclose out unlink avconfig tmp return 7 fseek in 0 SEEK_END to_go ftell in sizeof struct T_SEAL rewind in while bytes fread buf 1 min to_go BUF_SIZE in 0 if fwrite buf 1 bytes out bytes
353. ion get_mcb_name Daraus da man ber die logische Kette PSP Environment den Programmnamen feststellen kann ergeben sich eine Reihe von Anwendungsm glichkeiten Eine einfaches Beispiel ist das bereits entwickelte Programm ReadMCB das nicht nur die PSP Adresse des Besitzers ausgibt sondern auch dessen Namen Diese Aufgabe realisiert die Funk tion get_mcb_name die als Parameter einen Zeiger auf einen MCB erwartet und den Namen des Besitzers in den bergebenen String eintr gt Werfen wir einen Blick auf die Arbeitsweise der Funktion Ist die Segmentadresse owner des Besitzers gleich 000016 ist der betreffende Speicherblock frei char get_mcb_name struct T_MCB far mcb_ptr char name int p WORD owner env_owner char far env eflag owner mcb_ptr gt owner if owner 0x0000 freier Speicher strcpy name lt free memory gt else Programm Um einiges komplexer wird die Sachlage bei einem belegten MCB Zun chst wird berpr ft ob der Eigent mer des MCBs berhaupt ein Environment besitzt aus dem sich der Programmname bestimmen l t env ist der ber den PSP des Besitzers ermit telte FAR Zeiger auf das vorgebliche Environment Vorgeblich deshalb weil ein Programm sein Environment freigeben kann ohne da der Verweis darauf im PSP automatisch gel scht wird Resultat ist ein verwai ster Environment Zeiger der nicht benutzt werden darf Der Grund Der freigegebene Block kann frei
354. ird Effektive Adresse Bezeichnung lt Wert gt Immediate lt Register gt Register lt Disp gt Absolute BP lt Disp gt Indirect Offset SI lt Disp gt DI lt Disp gt BX lt Disp gt BX SI lt Disp gt Indirect Indexed Offset BX DI lt Disp gt BP SI lt Disp gt BP DI lt Disp gt Tabelle 3 2 Adressierungsarten Der vorangegangene Text war eine gr ere Ansammlung theoretischer CPU Interna die durch die folgenden Beispiele ein wenig mit Leben erf llt werden sollen Links steht der Befehl wie ihn der Assembler kennt rechts steht eine quivalente Ver sion in C Schreibweise MOV AX 2342h AX 0x2342 MOV CL 4h CL 0x04 MOV AX DX AX DX MOV AX 74Ah AX WORD MK_FP DS 0x074A MOV AH BX AX BYTE MK_FP DS BX MOV AX BP 42h AX WORD MK_FP SS BP 0x42 MOV AX ES E793 AX WORD MK_FP ES 0xE793 MOV 9CB4 AX WORD MK_FP DS 0x9CB4 AX MOV BYTE PTR 6D6C 42h BYTE MK_FP DS Ox6D6C 0x42 Dazu noch ein einige Erl uterungen e Das Maschinensprachekommando zum Transportieren von Daten hat die Syntax mov lt Ziel gt lt Quelle gt e Das C Makro MK_FP make farpointer erzeugt einen FAR Zeiger vom Typ void far indem der erste Operand als Segment und der zweite als Offset interpre 76 KAPITEL 3 SYSTEMPROGRAMMIERUNG UNTER MS
355. it eigenem MBR aufgebaut ist Jede Partition stellt sich Programmen die Dateifunktionen verwenden als v llig eigenst ndiges Laufwerk dar das mit dem logischen Sektor null beginnt Auf BIOS Ebene ist von dieser Aufteilung nichts mehr zu bemerken denn die logische Struktur der Partitionierung wird auf Ger tetreiberebene in die korrekten Angaben f r physi kalisches Laufwerk Zylinder Kopf und Sektor transformiert Dies bedeutet nat rlich 3 5 VERWALTUNG EXTERNER SPEICHER 113 Offset Typ Bedeutung 000ig code Master Boot Program 1BE 6 struct 1 Partitionseintrag 1CE 6 struct 2 Partitionseintrag 1DEjg struct 3 Partitionseintrag 1EE 6 struct 4 Partitionseintrag 1FEig word Boot Signatur AA5516 Tabelle 3 14 Aufbau MBR Master Boot Record Offset Typ Bedeutung 0016 byte Bootflag 0016 nicht bootbar 8016 bootbar Ol s byte Kopf Start 0216 word Zylinder Sektor Start 0416 byte Typ 0 frei 1 12 Bit FAT 4 16 Bit FAT 5 extended 6 huge Dos 4 0 0516 byte Kopf Ende 0616 word Zylinder Sektor Ende 0816 dword erster Sektor der Partition 0Ci6 dword Gr e der Partition in Sektoren Tabelle 3 15 Aufbau Partitions Eintrag auch da Kontrollfunktionen auf BIOS Level nicht ohne weiteres bestimmen k nnen auf welche Partition eines Laufwerks gerade zugegriffen wird Dies ist nur indirekt ber die Verwaltungsinformationen im MBR m glich mit deren Hilfe sich feststellen l
356. it von Adapterkarten wie z B Video und Festplattencontrollern Das BIOS durchsucht den Speicherbereich von C8000i bis E000016 in 2 kB Schritten auf die Kennung AA5516 am Anfang jedes Blocks Im Adapter ROM folgt dem Kennwort eine L ngenangabe und die Initialisierungsrou tine des ROMs Diese wird vom Boot ROM des Rechners mit einem call far Befehl aktiviert und kehrt mit einem retf zur Bootsequenz zur ck Wichtig f r Schutzbe lange ist die Tatsache da zus tzliche ROM Bausteine vor dem unten beschriebenen Bootvorgang aktiviert werden Viele Schutzsysteme auf Hardwarebasis nutzen die be schriebene Technik Nach dem Post Power On Self Test Selbsttest nach Einschalten und evtl Initialisierung der Adapter versucht der Bootstrap Loader den Bootblock zun chst von Laufwerk A zu laden Befindet sich keine Diskette im Laufwerk oder ist kein Laufwerk mit der Bezeichnung A angeschlossen erfolgt ein zweiter Versuch von der als aktiv gekennzeichneten DOS Partition der Festplatte Diese unver nderliche da im ROM BIOS fixierte Reihenfolge stellt Schutzsoftware vor gro e Probleme Eine im Laufwerk A befindliche evtl mit einem Boot Virus infizierte Diskette wird n mlich immer gerne vom Rechner angenommen Schutzprogramme haben es dagegen schwer denn sie werden nur durch Laden des Betriebssystems von der Festplatte aktiviert Doch betrachten wir zun chst den Ladevorgang etwas genauer Der Bootstrap Loader l dt den Bootblock den erst
357. it zur weiteren Ausbreitung von Soft wareanomalien beigetragen haben Dazu z hlen Antivirus Forscher wie John McAfee Programm u a ViruScan und Prof Eberhard Sch neburg Buch Computerviren 35 sowie der Buchautor Ralf Burger Das gro e Computer Viren Buch 27 Prof Sch neburg hat sich bereits energisch gegen den Ausschlu und ein angebliches Infor mationsmonopol von BSI und ihm genehmen Sicherheitsexperte n gewehrt Der KES Artikel schlie t mit der nur zu wahren Bemerkung da polemische Klein kriege zwischen Forschern zwar nichts Neues sind aber zur erfolgreichen Virenbek mp fung nichts beitragen Angesichts der zunehmenden Verkn pfung von Wirtschaft und Universit ten auch in Deutschland und den damit ins Spiel kommenden Geldern ist mit weiteren wirtschaftlich motivierten Streiten und Eifers chteleien zu rechnen Kapitel 2 Theorie der Abwehr Short of using the U S military s M 16 security solution a U S Marine with an M 16 rifle outside the computer room that does not have any dial up lines it is next to impossible to secure any system fully Bernard P Zajac Jr 24 Das 1 Kapitel beschaftigte sich ausfiihrlich auf theoretischer Basis mit den Funk tionsprinzipien der Softwareanomalien Aus dieser Analyse der Software Krankheit werden hier Abwehrstrategien und techniken entwickelt die in die Schutzprogramme des 4 Kapitels eingehen 2 1 Analyse Ursachen der Verseuchung Wie
358. iten der MS DOS Kommandos umfassen und bei weitem bertreffen Beispiele daf r sind PC Tools Nor ton Utilities und andere Werkzeuge Falls f r den geplanten Einsatz eines Rechners diese Leistungen nicht erforderlich sind sollten derartige Programme aus dem System entfernt werden Need to Have Prinzip Zu den genannten Gefahrenpunkten kommt eine weitere Schwierigkeit hinzu Falls die Dateistruktur weit verzweigt ist und im System viele Dateien gespeichert sind ist die manuelle Suche nach verd chtigen Dateien sowohl zeitaufwendig als auch fehlertr chtig Aufgabenbeschreibung ChkSys sucht das gesamte Dateisystem nach verd chti gen Dateien und Verzeichnissen ab und meldet in einem Report alle besonderen Vor kommnisse Eine Datei oder Verzeichnis ist verd chtig wenn e sie die Attribute readonly hidden oder system tr gt was z T auch f r die Systemdateien gilt e der Name Steuerzeichen oder ungew hnliche Textzeichen enth lt e die Zeitmarke in Datum oder Zeit illegale Werte aufweist e der Name in einer schwarzen Liste enthalten ist 5 9 Alt halten auf Ziffernblock 255 eingeben Alt loslassen 146 KAPITEL 4 ENTWICKLUNG DER SYSTEMPROGRAMME e die Dateil nge gleich 0 ist Systemarchitektur Es ist eine Scan Plattform scan_dir zu entwickeln mit deren Hilfe Dateibest nde durchsucht werden k nnen Parameter der Suche sind Start verzeichnis Suchmaske Name und Attrib
359. itere spezifischere Informatio nen bestellt werden k nnen 310 ANHANG B OFFENTLICHE DATENNETZE Nicht die Geduld verlieren wenn die Antwort ein paar Tage auf sich warten l t und nicht gleich dieselbe Bestellung noch einmal aufgeben Die Nachricht oder die Antwort k nnte noch in irgendeiner Warteschlange auf einem Zwischenknoten auf den Weitertransport warten Au erdem sind die Server oft sehr stark belastet oder bearbeiten Auftr ge nur zu bestimmten Zeiten Doppelte Anforderungen und damit doppelte Antworten belasten das Netz unn tig Aus demselben Grund sollte man vor der Bestellung von Dateien speziell ber FTP und trickle Server pr fen ob auf ASCII oder binary Mode umgeschaltet bzw uuencodiert werden mu Es ist rgerlich wenn nach mehreren Tagen War tezeit eine 1 MB Datei zwar endlich eintrifft aber vom mail Programm v llig zerst rt worden ist Besonders bei der Bestellung gr erer Dateien sollte man pr fen welcher Kno ten diese bereith lt und davon den n chsten benutzen Von dem pers nlichen Vorteil abgesehen da die Antwort schneller da ist wird dadurch die Belastung vieler Verbindungen und Rechner vermieden Diese Strategie wird auch von den Netzwerkbetreibern mit den trickle Servern siehe dort verfolgt Last but not least Die Freiheit eines Einzelnen endet dort wo die des anderen eingeschr nkt wird Das gilt auch f r die Benutzung ffentlicher Netze Die Kon trollen sind gering le
360. iteres m glich Diese drei und andere Methoden werden im unmittelbar folgenden Abschnitt behandelt Cohen f hrt eine weitere schon recht spezielle Methode an die Immunisierung von Programmen Die meisten Viren versuchen aus Gr nden der Unauff lligkeit ein Programm nicht mehrfach zu infizieren da dieses immer gr er w rde und jeder In fektionsproze Zeit ben tigt Deshalb untersucht das Virus das potentielle Opfer auf ein bestimmtes Merkmal das es bei der Infektion installiert Durch Nachbildung dieses Merkmals kann das Virus get uscht und das Programm quasi geimpft werden Ange sichts der F lle von Viren und ihrer Funktionsweisen ist es jedoch unm glich das In fektionsmerkmal jedes Virus anzubringen Des weiteren umgehen clever programmierte Softwareanomalien wie der INTERNET Worm s dort solche Ma nahmen indem das Infektionsmerkmal nach einem bestimmten Algorithmus ignoriert wird 46 KAPITEL 2 THEORIE DER ABWEHR 2 5 Kommerziell verfiigbare Konzepte Dieser Abschnitt stellt Verfahren zur Virenabwehr und dazu exemplarisch Programme vor die kommerziell oder als Share und Freeware auf dem Markt angeboten werden Viele gute wenn nicht die besten und vor allen Dingen aktuellsten Antivirusprogramme sind ber ffentliche Netze kostenlos Freeware oder gegen eine im Vergleich zum Nutzen geringe Registriergeb hr Shareware zu beziehen Die Nutzung einiger Netze und der darauf typischerweise eingesetzten Serversoftware is
361. itssoftware Vor und Nachteile Zwar kann der Zweck eines Zugriffs nicht oder nicht genau ermittelt werden denn au er Laufwerk Position des Sektors und Art der Operation Lesen Schreiben Formatieren stehen keine Parameter zur Analyse zur Verf gung Es kann sich dabei ebenso um das Le sen oder Schreiben von Daten zur Dateiverwaltung wie zur Dateiverarbeitung handeln Daf r sitzt das Kontrollprogramm an der Quelle des Geschehens Laufwerksbezogener Schutz l t sich einfach und umfassend realisieren Alles in allem sind eine Reihe von Funktionen auf verschiedenen Ebenen von MS DOS zu berwachen Es ist deshalb ein Watcher vorzusehen der sich in die relevanten Interrupts einklinkt die Aufrufparameter auswertet und je nach Sachlage die Operation zul t oder abbricht Die zu sch tzenden Objekte sind in unterschiedlich fein aufgel ste Bereiche unterteilbar Tab 4 3 Bereich Ebene Funktionen globale Rechte Kernel ndern der Systemzeit Partition Rechte BIOS schreiben lesen von Urladeinformati on Sektoren allgemein formatieren von Spuren Verzeichnis Rechte Kernel anlegen l schen durchsuchen Dateirechte Kernel schreiben lesen ausf hren suchen Datei Pflichten Kernel berpr fen der Integrit t Tabelle 4 3 Schutzbereiche eines Watchers 4 1 ANFORDERUNGSANALYSE 137 4 1 3 Der Urladevorgang Ein spezielles Kapitel stellt der Urladevorgang dar der eine besondere Form des Pro grammstarts ist s a
362. keiten liefert das info Kommando mit der entsprechenden Themenangabe Eine Liste der Themen kann mit info bestellt werden Tabelle B 2 gibt die gebr uchlichsten listserv Kommandos an Gro und Kleinschreibung wird nicht unterschieden kleingeschriebene Teile der Befehlsnamen k nnen weggelassen werden z B sub statt subscribe Syntax Bedeutung HELP Hilfe anfordern diese bersicht Info lt Thema gt Informationen anfordern Thema ref wie refe rence empfehlenswert INDex lt Liste gt Dateiverzeichnis zur Liste anfordern oft ltere Aus gaben List short long Beschreibung aller Listen dieses Servers anfordern REView lt Liste gt Liste der Teilnehmer anfordern SIGNOFF s UNSubscribe SUBscribe lt Liste gt lt Name gt sich in Liste eintragen UNSubscribe lt Liste gt sich aus Liste austragen Tabelle B 2 Befehlsauswahl listserv B 4 TRICKLE Server trickle Server haben die Aufgabe Dateien eines ferner Servers lokal weiterzuvermit teln So w rde es z B das Netzwerk stark belasten wenn jeder Benutzer in Europa di rekt auf Dateien in den USA zugreifen w rde Das w re besonders dann unsinnig wenn viele die gleiche Datei ben tigen F r den sehr gro en Server wsmr simtel20 army mil in den USA wurden deshalb lokale Vermittlungsstellen wie z B trickle dsOrusii in Stuttgart eingerichtet Bestellt ein Benutzer eine Datei die trickle nicht vorr tig hat fragt der angeschriebene Server zun ch
363. klen 54 Firmen wie z B die DATEV in N rnberg berpr fen jedes Fremdprogramm aus giebig auf bekannte Viren und f hren Tests in einer isolierten Umgebung durch bevor das Programm f r die Benutzung freigegeben wird Speziell f r ffentliche Stellen mi lit rische Einrichtungen und Firmen kommt die M glichkeit in Betracht da jemand absichtlich versucht ein Virus einzuschleusen Sabotage Terrorismus Spionage und format reicht f r manche BSIs auf Festplatte nicht aus fdisk benutzen 3Datenverarbeitungsorganisation des steuerberatenden Berufs in der BR Deutschland e V 2 2 KONVENTIONELLE SICHERHEITSMASSNAHMEN 37 politische Ambitionen sind als Motive fiir Viren vielleicht nicht so utopisch wie sie manchem erscheinen m gen M glichkeiten beschr nken Need to Have Prinzip Falls daran gedacht wird Schutzprogramme einzusetzen d rfen keine berfl ssigen Softwarewerkzeuge auf dem System gespeichert sein die Operationen erm glichen die f r den bestim mungsgem en Betrieb nicht notwendig sind Prinzip Need to Have nur ha ben was man braucht Dazu z hlen MS Dos Kommandos zur Festplattenformatie rung format fdisk nderung von Dateiattributen attrib und Datensicherung backup restore Werkzeuge wie debug symdeb PC Tools Norton Utilities und ande re umfassen und bertreffen z T noch erheblich die F higkeiten der Dos Kommandos Solche Programme k nnten Schutzma nahmen ausschalt
364. kommen fast t glich aus allen Teilen der Welt aus reichen und armen L ndern kapitalistischen und seit 1991 vor allen Dingen sozialistischen Staaten Hinter der momentan erlebten Viren flut stehen hunderte von Programmierern denn nicht jedes Virus findet seinen Weg zu den Entwicklern von Antivirussoftware Wer sind diese Menschen und aus welchem Grund schreiben sie absolut nutzlose Programme Spa am Experimentieren Selbst best tigung und Rache werden bei der Befragung von Computerstraft tern h ufig als Gr nde ermittelt Vorschriften Wie kann mit Hilfe von Gesetzen Benutzerordnungen f r Rechen zentren und betrieblichen Vorschriften erreicht werden da niemand Softwareanoma lien erstellt Durch die weite Verbreitung von IBM kompatiblen APCs auch im privaten Bereich entzieht sich die Programmierung von Softwareanomalien der Kontrolle durch Personen und Kontrollprogramme hnliches gilt f r das F lschen von Banknoten im Hobbykeller Der entscheidende Unterschied zwischen den genannten Straftaten besteht im Grad der M glichkeit den T ter zu ermitteln Falschgeld mu gegen echtes Geld oder Waren umgetauscht und so in Umlauf gebracht werden Es gen gt hingegen eine verseuchte Diskette irgendwo liegen zu lassen irgend jemand wird sie schon aus Inter esse benutzen Dieser verseucht seinen Rechner gibt infizierte Programme an Bekannte weiter die wiederum Der Verursacher ist an der ersten Verbreitung gar nicht aktiv betei
365. ktionen zum Suchen und Offnen von Dateien e Blockierung aller Schreibzugriffe durch Setzen des readonly Flags und oder Kon trolle der Aufrufe zum Andern der Dateiattribute und Offnen von Dateien AVWatchP Schreib und Leseschutz auf Partitionebene wird von AVWatchP rea lisiert Die berwachung kann auf die Urladeinformation MBR und PBR beschr nkt werden um normale Zugriffe zuzulassen Urladeviren aber einen Riegel vorzuschieben Schwachstelle Direkter Zugriff Besonders f r BSIs die Manipulationen meist nur sektorweise durchf hren ist die direkte Programmierung des Festplattencontrollers eine g nstige Alternative zu BIOS Aufrufen Die Manipulierung von Ports und Speicher adressen l t sich n mlich nur hardwarem ig kontrollieren wof r in vielen Computern MMUs Memory Management Units zust ndig sind Der Atari ST und der Commodore Amiga 68000 kompatible CPUs sind beide mit solchen Speichermanagern ausger stet die unzul ssige Zugriffe erkennen und Speicherbereiche auf logische Adressen abbilden Auch die INTEL CPUs im Protected Mode verf gen ber Speicherschutzmechanismen die sich allerdings unter MS DOS eines permanenten Ruhestands erfreuen AVWatchF Zugriffe auf Dateien werden von AVWatchF kontrolliert Wie die mei sten Watcher wirkt AVWatchF post infectionem und soll nach der Aktivierung eines Virus Schlimmeres d h weitere Infektionen und andere Manipulationen verh ten Die Methode des direkten Zugriffs
366. ktur nicht un hnlich den structs in C Nach dem Sichern des BP Registers auf den Stack und der bernahme von SP nach BP zeigt SS BP auf old_BP Der Parameter n ist obwohl nur ein Byte breit als Wort deklariert weil der push Befehl stets Worte auf dem Stack ablegt param STRUC oberstes Stapelelement old_BP DW old_BP 0 old_ip DW old_ip 2 adr_x DW adr_x 4 n DW n 6 Stapel vor Aufruf Wachstumsrichtung param ENDS Und so sieht das Programm aus das an der Stelle Code des Rahmens einzuset zen ist Die Umdeklaration von BP n als BYTE PTR ist erforderlich weil der Assembler wegen der technisch bedingten Deklaration von n als Wort einen Fehler melden w rde push bp mov bp sp mov bx bp adr_x BX amp x mov ax bx AX BX x mov cl BYTE PTR bp n CL n rol ax cl AX rol AX CL pop bp ret Das Modul rol asm wird mit dem Aufruf tasm rol des Turbo Assemblers in rol obj bersetzt F r die Kompilierung des in C geschriebenen Testprogramms test_rol c ist tcc ms c I lt Pfad zu include Dateien gt test_rol einzuge ben Speichermodell SMALL nur kompilieren Datei TEST_ROL C extern WORD rol WORD x BYTE n void main void WORD x x OxAAAA printf rol OxAAAA 0x03 04 4X n rol amp x 0x03 Kr nender Abschlu des Ganzen ist der Linkvorgang dessen Resultat das ausf hr bare Programm ist Die Argumente f r
367. l und BIOS Interrupts ein Ein Schutz gegen das Urladen von Disket te mu auf Hardware Ebene realisiert werden Sowohl die Schutzfunktionen als auch die Selbstschutzfunktion des W chterprogramms d rfen nicht zu leicht au er Kraft zu setzen sein Damit ist eine gewisse Systemarchitektur bereits vorgegeben die praktisch iden tisch mit dem Aufbau von MS DOS ist Die folgenden Abschnitte befassen sich mit Ma nahmen auf den einzelnen Hierarchieebenen Es werden bereits einzelne Program me ihre Aufgaben und ihre prinzipielle Funktion definiert Den Anfang macht die Erl uterung der Systembibliotheken auf denen das Av System aufbaut 4 2 1 Bibliotheken Funktionen die von mehreren Programmen ben tigt werden lagert man sinnvollerwei se in eine Softwarebibliothek engl library aus Vorausgesetzt da die Schnittstellen sorgf ltig dokumentiert wurden k nnen diese Funktionen fix und fertig in neue Pro gramme bernommen werden und vereinfachen so die Programmerstellung erheblich Zum AV System geh ren die beiden Bibliotheken msdos_s lib und avsys 1ib die bei de f r das Speichermodell SMALL ausgelegt sind Diese sind nicht nur Grundlage der Programme des AV Systems sondern k nnen auch f r eigene Programme und nicht nur 4 2 SYSTEMENTWURF 139 unter C eingesetzt werden Voraussetzung ist lediglich die Verwendung des korrekten Speichermodells und der C Calling Convention fiir Funktionsaufrufe msdos_s lib enth lt MS D
368. l TINY um einen m glichst ein fachen Programmaufbau zu erhalten und weil der Watcher sicher weniger als 64 kB Speicher umfassen wird Das Ergebnis der Kompilierung ist ein exe Programm das vor Benutzung noch mit dem externen Kommando exe2bin in eine com Datei umzu wandeln ist Den Grund daf r deutet die Warnung des Linkers no stack an Im Modell TINY ist kein separater Stackbereich vorgesehen wie ihn alle exe Programme haben und beim Start automatisch benutzen exe2bin entfernt den berfl ssigen exe Header der u a dem Lader von MS DOS Aufschlu ber die Lage des Stack gibt und transformiert die Datei in einen verwendbaren Zustand Beim Start eines com Programms reserviert MS DOS zun chst allen verf gbaren Speicher jedoch h chstens 64kB weil dies die maximale Segmentgr e ist Alle Seg mentregister zeigen auf den Start des Speicherblocks in dem sich Programm Daten und Stack in einem einzigen Segment befinden Der Stack w chst vom Ende des Speicher blocks her in Richtung Anfang und macht durch seine Lage eine Verkleinerung zun chst unm glich da sonst Teile des Stack freigegeben w rden Der standardm ig festgeleg te Stackbereich mu so verlegt werden da auch bei maximaler Stackbenutzung kein Programmcode oder Daten berschrieben werden was fatal w re Diese und andere Aufgaben bernimmt der Startup Code des Compilers der vor dem Anwenderprogramm durchlaufen wird Im Startup Modul werden auch die Rei henfol
369. l vorw rts verkettete Liste der bereits geladenen ein Ger tetreiberfunktionen werden vom Kernel nach einem relativ komplizierten Verfahren aufgerufen das gleich zwei Bearbeitungsroutinen erfordert 13 F r unse re Zwecke sind die normalen Treiberfunktionen irrelevant da wir nur eine residente Plattform erstellen wollen Trotzdem m ssen wir zumindest die Funktion init imple mentieren die von sysinit nach der Installierung aufgerufen wird Dadurch kommen wir auch um die Kommunikationsfunktionen nicht herum Aus dem Gesagten folgt da die Implementierung nicht ausschlie lich in C erfolgen kann Der besondere Aufbau des Vorspanns und die Art der Treiberaufrufe 3 7 SPEICHERRESIDENTE PROGRAMME 125 erfordern zumindest die teilweise Realisierung in Assembler am giinstigsten in Form eines Ger tetreiber C Interfaces Da Zeichentreiber einfacher als Blocktreiber aufge baut sind waren diese der Typ unserer Wahl Tips B cher zum Thema Ger tetreiber erw hnen oft und mit Recht da Ser viceroutinen des Treibers keine Kernel Funktionen aufrufen d rfen Bedeutet dies da unser Programm z B keine Dateioperationen durchf hren darf Zum Gl ck nicht den das Verbot erstreckt sich nur auf die Treiberroutinen die vom Kernel aufgerufen werden und die aus Reentrancy Gr nden nicht wieder Kernelfunktionen in Anspruch nehmen d rfen Unsere in bestimmte Interrupts eingeklinkten Kontrollfunktionen sind aber keine Routinen d
370. le versiegelt eine einzelne Datei Abbildung 4 2 stellt den Informationsflu schematisch dar Funktionsbeschreibung main bietet dem Anwender ein kurzes Men an nimmt die Auswahl entgegen und fragt spezifische Parameter ab Dateiname Laufwerk 4 3 PRUFPROGRAMME 153 Abbildung 4 2 Ein Ausgabe Seal etc Dazu kommt noch die Initialisierung der CRC Routinen mit make_crc_table Je de Pr fsummenfunktion liefert die Signatur f r das betreffende Objekt zur ck seal_file Fangen wir mit der einfachsten Funktion an Der Aufruf von seal_file wird direkt an die Funktion sig_crc weitergeleitet welche die Pr fsumme ber eine Datei berechnet Im Fehlerfall wird eine Nachricht ausgegeben der R ckgabewert ist 000016 seal_boot Der Aufbau von seal_boot ist dem des Programms ReadPart sehr hnlich main findet seine Entsprechung in seal_boot die rekursive Funktion read_part_data ist praktisch identisch mit chk_part_data Der Unterschied besteht darin da die Text ausgaben wegfallen und nach dem Einlesen eines MBRs oder PBRs mit block_crc die Pr fsumme ber den Puffer berechnet wird Neu ist auch der Parameter sig ber den der Startwert vorgegeben und der berechnete Wert zur ckgegeben wird einfuegen in Defines define CRC_START 0x0000 Startwert CRC Funktionen define POLYNOMIAL 0xA001 Generatorpolynom WORD seal_boot int drive WORD sig Signatur BYTE ldrive logische Laufwerksnummer sig CRC_STA
371. len ob ein Programm im Speicher nach ihm sucht Ist das der Fall st rzt der Rechner ab der Verdacht f llt evtl auf das Such programm ber Viren die sich selbst verbessern und ihr Wissen erweitern k nnen wird schon diskutiert 38 3 149 156 157 158 Ist angesichts dieser etwas d steren Entwicklung AVSystem nicht schon bald berholt Pluspunkt S ttigungsangriff Das entwickelte Konzept ist von den F higkei ten zuk nftiger Viren oder anderer Softwareanomalien nicht abh ngig da es nicht auf bestimmte Eigenschaften derselben zurechtgeschnitten ist Scanner veralten zwangs l ufig mit der Entwicklung neuer Viren Es ist durchaus denkbar da ein beraktiver Zeitgenosse einen cleveren Virusgenerator entwickelt mit dessen Hilfe er Unmengen verschiedenartiger Viren in Umlauf bringt Falls die Exemplare stark genug differieren und damit unterschiedliche Suchstrings und Desinfektionsmethoden notwendig werden ist das Ende der Scanner in Sicht Vielleicht wird dieses Szenario sowieso bald Wirk lichkeit wenn die Anzahl der Viren weiter so w chst wie 1991 Schutzkonzepte die zulassen da ein Virus berhaupt aktiv wird m ssen durch Watcher unter gro em Aufwand Barrieren errichten die von Virenprogrammierern von Viren selbst analysiert und berwunden werden k nnen Konzepte wie die kontrol lierte Isolation und die berpr fung der Programmintegrit t vor dem Start werden t tig bevor das Virus die M glichkeit zum H
372. lfe kontrollierte Isolation und damit der Schutz vor sicherheitsgef hrdender Software realisiert werden kann 2 7 ALTERNATIVE KONZEPTE 59 2 7 Alternative Konzepte Ein vielversprechender Ansatz analog zu Verfahren aus der Biologie ist der eines Schutzanzuges f r den Rechner d h die kontrollierte Isolation des Systems von Pro grammen von au erhalb Dieses Schutzprinzip ist vor allen Dingen f r APCs in einem Betrieb oder Rechenzentrum gedacht die vor Computerviren und auch gegen Verseu chungsversuche der Anwender gesch tzt werden sollen F r den PC zu Hause kann angenommen werden da der Benutzer ein eigenes Interesse an der Virenfreiheit seines Rechners hat und deshalb nicht gegen die Schutzprogramme arbeitet Kontrollierte Iso lation stellt im diesem Moment eine Selbstbeschr nkung eine Einschr nkung des freien Arbeitens dar Sie kann aber zu erh hter Sicherheit beitragen indem der Benutzer vor sicherheitsgef hrdenden Operationen gewarnt wird und dann selbst entscheiden kann ob er fortfahren m chte oder nicht 2 7 1 Schutzzonen und Kontrollpunkte Abbildung 2 2 stellt schematisch den Aufbau eines Computersystems unter dem Ge sichtspunkt Transport von Dateien dar Die CPU erm glicht die Ausf hrung eines Programms das eine Datei innerhalb des Dateisystems ist Dieses besteht aus stati schen Teilen wie der Festplatte intern und auswechselbaren Datentr gern wie Dis ketten und Wechselplatten extern die nur t
373. lfskonstruktionen erreichbar Die Ver wendung eines 80386er ATs unter MS DOS entspricht deshalb dem Fahren eines Porsches im ersten Gang mit angezogener Handbremse aber immerhin mit durchgetretenem Gaspedal Erst unter dem Betriebssystem 08 2 und manchen UNIx Implementationen werden die Prozessoren richtig ausgefahren 3 1 2 Das Segment Konzept In diesem Abschnitt geht es um alles was der Systemprogrammierer beim Umgang mit den INTEL CPUs beachten mu und das darf man wohl sagen ihm das Arbeiten potentiell erschweren wird Die INTEL Prozessoren sind im Real Mode den MS DOS verwendet intern 16 Bit breit organisiert was historische Gr nde hat Das bedeutet da die Daten und Adre register die Gr e eines 16 Bit Wortes im folgenden kurz Wort besitzen Damit lassen sich 65536 verschiedene Zust nde darstellen z B die Zahlen von 0 bis 65535 ent spricht in C unsigned int oder 32768 bis 32767 entspricht int Aus dieser Beschr nkung ergibt sich ein Problem denn im Real Mode kann insgesamt 1 MB Spei cher adressiert werden wof r wie oben angedeutet 20 Adre bits erforderlich sind Die L sung besteht darin zwei 16 Bit Register zu einem gr eren Register zu sammenzuschalten Der Gedanke liegt nahe von den so erhaltenen 32 Bits die h her wertigen 12 Bits wegzuwerfen und den Rest als 20 Bit Adresse zu verwenden Das obere h herwertige Wort bestimmt einen 64 kB Block Segment innerhalb des 1
374. ligt und wegen der vielen Zwischenstationen praktisch nicht mehr zu ermitteln 2 1 ANALYSE URSACHEN DER VERSEUCHUNG 27 Das Virus kann ber Datennetze und Disketten mehrmals um die ganze Welt gereist sein der Weg ist mit vern nftigem Aufwand nicht nachvollziehbar Fazit Den vielen Hobbyprogrammierern kann niemand wirksam vorschreiben was sie tun und lassen sollen So wie sich mit einem Farbkopierer Geldscheine kopieren lassen kann eben ein Computer auch zur Virenprogrammierung eingesetzt wer den Allein dadurch da der Gesetzgeber solches Tun unter Strafe stellt werden Computerviren nicht von der Bildfl che verschwinden Ethik in der Informatik Angesichts der Computervirenproblematik sind auch schon Forderungen nach einer Ethik in der Informatik laut geworden 38 3 015 In erster Linie wird dabei an eine Art Codex an einen Eid des Turing gedacht wie ihn die Berufsgruppen rzte Hippokratischer Eid oder Ingenieure befolgen sollten Richtig ist wohl in jedem Fall die Forderung da sich die Grundeinstellung mancher Menschen zugunsten eines verantwortungsbewu teren Handelns ndern mu Dennoch ist eine solche von allen respektierte Ethik eher eine Wunschvorstellung die durch neue Sicherheitskonzepte und Gesetze zu unterst tzen ist So richtete z B die Ikarus GmbH einen Wettbewerb f r Virenprogrammierer aus 86 Gesucht wurde nach einem Virus der das Schutzprogramm dieser Firma unerkannt umgehen kann Viele
375. lisiert einen Fehler der auch bei allen folgenden Dateien auftreten wiirde gen_copy bricht daraufhin die Ausf hrung ab s neue Abbruchbedingung int phys_rename char source char dest int err switch renfile source dest case 0x00 kein Fehler err 0 break case 0x11 unterschiedl Laufwerke err 2 break case 0x02 Datei nicht gefunden case 0x05 Datei schreibgeschuetzt default err 1 Js return err F Erl uterungen norm_path2 Wie schon angesprochen k nnen Dateianga ben unvollst ndig sein Dar ber hinaus schaffen die reservierten Verzeichnisnamen gleiches Verzeichnis und Vaterverzeichnis Verwirrung Welche Datei ver birgt sich z B hinter der Angabe ROBERTS Lautet der aktuelle Pfad C JULIA LOVES ROMEO ist die richtige Antwort C JULIA ROBERTS Ziel der Nor malisierung ist also eine Dateispezifikation mit vollst ndigem Pfad ohne relative Ver zeichnisangaben Funktion Zuerst wird die Dateiangabe in die drei Teile Laufwerk new Verzeich nis subdir und Name name aufgespalten In new wird die normalisierte Dateiangabe beginnend mit dem Laufwerk aufgebaut Falls dieses fehlt wird das aktuelle Laufwerk verwendet 182 KAPITEL 4 ENTWICKLUNG DER SYSTEMPROGRAMME void norm_path2 char f_spec char subdir 65 Unterverz in F_SPEC char name 13 Name in F_SPEC char new 80 F_SPEC normalisi
376. lit_fspec SM_NAME f_spec name f_nr subdir start lseek handle f_nr sizeof struct T_FILE SEEK_SET while f_nr lt subdir end if read handle file sizeof struct T_FILE sizeof struct T_FILE return 5 if flag stricmpu file gt name name 0 break J f_nr close handle return flag 4 0 Hinweis Da die Referenzeintr ge alphabetisch sortiert vorliegen bietet sich die bin re Suche als schneller Zugriffsalgorithmus an Tests des Autors haben gezeigt da der Implementationsaufwand residentes Programm in keinem Verh ltnis zum erziel ten Geschwindigkeitsgewinn steht Schuld daran sind die relativ kurzen Listen die zu durchsuchen sind Die Liste der Verzeichnisse umfa t i d R wohl weniger als 40 50 Eintr ge hnliches d rfte f r die Teillisten der Dateinamen gelten Bei der sequentiel len Suche sind demnach im Durchschnitt etwa 20 25 Suchschritte notwendig bei der bin ren etwa log 50 6 Das entspricht ca 3 bis der Zugriffszeit beim sequentiellen Verfahren ein Verh ltnis das sich fiir mehr Eintr ge schnell verbessert Ob das viel ist oder nicht h ngt von den eingesetzten Programmen ab Bei der Textverarbeitung oder Programmerstellung werden nur m ig h ufig Dateien ge ffnet und bearbeitet Ganz anders die Sachlage bei Datenbanken St ndig findet eine Vielzahl von Dateioperationen statt deren Geschwindigkeit starken
377. ll und mu keine vollst ndige Beschreibung des Betriebssystems MS DOS sein denn diese w rde den Rahmen dieses Buches sprengen Die gebotenen Informationen reichen aus um im folgenden Kapitel wirksame Pro gramme zur Abwehr von Softwareanomalien erstellen zu k nnen Zwar wird bei der Programmentwicklung versucht nicht auf spezifische Aktionen und F higkeiten von MS DOS Viren einzugehen Dennoch ist es notwendig an verschiedenen Stellen in die Niederungen des Betriebssystems hinabzusteigen und auch mit undokumentierten Funktionen zu arbeiten Voraussetzungen Programmierkenntnisse in C oder einer vergleichbaren Programmiersprache werden vorausgesetzt Grundlagen in Assembler besonders die Fein und Besonderheiten der Intel CPUs werden im ersten Abschnitt dargelegt Grund lagen der Programmierung in C und in Assembler vermitteln 5 4 bzw 2 8 14 und 3 um nur einige zu nennen Dieses Kapitel beinhaltet auch kurze Ubungsprogramme welche die vermittelte Theorie veranschaulichen und zeigen wie eine Anwendung in der Praxis aussehen kann Teile dieser Programme sind wichtiger Bestandteil der System bibliothek die ihrerseits wieder Grundlage der im n chsten Kapitel zu entwickelnden Systemprogramme ist Daher seien eigene Experimente und Tests mit den bungspro grammen sehr empfohlen 67 68 KAPITEL 3 SYSTEMPROGRAMMIERUNG UNTER MS DOS Hinweise zur Programmerstellung Bei der Entwicklung der Programme f r dieses
378. lle Medien die Programmcode speichern oder bermitteln k nnen sind potentielle Vek toren eines Computervirus Zu unserem Fallbeispiel Auf einem Rechner befinde sich auf Floppy Disk oder Festplatte ein Programm das einen Virus enth lt Ein solches Programm nennt man infiziert oder verseucht Der Begriff Programm ist weiter als gemeinhin gefa t und bezieht sich auf eine Datei die e direkt vom Betriebssystem geladen und ausgef hrt werden kann ausf hrbare Datei engl executable file Dazu z hlt auch Code der sich z B unter MS DOS im Bootsektor von Disketten und Festplatten befindet und beim Start des Computers automatisch ausgef hrt wird e durch Interpreter interpretiert oder durch Compiler in eine ausf hrbare Datei bersetzt werden kann Quelltext engl source code oder e ein Zwischenprodukt eines Interpretations oder Kompilationsvorgangs darstellt Objektdateien Bibliotheken Da jedwede von anderen Programmen interpretierte Daten im Prinzip ein Pro gramm darstellen ergeben sich f r Softwareanomalien breite Ansatzm glichkeiten Da zu ein paar exemplarische Beispiele e Ist unter MS DOS der ANSI Ger tetreiber f r den Bildschirm geladen ansi sys o interpretiert dieser Steuersequenzen die in der Textausgabe auf den Bild schirm enthalten sind Ein mit dem type Kommando ausgegebener trojanischer Text k nnte auf diese Weise die Return Taste mit dem Text DEL exe Return belegen
379. lle normalen Dateien gefunden plus die die mindestens eines der Attribute tragen die in attr spezifiziert wurden Ein Ausnahme macht das volume label Flag Ist dieses gesetzt wird nur der Datentr gername gefunden der sich im Wurzelverzeichnis befindet step 4 3 PRUFPROGRAMME 147 gibt die maximale Rekursionstiefe an 0 bedeutet keine Rekursion 255 bewirkt da der Dateibaum vollst ndig durchlaufen wird Bit Bezeichnung Bedeutung 0 read only nur lesen 1 hidden versteckt 2 system Systemdatei versteckt 3 volume label Datentr gername 4 directory Verzeichnis 5 archive Archivierungs Flag 6 7 reserviert Tabelle 4 5 Aufbau Attribut Byte Aus path und mask wird in f_spec zun chst die vollst ndige Suchmaske aufge baut void scan_dir int step int attr char path char mask void proc_path char path struct T_DTA dta void proc_file char path struct T_DTA dta struct T_DTA dta char f_spec 65 tmp 65 vollst Dateispezifikation aufbauen strcpy f_spec path strcat f_spec mask Die Durchsuchung des angegebenen Verzeichnisses erfolgt mit den C Funktio nen xfindfirst und xfindnext solange Eintr ge gefunden werden Handelt es sich um ein Verzeichnis werden die Sondernamen gleiches Verzeichnis und Va terverzeichnis ausgefiltert Bei einem normalen Unterverzeichnis wird zur weiteren Verarbeitung die Anwenderfunktion proc_path Process Path aufg
380. lls zu einem Segment verbunden und teilen sich die verf gbaren 64 kB Das Stacksegment taucht im Quelltext nicht explizit auf weil dieses und dessen Zu geh rigkeit zur DGROUP durch den Startup Code definiert ist 90 KAPITEL 3 SYSTEMPROGRAMMIERUNG UNTER MS DOS Speichermodell Inhalt Segmentdeklaration small code TEXT WORD PUBLIC CODE data DATA WORD PUBLIC DATA DGROUP stack PARA STACK STACK DGROUP medium code lt Modulname gt _TEXT WORD PUBLIC CODE data DATA WORD PUBLIC DATA DGROUP stack PARA STACK STACK DGROUP compact code TEXT WORD PUBLIC CODE data lt Name gt PARA PRIVATE FAR_DATA data DATA WORD PUBLIC DATA DGROUP stack PARA STACK STACK DGROUP large code lt Modulname gt _TEXT WORD PUBLIC CODE data lt Name gt PARA PRIVATE FAR_DATA data DATA WORD PUBLIC DATA DGROUP stack PARA STACK STACK DGROUP Tabelle 3 6 Namen und Deklarationen von Segmenten memory model SMALL _TEXT segment byte public CODE DGROUP group _DATA assume cs _TEXT ds DGROUP ss DGROUP _main proc near Code _main endp _add_cbr proc near Code _add_cbr endp _TEXT ends public _add_cbr public _main end Die LARGE Version verwendet f r das Codesegment einen eigenen Bezeichner der sich aus dem Namen des Moduls hier ex2 und der Endung _TEXT herleitet Damit erh lt jed
381. ln denn die angestreb ten Schutzma nahmen sind alle laufwerksbezogen Es ist aber m glich als zuk nftige Erweiterung einen pfadorientierten differenzierteren Schutz zu realisieren Watcher die sich bei der Kontrolle von Aufrufen am Dateinamen orientieren ben tigen ebenfalls ei ne vollst ndige Normalisierung Doch zur ck zu gen_copy Quell und Zielangabe werden in ihre Bestandteile Pfad und Dateinamen zerlegt F r jede gefundene Datei l uft die gleiche Prozedur ab Die Quelldatei source wird aus dem Quellpfad source_path und dem gefundenem Namen dta name zusammengesetzt Der Name der Zieldatei ergibt sich aus dem Zielpfad dest_path und dem Ergebnis der fill_in Operation von dta name in die Zielmaske dest_name Falls die berpr fung von Quelle und Ziel mit chk_copy zu keiner Beanstandung fiihrt erfolgt der eigentliche Kopiervorgang mit phys_copy split_fspec SM_PATH source source_path split_fspec SM_PATH dest dest_path split_fspec SM_NAME dest dest_name printf gt avcopy s gt s n source dest if xfindfirst source amp dta 0x00 keine Datei gefunden return 1 do strcpy source source_path strcat source dta name strupr source fill_in dta name dest_name fill strcpy dest dest_path strcat dest fill strupr dest printf Copy s gt s n source dest if err chk_copy source dest err phys_copy source dest
382. lt an Bei gleich guter bereinstimmung entscheidet der Wert von def if current gt best besser best_rights r_entry rights best current valid result else gleich gut 300 if valid result valid def F3 J close handle gebe Rechte des besten Treffers zurueck rights best_rights return result 1 valid 2 ANHANG A SOFTWARE Funktion Get File Rights int get_rights char subject WORD rights char object char def Aufrufparameter subject Subjekt Name anforderndes Programm rights Adresse erforderliche Rechte object Objekt betroffene Datei def Voreinstellung falls kein Treffer mehrere gleich gute Treffer Seiteneffekte rights gew hrte Rechte Riickgabewert 1 zul ssig 0 unzul ssig 1 Lesefehler 2 kein Eintrag gefunden Tabelle A 52 get_rights berpr fe Rechtm igkeit einer Operation Anhang B Einf hrung in die Benutzung ffentlicher Datennetze Kein Medium au er den Computernetzen kann mit der Geschwindigkeit mithalten mit der neue Softwareanomalien geschrieben werden und sich verbreiten Damit stellt die elektronische Kommunikation die beste M glichkeit dar viele Teilnehmer auf der ganzen Welt schnell und umfassend mit Warnungen und Tips zur Bek mpfung zu ver sorgen Im Falle des WANK Wurms dauerte es nur Stunden von der ersten Entdeckung bis zur Alarmmeldung und Verbreitung
383. m Element eingef gt dabei entsteht m glicherweise ein neuer Anker oder aber an die Liste angeh ngt falls das neue Element das gr te Element der Liste ist F r den Text wird Speicherplatz reserviert und der Verweis darauf in text eingetragen struct T_ENTRY char text Zeiger auf Texteintrag struct T_ENTRY next Zeiger auf Nachfolger Delete List delete_list durchl uft die Liste und gibt den Speicherplatz fiir jeden Knoten und die Daten frei Load List load_list basiert auf add2list und f gt alle Zeilen der Datei name in die durch anchor bezeichnete Liste ein Kommentarzeilen die durch ein Prozentzeichen in der ersten Spalte markiert sind werden berlesen Mit Hilfe von clean werden gleichzeitig alle f hrenden Leerzeichen und Kontrollzeichen entfernt Tab A 39 Check if Selected select_p gibt Auskunft dar ber ob der Dateiname name der Jokerzeichen aber keine Pfadangabe enthalten darf in der durch anchor bezeich neten Liste enthalten ist int selectp struct T_ENTRY anchor char name while anchor NULL amp amp cmp_fname name anchor gt text 1 anchor anchor gt next lZeiger auf ersten Knoten Wurzelknoten einer Liste 292 ANHANG A SOFTWARE Funktion Add To List int add2list struct T_ENTRY anchor char text Aufrufparameter anchor Adresse des Zeigers auf erstes Element Anker text einzufiigender Text Seiteneffekte text wird in die
384. me Tabelle 3 11 get_mcb_name Ermittle Name des Besitzers eines MCBs Funktion get_owner_mcb Uber die oben erw hnte Speicherbelegungskarte Memory Map kann ermittelt werden welche Speicheradresse zu welchem Programm geh rt Das ist f r viele Belange der Systemsicherheit niitzlich So kann z B festgestellt werden welches Programm welchen Interruptvektor bedient Die Hauptanwendung von get_owner_mcb wird bei uns darin bestehen den Ausl ser eines Softwareinterrupts zu ermitteln Wie gezeigt ist es nicht besonders schwer einen Interrupt abzufangen und die Parameter zu berpr fen Woher aber wei das Kontrollprogramm welches Programm den Interrupt aufgerufen hat Bei einem Hard oder Softwareinterrupt legt der Prozessor die Adresse bei der das laufende Programm unterbrochen wird und den Zustand des Flagregisters auf dem Stack ab Ein Programm das sich in diesen Interrupt eingeklinkt hat kann die R ck sprungadresse und das Statuswort wie normale Funktionsparameter lesen Weil der Ort der Unterbrechung im aufrufenden Programm liegen mu l t sich ber die R cksprun 110 KAPITEL 3 SYSTEMPROGRAMMIERUNG UNTER MS DOS gadresse zusammen mit der Belegungskarte des Speichers das aufrufende Programm bestimmen Das Kontrollprogramm kann nun unter Beriicksichtigung der Aufrufpara meter entscheiden ob das Programm die angeforderte Operation durchf hren darf oder nicht Die Funktion get_owner_mcb ermittelt f r eine
385. meine Daten CP 24 86 S 82 83 BDSG KontrollmaBnahmen Wirtschaftsspionage KGB weiter aktiv KES 90 2 S 103 104 Trotz STASI Aufl sung betreibt KGB Spionage ber kompromittierende elektroma gnetische Abstrahlung von Rechnern GERHARD Harald Praxis Tip Geheimcode sinnvoll w hlen KES 90 5 S 310 311 Pa wort Auswahl Methoden zur Erh hung der Sicherheit Kryptographie DES und RSA berarbeitungsbed rftig KES 90 5 S 312 14 Vorstellung und Diskussion der Sicherheit der DES und RSA Verschl sselungs Verfahren Bundesrechnungshof Sicherheitsm ngel in staatlichen Rechenzentren KES 90 5 S 344 345 Verst e gegen das Bundesdatenschutzgesetz Sabotage bei TELEKOM Begriffe und Gesetze Gefahren durch Computerkriminalit t KES 91 1 S 55 57 Definition Betrug Spionage Sabotage Mi brauch Gesetze Literatur Zeitschriften CP Computer Pers nlich C amp S Computers amp Security Elsevier Science Publishers Ltd c t c t magazin f r computertechnik Verlag Heinz Heise GmbH amp Co KG Hannover HC Happy Computer Markt amp Technik Verlag AG Haar 350 LITERATURVERZEICHNIS KES Kommunikations und EDV Sicherheit aktuelle Information ber Datenschutz und Sicherheit PP PCPLUS C amp A Security amp Audit News Computer Associates World Headquarters 711 Steward Avenue Garden City NY 11530 4787 Information zu Computer Associates Produkten SP Der Sp
386. mit anderen 196 KAPITEL 4 ENTWICKLUNG DER SYSTEMPROGRAMME Programmen m glich ist Das reicht zwar aus um zwischen DOS und Servicefunktio nen sowie Subfunktionen zu unterscheiden aber nicht um z B ein l ngeres Pa wort zu bergeben Die momentane Situation erlaubt es jedem der die Funktionsnummer der Servicedienste kennt diese zu aktivieren Es mu aber daf r gesorgt sein da z B Be nutzer eines Rechenzentrums die Schutzprogramme nicht einfach ausschalten k nnen Weiterhin ist eine Situation denkbar bei der mehrere TSR Programme des von uns entwickelten Typs gleichzeitig aktiv sind Bei Serviceanforderungen ist dann auf geeignete Weise zwischen den einzelnen Programmen zu unterscheiden Da der Aufruf ber einen Softwareinterrupt erfolgt ist das Ziel unbestimmt Wenn mehrere residente Programme denselben Interrupt bernommen haben wandert der Aufruf von einer ISR zur n chsten Jedes Programm der Kette mu die Zieladresse pr fen und den Aufruf entweder weitergeben oder bei bereinstimmung selbst bearbeiten Aufgabenbeschreibung intercom Aus den angef hrten Gr nden ist eine Funktion intercom vorzusehen welche die Servicefunktion der TSR Plattform mit be stimmten Parametern aufruft und einen Statuswert zur ckmeldet Am flexibelsten ist die bergabe eines Zeigers weil dadurch die Struktur der Daten beliebig ist Zeiger auf int auf Arrays auf structs etc Um durch Modifikation des Zeigers Daten zur ck geben zu k
387. mmlung Ziel ist die berwachung aller Dateizugriffe unter Beachtung einer Liste von Dateirechten Lohn der M he ist ein Programm das den Funktions umfang von Flushot in etwa umfa t und in manchen Aspekten sogar bertrifft Das Rechtekonzept lehnt sich an UNIX an ohne mit diesem Betriebssystem konkurrieren zu wollen Unterschieden werden die Rechte zum Lesen Schreiben und Ausf hren von Dateien und zur residenten Installierung von Programmen Dazu kommen die Pflichten zum berpr fen der Integrit t und zur Protokollierung von zul ssigen oder unzul ssi gen Operationen Zur Festlegung der Rechte und Pflichten findet folgendes Verfahren Anwendung e Rechteeintr ge k nnen auf Dateigruppen Verzeichnisse und ganze Laufwerke zu 144 KAPITEL 4 ENTWICKLUNG DER SYSTEMPROGRAMME treffen Widerspr chliche Rechte f hren je nach Voreinstellung zur Zulassung oder Verweigerung des Zugriffs e Es mu nicht f r jede Datei ein Rechteeintrag vorhanden sein Je nach Vorein stellung wird der Zugriff in diesem Fall immer als zul ssig oder als unzul ssig bewertet Der Zugriff auf die Rechtedatei mu wegen ihres Umfangs zur Laufzeit erfolgen und kann nicht wie bei AVWatchP ausgelagert werden Eine Funktion von AVConfig sorgt f r die Umsetzung der Rechtedatei von einem komfortableren Textformat in das kompakte Format f r AVWatchF 4 2 5 Hilfsprogramme LogRep Log Report Die von den Watchern erzeugten Logdaten werden in einer komprimiert
388. n void interrupt getvect int intr_num und void setvect int interruptno void interrupt isr intr_num und interruptno geben die Nummer des zu lesenden bzw schreibenden Vektors an Tab A 8 und A 3 Erweiterung von ISRs Die Funktionen einer ISR lassen sich leicht erweitern oder kontrollieren indem man den entsprechenden Vektor auf eine eigene Servicerou tine verstellt umbiegt Abb 3 6 Denkbare Anwendungen sind die Implementation neuer Funktionen z B Netzfunktionen der Novell Netware die Erweiterung beste hender Routinen z B durch das ROM BIOS vieler Grafikkarten und die Kontrolle von Systemaufrufen ein Punkt der uns besonders interessiert Der Abschnitt 4 5 1 Das Interrupt C Interface geht ausf hrlich auf die Probleme ein die bei der Verwendung einer C Funktion als ISR entstehen Nach erfolgter Bearbeitung des Aufrufs bergibt die eigene ISR die Kontrolle an die Originalroutine Auf diese Weise k nnen sich viele Programme in die Bedienung eines Interrupts einklinken ohne das andere Programme die diesen Service aufrufen etwas davon bemerken 2Es lebe die Konsistenz 3 2 GRUNDLAGEN HOCHSPRACHEN 81 Abbildung 3 6 Einklinken in Interrupts 3 2 Grundlagen Hochsprachen Dieser Abschnitt behandelt die Realisierung von Hochsprachenkonstrukten in C auf Maschinenspracheebene Dazu geh ren Funktionsaufrufe die Parameter bergabe sowie die Verwendung globaler und lokaler V
389. n 0 msg 11 err Fehlernummer gt in MSG 210 KAPITEL 4 ENTWICKLUNG DER SYSTEMPROGRAMME if decide 1 return OxFFFF Ist I_INTERACT gleich 0 wird die ISR sofort mit einem simuliertem Datei nicht gefunden Fehler abgebrochen Andernfalls wird der Benutzer ber den Stand der Din ge informiert und nach seiner Entscheidung gefragt Er kann die Ausf hrung abbrechen oder das Programm trotzdem starten und evtl den Eintrag in der Referenzdatei auf den neuesten Stand bringen lassen Letztere Option steht nur zur Verf gung wenn kein Fehler beim Signaturvergleich aufgetreten ist also ein Eintrag in der Referenzdatei exi stiert und die aktuelle Signatur berechnet werden konnte if I_INTERACT strcat msg A bort E xecute switch message 0x4F msg amp OxFF case u if decide_old Eintrag gefunden file sign 0 sig Signatur aktualisieren put_ref amp file f_nr f_file case e return OxFFFF return 0x0002 Der Anwender sollte bevor er trotz Warnmeldung ein Programm startet auf jeden Fall wissen warum die Programmdatei ver ndert wurde oder nicht in der Referenzliste gespeichert ist Im Zweifelsfall empfiehlt es sich die Ausf hrung abzubrechen und das Programm entweder zu untersuchen oder von einer Sicherheitskopie zu laden Die von Cohen vorgesehene Option Sicherheitskopie automatisch von Backup laden wurde aus naheliegenden Gr
390. n Abwehr HAHN Mark Using CA ACF2 and CA TOP SECRET to Protect Your System engl C amp A Volume 88 4 S 15 32 Systemschutz unter dem Aspekt Computerviren eigentlich Wiirmer KING Martin Protecting Networks from Computer Viruses engl C amp A Volume 89 1 S 27 29 not yet reviewed KING Marty Solving The Virus Problem On Your MVS Systems engl C amp A Volume 89 2 11 13 Tips zum Schutz von MVS Libraries mit CA ACF2 und CA TOP SECRET 344 LITERATURVERZEICHNIS 48 KING Martin amp BUER Bill Viruses and Related Mechanisms in MVS engl 49 50 51 52 53 54 55 56 57 C amp A Volume 88 4 S 14 23 29 Definition Virus Vergleich und Einsch tzung der Bedrohung auf PCs Mainframes Definition und Bewertung weiterer Computeranomalien F lle konkreter Verseuchungen DAVID Jon The Novell Virus engl C amp S Vol 6 No 7 1990 S 593 599 Beschreibung des Versuchs Testumgebung Testergebnisse auf LANs HERSCHBERG LS amp PAANS R Friday the 13th Facts and Fancies engl C amp S Vol 9 No 2 1990 S 125 129 Bedrohung durch Computerviren am Beispiel von Friday the 13th F higkeiten von Viren Gegenma nahmen Problem der nicht Detektierbarkeit HERWEG Ralf Praxisbericht Virenverbreitung ber PC Schulungszentrum KES 90 1 S 22 23 Virenverbreitung Vienna Virus bei PC Einf hrungsseminar in K ln Vorsicht Viren STM 6 89 S 96
391. n Eintr ge entry1 und entry2 Da Verzeichnis und Dateinamen verschieden lang sind mu der Funktion ber offset mitgeteilt werden ab welcher Stelle des Eintrags die Attributfelder stehen einfuegen in Typedefs struct T_FSTAMP Textformat Attribute char date 11 jjjj mm tt char timel9 hh mm ss char attr 17 ADVSHR char sizel8 nnnnnnn char sign 32 cec ccc int check_stamp char entry1 char entry2 char offset struct T_FSTAMP stampl stamp2 zur Vereinfachung char hlp 65 temp String char changes 80 veraendert Meldung char flag veraendert Bitmuster vereinfache Zugriff auf Attributfelder 170 KAPITEL 4 ENTWICKLUNG DER SYSTEMPROGRAMME stamp1 struct T_FSTAMP entry1 offset stamp2 struct T_FSTAMP entry2 offset flag 0 changes 0 0 Die einzelnen Attributfelder werden getrennt auf Ubereinstimmung verglichen strncmp wird deshalb verwendet weil die Felder Teile eines einzigen Strings sind und nicht durch 0 Bytes beendet werden Im Fehlerfall wird ein entsprechender Text zur Warnmeldung changes hinzugefiigt und das korrespondierende Bit im Fehlerflag flag gesetzt Die Funktion gibt falls ein Fehler aufgetreten ist die gesammelten Warn meldungen aus und zeigt die neuen und alten Attributwerte zur Begutachtung durch den Anwender an vergleiche Datum if
392. n Grund f r diesen Zwischenschritt zwischen Quelltext und fertigem Programm ist da auf diese Weise h ufig verwendete Funktionen in einer Bibliothek zusammengestellt werden k nnen Durch die bereits erfolgte bersetzung l t sich bei der Programmge nerierung erheblich Zeit sparen Au erdem wird die Wartung von einzelnen Funktionen vereinfacht Nur der Quelltext des Moduls das die zu ndernde Funktion enth lt ist neu zu kompilieren Alle Programme die sich dieser Funktion bedienen m ssen ledig lich neu gebunden werden ein Vorgang der automatisch erfolgen kann Die manuelle nderung jedes Quelltextes und die zeitraubende Rekompilierung entf llt Bibliotheken In der Praxis fa t man z B Module mit Funktionen zur Ein Ausgabe und mathematische Operationen in Bibliotheken engl libraries zusammen die die Endung lib tragen Die Verwendung von Funktionsbibliotheken bewirkt mehr bersichtlichkeit und erspart das zeitaufwendige ffnen und Schlie en vieler separater Moduldateien Aus dem Aufbau der Speichermodelle ist ersichtlich da jedes Modell von SMALL bis LARGE eine andere Kombination von NEAR und FAR Adressierung f r Code und Daten erfordert Deshalb existieren f nf verschiedene Turbo C Bibliotheken die je nach Speichermodell cs lib cm lib cc lib cl lib und ch lib hei en Im Modell TINY findet die SMALL Bibliothek Verwendung HUGE ist von LARGE wegen der Verwaltung von Datensegmenten mit mehr als 64 kB verschieden J
393. n me as a na 4 4 3 Deaktivierung interner Kommandos 4 5 Realisierung des residenten Teils 2 22 222 4 5 1 Das Interrupt C Interface StAINTC 4 5 2 Die TSR Plattform Std TSR 2 2 2 4 5 3 TSR Programme und Datenzugrif Ah A SAV Watch va An Ba A A Be ae 4 5 5 AVWatchG lobal 2 222222 nn 4 5 6 AVWatchI ntegrity lt oo 4 5 7 AVWatchP artition 2 2 2222 4 5 8 AVWatchFlile e 2 222 2 onen 4 5 9 M gliche Erweiterungen 2 2 2 2 2 45 10 AVGonA8 nenne eee ek AAA A eR eS 5 Diskussion 5 1 Einschr nkungen 0 2 2 00 2 0 ee eee Bell Abwehr rta alice fiesta a ae ee a AE aaa 5 2122 SSE bst Chuti a 56 20 run ge esas ara Bh he wales sh te as an 2 5 2 Ausblick A na hee ee es a Gee h 5 2 1 Zuk nftige Entwicklung 2 222 200 5 2 2 Sinnvolle Erweiterungen 2 2 2222 5 2 3 Computerviren das Universum und der ganze Rest A Software A 1 Die Begleitdiskette xi 124 125 127 128 132 133 137 137 138 138 140 141 142 144 145 145 152 158 171 171 180 186 186 186 194 204 206 207 208 210 217 229 231 239 239 239 243 244 244 245 245 253 xii D E A 2 Software zur Programmerstellung A3 MSDOSS LIB A 3 1 Kernel Interrupts A 3 2 Video Interrupt BIOS A 3 3 Disk Interrupt BIOS A 3 4 Keyboard Interrupt BIOS AA AVSysLIB A 4 1 Allgemein einsetzbare Funktionen A 4 2 Bearbeitung
394. n Anwender Systemfunktionen zu berwachen und gegebenenfalls auf bestimmte Zust nde zu reagieren Damit stellen sie die Methode zur System berwachung schlechthin dar MS DOS kennt zwei Sorten speicherresidenter Programme die der Benutzer in stallieren kann Die Ger tetreiber die Bestandteil des Betriebssystems sind und die TSR Programme die eine Unterabteilung der Anwenderprogramme darstellen Beide Typen sind von Einbindung und Aufbau her sehr unterschiedlich und haben verschie dene Vor und Nachteile die es gegeneinander abzuw gen gilt 3 7 1 TSR Programme Das Kernel bietet zwei Methoden an Programme resident im Speicher zu installieren Die erste ltere M glichkeit f hrt ber den Interrupt 2716 und sollte nicht mehr be nutzt werden Der DOS Funktionsinterrupt 211g bietet die moderne und daher von uns 124 KAPITEL 3 SYSTEMPROGRAMMIERUNG UNTER MS DOS verwendete Funktion 3116 Terminate and Stay Resident TSR an Tab A 7 Als Parameter werden der R ckgabewert des Programms und die Gr e des zu reservie renden Speichers in Paragraphs erwartet Der Anfang des Speicherbereichs ist mit dem Anfang des aktuellen PsPs d h mit dem Anfang des Programms identisch Somit ist der Ablauf bei der Installierung wie folgt e Programm wird aufgerufen e Auf bereits bestehende Installation pr fen ggf Ausf hrung abbrechen e Initialisierung durchf hren Interrupts umsetzen Datenbereiche reservieren und vorbelegen etc
395. n Programmen Der Anwender kann an den daf r vor gesehenen Punkten Quelltext f r eigene ISRs einklinken und so mehrere Interrupts mit einem Programm berwachen Zu Std_TSR geh rt ein in Assembler geschriebenes Interrupt C Interface das die Implementation von Kontroll ISRs in C statt Assem bler erm glicht 4 2 SYSTEMENTWURF 143 AVWatchG Globale Rechte Globale Rechte betreffen das ganze System und jedes Programm das darauf abl uft AVWatchG ist der einfachste der vier Watcher und dient uns als Einstieg in die Verwirklichung von Kontrollfunktionen auf Interruptebene Die Rechte sind bereits im Quelltext festgelegt und k nnen nur bei der Kompilierung ver ndert werden berwacht werden die Kernel Funktionen zum ndern von System datum und zeit Bei einem Schreibzugriff wird keine nderung durchgef hrt und der erfolgreiche Abschlu der Operation simuliert AVWatchl Pr fung Integrit t AVWatchI berpr ft die Integrit t von zu startenden Programmen Dazu klinkt sich der Watcher in die entsprechende Kernel Funktion ein und ermittelt aus den Parametern den vollst ndigen Namen des Pro gramms Die aktuell berechnete Pr fsumme wird mit dem Eintrag in der von ChkState angelegten Referenzliste verglichen Diese Kontrolle kann auf andere Dateieigenschaften wie Datum Zeit Attribute und L nge ausgedehnt werden Bei einer Abweichung verh lt sich AVWatchI wie das bereits vorgestellte Betriebs system S3 von Cohen Der
396. n betreffen mehrere Eintr ge k nnen auf eine Datei passen und sich widersprechen und es mu nicht f r jede Datei ein passender Eintrag existieren F r den Fall da kein Eintrag zutrifft gibt es zwei m gliche Verfahren 1 Es ist alles erlaubt was nicht verboten ist Dieses Verfahren erfordert vom Systemadministrator einige Aufmerksamkeit weil sein Rechner quasi als Wegla wert ber keine Schutzma nahmen verf gt Dis cretionary Access Control 2 Es ist alles verboten was nicht erlaubt ist Philosophie Was der Systemverwalter vergessen hat den Anwendern zu erlauben 4 5 REALISIERUNG DES RESIDENTEN TEILS 221 kann keinen Schaden anrichten Bei sicheren Systemen im Sinne des Orange Book ist dieses Verfahren Pflicht Mandatory Access Control Treffen mehrere Rechteeintr ge zu wird die Sache schon komplizierter Ein Bei spiel verdeutlicht das 1 rx EXE niemand darf EXE Dateien schreiben 2 C TC TC EXE rwx EXE Ausnahme Turbo C muss und darf Angenommen C TC TC EXE Turbo C kompiliert ein Programm und m chte die Zieldatei schreiben AVWatchF f ngt die Anforderung ab und findet bei der ber pr fung zwei passende Eintr ge Ein Mensch w rde folgenderma en entscheiden Der erste Eintrag pa t auf alle Programme der zweite nur auf ein einziges Programm Der zweite Eintrag stellt somit die Ausnahme dar und pa t besser Das f hrt uns zu einer Vergleichsfunktion die ein Ma f r den Grad d
397. n der Anwender gegen das Schutzprogramm zu rechnen ist Ein Ausweg best nde in einer Ver nderung von command com die bewirkt da die Shell den Befehl zum Abbruch nicht mehr erkennt oder zumindest die Sicherheits abfrage beim Benutzer automatisch immer mit Nein beantwortet Weil dies aber keine besonders sch ne L sung ist betrachten wir doch einmal den Ladevorgang bei einem als Ger tetreiber realisiertem Schutzprogramm wie es z B F Driver sys des Softwarepakets F Prot darstellt Start von Ger tetreibern Ger tetreiber werden zu einem Zeitpunkt instal liert zu dem das System noch nicht auf Eingaben des Benutzers reagiert oder berhaupt 126 KAPITEL 3 SYSTEMPROGRAMMIERUNG UNTER MS DOS reagieren kann Dies ist der wesentliche Vorteil dieser Installationsmethode Die Aktivie rung vor dem Start des Kommandointerpreters erm glicht au erdem eine berpr fung desselben auf Ver nderungen Gerade die Shell ist potentieller Infektionstr ger und verbreiter Nummer Eins da alle Operationen und Dateizugriffe auf Kommandoebene ber dieses Programm laufen Ist command com erst einmal mit einem Virus verseucht f hrt praktisch jede Eingabe des Benutzers zur Verbreitung der Infektion Ein gemeinsamer Nachteil Beide Startverfahren sind von Konfigurationsdateien autoexec bat bzw config sys abh ngig Wenn der Benutzer diese ver ndern kann ist beim n chsten Systemstart der Schutz dahin Schutzkonzepte
398. n einem anderen z B als Overlay geladen und gestartet wird In beiden F llen wird die Kernel Funktion 4Big Load amp Execute aufgerufen Tab A 13 MS DOS reserviert dazu Speicher f r die Environmentvariablen und den Programmcode in zwei getrennten Bl cken Dem Programmcode wird der Programmvorspann engl program segment prefix kurz PSP vorangestellt s a Abb 4 10 Zu beachten ist da MS DOS beim Laden f r das Programm den gesamten frei en Speicher reserviert und deshalb keine weiteren Programmstarts oder Reservierun gen m glich sind Jedes Programm sollte daher als erste Aktion seinen tats chlichen Speicherbedarf feststellen und im eigenen Interesse und dem der nachfolgenden Pro gramme nicht ben tigten Speicher wieder freigeben s a 3 7 1 TSR Programme Die se Aufgabe erledigt bei in C geschriebenen Programmen der automatisch eingebun 3 4 VERWALTUNG INTERNER SPEICHER 105 dene Startup Code Da dieser etwas gro z gig arbeitet sollten speicherresidente Pro gramme selbst ihren Platzbedarf ermitteln und dem Betriebssystem mitteilen Program Segment Prefix PSP Im PsP befinden sich Informationen ber das Programm und Hilfsdaten fiir das Betriebssystem Tab 3 10 Die Segmentadresse des PSP liefert die Turbo C Funktion unsigned getpsp void Tab A 18 Der Startup Code der Turbo C Programme wertet die im PSP gespeicher te Parameterzeile aus und legt Zeiger auf die einzelnen Argumente im Array c
399. n in den Quelltext 2 Laden von Datei beim Start mit internem Lader interne Speicherung 3 Laden von Datei mit externem Lader interne Speicherung 4 Laden von Datei bei Bedarf mit internem Lader Das erste Verfahren eignet sich nur f r unver nderliche Daten und scheidet aus wenn der Anwender das Programm nicht selbst f r die eigenen Anforderungen modifi zieren und kompilieren kann F r einige globale Rechte wie das ndern von Datum und Uhrzeit vergleichsweise selten benutzte Funktionen k nnten Standardwerte sinnvol lerweise Verbote angenommen werden Option zwei erfordert da die Daten w hrend der Laufzeit des Programms un ver nderlich sind denn die Informationen werden nur einmal beim Start des Programms gelesen Danach k nnte die Laderoutine samt dem Code f r die Initialisierungsrouti ne abgeworfen werden was bei C Programmen aber nicht m glich ist unbekannte Anordnung der Segmente und Bezeichner Nummer drei ist eine Modifikation von Punkt zwei die das Problem mit dem Abwurf der Laderoutine unter C elegant l st Nur einmal ben tigte Programm teile werden in einem externen Programm z B AVConfig untergebracht Mit einer intercom Anfrage an den Watcher ermittelt AVConfig die Adresse der internen Tabel le Die notwendigen Daten werden durch beliebig komfortable und aufwendige Routinen ermittelt und einfach bertragen Falls die Daten w hrend des Betriebs des Kontroll programms ge ndert werde
400. n n mlich das Registerpaar CS IP sowie das Flagregister vom Stack zur ckgeladen Jegliche vorausgegangene Manipulation an irgendwelchen Flags bleibt damit wirkungslos Der Trick besteht darin das Flagregister auf dem Stack zu ver ndern Beim R cksprung wird das gef lschte Statuswort bernommen und unser Ziel ist erreicht Als Hilfe geben die Zahlen neben den pop Befehlen den Offset relativ zum aktuellen Stand des Stackpointers SP an Mit der Marke stop beginnt der Zweig der den Aussprung mit simuliertem Fehler realisiert 10Dadurch w rde der Programmablauf ver ndert 192 KAPITEL 4 ENTWICKLUNG DER SYSTEMPROGRAMME stop Nein Abbruch ISR mov bp sp or word ptr bp 24 0001h Carry Flag in Flagregister auf Stack setzen Fehler simulieren pop di 0 Register restaurieren pop si 2 pop bp 4 pop es 6 pop ds 8 pop dx 10 pop cx 12 pop bx 14 add sp 4h 16 18 AX und PSW nicht 20 IP 22t CS 24 PSW iret ISR beenden gt gt Fortsetzung mit cont siehe oben lt lt Anmerkungen zur Funktion des Interfaces Beim ersten Start des Installa tionsprogramms zeigen alle Segmentregister auf die Startadresse des PSP wie es bei com Programmen Sitte ist Der Linker hat beim Bindevorgang alle Offsets NEAR Adressierung f r Unterprogrammaufrufe und Datenzugriffe relativ zur dieser Basis berechnet Wie sieht die Sache aber bei einem Aufruf der ISR durch einen Interrupt aus Die Ausf hrung
401. n nommen 48 2 5 3 Schutz der Integrit t Checker 2 22 222 50 2 6 Analogien zur Biologie e ea nn taie oo oo 55 2 7 Alternative Konzepte 2 2 2 Emm nn 59 2 7 1 Schutzzonen und Kontrollpunkte 59 2 7 2 Generelle Verbote 22 2 Con onen 00 0 22 eee 60 2 6 3x Strikte Isolation gt 4 2 22 arena ee oe ee AA aS sis sol 61 2 7 4 Kontrollierte Isolation 2 Cu comme 61 2 7 5 Offenes System Explizite Validierung 62 2 7 6 Offenes System Wahrung der Integrit t 2 62 2 7 7 Zus tzliche Ma nahmen 2 2 Con nn 63 2 7 8 Vergleich der Konzepte 2 2 2 Comm 64 Systemprogrammierung unter MS DOS 67 3 1 Grundlagen Assembler 2 2222 68 3 1 1 Die INTEL Prozessorfamilie 2 2 2222 n a 68 3 1 2 Das Segment Konzept 2 2 Cm n onen 69 3 1 3 Adressierung Besonderheiten 2 222 2 74 OAT Interr ptenr an RG ee he pete a ey el Beh 79 3 2 Grundlagen Hochsprachen 2 2 2 0 000 000 0000004 81 3 2 1 Speichermodelle 2 2 2 2 Eon nn nn 81 3 2 2 Lokale Variablen sn AE ea OE A 82 3 2 3 Parametertibergabe 2 52 000004 83 3 2 4 Der BindeprozeB 2 ee 88 3 3 Der Aufbau von MS DOS 0 000000000000 94 3 3 1 Kommandoebene 2 2 run rennen 94 3 3 2 DOS Kernel Interruptebene I 2 2222 96 3 9 3 Ger tetreiber nu 08 sales Bee oh amp Segoe a 97 3 3 4 BIOS Interruptebene II 2 2 2 onen 99 3 4 Verwalt
402. n sollen kann ein Update auf die gleiche Weise wie bei der 4 5 REALISIERUNG DES RESIDENTEN TEILS 205 ersten Initialisierung erfolgen Das residente Programm kann auch selbst das externe Ladeprogramm quasi als Overlay ansto en Falls die Anderungen sehr h ufig auftreten wird die Ausf hrungszeit des Konfigurationsprogramms zu einem kritischen Faktor Bei gro en Tabellen ger t jeder der ersten drei Vorschl ge in Schwierigkeiten weil die Daten im kostbaren Hauptspeicher abgelegt werden und den Raum f r andere Programme beschr nken Methode Nummer vier ist die einzig praktikable L sung bei gro en und ver nderlichen Datenmengen scheidet aber bei zeitkritischen Anwendungen aus Fallbeispiel Referenzliste Eine gro e Anzahl von Tabelleneintr gen liegt im Fall der Integrit tspr fung vor bei der f r jede zu berpr fende Datei ein Eintrag mit Name und diversen Attributen erforderlich ist s ChkState 20 kB Wert vom System des Autors sind mehr als der Watcher wahrscheinlich selbst verbraucht und mehr als die meisten unter MS DOS opfern m chten Ein Zugriff auf die Referenzdaten findet nur beim Start eines Pro gramms oder Lesezugriff auf eine sicherheitskritische Datei statt d h nur relativ selten im Abstand von vielleicht Minuten Eine Verz gerung von auch mehreren Sekunden f llt verglichen mit der Ladezeit des Programms nicht so sehr ins Gewicht Wegen der gro en Datenmenge und dem unkritischen Zeitverhalten w re L
403. nahme Funktion Compose Filename char comp_fspec char path char fname Aufrufparameter path Pfad f_name Dateiname Seiteneffekte path vollst Dateispezifikation R ckgabewert Zeiger auf path Tabelle A 36 comp_fspec F ge Pfad und Dateinamen zusammen Fill In Filename fill_in Die Dos Funktionen copy und rename akzeptieren Jokerzeichen sowohl in der Quell als auch in der Zielangabe Die Abbildung von Da teinamen auf die Zielangabe ist schwierig zu verstehen wenn man den Trick mit der Funktion Parse Filename nicht kennt Dazu ein paar Beispiele f r die Abbildung des Dateinamens 2000 hal auf verschiedene Zielmasken Maske links Ergebnis rechts 288 ANHANG A SOFTWARE dave bow dave bow 2000 hal 7 1 s 2010 sal 77777 10 2000 10 h Falls die Namen als C Strings belassen werden wird die Abbildung sehr kompli ziert Deshalb verwenden wir das FCB Format in dem sich das Beispiel von oben schon durchsichtiger darstellt links Maske rechts Ergebnis 2000 hal Quelle dave bow dave bow 7777777777 2000 hal 17 s 2010 sal 777 107 2000 10 h Funktion Wir stellen folgendes fest Def Ein Zeichen ist weder Joker noch Leerzeichen Zeichen aus der Maske werden bernommen 1 2 3 F r Jokerzeichen werden Zeichen aus der Quellangabe eingesetzt 4 Leerzeichen werden bersprungen und z hlen als bei der Umwandlung in einen C
404. nal Dateiattribute Schreib schutz etc Indirect Action Viren verringern durch ihre speicherresidente Installierung die Gr e des freien Arbeitsspeichers und m ssen Interruptvektoren umsetzen Die in den beiden folgenden Abschnitten angesprochenen Tarnma nahmen erfordern z T Zugriff und Manipulation auf Betriebssystemebene was auf Homecomputern und PCs aber keine un berwindliche H rde darstellt Passive Tarnung Wenn mit Systemaufrufen Dateien manipuliert werden ak tualisiert das Betriebssystem im Verzeichnis die aktuelle L nge der Datei sowie Datum und Zeit Time Stamp des letzten Schreibzugriffs Viren wie z B das Hall chen Virus MS DOS erhalten jedoch die Zeitmarke obwohl sie zur Infektion schreibend auf Programmdateien zugreifen m ssen Andere Viren k nnen das Betriebssystem wel ches das Dateiverzeichnis im normalen Betrieb auf dem aktuellen Stand h lt komplett umgehen und so auch die L nge scheinbar beibehalten Eine weitere Methode ist die Komprimierung des Wirtsprogramms auf eine L nge die zusammen mit der des Virus codes die urspr ngliche Gr e der Datei ergibt Diesen Aktionen ist gemeinsam da sie nur zum Zeitpunkt der Infektion durchgef hrt werden Die Tarnung erfolgt einmalig s a Direct Action und mu sp ter nicht aktiv Name aufrechterhalten werden Aktive Tarnung Die neueste Generation von Computerviren benutzt sog Ste alth Techniken um ihre Anwesenheit vor dem Anwender zu verbergen
405. name gt Datei bestellen SUB lt Verzeichnis gt Verzeichnis abonnieren neue Dateien werden auto matisch per Mail angek ndigt UNSUB lt Verzeichnis gt Abonnement k ndigen NEW lt Verzeichnis gt lt d gt alle Dateien anzeigen die in den letzten d Tagen ein getroffen sind Tabelle B 3 Befehlsauswahl trickle B 5 FTP Server FTP steht f r das File Transfer Protocol das unter vielen Betriebssystemen zur Verf gung steht Rechner auf der ganzen Welt die ffentlichen Zugang erlauben sind ber das FTP erreichbar und stellen so vielleicht das gr te Reservoir f r computerbe zogene und sonstige Informationen dar Um mit einem Host via FTP zu kommunizie ren mu sowohl der entfernte als auch der lokale Rechner ber FTP Dienste und eine FTP f hige Verbindung interaktive Kommunikation verf gen Der Aufruf der Dienste erfolgt ber das Kommando ftp Verf gt ihr Rechner ber keinen FTP Service oder die M glichkeit interaktiv mit anderen Rechnern zu kommunizieren k nnen Sie die Dienste des FTP Servers bitftp pucc in Anspruch nehmen Dieser akzeptiert Eingaben in Form von Datei en interpretiert darin enthaltene Kommandos f hrt die interaktive Sitzung mit dem Zielrechner durch und sendet Ergebnisse wieder per Datei an den Auftraggeber zur ck Ein Nachteil ist da dieser Server der einzige seiner Art und in den USA installiert ist 308 ANHANG B OFFENTLICHE DATENNETZE Dadurch ist der Andrang meist sehr gro
406. nd durch den Benutzer ausgef hrt Fragen und Antworten k nnen recht abstrakt gehalten sein da sie durch einem Menschen interpretiert werden Dies ist die wahrscheinlichste und vermutlich sinnvollste Anwendung eines XPS bei der Abwehr von Softwareanomalien Anders ist die Situation bei der selbst ndigen Erkennung von Softwareanomalien Daten ber das zu untersuchende Programm m ssen von einer Informationsbeschaf fungskomponente des Expertensystems gewonnen werden Sonst w re der Anwender gezwungen sich selbst Expertenwissen anzueignen und das Programm vor der Sitzung genau zu untersuchen Das Verfahren mit der automatischen Informationsgewinnung versagt allerdings wenn der Programmtext verschl sselt und die Dekodierroutine gut versteckt ist Einziger Hinweis auf das eventuelle Vorliegen einer Softwareanomalie ist die Anwesenheit von verschl sseltem Code und der Dekodierfunktion ber die automatische Analyse hinaus kann der Anwender vom xPs ber das Programm befragt werden Auf diese Weise ergibt sich das oben angef hrte sehr stark vereinfachte Beispiel Die Analyse des Programms ergibt Hinweise auf verwendete Be fehle bestimmte Codesequenzen und andere Eigenschaften Die Antworten des Pro grammbenutzers geben dem XPS Aufschlu ber die hinter dem Programm stehende Intention den Verwendungszweck Aus beiden Faktengebieten zusammen ist f r das XPS evtl eine Gef hrdung erkennbar Sind Viren auszurotten Die Fragen Woher kommen
407. nelle Funktionen zur Speicherreservierung verwendet werden Das f hrt dazu da bei Kernel Aufrufen innerhalb dieses Codes die R cksprungadresse scheinbar im freien Speicher liegt die Ermittlung des Verursa chers ist somit unm glich Unter Multitasking Betriebssystemen ist diese Art von Programmierung gar nicht m glich weil kein Programm annehmen darf da es kontinuierlich abl uft und alle Ressourcen f r sich allein beanspruchen kann Bei den angef hrten Problemen ist die Suche nach alternativen Methoden oder die Verwendung von anst ndiger Software angesagt Wir bleiben der Einfachheit halber bei Programmen die sich an die durch MS DOS vorgegebenen Funktionen halten Bestimmung Objekt Der Dateiname wird entweder als String gem der C Konvention bergeben Handle Aufrufe oder steht in einem FCB Bei den Handle Aufrufen zeigt das Registerpaar DS DX auf den Dateinamen Eine Ausnahme macht die seit Version 4 0 verf gbare Funktion 6C16 Extended Open File mit dem Registerpaar DS SI was auch eher der Philosophie der Standardregister entspricht Bei den FCB Aufrufen zeigt DS DX auf einen normal oder extended FcB Im normalen FCB steht die Laufwerksnummer an Offset 0016 unmittelbar gefolgt vom Dateinamen im FCB Format Der erweiterte FCB ist durch den Wert FF ig an Offset 0016 gekennzeichnet Laufwerk und Name beginnen in diesem Fall bei Offset 0716 also um 7 Bytes nach hinten verschoben Nach dem
408. ng des Vergleichs spielt f r AVWatchF s a 4 5 8 eine gro e Rolle points 0 for i 0 i lt 11 i if fcb1 name i fcb2 name i points fcbi nameli else if fcb2 name i break F return i 11 points 1 Hinweis Der R ckgabewert 0 bedeutet nicht da die Namen nicht berstimmen sondern da keine zwei Zeichen tats chlich gleich waren F r Treffer mit Jokerzeichen A 4 AVSYS LIB 287 Funktion Compare Filenames int cmp_fname char name char mask Aufrufparameter name Dateiname mask Maske mit Jokerzeichen Seiteneffekte keine Riickgabewert 1 keine bereinstimmung n Anzahl der bereinstimmenden Zeichen Tabelle A 35 cmp_fname Vergleiche Dateinamen werden n mlich keine Punkte vergeben da z B der Dateiname auf alle Dateien pa t Der durch den Vergleich erzielte Informationsgewinn ist gleich 0 Der Vergleich einer Datei mit einer Maske die keine Jokerzeichen enth lt verschafft uns ein Maximum an Information Genau eine Datei kann mit der Maske bereinstimmen Compose Filename comp_fspec Beim Zusammenf gen von Pfad und Namen zu einer vollst ndigen Dateispezifikation m ssen beide Teile durch einen Backslash getrennt werden Dieser darf aber nur eingef gt werden wenn der Pfad nicht mit dem Wurzelverzeichnis identisch ist das immer mit einem Backslash endet comp_fspec ber cksichtigt diese Aus
409. ng notwendig ist und deshalb nicht installiert wird 2 7 ALTERNATIVE KONZEPTE 61 Ma nahmen Betriebssystemaufrufe zum Programmstart werden abgefangen und der Programmname bez glich des Laufwerks berpr ft Startversuche von Dis kette werden abgebrochen Dieses Vorgehen impliziert die Verwendung eines W chter programms Watchers das sich in die relevanten Funktionen einklinkt 2 7 3 Strikte Isolation Kontrollpunkte 2 1 Kopieren von Programmen 2 Kopieren von Daten als Programm Evtl Enttarnvorgang 3 Kopieren von Daten als Programm oder umbenennen festplattenintern Ansatz Alle Programme die sich auf Festplatte befinden sind validiert es d rfen deshalb keine Programme von au en Diskette Datenfern bertragung Tasta tur hinzukommen Der Begriff Validierung kommt vom angels chsischen to validate f r zul ssig g ltig erkl ren Ein validiertes Programm ist von einer bergeordneten Instanz dem Anwender oder stellvertretend dem Sicherheitssystem f r die Ausf hrung zugelassenen worden SZ II berwacht und isoliert den Programmbestand auf Festplatte Durch diese Ma nahme werden Operationen verhindert die den Rechner bereits infizieren k nnten was das Einspielen von passiven Viren d h verseuchten Programmen angeht Falls keine explizite Validierung durchgef hrt wird s sz I w rde der Start eines verseuchten Programms das Virus aktivieren Ma nahmen Alle Kommandos und Funktionen die ausf hrba
410. nge if stricmp source_part dest_part amp amp rights amp TR_NAMECHG return 8 check type difference source_pheno get_phenotype source if source_geno get_genotype source lt 0 fprintf stderr Couldn t determine genotype of sourcefile n F source_geno source_geno 0 dest_pheno get_phenotype dest if dest_pheno source_geno amp amp rights amp TR_TYPEDIF return 9 check type change if source_pheno dest_pheno amp amp rights amp TR_TYPECHG return 10 3 check transport executable if source_geno amp amp rights amp TR_EXEC return 11 check transport data if source_geno amp amp rights amp TR_DATA return 12 return 0 178 KAPITEL 4 ENTWICKLUNG DER SYSTEMPROGRAMME Typ berpr fung Namensanalyse get_phenotype ermittelt den Ph notyp einer Datei der durch die Erweiterung bestimmt ist Tab 4 10 Falls diese nicht exi stiert wird die Funktion vorzeitig mit dem R ckgabewert 0 kein Programm beendet Eine Einstufung als Programm erfolgt wenn die Erweiterung in der Liste der Pro grammerweiterungen enthalten ist Funktionswert 1 Diese ist im Quelltext festgelegt und sollte zumindest die Standarderweiterungen exe com app obj lib und bat ent halten Funktion Get Phenotype int get_phenotype char f_spec Aufrufparameter f_spec Dateiname
411. nitor sind ein Mu Wir machen nun ein Gedankenexperiment Wir stellen alle notwendigen und m glichen Verbindungen her und beobachten die Auswirkungen unserer Aktionen 2 1 ANALYSE URSACHEN DER VERSEUCHUNG 29 Abbildung 2 1 Wie kommt das Virus ins System Tastatur Mit dem Anschlu der Tastatur ergibt sich die erste und einfachste M glichkeit zur Vireneingabe die sich wenn berhaupt am schwersten verhindern l t Falls das System zur Programmentwicklung vorgesehen ist kann nichts gegen die Eingabe und Erstellung eines einsatzf higen Virus der ja auch nur ein Programm ist unternommen werden Zur Abwehr von Softwareanomalien m te der Compiler in der Lage sein den Zweck des von ihm bearbeiteten Quelltexts zu erkennen und entsprechende Ma nahmen zu ergreifen Das dies ein unl sbares Problem ist zeigt der Beweis in Abschnitt 2 4 Cohen s Theorien Da Programmierer meist auch ber weitgehende Systemrechte verf gen weil diese zur Erf llung ihrer Aufgaben erforderlich sind tut sich hier zwangsl ufig eine Sicher heitsl cke auf die nicht ohne weiteres zu schlie en ist Neben der sorgf ltigen Per sonalauswahl mit dem Ziel m glichst vertrauensw rdige Mitarbeiter zu besch ftigen 24 kann mit Hilfe von Logdateien eine gewisse Kontrolle erreicht werden s a Ab schnitt 2 7 8 Vergleich der Konzepte Software zur Programmerstellung stellt immer ein gro es potentielles Sicherheitsrisiko dar Falls d
412. nktionen Viele Program me programmieren den Videocontroller und schreiben direkt ins Video RAM um z B die Textausgabe stark zu beschleunigen Da unsere Programme nur kurze Meldungen ausgeben m ssen verwenden wir die BIOS Funktionen Das bringt uns au erdem den wichtigen Vorteil der Hardwareunabh ngigkeit ein Die Turbo C Funktion void gotoxy int x int y setzt den Cursor auf die angegebene Stelle des Bildschirms Tab A 20 Basis ist mit den Koordinaten 1 1 die linke obere Ecke Die Cursorposition wird mit den Funktionen int wherex void int wherey void abgefragt Die Ersatzfunktion void xwherexy int x int y in msdos_s lib erledigt die Abfrage in einem Aufruf Tab A 21 Das Zeichen an der Cursorposition wird mit den Funktionen writechar BYTE attr BYTE chr und int readchar BYTE attr BYTE chr geschrieben bzw gelesen Tab A 22 A 23 Die letzten beiden Funktionen sind unter Turbo C nicht verf gbar sondern nur in avsys lib enthalten 3 7 SPEICHERRESIDENTE PROGRAMME 123 Keyboard F r die Eingabe von Tastatur stehen die Funktionen des Keyboard Interrupts 1616 bereit In Turbo C wurden die einzelnen Funktionen nicht wie beim Videointerrupt separat implementiert sondern es existiert eine Funktion int bioskey int cmd zum Aufruf aller Dienste Durch die sparsame Ausstattung mit bergabeparametern k nnen nicht alle der neun Funktionen verwendet werden doch reichen die brigen v llig aus
413. nn es an MS DOS vorbei arbeitet und z B direkt den Festplattencontroller programmiert Die beste Ma nahmenkombination ist wohl Stichwort Programmintegrit t die von AVWatchI und ChkState Vorausgesetzt da nur gepr fte Programme ins System bernommen werden ist der Rechner tats chlich virensicher Mit Hilfe der genannten Programme besteht zus tzlich die gute Chance da dies so bleibt 5 2 3 Computerviren das Universum und der ganze Rest Computerviren sind eine ernste Bedrohung der Rechnersicherheit allemal ein inter essantes Thema und zugleich ein Gebiet eigenartiger Motive und berlegungen Der 246 KAPITEL 5 DISKUSSION folgende Text gibt Antworten auf Fragen die in den vorangegangenen Kapiteln noch nicht behandelt wurden Wie alt sind Computerviren Eine strittige Frage deren Beantwortung nicht zuletzt davon abh ngt wie man den Begriff Computervirus definiert Cohen war mit Sicherheit nicht der Erste der einen Virus programmierte wohl aber der Pionier der wissenschaftlichen Erforschung dieses Ph nomens Der Ausdruck Computervirus stammt von Cohen s Betreuer Len Adleman der sich u a einen Namen mit der Ent wicklung des RSA und MD4RSA Verfahrens gemacht hat Von 1983 stammt der Vorschlag eines Quelltextvirus Source Code Virus un ter UNIX obwohl dieser Name damals noch nicht verwendet wurde Ken Thompson einer der Entwickler von UNIX entwickelte theoretisch ein Verfahren wie in das f
414. nprogramms bestimmen Diese Suchstrings m ssen so gew hlt sein da sie einen f r das Virus m glichst typischen Programmteil erfassen Meist wird die Suchin formation kodiert um den Virenprogrammierern nicht die Gelegenheit zu geben durch nderung ihres Machwerks den Scanner ins Leere laufen zu lassen Gute Scanner lassen sich mit neuen Viruskennungen nachr sten indem der An wender diese der bestehenden Vergleichsbibliothek hinzuf gt F FChk beispielsweise entnimmt die Vergleichsdaten der ASCII Datei sign txt welche die Suchstrings in ko dierter Form enth lt f r jedes Virus eine Zeile mit Namen und Suchinformation Neue Viren werden vom Autor untersucht und der Suchstring u a ber die Diskussionsliste VIRUS L verschickt Damit vergehen von Entdeckung eines neuen Virus bis zur Ver breitung von Detektionswerkzeugen oft nur wenige Stunden ein starkes Argument f r die Teilnahme an ffentlichen Rechnernetzen Schw chen Die Definition impliziert da dem Scanner das Virus das er zu entdecken in der Lage sein soll vorher bekannt sein mu Unbekannte Viren f r die in der Tabelle der Identifizierungsmerkmale kein Eintrag vorliegt w rden nur entdeckt wenn sie rein zuf llig ein schon registriertes Merkmal tragen Dies ist h ufig dann der Fall wenn das neue Virus eine Weiterentwicklung oder Mutation eines bekannten 2 5 KOMMERZIELL VERFUGBARE KONZEPTE 49 Virus ist Andererseits kann schon eine kleine Ver nderung des Viru
415. nutzer k nnen sich in eine solche Liste eintragen in dem sie eine Nachricht an das Verwaltungsprogramm schicken Eine Nachricht an die Liste wird automatisch an alle Teilnehmer weiterversandt Dabei ist als lokaler Empf nger der Name der Liste nicht listserv anzugeben ein h ufig gemachter Fehler Beispiel Eintrag in LISTSERV Diskussionsliste Sie m chten sich in die w rmstens empfohlene Virus Diskussionsliste eintragen Aus geeigneten Quellen s netserv wissen Sie da die Liste virus 1 hei t auf dem bitnet Knoten lehiibm1 zu Hause ist und von einem listserv Programm verwal tet wird Sie m ssen nun die Nachricht subscribe virus 1 lt name gt an listserv Die Anleitung zu z B pkzip hat mehr als 100 Seiten 306 ANHANG B OFFENTLICHE DATENNETZE lehiibm1 schicken Unter lt name gt ist ein Name anzugeben der mindestens ein Leerzei chen enth lt z B Harrison Ford Unter diesem Namen ist ein Listenteilnehmer den anderen bekannt Die Verwendung von Phantasienamen ist m glich aber nicht blich Die Netzwerkadresse des Absenders kennt listserv aus dem automatisch erzeugten Kopf der Nachricht Listserv schickt Ihnen ein Protokoll iiber Erfolg oder Nichterfolg des Auftrages listserver verwalten nicht nur Listen sondern auch Dateien und Datenban ken Fiir den integrierten Fileserver gelten die gleichen Befehle die auch netserv s dort verwendet Genauere Informationen zu speziellen listserv Fahig
416. nwender mit tasm nicht in Ber hrung Die bersetzung und Zusammenstellung der Bibliotheksmodule erfolgt durch den Aufruf von make Turbo Lib Librarian Die Module der Bibliotheken avsys lib gr tenteils in C und msdos_s 1ib in Assembler werden mit tlib zusammengef gt Turbo Link Linker Der Linker tlink verbindet einzelne Module u a aus Bibliotheken zu einem lauff higen Programm Die Entwicklungsumgebung tc ruft den Linker automatisch auf so da die Aktivierung von tlink praktisch unsichtbar bleibt Falls die Programme und Bibliotheken per make generiert werden kommen die Kom mandozeilenversion tcc und der Linker separat zum Einsatz Turbo Debug Debugger Ein Programm ist entweder mit Fehlern behaftet oder trivial Deshalb ist ein Debugger besonders in solchen F llen von N ten wo die Inspektion der Quelltexte allein nicht mehr weiterhilft Bei der Suche nach Ursachen f r Fehler im Linkvorgang erwies sich das Programm tdump als besonders n tzlich mit dem sich interne Informationen in obj und exe Dateien auflisten lassen Zu Fehlern die ohne Debugger nur schwer zu entdecken sind ein paar Beispiele A 2 SOFTWARE ZUR PROGRAMMERSTELLUNG 257 e Variablen bergabe falsche Typen unterschiedliche L nge und Interpretation bes bei NEAR und FAR Zeigern e Laufzeitfehler Speicherverbrauch Stack berlauf Reentrancy Probleme e Fehler im Linkvorgang falsche Deklaration von Segmenten Alle angef hrten
417. nwender zug nglichen Symbole der Turbo C Bibliotheken beginnen deshalb alle mit _ 3 2 GRUNDLAGEN HOCHSPRACHEN 89 Dem Startup Code folgen die Programmodule des Anwenders die in einer be liebigen Sprache verfa t und kompiliert werden k nnen So lassen sich z B C und Assemblermodule miteinander zu einem Programm kombinieren weil das Format der Objektdateien genormt ist Auf diese Weise k nnen die St rken verschiedener Program miersprachen miteinander kombiniert werden Zu den Anwendermodulen kommen noch eine oder mehrere Bibliotheken die zum C Compiler geh ren oder von Fremdherstel lern oder aus eigener Produktion stammen Segmentdeklarationen Beim Bindevorgang orientiert sich der Linker an Infor mationen diein den Objektdateien enthalten sind Darunter finden sich Daten dar ber welche Symbole exportiert und welche importiert werden sowie welche logische Segmen te zusammen in welches physikalische Segment geh ren Wichtig Logische Segmente mit gleichem Namen oder Segmente die der gleichen Gruppe angeh ren kommen in das gleiche physikalische Segment und sind daher ber NEAR Adressierung erreichbar Microsoft sieht f r die Benennung von Code Daten und Stacksegmenten be stimmte Namen und Attribute vor die fast alle Hochsprachen Compiler f r MS DOS bei der Zwischen bersetzung in Assembler und oder Erstellung von Objektdateien ver wenden Tab 3 6 8 F r den reinen Assemblerprogrammierer haben diese
418. ocks env_owner get_owner_mcb env amp mcb_ptr if owner env_owner PARA env PARA mcb_ptr 1 if owner lt 0x0050 RAM BIOS strcpy name lt RAM BIOS gt else strcpy name lt no environment gt else Environment gueltig Falls das Environment g ltig ist kann nach den langen Pr liminarien endlich der Name ermittelt werden Analog zum Verfahren in ReadEnv werden die Umgebungs variablen berlesen Falls der Programmname folgt wird der Name in name kopiert andernfalls angenommen da es sich um den Kommandointerpreter handelt Enth lt 4command com benutzt ein spezielles Environment 3 4 VERWALTUNG INTERNER SPEICHER 109 der untersuchte MCB das Environment seines Besitzers eflag gesetzt wird der Name entsprechend markiert do suchen Programmname while env Vorspulen zu Stringende while env Bis Ende Variablen if tenv Programmname folgt env 2 P 0 while name p env 0 3 else Kein Programmname strcpy name COMMAND COM 35 if eflag strcat name environment return name Funktion Get MCB Name char get_mcb_name struct T_MCB far mcb_ptr char name Aufrufparameter mcb_ptr FAR Zeiger auf MCB name Pufferadresse mind 64 Bytes Seiteneffekte name Name des Besitzers Riickgabewert Zeiger auf na
419. og l t sich aus Logdateien nachtr glich der Weg speziell der Verursacher einer Infektion ermitteln wenn diese manipulationssicher gesch tzt sind Wie schon gesagt sind f r die erfolgreiche Verbreitung von Viren keine besonde ren Systemrechte erforderlich aber man mu es Softwareanomalien auch nicht unn tig leicht machen Gro rechner verf gen meist ber in der Hardware implementierte Spei cherschutzsysteme Jedes Programm kann nur die ihm zugeordneten Speicherbereiche auf festgelegte Weise manipulieren Eine v llige Kontrolle ber das System wie sie jedes Programm unter MS DOS inne hat ist beim Normalbetrieb nie gegeben Nur Pro gramme die unter einer besonderen Benutzerkennung gestartet werden Superuser Systemadministrator besitzen einen privilegierten Status und k nnen alle verf gba ren Operationen durchf hren Damit sind speicherresidente Viren die Funktionen des Betriebssystems bernehmen nicht oder nur sehr schwer zu realisieren Antivirusprogramme Programme zur Abwehr von Softwareanomalien auf APCs arbeiten meist nach den drei Grundprinzipien berwachung Watcher Uber pr fung auf Muster Scanner und berpr fung auf Ver nderungen Checker Keine der letzten beiden Techniken wird bisher von konventionellen Schutzma nahmen ab gedeckt Watcher ahmen z T Schutzfunktionen auf Dateiebene nach s Flushot in dem sie schreibenden Zugriff auf ausf hrbare Dateien verhindern oder zumindest den Anwender
420. ogramm zum Beispiel welches mit relativ wenig Code viele Daten verwaltet w re das Modell COMPACT angemessen Aus 82 KAPITEL 3 SYSTEMPROGRAMMIERUNG UNTER MS DOS Speichermodell Code Segmente A TINY 1 NEAR 1 Code und Datensegment identisch SMALL 1 NEAR 1 NEAR MEDIUM n FAR 1 NEAR COMPACT 1 NEAR n FAR LARGE n FAR n FAR HUGE n FAR n FAR ber huge auch gr er als 64 kB Tabelle 3 4 Speichermodelle der Anzahl der Segmente ergibt sich ob NEAR ein Segment oder FAR Adressierung n Segmente erforderlich ist 3 2 2 Lokale Variablen Viele Funktionen verwenden lokale Variablen die nur innerhalb der Funktion existieren und von au erhalb nicht zug nglich sind Beim Eintritt in die Funktion wird f r die lokalen Variablen Speicher reserviert der beim Verlassen wieder freigegeben wird Dazu bedient sich der Compiler des Stack Beispiel Lokale Variablen Das folgende C Programm wurde mit dem Turbo C Compiler in Maschinensprache bersetzt Speichermodell SMALL void main void int a b c 2 b 3 a b Betrachten wir den Assemblerauszug des Beispielprogramms Zun chst wird BP auf den Stack gerettet und SP in BP gespeichert Die drei int Werte ben tigen insgesamt 6 Bytes lokalen Speicher Durch den Abzug der Zahl 6 vom Stapelzeiger wird der Stapel um diese Menge Bytes aufgestockt der Speicher wurde reserviert Am Ende der Funktion erh lt das Register SP se
421. olek l und Lebensform Viren k nnen in Kristallform extreme Umweltbedingungen berstehen und haben dann die Eigenschaften toter Materie Sie sind allein weder le bensf hig noch k nnen sie sich vermehren Dazu ben tigt das Virus eine Wirtszelle in die es seine Erbinformation einschleust und so zur Produktion von Virenduplikaten zwingt Die Zelle stirbt bei der Freisetzung der Viren ab In der einschl gigen Literatur zu Computerviren haben sich bereits einige zu meist englische Fachbegriffe eingeb rgert die auch in diesem Buch Verwendung finden Die folgenden Abschnitte definieren und erl utern diese Termini anhand der im Text durchgespielten Infektion eines sauberen d h vormals virenfreien Rechners Eine gute Einf hrung in die Computervirenproblematik geben die B cher 29 sehr umfassend und 26 komprimiert sowie die Brosch re 32 mit knappen Tips f r die Praxis 1 3 2 Transport Vektor In der Biologie bezeichnet man das Medium das einen Krankheitserreger transportiert als Vektor einer Infektion Dazu kommen alle Lebewesen und Gegenst nde in Frage in 8 KAPITEL 1 THEORIE DER SOFTWAREANOMALIEN oder auf denen der Keim berleben kann Was bei der Pest des Mittelalters Ratten und Fl he bewerkstelligten wird im Zeitalter der Computer und der Computerviren von Menschen die austauschbare Datentr ger wie Disketten und Wechselplatten transpor tieren oder von der Datenfern bertragung ber Kabel und Funk bernommen A
422. ommen wird hei en symmetrische Ver fahren Das bedeutet da beiden Parteien der Schl ssel bekannt sein mu Dieser Schl ssel ist geheimzuhalten und mu ebenso geheim bermittelt werden was ein we sentlicher Nachteil des Verfahrens ist Wenn n Personen miteinander verschl sselt kom munizieren wollen m ssen n n 1 n n Schl ssel verteilt werden Diese Zahl ergibt sich weil jede der n Personen die Schl ssel der n 1 anderen kennen mu 9Z B im HDLC Protokoll der 1s0 Schicht 2 2 5 KOMMERZIELL VERFUGBARE KONZEPTE 51 Ein bekanntes symmetrisches Verfahren ist der 1974 von IBM entwickelte DES Data Encryption Standard Algorithmus der mit einem 64 Bit breiten Schl ssel arbeitet Das Verfahren gilt als sicher und ist sehr schnell Hardwareimplementationen wie die der belgischen Firma Cryptech sind in der Lage 22 Mio Bits pro Sekunde zu verschl sseln Wegen der Probleme mit der sicheren und einfachen Schl sselverteilung wird DES meistens nur zur Berechnung eines sog MAC Message Authentification Code ein gesetzt einer kryptographischen Pr fsumme Mit Hilfe des mit einer Nachricht ver schl sselt bertragenen MAC kann festgestellt werden ob die Nachricht w hrend der bertragung ver ndert wurde Der Empf nger berechnet ebenfalls den MAC und ver gleicht ihn mit dem entschl sselten MAC Sind beide identisch wurde die Nachricht nicht manipuliert die Integrit t wurde gewahrt Ein Verfahren f r di
423. on Produkten der Informationstechnik IT liegt vor DIERSTEIN R diger DLR Oberpfaffenhofen Kommentar Amerika und die europ ischen IT Sicherheitskriterien KES 90 6 S 405 407 Vergleich orange book des DoD Department of Defense mit den europ ischen IT Sicherheitskriterien Sicherheitskriterien BSI bewertet DV Produkte KES 91 1 S 50 52 Ver ffentlichung von Kriterien des BSI Bundesamtes f r die Sicherheit von IT Systemen Verzeichnis von Sicherheitsprodukten Erg nzende Literatur 348 LITERATURVERZEICHNIS 85 BRANDIS Henning amp OTTE Hans J rgen Lehrbuch der Medizinischen Mikro 86 87 88 89 90 91 92 93 94 biologie Gustav Fischer Verlag Stuttgart New York 1984 Grundlagen Immunologie allgemeine Virologie DIERSTEIN R diger DLR Oberpfaffenhofen Kommentar Viren als April scherz KES 90 2 S 98 100 Wettbewerb um die Erstellung eines Computerviruses Ikarus GmbH Ethik in der Informatik Eid des Turing EICKER Hermann Josef amp MEIER Rolf Computerkriminalit t im Vormarsch Hacker Crasher Datendiebe WS 10 89 Beilage PC Profi Einsch tzung der Szene der KGB Hack Raubkopieren rechtliche Grundlagen SEIDEL Ulrich Gesellschaft f r Mathematik und Datenverarbeitung GMD St Augustin bertragungssicherheit Sicherer als Unterschriften Elektronische Signatur KES 90 5 S 315 319 Vorstellung und Diskussion der Sicherhei
424. on Programmdateien unterscheiden kann Eine typische Eigenschaft von ASCII Dateien sind l ngere Zeichen ketten Strings die durch nur wenige Steuerzeichen unterbrochen werden Das gilt eingeschr nkt auch f r Dateien wie sie Textverarbeitungsprogramme beim Speichern von Dokumenten erstellen Solche Strings sind zwar u U auch in Programmen enthal ten Eingabeaufforderungen Hilfetexte etc aber nur zu einem erheblich geringeren Anteil als der eigentliche Programmcode 4 4 KOMMANDOS MIT KONTROLLFUNKTIONEN 179 Hier setzt die Analysefunktion get_genotype an Tab 4 11 Die ersten Bytes max 4096 der zu untersuchenden Datei werden in einen Puffer eingelesen Ermittelt werden die Anzahl der Strings und der absolute Anteil am Text in Bytes Ein String ist hierbei definiert als eine mindestens zwei Zeichen lange Folge deren Elemente ASCII Zeichen im Wertebereich 9 127 sind Aus dieser Information wird der relative Anteil der Strings an der Datei und die durchschnittliche Stringl nge berechnet Eine Datei wird als Text angesehen wenn 1 die durchschnittliche Stringl nge mindestens eine drittel Zeile 26 Zeichen be tr gt und 2 der Anteil von Strings an der Datei mindestens 90 ist Funktion Get Genotype int get_genotype char f_spec Aufrufparameter f_spec Dateiname Seiteneffekte keine R ckgabewert 0 Text 1 kein Text oder Datei ist Ger t nicht berpr fbar Tabelle 4 11 get_gen
425. on dort irgendwie zum Ablauf bringen Allein schon weil der CMOS Speicher nicht Bestandteil des Adre raums ist kann diese Behauptung nicht stimmen M glich w re es allerdings da ein Virus diesen Speicher zur Ablage von Hilfsdaten wie z B einen Infektionsz hler verwendet Hardwarema nahmen Mit Hardwarema nahmen werden uns nicht n her besch ftigen weil unser Schwerpunkt auf der Systemprogrammierung liegt Trotzdem ein paar Anmerkungen zu diesem Thema In Zukunft wird auf in der Hardware imple mentierte Schutzeinrichtungen nicht mehr verzichtet werden k nnen Bestes Argument 4 5 REALISIERUNG DES RESIDENTEN TEILS 231 sind die momentan weltweit eingesetzten IBM oder Apple Pcs die entweder keine Spei cherschutzmechanismen besitzen oder nutzen s Real Mode Protected Mode ab dem 80286 Prozessor Solange jedes Programm auf jede Speicherstelle des Systems nach belieben zugreifen kann wird es keinen Schutz vor Unannehmlichkeiten wie Computer viren geben Aber auch die Betriebssysteme sind noch stark entwicklungsf hig Das Orange Book und die IT Sicherheitskriterien f hren zusammen mit dem Wunsch der Kunden nach mehr Sicherheit und den Bestrebungen der Hersteller diese Auflagen zu erfiillen zumindest f r Gro rechner in die richtige Richtung 4 5 10 AVConfig In AVConfig sind mehrere Hilfsprogramme zusammengefa t e bersetzung der Rechtedatei f rights raw Text in die kodierte Form f_rights 1st f r AVWatchF com
426. orderungen neuronaler Netzwerke sehr entgegen befinden sich aber noch in einem fr hen Stadium der Entwicklung Ein entsprechend ausgebilde ter Mensch kann anhand des Codes immer bestimmen ob ein Programm das tut was es seiner Beschreibung nach tun soll Prinzipiell kann auch ein sehr gro es neuronales 5 2 AUSBLICK 251 Netz das leisten was sein Vorbild das menschliche Gehirn kann Bis dahin ist es zum Gl ck noch ein weiter Weg Vergleichsweise konventionell aufgebaut sind Expertensysteme xPs Expert System in denen das Wissen eines oder mehrerer Experten in Form von logischen Regeln gespeichert ist Stark vereinfacht ausgedr ckt if Programm ist angeblich PacMan and Programm enth lt Formatierbefehle then Programm ist Trojaner Expertensysteme werden erfolgreich z B bei der Wartung von Flugzeugtriebwerken eingesetzt MRCA Tornado bei MBB Der Techniker gibt Symptome und Me werte ein das Expertensystem f hrt ihn dabei fragt je nach Antwort nach weiteren Daten und gibt letztendlich eine Prognose ber die Fehlerursache ab Zwei prinzipielle Anwen dungen von XPS sind denkbar Beratung des Anwenders bei Virusproblemen und die automatische Erkennung gef hrlicher Programme Im ersten Fall w rden hoffentlich kompetente Antivirusforscher ein System er stellen das den Anwender beim Schutz und der Bek mpfung von Computerviren rein theoretisch unterst tzt Vom System erteilte Ratschl ge werden stellvertrete
427. otype Bestimme Genotyp einer Datei Tests an verschiedenartigen Dateien haben ergeben da diese Parameter zu guten Ergebnissen f hren Insbesondere wurde kein Fall beobachtet bei dem get_genotype ein Programm irrt mlich als Text identifiziert h tte Text und Nicht Text Dateien sind also leicht und relativ sicher zu unterscheiden Die Sicherheit wird aber mit dem Nachteil erkauft da evtl ben tigte Daten nicht auf Festplatte kopiert werden k nnen da AVCopy z B Grafikdaten als nicht Text erkennt und deshalb zur ckweist Die Unterscheidung zwischen Programmen und Nicht Programmen ist nur schwer oder gar nicht m glich und mit gro er Unsicherheit behaftet Im Zweifelsfall wird man dem Ausschlu aller Nicht Text Dateien den Vorzug geben weil dann mit Sicherheit nur Quelltexte kopiert werden k nnen phys_copy Das eigentliche Kopieren der Dateien ist eine triviale Aufgabe Wich tig ist jedoch der Zugriff im korrekten Modus der von dem mit is_device ermittelten Typ abh ngt Normale Dateien sind im Bin rmodus zu kopieren Ger tedateien d rfen nur im ASCIH Modus ge ffnet werden Als n tzliches Extra sollte die Zieldatei die Zeit marke der Quelldatei erhalten weil sonst alle bearbeiteten Dateien Datum und Zeit des Kopiervorgangs aufweisen was nicht immer erw nscht ist Der folgende Code stellt eine L sungsm glichkeit dar Hinweis Die Option S_IWRITE bewirkt da die Datei nicht mit dem sonst blichen readonly Attribut
428. ountry information 6616 3 3 get or set code page 6716 3 3 set handle count 6816 3 3 commit file handle 6916 reserved 6Aig reserved 6Big reserved 6Cig 4 0 extended open file Ascr z handle 6D16 6F ig 7016 Fe T216 T316 T46 7516 7616 Ui 7816 7916 The TBie Fig Ti 6 6 Tabelle C 9 Funktionen Dos Funktions Interrupt Teil 4 321 322 ANHANG C INFORMATIONEN ZU MS DOS C 2 ASSIGN JOIN SUBST Interne Datenstruktu ren assign join und subst sind externe MS DOS Kommandos die den Zugriff auf Laufwer ke und Unterverzeichnisse beeinflussen Nach Aufruf eines der angef hrten Kommandos stimmen spezifizierter Pfad und tats chlicher Pfad nicht mehr notwendigerweise ber ein F r einen Watcher wie AVWatchF der die Zul ssigkeit von Operationen anhand von Programm und Dateinamen beurteilt stellt dies ein echtes Problem dar Ma geblich sind die Fragen Auf welcher Systemebene wird die Abbildung vorgenommen d h auf welcher Ebene tauchen die tats chlichen Laufwerke und Dateinamen wieder auf Oder gibt es eine M glichkeit die Abbildung selbst nachzuvollziehen und umzukehren Ant worten darauf liefert eine Untersuchung der Arbeitsweise der einzelnen Kommandos Hinweis Alle Angaben beziehen sich auf MS DOS 4 0 assign Mit assign lt logdrive gt lt physdrive gt wird dem logischen Laufwerk logdrive das reale Laufwerk physdrive zugewiesen engl to assign Danach wird ein Aufruf f r logdrive auf das L
429. p OxFF IM_I_TABLE fprintf stderr AVWatch doesn t respond n return 2 uebertrage Daten zu AVWatch n_ptr BYTE amp i_table for i 0 i lt sizeof struct T_I_TABLE i f_ptr n_ptr return 0 4 5 REALISIERUNG DES RESIDENTEN TEILS 235 Wenn man sich die Gr e von im_i_table betrachtet konnte durch die Auslagerung aus AVWatchP eine Menge Arbeitsspeicher gespart werden im_deinst Sehr einfach verl uft die Deinstallierung eines residenten Programms im_deinst fragt vom Benutzer den Kennbuchstaben f r den Watcher und das Pa wort ab und bermittelt per intercom den Befehl sich aus dem Speicher zu entfernen Die Best tigung kommt vom Watcher selbst Zwei Fehlersituationen sind m glich Das Pa wort ist falsch oder der Watcher war gar nicht installiert int im_deinst void WORD result char c printf Input program ID character gt c getch msg prg_id c printf nInput password gt scanf X amp msg pwd result intercom IM_DEINST void far amp msg_ptr if result c lt lt 8 IM_INVAL_PWD fprintf stderr Invalid password if result c lt lt 8 IM_DEINST fprintf stderr Deinstallation failed i e TSR not found msg pwd 01 Passwort ruecksetzen printf n return result c lt lt 8 IM_DEINST mod_seal Die schon behandelte Funktion chk_seal berpr ft die Inte
430. p Betrieb Im Mini und Mainframesektor ist es m glich und auch allge mein blich die eigentlichen Rechner und Peripherieger te wie Platten Disketten und Magnetbandlaufwerke und Drucker in einem besonderen f r normale Benutzer nicht zug nglichen Raum unterzubringen Im diesem sog Closed Shop Betrieb fordern Be nutzer von einem zentralen Rechenzentrum Dienste an Die Zentralisierung erm glicht die einfache und wirkungsvolle Installierung von Schutzmechanismen Stand Alone APCs Mit dem Aufkommen von APCs entstand ein bis heute anhaltender Trend zur dezentralen Datenverarbeitung der einige Schwierigkeiten im Hinblick auf Schutzma nahmen mit sich bringt Die gro e Anzahl der Rechner und ihrer Standorte stellen hier das Hauptproblem dar Vernetzte APCs APCs sind h ufig ber LANs local area networks lokale Netzwerke miteinander vernetzt die eine potentielle Expre strecke f r die Verbreitung von Softwareanomalien darstellen Au erdem bringt die bertragung von Daten auch Risiken wie z B das Abh ren oder die Auswertung kompromittierender Abstrahlung mit sich Diese Gefahren k nnen durch die Verschl sselung der zu bertragenden Daten und Verwendung von Glasfaserkabeln auf ein Minimum reduziert werden Der Einsatz eines zentralen Fileservers hat andererseits Vorteile wie sie ein Re chenzentrum bietet 72 Der Fileserver ber den die angeschlossenen APCs die ben tig ten Programme Daten und vor allen Dingen das Betriebs
431. pile_f_rights e Ermittlung der Partitionsdaten und bersetzung der Rechtedatei t_rights 1st sowie bertragung der Daten an AVWatchP im_i_table e Deinstallierung von residenten Programme im_deinst e Anf gen Entfernen des Programmsiegels f r die berpr fung durch chk_seal mod_seal Die Definitionen und globalen Variablen am Anfang der Datei sind vom Prinzip her allesamt bekannt main setzt den Zeiger msg_ptr auf msg und pr ft ob beim Auf ruf von AVConfig Parameter angegeben wurden Ist das der Fall arbeitet AVConfig im Batch Modus und verzweigt zur Funktion batch Diese Option ist f r die Initiali sierung von AVWatchP wichtig da nach der Installierung noch die Partitionsdaten und rechte automatisch bertragen werden m ssen Liegen keine Parameter vor bietet die Funktion interactive dem Anwender ein Men an und wartet auf eine Eingabe Defines define BUF_SIZE 512 define CRC_START 0x0000 define M_DRIVE 10 max Anzahl log Laufw define POLYNOMIAL OxA001 define PWD 0x123456781 globale und externe Variablen struct T_I_MESSAGE msg far msg_ptr Nachricht Zeiger auf N struct T_I_TABLE i_table fuer IM_I_TABLE Sowohl im Batch als auch im interaktiven Modus bernimmt switch_function die weitere Verteilung an die einzelnen Funktionen batch ruft switch_function mit dem ersten Buchstaben des ersten Kommandozeilenarguments auf interactive ber gibt die vom Benutzer erfragte Numme
432. r ck z B trickle Je nach Netz Betriebssystem und installierter Software stehen Ihnen eine oder beide Kommunikationsformen zur Verf gung Erkundigen Sie sich im Zweifelsfall bei Ihrem Systemadministrator ber die entsprechenden Kommandos zum Versenden einer Nachricht Nutzen sie Hilfeprogramme des Rechners und Hilfeoptionen des Kommuni kationsprogramms die oft und reichlich vorhanden sind Unabh ngig von der Kommunikationsform wird eine Nachricht elektronisch ber mittelt indem sie einem Sendeprogramm mit Angabe der Zieladresse bergeben wird Die Nachricht wird dann meist ber mehrere miteinander verbundene Rechner Netz knoten zum Zielrechner geschickt der diese dann an den lokalen Benutzer weiterleitet Eine Netzadresse umfa t also zwei Angaben den Zielrechner und den lokalen Benut zer Das hat den Vorteil da einem Netzknoten nur der Zielrechner bekannt sein mu und da Benutzernamen nur auf lokalen Rechnern eindeutig sein m ssen Der lokale Benutzer kann auch ein Programm ein sog Server sein der Nachrichten in einem bestimmten Format empf ngt interpretiert bearbeitet und beantwortet Beispiel Netzadresse Die BITNET Adresse des lokalen Benutzers frog an der Universit t Giessen dgihrz01 ist frog dgihrz01 Das Zeichen f r kaufm nnisches und hat dabei die Bedeu tung at Die Adresse liest sich demnach frog at dgihrz01 Beispiel interaktive Kommunikation Sie m
433. r Computerviren so k nnte man fragen Das aktuelle Spektrum reicht von Publikationen die das Thema eher unterhaltsam behan deln bis hin zu B chern f r den Profi der durch seinen Beruf f r die Sicherheit von Rechneranlagen verantwortlich ist Die meisten Titel befassen sich mit konkreten Vi ren und Antivirusprogrammen wobei die Palette Betriebsanleitungen zu kommerzieller Software ebenso umfa t wie die Virusprogrammierung inklusive Listing zum Abtippen Also was ist neu an diesem Buch Es erm glicht dem Leser die Bedrohung durch Softwareanomalien zu erkennen und einzusch tzen die Funktion der unterschiedlichen Anomalie Typen zu verstehen und aus der Analyse charakteristischer Eigenschaften Methoden zur ihrer Abwehr zu entwickeln Diese berlegungen sind noch theoretischer Natur und damit betriebssystemunabh ngig und universell anwendbar Ein MS DOS spezifischer Teil vermittelt dem Leser Kenntnisse der Systemprogrammierung unter MS DOS Dabei wird der Aufbau und die Arbeitsweise des Betriebssystems in seiner Funktion als Basis f r Computerviren ausf hrlich untersucht Hier beginnt der eigent lich neuartige Teil des Buches die Entwicklung von eigenen Abwehrprogrammen auf der Basis von zuvor erarbeiteten theoretischen Grundlagen Obwohl es dabei bis auf unterste Systemebenen hinabgeht versetzt das stufenweise Vorgehen jeden in die Lage die Entwicklung der Programme mitzuverfolgen und zu verstehen Voraussetzung sind Grundkenntnisse
434. r Funktion Terminate and Stay Resi dent w rde Speicher freigegeben von dem das Programm annimmt er sei reserviert init f hrt alle notwendigen Initialisierungen durch Dazu geh rt vor allen Dingen das Umsetzen von Interruptvektoren auf eigene ISRs In old_psp wird die Segment adresse des PSP hinterlegt um bei der Deinstallierung den durch das Programm be legten Speicher freigeben zu k nnen Die ermittelte L nge des Programms in Bytes mu noch durch 16 geteilt werden um die Anzahl der zu reservierenden Paragraphs zu erhalten Bei der Division ohne Rest durch 16 fallen bis zu 15 Bytes unter den Tisch Dies wird durch die Erh hung um einen Paragraph sicher ausgeglichen Initialisieren if init O message 0x9F Initialisation error return 3 resident installieren Ende des Programms xkeep 0 1 __brklvl gt gt 4 Warnung Function should return value ignorieren int init void in_isr 0 Start mit pruefen ein Hier eigene Initialisierungsroutinen einfuegen old_psp xgetpsp alten INT 0x21 Vektor retten neue ISR installieren old_int21 xgetvect 0x21 xsetvect 0x21 void interrupt far MAKE_FARPTR old_psp unsigned int21 return 0 Deinstallierung Bei der Deinstallierung ist darauf zu achten da vor der Freiga be von Environment evtl schon bei Installation und Programm alle Interruptvektoren wieder ihre urspr nglichen
435. r Kopieren im ASCII A und Bin rmodus B werden nicht erkannt Das Rechtekonzept Befassen wir uns zuerst mit den Rechten die einem Trans portweg verliehen werden k nnen Die Fett gedruckten Buchstaben bezeichnen die Abk rzungen die in der Rechtedatei t_rights 1st Transport Rights Verwendung finden werden Kleinschreibung _TR sind symbolische Konstanten mit denen sich per and Operation das entsprechende Bit aus dem Rechtewort isolieren l t e Umbenennen von Dateien Change of Name TR_NAMECHG e Verschieben von Dateien Change of Path TR_PATHCHG Unterschied zwischen Ph no und Genotyp Different Types TR_TYPEDIF nderung Ph notyp Change of Type TR_TYPECHG e Kopieren von Programmen Transport of Executables TR_EXEC e Kopieren von Daten Transport of Data TR_DATA Ein Rechteeintrag eine Zeile in t_rights 1st hat die Form Recht lt Laufwerk gt lt Rechte gt lt Laufwerk gt Laufwerk lt Buchstabe gt Buchstabe AIB Y Z Rechte Option en Option nlpltlcleld Kleinbuchstaben Intern werden die Rechte in dem zweidimensionalen Array t_rights gespeichert Die Nummern des Quell und des Ziellaufwerks A 0 dienen als Index So findet sich z B das Rechtewort f r den Transportweg A B an der Stelle t_rights 0 1 Systemarchitektur AVCopy und AVRename haben einen aus vier Schichten be stehenden hierarchischen Aufbau Abb 4 8 f r AVRename copy durch rename er
436. r Systemzeit oder das L schen eines Unterverzeichnisses sein Jedem m glichen Tripel kann das Recht oder das Verbot zur Durchf hrung zugeordnet werden was aber wegen der hohen Anzahl der Kombinatio nen viele Benutzer Operationen Dateien schnell zu riesigen Rechtedateien f hren w rde Statt dessen ordnet man jedem Teilaspekt des Tripels Rechte zu deren Kombi nation dann ber die Zul ssigkeit der Operation entscheidet Als Beispiel f r diese Me thode diene uns das Betriebssystem UNIX das im Gegensatz zu MS DOS standardm ig verschiedene Zugriffsrechte auf Datei und Verzeichnisebene implementiert Beispiel Dateirechte unter UNIX Jede Datei Objekt unter UNIX verf gt ber jeweils drei Bearbeitungsrechte Ope rationen f r drei Anwendergruppen Subjekte Bei den Anwendern wird zwischen Eigent mer User Gruppe Group und allen anderen Others unterschieden Als 2 5 KOMMERZIELL VERFUGBARE KONZEPTE 47 Rechte stehen Lesen Read Schreiben Write und Ausf hren Execute zur Ver f gung Ruft ein Benutzer ein Programm auf so erbt dies seine Rechte und agiert quasi stellvertretend f r ihn Dieses Programm rufe nun eine bestimmte Funktion zur Dateiverarbeitung auf Das Betriebssystem stellt fest 1 Das Objekt den Benutzernamen hier U4475 2 Die Operation die Rechte die f r die Durchf hrung der angeforderten Opera tion erforderlich sind hier Schreibzugriff 3 Das Subjekt die betroffene Datei
437. r eines Men punktes 232 KAPITEL 4 ENTWICKLUNG DER SYSTEMPROGRAMME int switch_function int argc char argv char choice char raw 65 cooked 65 Namen der Rechtelisten int result Ergebnis der Aufrufe printf n switch choice case 1 case f kompiliere Dateirechte add_path argv 0 f_rights raw raw add_path argv 0 f_rights 1st cooked result compile_f_rights raw cooked break case 2 case p uebertrage Part Daten add_path argv 0 p_rights 1lst raw result im_i_table raw break case 3 case d deinstalliere Watcher result im_deinst break case 4 case s bearbeite Dateisiegel result mod_seal break default fprintf stderr Unknown option c n choice result 1 printf n return result compile_f_rights wandelt die Rechtetripel in der Textdatei f_rights raw in ein maschinenfreundlicheres Format mit f_rights 1st als Zieldatei um Dazu wird die Rohdatei zeilenweise in die Struktur fr_entry file rights entry und in den String rights_str eingelesen W hrend Subjekt und Objekt schon in der endg ltigen Form vorliegen mu rights_str noch mit tokenise in fr_entry rights konvertiert wer den Der so vervollst ndigte Eintrag wird in die Zieldatei geschrieben int compile_f_rights char source 65 char dest 65 FILE in out Roh Zieldatei struct T_FR
438. r erfolgloser Belagerung der stark befestigten Stadt verfielen die Griechen auf eine List Sie bauten ein gro es h lzernes Pferd in dessen Inneren sich Soldaten versteckt hielten und zogen sich zum Schein zur ck Die Trojaner hielten das Pferd f r ein Geschenk der G tter und transportierten es in ihre Stadt Die Folgen f r Troja und seine Bev lkerung sind allgemein bekannt Auch wenn Programme heute oft keine G ttergeschenke sind enthalten doch manche gef hrliche Zusatzfunktionen die nicht zum erwarteten Programmverhalten geh ren und von denen der Anwender bis zur Zeitpunkt der unerfreulichen berraschung nichts ahnt Im Folgenden dazu ein Beispiel 1 2 2 Mangelnde Vorsicht Der AIDS Trojaner Anfang Dezember 1989 verschickte die Firma PC Cyborg Corporation mit Sitz in Pana ma von London aus 20000 gesch tzt Kopien des Pc Programms AIDS Information an Institute und Privatleute in Deutschland England und Skandinavien 63 64 Be nutzt wurde offensichtlich der Verteiler der PC Business World und die Teilnehmerliste einer internationalen AIDS Konferenz Mangelnde Vorsicht Ein Aufkleber auf der Diskette erkl rt in vier Schritten knapp und einfach die Installation des Programms auf der Festplatte Die meisten der Worms Against Nuclear Killers 1 3 COMPUTERVIREN 7 sp ter von den Folgen des Trojaners betroffenen Benutzer lie en es bei dieser Lekt re bewenden und starteten das Programm Diejenigen die mit Recht
439. r uns bis auf eine Ausnahme die einen Aufruf betrifft der uns den Umgang mit Dateinamen erleichtert Die Funktion char parsfnm const char cmdline struct T_FCB fcb int option Parse Filename zerlegt den in cmdline bergebenen Dateinamen in das FCB Format Tab A 4 option gibt die Art und Weise der Bearbeitung vor und sollte auf 0016 gesetzt sein Ein evtl im Dateinamen enthaltener Pfad wird ignoriert Name und Erwei terung ohne trennenden Dezimalpunkt liegen separat und mit Leerzeichen aufgef llt aber ohne abschlie endes 0 Byte vor Das Jokerzeichen wird in eine Folge von umgesetzt was z B bei Funktionen zum Vergleich von Dateinamen hilfreich ist Von der FCB Struktur sind f r uns nur die Felder name und ext von Bedeutung struct T_FCB BYTE drive log Laufwerk A 1 char name 8 Name char ext 3 Erweiterung WORD block Blocknummer WORD rec_size Datensatzgroesse DWORD file_size Groesse in Bytes WORD date Datum kodiert WORD time Zeit kodiert BYTE reserved 8 reserviert BYTE record Datensatznummer Die zu entwickelnden Programme werden sich aus verschiedenen Griinden teilwei se der Handle Gruppe der C Funktionen bedienen Zum einen erwarten einige Be triebssystemfunktionen z B zum Lesen der Dateizeitmarke die Ubergabe eines Handles Zum anderen k nnen speicherresidente Programme keine Dateifunktionen der ANSI
440. rache und Hochsprachen wie C er ffnet das Kapitel Allgemeine Grundlagen zum Aufbau von MS DOS Realisierung von Diensten und der Verwaltung von internem und externem Speicher legen den Grundstein f r komplexere Anwendungen wie TSR Programme und Interrupt Handler Das Kapitel Entwicklung der Systemprogramme vereinigt die erarbeiteten Ab wehrkonzepte und Kenntnisse der Systemprogrammierung miteinander F r den Leser mitverfolgbar und selbst ndig zu erweitern werden Schutzprogramme f r PCs unter MS DOS entwickelt die sich f r den Betrieb zu Hause und in Rechenzentren z B Hochschulen eignen Den Abschlu bildet das Kapitel Diskussion Zu den entwickelten Programmen wird kritisch Stellung bezogen Wo und worin liegen Schw chen in Abwehr und Selbst 2 Einf hrung schutz Ist Schutz berhaupt m glich Wie sieht die Zukunft aus Was k nnte man sinnvollerweise noch verbessern und erweitern Auch Kurioses Merkw rdiges Erstaun liches und Befremdliches kommt nicht zu kurz Es geht um Dinge wie die milit rische Anwendung von Computerviren und die Frage K nnen Viren spontan entstehen Die Anh nge bieten noch einmal reichlich Information zum Thema Anhang A be schreibt den Inhalt und die Arbeit mit der Begleitdiskette die separat bestellt werden kann s beigef gte Bestellkarte Eine ausf hrliche Beschreibung der beiden Systembi bliotheken erl utert Funktionen die aus Gr nden der bersichtlichkeit
441. racht Diese beinhaltet Laufwerksangabe Pfad ab Wurzelverzeichnis und den Dateinamen norm_path erkennt zus tzlich ob die bergebene Dateispezifika tion ein g ltiges Verzeichnis ist In diesem Fall kann AVCopy die Angabe automatisch um alle Dateien des Verzeichnisses erg nzen Im Fall eines unzul ssigen Pfades wird die Ausf hrung abgebrochen int gen_copy char r_source char r_dest char err_msg Fehlermeldungen un Couldn t open source file Couldn t read source timestamp Couldn t open destination file Couldn t write destination file Couldn t write destination timestamp Destination and source are same Transport between subdirectories not allowed Renaming files not allowed Phenotype and genotype of destination would be different Type changing not allowed Transport of code not allowed Transport of data not allowed struct T_DTA dta char source 65 dest 65 Quell Zieldatei char source_path 65 dest_path 65 Quell Zielpfad char dest_name 13 Zielmaske char fil1 65 Zielname char err Fehlernummer 176 KAPITEL 4 ENTWICKLUNG DER SYSTEMPROGRAMME strcpy source r_source switch norm_path source case NR_PATH comp_fspec source break case NR_INVAL return 2 Js 3 gt gt analog fuer dest r_dest return Wert 3 lt lt Eigentlich w re es ausreichend nur das Laufwerk zu ermitte
442. re Dateien trans portieren schreiben oder umbenennen k nnen sind zu berwachen Jeglicher Schreib zugriff auf ausf hrbare Dateien ist zu verweigern 2 7 4 Kontrollierte Isolation Kontrollpunkte 2 1 Kopieren von Programmen 2 Kopieren von Daten als Programm Evtl Enttarnvorgang 3 Kopieren von Daten als Programm oder umbenennen festplattenintern Ansatz Alle Programme die sich auf Festplatte befinden sind validiert es d rfen deshalb keine Programme von au en Diskette Datenfern bertragung Tasta tur hinzukommen Nur Programme mit Schreibberechtigung d rfen ausf hrbare Da teien schreiben 62 KAPITEL 2 THEORIE DER ABWEHR Theoretisch k nnte man wie angef hrt generell verbieten da ausf hrbare Datei en geschrieben oder ver ndert werden k nnen Allerdings ergeben sich hierbei zwangs weise L cken wenn der Rechenzentrumsbetrieb nicht lahmgelegt werden soll Compi ler Linker und hnliche Programme m ssen in der Lage sein Programme zu schreiben Auch festplatteninternes Kopieren ausf hrbarer Dateien sollte m glich sein Dies gilt nicht f r Arbeitspl tze an denen keine Programmerstellung erfolgt sondern Software lediglich angewendet wird In diesem Fall ist die bereits angesprochene strikte Isolierung m glich Einen Ausweg bietet die Kontrolle der Schreibzugriffe auf ausf hrbare Dateien an Bei jedem Zugriff wird gepr ft ob das Programm dazu berechtigt ist z B Compiler des Rechenzentrums bei
443. reiben etc e Interpretation der Rechte Erlaubnis Verweigerung Verhalten bei Mehrdeutig keiten und e Speicherung der Rechte dynamische Verwaltung Sicherheit Beispiel UNIX Das von UNIX verwendete System ist recht flexibel und einfach zu handhaben hat aber f r unsere Zwecke einige Nachteile die in der Implementierung und Anwendung bestehen s S 46 Dateirechte unter UNIX Problem Verwaltung der Rechte Die Dateirechte werden unter UNIX vom Betriebssystem verwaltet und sind fester Bestandteil des Dateisystems ber Betriebs systemaufrufe k nnen diese Rechte ver ndert werden falls der Anwender dazu befugt ist Systemprogramme laufen deshalb oft im Superuser Modus ab und sorgen z B beim Kopieren und Umbenennen von Dateien f r die korrekte Zuordnung von Rechten zu neuen Dateien Unter MS DOS m te eine Liste aller Dateien und der zugeh rigen 218 KAPITEL 4 ENTWICKLUNG DER SYSTEMPROGRAMME Rechte angelegt und verwaltet werden Bei jedem Aufruf von copy rename und ande ren Kommandos w re der Eintrag zu verschieben zu ndern oder zu l schen eine undankbare Aufgabe die dem Aufwand gleichkommt ein neues Betriebssystem mit Sicherungseinrichtungen zu schreiben Problem Neue Programme Das Verfahren von UNIX eignet sich nicht f r alle Aspekte der Sicherheit unter MS DOS Die Probleme fangen damit an da st ndig neue Programme ins System kommen sei es durch Kompilierung von Quelltexten bertragun
444. ren 2 Manche Viren tragen Schadensfunk tionen mit sich die Soft und Hardwa re sch digen sowie Dienste blockieren k nnen 3 Alle Antivirusprogramme verbrau chen ihrerseits Rechenzeit und Spei cherplatz Reservoir Als Reservoir einer Infektion bezeichnet man alle Orte und Ge genst nde in oder auf denen sich der Erreger halten kann Viren sind durch ihre ein fache Bauweise auch ung nstigsten Bedingungen gegen ber resistent und k nnen in kristalliner Form Vakuum gro e Hitze und K lte au erhalb eines Wirtes berleben Analog dazu ist jede Diskette die ein verseuchtes Programm enth lt und in irgendeiner Schublade vergessen ihr Dasein fristet ein Reservoir f r eine erneute Infektion Die Gefahr der Reinfektion ist ein wesentliches Problem bei der Desinfizierung von Computern denn jedes einzelne z B auf Sicherheitskopien bersehene Virus kann eine erneute Verseuchung ausl sen Ein spezielles Problem ist der Warmstart eines Rechners den ein Virus m glicherweise unbeschadet im Hauptspeicher berstehen kann Um dies auszuschlie en sollte ein Kaltstart durchgef hrt werden bei dem der Rechner mind eine Minute ausgeschaltet wird damit die fl chtigen Speicherbausteine ihren Inhalt sicher verlieren Durch Laden des Betriebssystems von einer sauberen Diskette ist die Virenfreiheit des Rechners garantiert Vor dem Einlesen von Backups sollten diese auf Viren berpr ft werden Immunit t Besch ftigen wir uns nun mit
445. residenter Programme eignet und die folgende Grundfunktionen realisiert e Eine evtl bereits bestehende Installation erkennen und dementsprechend das Programm abbrechen e Programm resident installieren dabei Initialisierungsroutine ausf hren Inter ruptvektoren umsetzen Speicher freigeben etc e Kommunikation per Interruptaufruf mit anderen Programmen um Funktionen zu aktivieren und Daten auszutauschen e Programm auf Anforderung gegen Unbefugte gesichert deinstallieren dabei Re staurierung durchf hren Interruptvektoren auf Originalwerte zur cksetzen etc Eine wichtige Vorgabe ist die Gr e des Programms Das TSR Programm sollte m glichst klein ausfallen damit ein Maximum an Arbeitsspeicher f r andere residen te und transiente Programme zur Verf gung steht Aus diesem Grund werden TSR Programme meist ausschlie lich in Assembler geschrieben weil dies den kompaktesten Code ergibt An dieser Stelle sei eine generelle Anmerkung zu den residenten Programmen in diesem Buch erlaubt Die Forderung nach m glichst kleinen TSR Programmen legt es nahe diese komplett in Maschinensprache zu implementieren Die Programmierung in Assembler hat aber viele Nachteile darunter e die Komplexit t des Codes 4 5 REALISIERUNG DES RESIDENTEN TEILS 195 e die gro e Anzahl von Befehlen die notwendig ist um selbst simple Funktionen zu realisieren e die Un bersichtlichkeit und e die schlechte Wartbarkeit des Ergebnisses
446. resse zugeh rigen MCB 3 5 VERWALTUNG EXTERNER SPEICHER 111 3 5 Verwaltung externer Speicher Als externe Speicher werden alle Speichermedien bezeichnet auf die der Prozessor keinen unmittelbaren Zugriff ber Adre und Datenbus hat Dazu z hlen Schreib Lesespeicher wie Festplatten und Disketten sowie nur Lese Speicher wie z B CD ROM Laufwerke MS DOS unterscheidet nach der bertragungsart die zwei Gruppen zeichen orientierte und blockorientierte Ger te 3 5 1 Master und Partition Boot Record Das Kernel verwaltet die externen Speichermedien Diskette und Festplatte in Form von logischen Speicherbl cken Alle Zugriffe auf Dateien werden mit Hilfe der Verwaltungs daten des Dateisystems in Zugriffe auf logische Sektoren transformiert Die Abbildung von logischen Sektoren auf die tats chliche Speicherposition bernimmt der f r das angesprochene Laufwerk zust ndige Ger tetreiber Dieser ben tigt Informationen ber die Organisation des Datentr gers um die es im folgenden Text geht Partition Boot Record Der erste Sektor jedes logischen Laufwerks der Par tition Boot Record PBR enth lt Informationen ber Parameter des Datentr gers wie Anzahl der Sektoren Sektoren pro Spur Anzahl der Seiten Oberfl chen Lage des Wurzelverzeichnisses und anderes mehr Tab 3 13 Bei einem Diskettenwechsel liest das Betriebssystem zuerst diese Information den BIOS Parameter Block BPB ein und orientiert sich daran bei allen weiteren
447. rg nge beendet denn das Startmodul und die Bibliotheken liegen bereits fertig kompiliert vor Dem Linker werden die Namen des Startup Moduls c s obj Modell SMALL des Programmoduls cd obj und der Biblio theksdatei cs 1ib als Parameter bergeben Bei der Suche nach einem Modul welches das Symbol _chdir exportiert st t der Linker in cs lib auf chdir obj Dieses Modul exportiert die Symbole _chdir _getdisk und _setdisk und importiert __IOERROR Auszug aus CHDIR OBJ in CS LIB 00006A EXTDEF 1 __IOERROR Type 0 000079 PUBDEF _chdir Segment _TEXT 0000 000089 PUBDEF _getdisk Segment _TEXT 0018 00009B PUBDEF _setdisk Segment _TEXT 0021 ioerror obj wiederum exportiert __IOERROR __dosErrorToSV und __doserrno und ben tigt _errno Auszug aus IOERROR OBJ in CS LIB 00006C EXTDEF 1 _errno Type 0 000078 PUBDEF __IOERROR Segment _TEXT 0000 00008B PUBDEF __dosErrorToSV Segment _DATA 0002 0000A3 PUBDEF __doserrno Segment _DATA 0000 _errno wird zum Gl ck von c s obj exportiert der Kreis schlie t sich Das Startmodul c s obj exportiert und importiert noch eine ganze Reihe von Symbolen au er _errno und _main Diese sind hier aber nicht von Bedeutung und werden deshalb weggelassen Der Linker f gt alle ben tigten Module zusammen und wei daher an welchen Adressen welche Programmteile und Daten stehen Nun werden die offenen Bez ge 92 KAPITEL 3 SYSTEMPROGRAMMIERUNG UNTER M
448. rgung seinen Inhalt und kann durch ungl ckliche Aktionen anderer Programme berschrieben werden Aus diesen Gr nden mu ein Mechanismus existieren der beim Einschalten oder Reset des Rechners das Betriebssystem von Diskette oder Festplatte l dt Der daf r zust ndi gen Teil des ROM BIOS tr gt die Bezeichnung Bootstrap Loader F r den Namen ist die M nchhausen Methode des Betriebssystems sich quasi selbst zu laden verantwort lich Das englische Pendant zu sich an den eigenen Haaren aus dem Sumpf ziehen lautet lifting yourself by your own bootstraps sich an den eigenen Schn rsenkeln hochheben Bei einem Hardware Reset reset Eingang der CPU wird aktiviert oder der Strom eingeschaltet f hrt die CPU automatisch eine interne Initialisierung durch und setzt den Programmz hler auf die Adresse FFFF 0000 die Reset Einsprungstelle Im Bereich von F000 0000 bis F000 FFFF h chste Systemadresse befindet sich zugleich das ROM BIOS das 64 kB nichtfl chtigen Speicher umfa t An der Reset Einsprungstelle sind bis zum Adre raumende noch 16 Bytes Platz f r die Reset Routine und das Datum der ROM BIOS Version vorhanden Da das etwas knapp bemessen ist steht hier ein Sprung auf die eigentliche Resetroutine Diese f hrt zun chst einen Systemtest durch um die Konfiguration des Rechners zu ermitteln und die Funktion der einzelnen Komponenten zu berpr fen Dazu geh rt auch der Test bestimmter Speicherbereiche auf die Anwesenhe
449. ribute at Cursor INT 1016 Funktion 0816 275 A 23 Write Character and Attribute at Cursor INT 1016 Funktion 0916 276 A 24 INT 1316 Disk Interrupt 22 22 oo nn 277 A 25 INT 1616 Keyboard Interrupt 2 Comm nn 278 A 26 Funktions bersicht AVSys LIB 2 2 CC nun 000048 280 A 27 bliche Generatorpolynome soa a 281 A 28 block_crc Berechne CRC Pr fsumme ber Puffer 281 A 29 make_crc_table Berechne cRC Tabelle 2 2 2 2 2 22 282 A 30 sig crc Berechne CRC Priifsumme ber Datei 2 2 2 2 282 A 31 is_device Pr fe ob Dateiname zu einem Ger t geh rt 283 A 32 message Gebe Nachricht auf Bildschirm aus 284 A 33 tokenise Wandle Rechtestring in Rechtewort um 285 A 34 add_path Stelle Dateinamen Startpfad voran 286 A 35 cmp_fname Vergleiche Dateinamen 5 287 A 36 comp_fspec F ge Pfad und Dateinamen zusammen 287 TABELLENVERZEICHNIS 337 A 37 fill in Bilde Dateinamen auf Maske ab 288 A 38 split_fspec Zerlege Dateinamen 4 289 A 39 clean Bereinige String 2 2 2 m Comm en 290 A 40 stricmpu Vergleiche Strings bis lt Zeichen gt 2 2 2220000 290 A 41 strepyu Kopiere String bis lt Zeichen gt 2 2 22 22 290 A 42 stristr Suche String in String vee CC nun nn 291 A 43 add2list Sortiere Text in Liste ein 2 CC nommen 292 A 44 d
450. richten k nnen Trotzdem werden hier vier ganz wichtige Punkte angespro chen um die wir uns sp ter noch k mmern werden Verwendung von Fileservern In tegrit tsschutz von Dateien Beschr nkung der Arbeitsumgebung und Protokollierung von Operationen Benutzerkontrolle Nur Befugte k nnen DV Systeme zur Bearbeitung sensitiver Da ten benutzen e Zugriffsrechte festlegen und protokollieren e Sicherheitssoft und Hardware vorsehen e Verfahren zur Authentifikation implementieren Pa w rter Chipcards e Unberechtigte Zugriffe abweisen protokollieren und Reports ausgeben Logging e Verschl sselungsverfahren einsetzen z B gegen Diebstahl des Ger tes Datentr gers Die Benutzerkontrolle stellt nach der Zugangskontrolle das zweite Hemmnis auf dem Weg zu den zu sch tzenden Daten dar Der Anwender der physischen Zugriff auf den Rechner hat mu sich um Zugang zu Dienstleistungsfunktionen zu erhalten dem Si cherheitssystem gegen ber identifizieren Auch hier gilt wieder da zul ssige Benutzer kein Garant f r den Schutz vor Softwareanomalien sind Um selbst dem Fall vorzu beugen da der Rechner oder Teile davon z B die Festplatte entwendet und die Schutzhardware ausgebaut wird sind alle Daten zu verschl sseln Zugriffskontrolle Jede Person kann nur auf sensitive Daten innerhalb ihrer Zugriffs berechtigung zugreifen e APCs in LANs eindeutig identifizieren e Ressourcen einschr nken Zugriffszeiten Sperren der B
451. riifsumme Seiteneffekte CYC Pr fsumme ber Datei R ckgabewert 0 kein Fehler 1 Datei nicht gefunden Tabelle A 30 sig_crc Berechne CRC Pr fsumme ber Datei Hinweis Die Sicherheit von CRC Pr fsummen bei der Abwehr von Computervi ren und anderen Softwareanomalien wird oft kontrovers diskutiert Allgemein gilt f r Pr fsummen da sie den Inhalt einer Datei auf kleinem Platz widerspiegeln sollen Ver schiedene Dateien f hren m glichst zu unterschiedlichen Pr fsummen um Verf lschun gen erkennen zu k nnen Die Frage nach dem Grad der Sicherheit ist also gleich der Frage wie schwierig es ist eine Datei mit beliebigem Inhalt so zu generieren da eine vorgegebene Pr fsumme resultiert Bei CRC Pr fsummen ist dies bei bekanntem Generatorpolynom recht ein fach Zus tzlich wird oft kritisiert da sich die Referenzpr fsummen in einer Datei auf dem Rechner befinden also im Einzugsbereich der Softwareanomalien Ein Anwender hat mit diesen Vorgaben wahrscheinlich nur m ige Schwierigkeiten eine Datei unsicht bar f r das Pr fsummenprogramm zu manipulieren Trotzdem d rfte es f r ein Virus unm glich sein das Generatorpolynom und die Tabelle ausfindig zu machen oder die Zieldatei sinnvoll zu ver ndern Der Aufwand ist f r ein Programm der Gr e eines le A 4 AVSYS LIB 283 benstauglichen Virus einfach zu gro Schon durch die Verwendung eines vom Benutzer bestimmten Startwertes wie in unserem Fall w
452. rile erschreckende interessante und humorvolle Aspekte von Computerviren vorgestellt 5 1 Einschr nkungen 5 1 1 Abwehr Betrachten wir der Reihe nach die Schutzprogramme ihre Wirkungsweise und die Art der Schutzma nahmen Da w re zun chst die Gruppe der nicht residenten Program me zu der die Pr fprogramme ChkSys Seal chk_seal und ChkState sowie die neuen externen Kommandos AVCopy und AVRename z hlen Dazu kommen noch die Hilfspro gramme ReadMCB und ReadPart die zwar keinen Schutzcharakter haben aber den noch Auskunft ber den Zustand des Systems geben Ein aufmerksamer Benutzer kann unerw nschte Manipulationen so evtl mit blo em Auge erkennen zu Virensuche 239 240 KAPITEL 5 DISKUSSION mit konventionellen Werkzeugen s a 36 Die zweite Gruppe stellt die der residenten Programme AVWatchG I P und F dar die auf unterschiedliche Weise und auf verschiedenen Ebenen des Betriebssystems arbeiten ChkSys Das Programm ChkSys sucht nach verd chtigen Dateien ohne Informa tionen ber konkrete Viren zu ben tigen Der Benutzer wird auf Dateien und Verzeich nisse aufmerksam gemacht die in einer schwarzen Liste stehen oder durch ungew hn liche Attribute auffallen Seal und chk_seal Mit Seal k nnen Pr fsummen ber Dateien Datentr ger und Urladeinformationen erzeugt werden Der Anwender kann durch den manuellen Vergleich von Soll und Ist Wert Manipulationen z B auf dem Transportweg erkennen chk_s
453. ring in Rechtewort um A 4 2 Bearbeitung von Dateinamen Add Startpath To Filename add_path Unsere Programme greifen fast alle auf Dateien zur ck aus denen sie f r den Betrieb wichtige Informationen beziehen Die Hilfsdateien befinden sich normalerweise im gleichen Verzeichnis wie die Programme Nun ist aber das aktuelle Verzeichnis nicht notwendigerweise mit dem Startverzeichnis identisch wenn das zu startende Programm per Suche ber path gefunden wurde hnliches gilt f r TSR Programme die st ndig im Hintergrund ablaufen Die Angabe eines festen Pfades ist uns zu starr aber Dateizugriffe ohne Pfadangabe beziehen sich stets auf das aktuelle Verzeichnis Falls dieses nicht das Startverzeichnis ist laufen Dateizugriffe des Programms ins Leere Funktion Im Argument argv 0 von main ist der vollst ndige Programmname d h Dateiname inklusive Startpfad enthalten Die Funktion add_path macht sich diesen Umstand zu Nutze und stellt einem bergebenen Dateinamen den Startpfad voran Mit diesem voll qualifizierten Dateinamen kann der Zugriff korrekt und unabh ngig vom aktuellen Verzeichnis erfolgen Compare Filenames cmp_fname Zum Vergleich zweier Dateinamen die Jo kerzeichen aber keine Pfadangabe enthalten d rfen dient die Funktion cmp_fname Da der Vergleich von Dateinamen in konventioneller Form C Strings nicht ganz einfach ist bedienen wir uns eines Tricks Die Funktion Parse Filename des Kernel er leichter
454. ro er Anzahl im Umlauf Spawning Viruses Unter MS DOS existiert ein weiterer auf Eigenheiten des Betriebssystems spezialisierter Virustyp die Spawning Viruses engl to spawn lai chen Das Virus nutzt die Suchstrategie von command com aus wenn ein Programm gestartet werden soll Bei gleichen Namen ist die Reihenfolge der Auswahl com exe bat Spawning Viruses infizieren exe Programme indem sie ein gleichnamiges ver stecktes com Programm anlegen welches das eigentliche Virus darstellt Dieses wird bei einem vermeintlichen Start des Originalprogramms zuerst ausgef hrt und ber nimmt die Kontrolle Streng genommen handelt es sich bei dieser Softwareanomalie um keinen Virus denn das urspr ngliche Programm wird nicht ver ndert Daf r ist die Definition eines Trojaners erf llt denn der Start des Programms bewirkt nicht die Ausf hrung des erwarteten Programms Die Bezeichnung Spawning Virus hat sich bereits eingeb rgert deshalb soll sie auch hier weiter verwendet werden 4Die UNIX Funktion spawn teilt den Programmablauf in zwei parallele Tasks 14 KAPITEL 1 THEORIE DER SOFTWAREANOMALIEN 1 3 5 Tarnung Durch Tarnung versuchen Viren ihre Anwesenheit und ihre Aktivit ten vor dem Anwen der und Pr fprogrammen zu verbergen Bei der Infektion eines Programms wird eine Reihe von Dateieigenschaften ver ndert der Inhalt das Datum und die Zeit des letz ten Schreibzugriffs sowie evtl die L nge sowie quasi optio
455. rt werden k nnen und wo St rken und Schw chen der Konzepte liegen 60 KAPITEL 2 THEORIE DER ABWEHR Abbildung 2 2 Schutzzonen und Kontrollpunkte 2 7 2 Generelle Verbote Kontrollpunkt 0 s Abb 2 2 Start von Programmen auf Diskette Ansatz Dieser Kontrollpunkt der Schutzzone I bildet die erste Verteidigungs linie und verhindert da Programme von au erhalb direkt ausgef hrt werden Die se kommen auf austauschbaren Datentr gern Disketten Wechselplatten ins System Grunds tzlich ist der Start von Programmen von Diskette unzul ssig da bei diesen nicht sicher ist ob sie keine Viren enthalten oder mi br uchlich genutzt werden Es mu ebenfalls unm glich sein das Betriebssystem von Diskette zu laden Das gilt be sonders unter dem Aspekt des Selbstschutzes des W chterprogramms Bei der Programmeingabe ber DF oder Tastatur ist bis zur Ausf hrung ein Zwi schenschritt erforderlich Bei der Datenfern bertragung wird das Programm zun chst in einer Datei abgelegt und kann nicht direkt von der Leitung gestartet werden Diese Methode der Einschleusung wird von Schutzzone II abgedeckt Um von der Eingabe von Quelltext per Tastatur zu einem lauff higen Programm zu gelangen ist der Ein satz eines Compilers oder Interpreters erforderlich Wie schon erw hnt kann gegen die Eingabe von Tastatur nichts unternommen werden es sei denn da f r den be stimmungsgem en Betrieb keine Software zur Programmerstellu
456. rung sind zwei Worte f r die Adre angabe erforderlich Diese Methode erm glicht bei Spr ngen und Unterpro grammaufrufen den Wechsel des Codesegments und damit Programme mit mehr als 64 kB Code F r FAR Zugriffe auf Daten mu das DS oder ES Register explizit umgela den werden Ist nur der Offset angegeben spricht man von NEAR Adressierung mit der nur Adressen innerhalb eines Segments erreichbar sind intrasegmentale Adressierung 72 KAPITEL 3 SYSTEMPROGRAMMIERUNG UNTER MS DOS Name Bedeutung Hinweise Segmentregister Segmentinhalt cs Codesegment Programmcode ss Stacksegment Stack DS Datensegment Daten Quelle ES Extrasegment Daten Ziel Indexregister Standard Basisregister IP Offset Programmz hler rel zu CS SP Offset Stackpointer rel zu SS BP Basiszeiger rel zu SS SI Quellindex rel zu DS DI Zielindex rel zu ES Arbeitsregister AX Akkumulator DX Erweiterung Akkumulator CX Z hlregister BX Vielzweck oder Basisregister Spezialregister PSW Programmstatuswort enth lt die Prozessor Flags Tabelle 3 1 Bedeutung der Register Eine NEAR Adresse besteht demnach aus nur einem Wort und bezieht sich stets auf ein Segmentregister NEAR Adressierung ist f r Code und Daten m glich F r den Anwendungsprogrammierer stehen die Register SI Source Index Quell index DI Destination Index Zielindex und BP Basepointer Basiszeiger frei zur Verf gung Besondere von der CPU sel
457. rwarteten Funktionen dient Diese Programmteile wurden entweder bei der Produk tion der Software absichtlich implementiert Trojaner oder kamen erst sp ter zum fertigen ausf hrbaren Programm hinzu Viren Weitet man den Begriff erwartetes Programmverhalten auf allgemein erwartetes Wohlverhalten eines Programms aus fallen auch die W rmer deren Zweck nur in ihrer Verbreitung besteht in die Kategorie der Softwareanomalien Def Softwareanomalie Eine Softwareanomalie ist eine Abweichung des Programm verhaltens vom erwarteten Verhalten die ihre Ursache weder in konzeptionellen noch programmiertechnischen Fehlern hat Der folgende Text definiert die bereits angesprochenen drei verschiedenen Typen von Softwareanomalien beschreibt schematisch ihre Funktion und erl utert diese und f r das Verst ndnis der folgenden Kapitel notwendige Fachbegriffe anhand von Fallbeispie len aus der Praxis 4 KAPITEL 1 THEORIE DER SOFTWAREANOMALIEN 1 1 W rmer 1 1 1 Definition Def Wurm Ein Wurm ist ein eigenst ndiges Programm das Kopien seiner selbst erzeugt und zum Ablauf bringt Etymologie Worauf sich die Bezeichnung Wurm bezieht ist etwas unklar vermut lich r hrt der Name von der Eigenschaft dieser Programme her von System zu System zu kriechen und sich von Benutzer zu Benutzer durchzufressen Dabei befinden sich Segmente des Wurms gleichzeitig in verschiedenen Systemen Die Bezeichnung Bakterie od
458. s Weil die Erfolgsaussichten eher gering sind ordnet Cohen dieses Problem in dieselbe Kategorie wie die Frage Wie wahrscheinlich ist es da ein Affe einen Virus schreibt ein Da Bereiche eines existierenden Programms verf lscht werden k nnen die schon einen Teil des Virus darstellen oder weil nicht unbedingt genau die Reihenfolge der Bytes Befehle eingehalten werden mu erh ht sich die Wahrscheinlichkeit um ein unbekanntes Ma Die gro e Anzahl von Computern und Datentr gern auf der Welt auf denen potentiell Daten verf lscht werden bedingt eine hohe Anzahl von Zufallsversuchen pro Tag Alles in allem h ngt eine Aussage ber die Wahrscheinlichkeit Im Ostblock scheint auch RAM knapp zu sein 5 2 AUSBLICK 247 einer zufalligen Entstehung von zu vielen unbekannten Faktoren ab ist aber eher als sehr unwahrscheinlich anzusehen Quelle Cohen eigene Uberlegungen Gibt es eine Evolution unter Computerviren Evolution ist ein st ndig wiederholter Proze von Mutation und Auslese Negativ ver nderte Individuen nicht funktionsf hige Computerviren sterben aus positiv ver nderte berleben und verdr ngen die schw cheren Eine positive Mutation auf dem Gebiet der Computervi ren w re z B schon die Ver nderung eines Bytes die das Virus nicht verkr ppelt aber f r aktuell gebr uchliche Scanner nicht erkennbar macht F r weitergehende echte Mo difikationen der Funktion eines Virus gelten hnliche berl
459. s that s the only thing that ll stop em now Charles Cafrelli iagr100 indyvax 38 3 092 Im Golfkrieg Anfang 1991 kam es tats chlich zur Behinderung von milit rischen Operationen durch Computerviren Diese wurden allerdings von amerikanischen Solda ten eingeschleppt die sich vom Gefechtsdienst mit Computerspielen Ballerei auf dem Bildschirm erholen wollten Quelle 90 38 3 090 Sabotage Viren W hrend des Golfkrieges kam auf der Virusliste eine von Prof Klaus Brunnstein initiierte Diskussion in Gang ob exportierte Waffen Mechanis men insbesondere Viren enthalten k nnten um den Einsatz gegen das exportierende 3Computer Virus Electronical Counter Measures 248 KAPITEL 5 DISKUSSION Land oder befreundete Nationen zu verhindern Das Beispiel der Versenkung des briti schen Zerst rers Sheffield im Falklandkrieg gegen Argentinien durch eine franz sische Exocet Rakete zeigt da dies in der Vergangenheit zumindest nicht der Fall gewesen ist Mit diesen Betrachtungen wollen wir die vom Autor ungeliebte milit rische Seite hinter uns lassen Quelle 38 4 010 Wo kommen sie her Viren kommen von berall her Offensichtlich gibt es selbst auf Island und Neuseeland gen gend Einwohner und zu wenig trennendes Wasser denn von dort her stammen die Viren Islandic bzw Stoned Einer der ersten Vi ren berhaupt Brain kommt aus Lahore in Pakistan Nahost Denzuk schm ckt
460. s bewirken da der Scanner das Suchmuster nicht mehr findet Insbesondere sich selbst ver ndernde Viren der neueren Generation entziehen sich so der Suche Eine weitere Schw che ist da auch legitime virenfreie Programme Merkmale enthalten k nnen auf die der Scanner anspricht Dadurch kommt es zu Fehlalarmen die den berpr fungsaufwand erh hen und das Vertrauen in das Detektionsprogramm schw chen Obwohl die Aufz hlung der Kritikpunkte einige Zeilen umfa te sind dennoch gute Shareware Scanprogramme wie F FChk aus Fridrik Skulason s Paket F Prot und ViruScan von McAfee Associates in der Lage bekannte Viren sicher und praktisch ohne Fehlalarme zu identifizieren und ein wichtiger Punkt meist auch zu beseitigen In der Tat d rften Scanner das Gros der Antivirussoftware darstellen Als Anwender mu man sich aber immer vor Augen halten da eine berpr fung des Dateibestands mit einem Scanner bestenfalls die Abwesenheit von dem Programm bekannten Viren garantiert nicht aber die Virenfreiheit des Systems Um gute Identifizierungsmerksmale zu erhalten werden neue Computerviren durch aufwendiges Reverse Engineering Ableitung des Quellprogramms aus dem Programmcode analysiert Falls sich dabei zeigt da die Ver nderungen durch die Infektions und die Manipulationsfunktion des Virus reversibel sind kann die Des infektion von Programmen und Restaurierung von Daten automatisch vorgenommen werden Bei F FChk wurde diese Funktion in
461. s und Laden des Betriebssystems automatisch zur Verf gung steht und mit der der reine Anwender ausschlie lich zu tun hat Abb 3 8 Eingaben des Benutzers wie z B dir zum Auflisten des Inhaltsverzeichnisses oder copy zum Kopieren von Datei en werden entgegengenommen und ausgef hrt Programme und Stapeldateien k nnen durch Eingabe des Namens gestartet werden 3 3 DER AUFBAU VON MS DOS 95 Abbildung 3 8 Der Aufbau von MS DOS Genaugenommen wird dieser Dialog mit dem Anwender nicht durch einen Teil des Betriebssystems MS DOS realisiert sondern durch das Systemprogramm command con das beim Systemstart automatisch ausgefiihrt wird Ein solches Programm zur Aus f hrung elementarer Systemoperationen nennt man Befehls oder Kommandointerpre ter engl shell Der Kommandointerpreter kommuniziert mit dem Benutzer nimmt Eingaben entgegen interpretiert diese und gibt die Ergebnisse der angeforderten Ope rationen aus Da die Shell nur ein gew hnliches Programm ist kann sie vom Anwender ausgetauscht werden z B gegen eine Version mit Kontrollfunktionen Ados ist eine Shell f r Ms Dos die die F higkeiten von command umfa t und stark erweitert Unter UNIX haben z B die Bourne Shell und die C Shell breite Akzeptanz gefunden Interne externe Kommandos Die auf Kommandoebene angebotenen Befeh le lassen sich in zwei Gruppen unterscheiden deren Eigenschaften und Bedeutung f r die Abwehr noch unter 4 1 Anforderungsanalyse zu untersuchen
462. s zwei Personen anwesend sein m ssen um Manipulationen durch einen Einzelt ter zu verhindern Im konkreten Fall m te der Quelltext von einer oder mehreren Personen kontrolliert werden die am besten nichts mit der Programmierung selbst zu tun haben Triviale Pa w rter Einmal im Zielsystem aktiviert versuchte der Wurm mit Hilfe einer mitgef hrten Liste gebr uchlicher Pa w rter und Permutationen der vorge fundenen Benutzernamen Zugriff auf den Rechner zu erhalten Die dahinter steckende berlegung war da viele Anwender triviale Pa w rter benutzen zu denen z B der eigene Name der Name des Freundes der Freundin die Initialen die Benutzerkennung Automarken und bekannte Pers nlichkeiten geh ren 98 Wenn der Einbruchsversuch gl ckte und das war leider oft genug der Fall verschickte sich das Programm erneut an den n chsten Rechner und breitete sich so auf dem gesamten Netzwerk aus Bugs Zudem nutzte Morris einen Bug am sl f r Fehler im Systemprogramm fingerd aus das eine Liste der aktuellen eingeloggten Benutzer des System ausgibt Dieses Programm erwartet beim Aufruf eine Reihe von Parametern von denen einige intern in Arrays Feldvariablen gespeichert werden Der Fehler in fingerd bewirkte nun da bei einem bestimmten zu langen Argument ein Array berlief und die dahinter liegenden Speicherzellen iiberschrieb Auf diese Weise konnten interne normalerweise nicht zug ngliche Daten und Teile des Programmcodes v
463. ses Typs bekannt z B Fu Manchu Abbildung 1 2 Infektions Typologie Append Viren Dieser Virus Typ h ngt sich wie schon aus dem Namen her vorgeht an das Wirtsprogramm hinten an s Abb 1 2 Append Da alle Betriebs systeme das Erweitern von Dateien am Ende unterst tzen und der Viruscode meist nur eine rel geringe Anzahl von Bytes umfa t ist diese Infektionsmethode schnell und einfach zu implementieren Im Unterschied zu Prepend Viren haben Append Viren den Nachteil da an das Programmende angef gter Code ohne zus tzliche Ma nahmen nie zur Ausf hrung gelangt Um dennoch beim Programmstart aktiviert zu werden wird 1 3 COMPUTERVIREN 13 die Startsequenz des Originalprogramms so ver ndert da zuerst der Viruscode zum Zuge kommt Hat das Virus seine Aufgabe ausgef hrt restauriert es den manipulierten Teil des Wirtsprogramms und startet es von neuem Link Viren erhalten zwar die Funktion des Wirtsprogramms bewirken aber eine Vergr erung der Datei die einem aufmerksamen Anwender oder einem Pr fprogramm auffallen k nnte Der Abschnitt 1 3 5 Tarnung befa t sich mit Viren die erfolgreich versuchen den Anwender und sogar Pr fprogramme zu t uschen Bootviren Beim Start eines IBM PCs wird zun chst das Betriebssystem von Dis kette oder Festplatte geladen Im Laufe des Bootprozesses wird im sog Boot und Par titionsektor befindlicher Programmcode automatisch geladen und ausgef hrt Der Ab schnit
464. solche Verwaltungseinheit besteht aus einem sog Speicher Kontroll Block oder MCB von engl memory control block und dem dazugeh rigen unmittelbar fol genden reservierten Speicher Der MCB ist 16 Bytes oder ein Paragraph lang und wie in Tab 3 8 beschrieben aufgebaut Offset Typ Bedeutung 0016 Byte M MOB folgt Z letzter MCB Oljs Word Segmentadresse des zugeh rigen PSP 0316 Word Gr e des Blocks in Paragraphs 0516 sh Name des Besitzers undok OF 1g Tabelle 3 8 Aufbau MCB Memory Control Block Weil der MCB selbst ein Paragraph gro ist beginnt der n chste Speicherblock an der SegmentadressenestmcBe Segmentadresseyc Blockgr e 1 Das Pro gramm zu dem der Speicherblock geh rt kann ber den Zeiger auf den PSP ermittelt werden dessen Bedeutung der n chste Abschnitt erl utert Will man die Liste der MCBs durchforsten st t man auf ein Problem Wo befindet sich der erste MCB Es existiert offiziell keine Betriebssystemfunktion die dar ber Auskunft geben k nnte Die nicht dokumentierte Funktion 5216 Get List of Lists des Dos Funktionsinterrupts schafft Abhilfe Sie liefert in ES BX einen FAR Zeiger auf eine Datenstruktur die selbst wieder Zeiger enth lt darunter auch einen auf den Beginn Wurzel Anker der MCB Kette Tab 3 9 Besonders hingewiesen sei auf die Tatsache da der Zeiger in ES BX nicht auf den Start der Tabelle verweist sondern erst um vier Bytes dekrement
465. sprach Len Adleman im Zusammenhang mit Cohen s Ex perimenten von Computerviren Bereits am 19 11 84 erschien im Nachrichtenmagazin Der Spiegel ein Artikel zu diesem Thema der sich allerdings nur sehr oberfl chlich mit Computerviren befa te In der Ausgabe 3 85 der Bayerischen Hacker Post BHP fand sich eine ausf hrliche Zusammenfassung von Cohens Erkenntnissen die bri gens sehr empfehlenswerte Sicherheitszeitschrift KES folgte trotz einiger Skrupel denn es wurde die Frage diskutiert ob man derartige Kenntnisse berhaupt ffentlich verbreiten d rfte oder sollte In der Computerwoche vom 13 09 85 bezeichnet ein Ar tikel den BHP Aufsatz als Straftat und r ckt die Autoren in die N he von Terroristen 19 Danach lockerte sich die Sachlage etwas auf Die Zeitschrift Apples druckte am 11 12 85 einen Virus als Listing ab auch die Computer Pers nlich in ihrer Ausga be Nr 24 vom 12 11 86 steuerte neben einem interessanten Artikel ber die Anf nge der Computerviren ein Exemplar fiir den Apple I bei Beitr ge ber Computerviren erschienen im PM Computerheft in der Chip der S ddeutschen Zeitung und im Zeitgeistmagazin Tempo Allerorten wurden Quelltexte von Viren ver ffentlicht z B das Cookie Virus eine rgerliche Unart die man heute noch in manchen Pu blikationen antreffen kann 27 1 5 HISTORIE UND DYNAMIK DER ENTWICKLUNG 19 1986 war es dann soweit d
466. ssender Teile Laufwerk und Pfad Tabelle 4 19 cmp_fspec Vergleiche Dateispezifikationen 222 KAPITEL 4 ENTWICKLUNG DER SYSTEMPROGRAMME Funktionsbeschreibung Zun chst sind die blichen Umbauten an Std_TSR notwendig die durch die Kommentare ausreichend erl utert werden einfuegen in Defines define F_DEFAULT ON define F_INTERACT YES Anzahl der zu ueberwachenden Funktionen Groesse SET s ISR_21 define M_SET 2 define PRG_NAME AVWatch F define PRG_ID Ef lt lt 8 einfuegen in globale und externe Variablen char f_10g 65 vollst Name Logdatei char f_rights 65 vollst Name Rechtedatei einfuegen in INIT erzeuge vollst Dateinamen add_path argv 0 f_rights 1st f_rights add_path argv 0 avwatch log f_log Klassifizierung der Zugriffe Analog zu AVWatchP wird die aufgerufene Funk tion zun chst mit Hilfe der Informationen in set klassifiziert Ist func nicht in set enthalten wird der Aufruf nach Pr fung auf Serviceanforderungen normal ausgef hrt Sonst enth lt n_set die Nummer des zust ndigen Eintrags N chster Schritt ist die Bestimmung von Subjekt aufrufendes Programm Operation erforderliche Rechte und Objekt Datei einfuegen in Typedefs struct T_SET BYTE func WORD mode WORD rights WORD errno einfuegen in ISR_21 static struct T_SET set M_SET Pruefinformation 0x4B 0x00 lt lt 11
467. st bei anderen trickles in seiner Umgebung nach Wenn einer von diesen die Datei im Bestand hat reicht trickle die Bestellung stellvertretend f r den Benutzer weiter Falls es gar nicht anders geht holt trickle die Datei aus den USA Alle weiteren Anfragen k nnen dann lokal bedient werden die Verbindung nach bersee wird somit geschont Beispiel Verzeichnisse und Dateien von TRICKLE ordern Sie m chten sich von trickle dsOrusii den Inhalt des Verzeichnisses lt MSDOS B 5 FTP SERVER 307 TROJAN PRO gt Antivirusprogramme unter MS DOS sehr empfohlen ausgeben lassen und die Datei 00 INDEX TXT in diesem Verzeichnis bestellen Eine Datei dieses Na mens existiert in den meisten Verzeichnissen und gibt weitere Informationen zu den Dateien Gro und Kleinschrift wird nicht unterschieden Die entsprechende Nachricht an trickle dsOrus1i lautet Kommando Kommentar pddir lt msdos trojan pro gt Inhaltsverzeichnis ausgeben lassen pdget lt msdos trojan pro gt 00 index txt uue Datei holen Besondere Hinweise Die Angabe von uue bewirkt daf die Datei vor dem Versenden mit dem Programm uuencode umkodiert wird Zur Entschl sselung ben ti gen Sie das Programm uudecode das als C oder Pascal Quelltext ebenfalls von trickle erh ltlich ist Syntax Bedeutung HELP Hilfetext anfordern erkl rt die folgenden Befehle PDDIR lt Verzeichnis gt Inhaltsverzeichnis ausgeben lassen PDGET lt vollst Datei
468. startet ja gar nicht mehr am Programmanfang sondern beginnt bei der Serviceroutine Kann das Interface berhaupt in dieser Form funktionieren Wenn wir bei der Installation den zu kontrollierenden Interruptvektor auf unsere Routine verstellen behalten wir das aktuelle Codesegment bei Das bedeutet da der CS Teil des neuen Vektors auf die Basis unseres Programms zeigt und IP relativ dazu auf den Start der ISR Genau so ist die Situation nach erfolgter Unterbrechung denn die CPU setzt CS IP auf den Start der Serviceroutine Die Inhalte aller anderen Register sind unbestimmt Aus diesem Grund sind das DS und ES Register auf den gleichen Wert wie CS zu setzen um die Voraussetzungen des TINY Modells zu erf llen Erl uterungen brkdis Break Disable verhindert da ein Programm durch Dr cken der Tastenkombinationen ctr c oder Ctr1 Break unterbrochen werden kann Ganz wichtig wird das bei den Kontroll ISRs die unbedingt zu Ende gef hrt werden m ssen Geschieht das nicht bleibt das in_isr Flag gesetzt und kein Aufruf wird mehr kontrolliert Auch die Reaktivierung oder Deinstallierung ist nicht m glich es sei denn man sucht und l scht das Flag mit einem Debugger im Speicher Das Kernel ruft bei einer Unterbrechung durch die oben genannten Tastendr cke den Interrupt 2316 auf um dem Anwender die M glichkeit zur Reaktion zu geben brkdis setzt diesen Vektor auf die Routine ctrl_stop um der alte Wer
469. sung 4 zu empfehlen Fallbeispiel Liste der Partitionsrechte Die Liste der Partitionsrechte wird zur Beurteilung der Zul ssigkeit von BIOS Disk Aufrufen ben tigt Weil das Kernel das wahrscheinlich die Diskfunktion aufgerufen hat nicht reentrant ist scheiden Dateizugriffe bei der Kontrolle von BIOS Funktionen generell aus Die Geschwindigkeit des Zugriffs ist ein weiterer Grund f r die interne Speicherung Jede Dateioperation ber das Kernel l st eine Vielzahl von Diskzugriffen aus die der Watcher jeder einzeln berpr fen mu Die Benutzung externer Rechtelisten w rde selbst wenn sie m glich w re den Betrieb unertr glich verlangsamen und das Laufwerk durch permanente Spurwechsel ruinieren Tabelle 4 15 fa t die Ergebnisse unserer Untersuchung noch einmal knapp zusam men und ordnet sinnvolle Einsatzm glichkeiten zu Verfahren Datentyp Zugriff Umfang Eignung Permanente interne Liste unver nder schnell gering globale lich Rechte Externe Datei interner Lader ab Start un schnell gering Partitions und Liste ver nderlich und globale Rechte Externe Datei und Lader in ver nderlich schnell gering Partitions terne Liste und globale Rechte Externe Datei Liste inter ver nderlich langsam gro Referenzdaten ner Lader Dateirechte Tabelle 4 15 Datenzugriff von TSR Programmen 206 KAPITEL 4 ENTWICKLUNG DER SYSTEMPROGRAMME 4 5 4 AVWatch Problemstellung Unter einem ungesicherten Betriebssystem w
470. system laden kann in ei ner kontrollierten Umgebung aufgestellt und mit Sicherheitssoft und Hardware aus ger stet werden Einige Hersteller bieten spezielle Server Rechner an bei denen alle Bedienungselemente und ffnungen f r Schrauben hinter einer abschlie baren Blende liegen Datensicherung und schutz sowie berwachung ist zentral ber die Netzwerk software m glich die analog zu Gro rechnerbetriebssystemen Schutz auf Datei und Verzeichnisebene bietet und den Einsatz von Programmen berwacht und kontrolliert Falls kein lokaler Datenaustausch ber Datentr ger Disketten notwendig ist kann auf Diskettenlaufwerke verzichtet werden Diskless Workstation Durch ein spezielles BIOS das meist der Netzwerkhersteller liefert wird das Betriebssystem nicht mehr von Diskette sondern nur noch vom Fileserver geladen Es k nnen weder ver seuchte Programme eingespielt noch auf dem lokalen APC oder dem Fileserver gespei cherte Daten illegal kopiert werden Neben sicherheitstechnischen Vorteilen bieten Server Konzepte auch wirtschaft liche Vorteile Sicherheitseinrichtungen Programme und Daten Anschl sse an andere 6Bei direktem Zugang zum Kabel k nnen Abstrahlungseffekte genutzt werden Falls das BIOS entsprechend modifiziert wird 42 KAPITEL 2 THEORIE DER ABWEHR Netze TELEX TELEFAX etc best Ressourcen wie Plotter Laserdrucker etc miissen nur einmal vorhanden sein neue Dienste wie Electronic Mail kommen q
471. t 4816 2 0 allocate memory block 4A16 2 0 resize memory block Tabelle 4 2 Relevante Funktionen DOS Funktionsinterrupt 211g 135 136 KAPITEL 4 ENTWICKLUNG DER SYSTEMPROGRAMME Arbeit des Betriebssystems einzugreifen Konventionelle Softwareanomalien hingegen suchen aktiv nach Wirtsprogrammen und Dateien zur Manipulation Durch Kontrol le der Suchfunktionen k nnen bestimmte Dateien ausgefiltert und dadurch unsichtbar gemacht werden Logdaten lassen sich ber Beeinflussung der Systemuhr verf lschen ber die Eintr ge ist dann kein R ckschlu mehr auf den Zeitpunkt einer Operation m glich Viren und Trojaner k nnen Schaden durch L schen von Dateien und Ver zeichnissen anrichten Andererseits legen manche Softwareanomalien versteckte Datei en Spawning Viruses und Verzeichnisse AIDS Trojaner an die Programmcode oder Daten enthalten k nnen Sicherheitsrelevante Funktionen BIOS Die ber den Interrupt 1316 auf rufbaren Funktionen betreffen physikalische Laufwerke Objekte sind einzelne durch Laufwerk Zylinder Kopf und Sektornummer bestimmte Sektoren Tabelle C 5 im An hang C 1 gibt eine bersicht ber die einzelnen Funktionen Uns interessieren besonders die Aufrufe mit denen Daten ver ndert werden k nnen Dazu geh ren die Operationen zum Schreiben von Sektoren und Formatieren von Zylindern Das auf BIOS Ebene nur physikalische Laufwerke und einzelne Sektoren unter schieden werden hat f r die Sicherhe
472. t denn zu diesem Zeitpunkt ist das Virus noch ein totes St ck Code Einen wichtigen Unterschied macht es ob der Anwender das Virus absichtlich auf den Rechner bringt oder ob dies aus Unachtsamkeit oder Unwissenheit geschieht Im ersten Fall mu das Schutzprogramm so ausgelegt sein da es auch gezielten Attacken widersteht Einfaches Beispiel ist ein als Datendatei getarntes Programm das auf die Festplatte kopiert und dort umbenannt wird Zu 2 Manipulation des Systems Tarnung Schritt 2 ist nicht unbedingt erfor derlich bzw unter jedem Betriebssystem m glich MS DOS Rechner machen es Software anomalien sehr leicht in Betriebssystemabl ufe einzugreifen Ist das einmal geschehen kann sich der Anwender auf keine Reaktion des Systems mehr verlassen der Eindring ling hat den Rechner v llig unter Kontrolle Unter komplexeren Betriebssystemen ist eine solche Manipulation von Funktionen nicht oder nur ber die Ausnutzung von Feh lern und Hintert ren in der Schutzsoftware m glich Zur Tarnung geh ren e Abfangen von Interrupts Vermeidung von Fehlermeldungen Umleitung auf sau bere Kopie bei Stealth Viren Desinfect on Open e Anlegen versteckter Dateien Spawning Viruses komplexe Trojaner e Anlegen versteckter Datenbl cke bes f r die Speicherung des sauberen Urlade blocks bei Stealth BsIs Top Of Memory 4 1 ANFORDERUNGSANALYSE 131 e Anlegen versteckter Verzeichnisse Trojaner wie AIDS e Ver nderung
473. t 3 5 3 Der Urladevorgang beleuchtet das Verfahren noch im Detail Bootviren oder BSIs Boot Sector Infector nutzen diesen Umstand f r ihre Zwecke aus und wer den dadurch zu einem Zeitpunkt aktiviert der vor dem Start jedes Schutzprogramms liegt und zu dem der Anwender keinerlei Einflu m glichkeiten hat ein unsch tzbarer Vorteil f r die b se Seite Gegen die Infektiosit t von Bootviren spricht da heute fast jeder PC mit Festplatte ausger stet ist und somit fast nie von Diskette urgeladen werden mu Andererseits passiert gerade dies recht h ufig wenn beim Ausschalten versehentlich eine Diskette im Laufwerk vergessen wird Resultat ist da Bootviren sich immer noch erfolgreich verbreiten und deshalb weiter entwickelt werden Auf Feh ler des Anwenders kann der Virenprogrammierer stets bauen ein wichtiger Aspekt bei der Planung von Schutzma nahmen Bootviren sind prinzipiell kein PC spezifisches Problem da jeder Rechner zun chst sein Betriebssystem von einem externen Speichermedium lesen mu Nur ist es z B bei Mainframes viel schwieriger an die notwendigen Informationen heranzukommen die Bootsoftware sinnvoll zu ver ndern hohe Anforderungen an den Programmierer und die relevanten Datentr ger zu manipulieren Zugangssicherungen etc Beim PC ist die Bootsoftware sehr simpel gehalten notwendige Informationen sind in jedem Programmierhandbuch verf gbar und urladef hige Datentr ger Disketten befinden sich in g
474. t T_FILE SEEK_SET if write handle file sizeof struct T_FILE 1 return 2 4 return 0 Funktion Put File Reference Entry int put_ref struct T_ FILE file int fnr char f_file Aufrufparameter file Adresse zu schreibende Daten fnr Eintragsnummer f file Name der Referenzdatei Dateiliste Seiteneffekte der Eintrag wird in die Referenzdatei geschrieben R ckgabewert 0 kein Fehler 1 Dateiliste nicht gefunden 2 Schreibfehler Tabelle A 51 put_ref Schreibe Dateieintrag in Referenzdatei Get File Rights get_rights stellt f r eine Subjekt Operation Objekt A 4 AVSYS LIB 299 Kombination anhand einer Rechtedatei normalerweise f_rights 1st fest ob die angeforderte Operation zul ssig ist oder nicht Der vollst ndige Name der Rechtedatei f_rights mu vom aufrufenden Programm definiert werden Wegen der M glichkeit da auf eine Datei mehrere Eintr ge zutreffen mu die gesamte Rechtedatei nach dem am besten passenden Eintrag durchsucht werden Format s 4 5 10 AVConfig Funk tion compile_f_rights Name der Rechtedatei ist im aufrufenden Programm definiert extern char f_rights int get_rights char subject WORD rights char object char def struct T_FR_ENTRY r_entry Eintrag fuer Dateirechte WORD hit_subj hit_obj Trefferpunkte TP WORD best_rights Rechte bester Treffer int current best TP letz
475. t ausf hrlich im Anhang B Einf hrung in die Benutzung ffentlicher Netze beschrieben 2 5 1 berwachung Watcher Flushot Def Watcher Ein Watcher engl watcher W chter berwacht das System auf bestimmte Funktionsanforderungen und entscheidet je nach Auftraggeber Ope ration Objekt und Rechten ber deren Zul ssigkeit Funktion Beim IBM PC werden alle Betriebssystemfunktionen ber sog Soft wareinterrupts aufgerufen ein Prinzip das die Basis der W chterprogramme darstellt und im 3 Kapitel breiten Raum einnimmt Es sei an dieser Stelle nur soviel dazu gesagt da durch das Ausl sen eines Interrupts ein bestimmtes Programm z B eine Betriebssystemfunktion aufgerufen wird die Parameter bernimmt die angeforder te Aktion durchf hrt und das Ergebnis an den Aufrufer zur ckgibt Ein Programm kann Interrupts bernehmen in dem es den Zeiger den ein Interruptvektor darstellt auf eigene Routinen umsetzt Ein W chterprogramm kann nun die Aufrufparameter kontrollieren und je nach Beurteilung der Rechtm igkeit den Aufruf zulassen und an die Originalfunktion weiterleiten oder aber den Aufruf mit einem simulierten Fehler beenden Normalerweise besteht eine Funktionsanforderung aus einem Subjekt der durch zuf hrenden Operation und einem Objekt Das Subjekt ist das aufrufende Programm bzw der hinter diesem stehende Anwender Operation und Objekt k nnen beispiels weise das Schreiben einer Datei das ndern de
476. t die Verwendung normaler C Funktionen als Serviceroutinen f r Interruptaufrufe Problem Beendigung der ISR Der Versuch eine konventionelle C Funk tion als ISR zu benutzen f hrt beim Versuch der R ckkehr zum aufrufenden Programm zum Absturz Das liegt daran da bei einem Interrupt drei Worte auf dem Stack abgelegt werden n mlich CS IP und Flagregister zum Zeitpunkt der Unterbrechung Da unsere NEAR Funktion Modell TINY aber einen NEAR R cksprung verwendet der 4 5 REALISIERUNG DES RESIDENTEN TEILS 187 auf dem Stack nur das gerettete IP Register erwartet ist die Katastrophe im Sinne des Wortes vorprogrammiert Problem Erhaltung der Registerinhalte Das zweite Problem besteht darin da selbst bei erfolgreichem Aussprung wahrscheinlich alle Registerinhalte durch die Ausf hrung der ISR zerst rt werden Davon bemerkt das unterbrochene Programm nichts und arbeitet deshalb mit den falschen Werten weiter Das Retten und Restaurieren von Prozessorregistern ist auf Maschinensprache ebene recht einfach Registerinhalte werden mit push lt Register gt auf dem Stack de poniert und mit pop lt Register gt wieder vom Stack geholt Das Flagregister wird vom Prozessor automatisch auf den Stack gerettet Die Deklaration einer Turbo C Funktion als interrupt bewirkt da der Compiler am Eingang und Ausgang der Funktion au tomatisch Codesequenzen zum Retten und Restaurieren der Register einf gt sowie das iret Kommando verw
477. t norm_path char f_spec Aufrufparameter f_spec zu normalisierende Dateispezifikation Pfad Seiteneffekte f_spec wird normalisiert Riickgabewert NR_INVAL unzul ssiger Pfad 1 NR_ERROR Fehler 1 NR_PATH Pfad 2 NR_FSPEC Dateispezifikation 3 Tabelle 4 13 norm_ path Normalisiere Pfad Ist keine Diskette eingelegt oder die Laufwerksklappe offen f hrt die Bestimmung des aktuellen Verzeichnisses bei beiden Versionen zu einem Fehler Das ist insofern nicht weiter tragisch als da der Zugriff auf die spezifizierte Datei aus dem gleichen Grund ebenfalls zu einem Fehler f hren w rde norm_path f hrt deshalb nicht zu einem unn tigen Versagen des aufrufenden Programms 186 KAPITEL 4 ENTWICKLUNG DER SYSTEMPROGRAMME 4 4 3 Deaktivierung interner Kommandos Interne Kommandos k nnen ber eine relativ aufwendige Filtershell oder durch externe Ersatz Programme mit Kontrollfunktionen berwacht werden Beim zweiten Verfahren sind die internen Befehle zun chst in externe umzuwandeln Dabei hilft ein Blick in den internen Aufbau von command com weiter Dort findet sich n mlich eine Tabelle der internen Befehle welche die Shell zur Bearbeitung von Eingaben des Benutzers durchsucht Um z B den Befehl copy zu deaktivieren mu der zugeh rige Eintrag unkenntlich gemacht werden patchen engl to patch flicken Dazu reicht bereits die Eingabe des gleichen Textes in Kleinbuchstaben aus Diesen Vorgang wollen wir
478. t result Result der Teilanalyse char cur_dir 65 akt Verzeichnis char test_dir 65 test_name 13 Unterv Name Teilanalyse char drive Laufwerksnr F_SPEC char pos Index in String Laufwerksnummer von F_SPEC ermitteln if f_spec 1 drive f_spec 0 f_spec 0 lt 96 A a else drive xgetdisk aktuelles Verzeichnis retten cur_dir 0 A drive Laufwerksang aufbauen cur_dir 1 cur_dir 2 if xgetcurdir 1 drive amp cur_dir 3 return NR_ERROR Dann wird versucht mit chdir auf f_spec zu wechseln F r den Fall da f_spec leer ist oder nur eine Laufwerksangabe wie A enth lt wird der reservierte Name f r das aktuelle Verzeichnis hinzugef gt F hrt der Wechsel zum Erfolg handelt es sich um eine Pfadangabe F_SPEC leer oder nur Laufwerk if f_spec 0 0 f_spec 1 amp amp f_spec 2 0 strcat f_spec Test ist F_SPEC Unterverzeichnis if xchdir f_spec 0 result NR_PATH else F hrt der Wechsel zu keinem Erfolg mu gepr ft werden ob es sich bei f_spec um eine Dateispezifikation d h eine Kombination von Pfad und Dateinamen handelt Dazu wird f_spec in die Teile test_dir und test_name zerlegt Der abschlie ende Backslash von test_dir wird entfernt falls es sich nicht um das Wurzelverzeichnis
479. t unannehmbar hoch Es gibt zwei Ans tze um dieses Pro blem zu l sen Entweder man sorgt daf r da das Programm nicht verf lscht werden kann oder man versucht einen m glichst kleinen aber aussagef higen Extrakt aus dem Programm zu generieren Der erste Ansatz geht von einer Verschl sselung des Programms aus Ein ver schl sseltes Programm an dem ein Virus Manipulationen vorgenommen hat wird bei der Entschl sselung entweder als Fehlerhaft erkannt oder zerst rt Da weder der Ver schl sselungsalgorithmus noch der verwendete Schl ssel dem Virus bekannt sind ist eine Infektion fast ausgeschlossen Weit verbreitete Verschl sselungsverfahren sind das im diesem Abschnitt noch vorzustellende DES und das RSA Verfahren Beim zweiten Ansatz h ngt alles von der Wahrscheinlichkeit daf r ab da zwei verschiedene Dateien dieselbe Pr fsumme besitzen Quersummen sind denkbar unge eignet Die Dateien mit dem Inhalt 42 58 und 69 31 h tten die gleiche Pr fsumme 100 eine ver nderte Datei lie e sich leicht so erg nzen da die gleiche Pr fsumme resultiert Cyclic Redundancy Checks CRCs wie sie in der Telekommunikation oft verwendet werden sind schon erheblich sicherer Als am sichersten gelten sog krypto graphische Pr fsummen wie sie z B der DES und der MD4RSA Algorithmus liefern Symmetrische Verfahren Verschl sselungsverfahren bei denen Ver und Ent schl sselung mit dem gleichen Schl ssel vorgen
480. t uns die Sache ungemein indem sie Namen und Erweiterung in die fixen Felder eines FCB bertr gt leere Felder mit Leerzeichen f llt und das Zeichen gegen eine 286 ANHANG A SOFTWARE Funktion Add Startpath To Filename add_path char p_spec char fname char f_spec Aufrufparameter p spec vollst Programmname argv 0 f_name zu erg nzender Dateiname f_spec Adresse Zielstring Seiteneffekte f_spec erg nzter Dateiname R ckgabewert Zeiger auf f_spec Tabelle A 34 add_path Stelle Dateinamen Startpfad voran quivalente Folge von ersetzt So wird der Dateiname abc zu abc lung der beiden Dateinamen name und mask in die FCBs fcb1 und fcb2 vor int cmp_fname char name char mask struct T_FCB fcbi fcb2 int i points xparsfnm name amp fcb1 0x00 xparsfnm mask amp fcb2 0x00 Dann erfolgt der eigentliche Vergleich der wie die simple for Schleife zeigt ge radlinig und einfach realisiert werden kann Fiir jede perfekte Ubereinstimmung wird points inkrementiert falls das Zeichen kein Leerzeichen war Passen die Zeichen nicht zusammen mu die Maske in fcb2 ein enthalten sonst schl gt der Vergleich fehl und die Schleife wird verlassen Fiir Jokerzeichen gibt es keine Punkte Nur wenn alle 11 Zeichen bereinstimmen gibt die Funktion den Wert von points zur ck sonst si gnalisiert 1 die Verschiedenheit der beiden Namen Die Bewertu
481. t von private und public key Verfahren rechtliche Aspekte Computer Viren Sch den in USA und Europa KES 88 6 S 344 346 Morris INTERNET Worm Beschreibung der Funktion Sch den durch Compu terviren F lle von verseuchter Original Software Zerst rung von Hardware Schutz mechanismen Meldungen Nach ABC Waffen jetzt D Waffen KES 90 4 S 278 Pentagon Projekt zur Entwicklung von Computerviren als Waffe Diskussion Stellenanzeige der Firma GDATA Softwarespezialisten f r Computerviren ATARI ST und IBM PC gesucht unbekannt Stellenanzeige Softwarespezialisten f r Computerviren Quelle Server TRICKLE DSORUSII SUIT TXT engl nicht mehr verf gbar ber TRICKLE Server Directory MSDOS TROJAN PRO Anklageschrift Einschleusung eines Virus in ein BBS Bulletin Board System Wenn der PC Schnupfen bekommt unbekannt 1989 10 11 S 10 11 Funktion von Computerviren Besprechung zu Ralf Burger s Buch Das gro e Computerviren Buch Der Bundesbeauftragte fiir Datenschutz Hrsg Biirgerfibel Datenschutz Roeder rund um den Druck Niederkassel 1987 Rechtliche Grundlage fiir u a Log Dateien LITERATURVERZEICHNIS 349 95 Praxis Tip Der Benutzerservice eine Stelle der Koordination 96 97 98 99 100 101 KES 91 1 S 10 13 Argumente f r Hardware und Softwarekataster Verfahren f r Software Freigabe rechtliche Vorschriften Praxis Tip Wie sch tze ich
482. t wird in ctrl_off und ctrl_seg zwischengespeichert Das DS Register ist unbedingt zu retten weil C Programme davon ausgehen da mindestens dieser Wert f r die Datenadres sierung erhalten bleibt Gleiches gilt f r die Register SI und DI falls Turbo C Regi stervariablen verwendet Diese werden entweder explizit als register deklariert oder implizit benutzt falls die Optimierung auf Geschwindigkeit eingeschaltet ist 4 5 REALISIERUNG DES RESIDENTEN TEILS 193 brkdis und brken manipulieren die Tabelle der Interruptvektoren ohne Kernel funktionen zu verwenden Diese etwas anriichige Methode wird verwendet weil das Kernel beim Aufruf einer Funktion priift ob das laufende Programm abgebrochen werden soll Falls jemand w hrend der Abarbeitung der Kontrollfunktion eine entspre chende Taste gedr ckt hat w rde die ISR verlassen bevor das in_isr Flag gel scht werden konnte PUBLIC _brkdis PUBLIC _brken DGROUP GROUP _DATA _DATA SEGMENT WORD PUBLIC DATA ctrl_off DW ctrl_seg DW _DATA ENDS _TEXT SEGMENT BYTE PUBLIC CODE ASSUME cs _TEXT cs DGROUP _brkdis PROC NEAR push ax push ds push es mov ax 0000h alten Vektor retten ES 0x0000 4 0x23 Offset Eintrag fuer ISR 0x23 mov es ax mov ax es 4 23h mov cs ctrl_off ax mov ax es 4 23h 2 mov cs ctrl_seg ax mov ax offset ctrl_stop neuen Vektor setzen mov es 4 23h ax push cs pop ds mov es 4 23h 2 ds pop es
483. ta gt name Datei in Auswahlliste gt gt Konvertieren von DATE TIME SIZE ATTR s a ADD_SUBDIR sprintf f_spec 7s s path dta gt name sig CRC_START if sig_erc buf BUF_SIZE f_spec amp sig lt 0 fprintf stderr Computing of signature failed n getch sprintf tmp 12s s Is Ys Is 0000000000000000000000000000 04 4X dta gt name date time attr size sig add2list amp file_anchor tmp Eintrag gt in Liste return lt lt Lesen Schreiben der Referenzdaten Eine wichtige Rolle spielen die vier Z hler sin_file Startindex Eingabe von chkstate fii ein_file Endindex Ein gabe sout_file Startindex Ausgabe auf chkstate fio und eout_file Endindex Ausgabe Abbildung 4 6 d rfte den im folgenden Text geschilderten Sachverhalt etwas erhellen read_subdir liest den n chsten Eintrag aus der Verzeichnisliste Eingabe und setzt dabei sin_file und ein_file die den zugeh rigen Bereich in der Dateiliste Ein gabe markieren Die Routine liefert den Wert 1 zur ck falls das physikalische oder 166 KAPITEL 4 ENTWICKLUNG DER SYSTEMPROGRAMME logische Ende der Liste erreicht wurde sonst den Wert 0 Unter logischem Ende wird der trennende Eintrag in der Verzeichnisliste vor den Daten des n chsten Laufwerks verstanden sin_file bezeichnet zugleich die Position des n chsten zu lesenden Datei eintrags und wird bei jedem Aufruf
484. te System erm glichen Deshalb erscheint eine Abwehr von Softwareanomalien erstrebenswert und ren tabel Dieses Kapitel besch ftigt sich ausf hrlich mit der Herkunft von Softwarean omalien und ihrer Verbreitung um Strategien zur Abwehr zu entwickeln Diese werden zusammen mit den im Kapitel Systemprogrammierung unter MS DOS vermittelten Kenntnissen in konkrete Programme umgesetzt Die Abwehr von Softwareanomalien hat prinzipiell zwei Seiten Eine menschliche welche die Motive und das Verhalten der Programmierer und Verbreiter betrifft und eine technische an der sich Gegenma nah men gegen die Virusprogramme selbst orientieren Auch ohne Sicherheitssoftware zu erstellen und zu installieren l t sich etwas ge gen die Bedrohung durch Computerviren tun Viren entstehen nicht von allein und ver breiten sich auch nicht ohne menschliches Zutun Deshalb ist es interessant zu untersu chen aus welchen Gr nden Menschen Viren programmieren und Rechner unabsichtlich oder absichtlich verseuchen Die Analyse der Funktion und Verbreitung von Software anomalien besch ftigt sich eher mit Aspekten der technischen Seite Erkenntnisse aus beiden Untersuchungen lassen sich f r Erziehung Ausbildung sowie f r organisatorische und programmtechnische Abwehrma nahmen nutzen 2 1 1 Motive der Programmierer Computerviren sind weit verbreitet und die Anzahl der verschiedenen Typen wird st ndig gr er Alarmmeldungen ber neu entdeckte Exemplare
485. tegriert bei ViruScan in das Programm Clean Up ausgelagert Die oben angef hrten Programme berpr fen Dateien nur auf Anfrage durch den Benutzer der sie f r einen Suchlauf starten mu Check on Demand Das im Paket F Prot enthaltene Programm F Driver sys ein Ger tetreiber untersucht automa tisch und f r den Benutzer praktisch nicht wahrnehmbar jedes gestartete Programm vor seiner Ausf hrung auf Viren Check on Execute Ist es verseucht wird der Name des Virus angezeigt und der Start abgebrochen Das Gleiche leisten die Programme VShield und VCopy von McAfee Associates die ausf hrbare Dateien beim Start bzw beim Kopieren berpr fen Die Kontrolle beim Kopieren dient der Prophylaxe und verhindert da verseuchte Programme berhaupt auf den Rechner gelangen Verwandte Konzepte Ein bereits im Abschnitt Watcher angesprochenes veraltetes Konzept ist die Suche nach verd chtigen Texten und Befehlen in Program men Die Idee dabei ist da ein z B als Textverarbeitung angepriesenes Programm wahrscheinlich keine Texte wie The Virus Crew Got cha stupid user und Befehle zur Formatierung der Festplatte enth lt Programme wie das schon betagte Chk4Bomb engl check for bomb pr fe auf logische Bombe zeigen jeden l ngeren Text und verd chtige Funktionsaufrufe des Betriebssystems an damit der Benutzer sich ein Urteil bilden kann Dieses Verfahren versucht einen Virus an seinem Verhalten zu erkennen Cohen hat sich
486. telli gen k nnen ohne dabei die CPU nennenswert zu belasten Alternativ dazu kann das Programm mit einer Signatur versehen werden die bei der Installation auf Festplatte von einem Kodieralgorithmus ber das Programm erzeugt und beim Start berpr ft wird s a Checker Damit f llt allerdings die M glichkeit eines Kopierschutzes weg In beiden F llen darf das Programm vor der Kodierung mit keinem Virus behaftet sein weil sonst der Viruscode als legitimer Be standteil des Programmes mitgesichert wird Dennoch w rden alle weiteren Infektionen sicher erkannt Ma nahmen Betriebssystemaufrufe zum Programmstart werden abgefangen und die Programmdatei dekodiert bzw die berechnete Signatur mit dem Sollwert ver glichen Unzul ssige Startversuche werden abgebrochen 2 7 7 Zus tzliche Ma nahmen Kontrollpunkte 3 1 Kopieren von Daten Es wird per Dateianalyse berpr ft ob als Daten identi fizierte Dateien tats chlich nur Text enthalten 2 Kopieren von Programmen als Daten Tarnvorgang 3 Kopieren von Programmen als Daten oder Umbenennen festplattenintern Ansatz Alle Operationen die f r den bestimmungsgem en Betrieb nicht erfor derlich sind werden vorbeugend nicht zugelassen Schutzfunktionen der sz III betreffen den kompletten Datenbestand der Festplat te Die hierdurch abgefangenen Operationen betreffen zwar nicht direkt Programme k nnen aber Vorschub zu illegalen Manipulationen leisten Kopier
487. tems ChkSys Scanner Check System ist ein Scanner genauer eine Scan Platt form die verschiedene Funktionen tragen kann die dateiweise arbeiten In unserer Version ist die Identifizierung von Viren nicht vorgesehen Warum nicht ist das nicht die prim re Aufgabe eines Scanners Anfang 1992 gab es bereits ber 1000 Tausend verschiedene Viren und t glich werden es mehr Um brauchbare Signaturen zur Suche zu erhalten mu jedes Vi rus verf gbar sein und per Reverse Engineering analysiert werden Mittlerweile ist das 4 2 SYSTEMENTWURF 141 Ziel dabei aktuell zu bleiben nur noch durch gemeinschaftliche Aktivit ten verschiede ner Antivirusforscher auf der ganzen Welt zu erreichen Z T arbeiten ganze Gruppen hauptberuflich und durch elektronische Netze miteinander verbunden an der Erfor schung neuer Viren Davon abgesehen da dem Autor nur wenige Viren zur Verf gung stehen w re ein Scan Programm bereits bei Erscheinen des Buches hoffnungslos ver altet Aus diesen Gr nden werden alternative Funktionen zur Suche nach verd chtigen Dateien verwendet Seal und ChkSeal Checker Seal engl Siegel ist ein spezieller Checker der Pr fsummen ber einzelne Dateien ganze Datentr ger Disketten Wechselplatten oder die Urladeinformation eines Datentr gers berechnet N tzlich ist seal vor allen Dingen beim Versenden von Daten per Briefpost oder Datennetze Die Nachricht wird vom Absender elektronisch versiegelt
488. ter bester Eintr int handle Datei Handle char valid Bewertung bester Treffer char result Bewertung letzt Treffer oeffne Rechtedatei if handle open f_rights O_RDONLY O_BINARY 1 message 0xCF Couldn t open rights list return 1 hit_subj und hit_obj halten das Vergleichsergebnis f r Subjekt bzw Objekt fest Falls Subjekt oder Objekt nicht bereinstimmen geht es weiter zum n chsten Eintrag Falls der Grad der bereinstimmung das bisherige Maximum best erreicht oder berschreitet wird result das Ergebnis der Zul ssigkeits berpr fung zugewie sen Zur Erl uterung Ein erforderliches Recht ist durch ein gesetztes Bit in rights markiert Falls eine Operation nicht zul ssig ist Bit in r_entry rights ist 0 wird durch die AND Verkn pfung das korrespondierende Bit im Ergebnis gel scht suche nach am besten passenden Eintrag best 1 result 1 valid def while read handle amp r_entry sizeof struct T_FR_ENTRY sizeof struct T_FR_ENTRY passt hit_subj cmp_fspec FM_LAX subject r_entry subject hit_obj cmp_fspec FM_LAX object r_entry object if Chit_subj OxFFFF amp amp hit_obj I OxFFFF besser oder gleich gut if current hit_subj hit_obj gt best result rights rights amp r_entry rights War der Grad der bereinstimmung h her als das bisherige Maximum nimmt valid den Wert von resu
489. tin und Sabine M ller gedankt die unerm dlich Berge von Text korrigiert haben und so den Abgabetermin retteten Horst Kratz Norbert R stel und viele andere trugen dazu bei da das Studium insgesamt eine ebenso lebenswerte wie erfolgreiche Sache wurde Herr Heinzel als Herausgeber der Reihe PC professionell machte es schlie lich m glich da aus der stark erweiterten Diplomarbeit dieses Buch werden konnte Ge setzt wurde der Text auf einem 386er AT unter MS DOS mit dem Satzsystem emTRX und dem Makropaket GRIEX Ralph Babel und Herr Hoffman DTM halfen bei der Drucklegung Meine Eltern korrigierten den gesamten Text und sorgten daf r da ich ungest rt als Autor arbeiten konnte Taunusstein im Dezember 1991 Christian Treber Inhaltsverzeichnis 1 Theorie der Softwareanomalien TI W rmer 8 oii thom eae PT Dane ee REA AS 11 1 Definition van e ae ae aera eet case es a Be DR 1 1 2 Trapdoors triviale Pa w rter Bugs Der INTERNET Worm 12 Trojaner 2 84 2 2a a ae A ae ee a eh hg kak Definition 2 28 2 fats ee SS SOM eS Pe dos 1 2 2 Mangelnde Vorsicht Der AIDS Trojaner 2 2 2 1 3 vComp terviren vi sd Be eh Rd oe oe BE A A 1 34 Definition vs a ame aa EI LER 1 3 2 Transport Vektor 24 260 e een aS SRE near 1 3 3 Aktivierung und Residenz 20 1 3 4 Infektionsmechanismus Typologie 1 3 9 Tamun e ar aaa Gd a A Ga we ee be AA a a dts 1 4 Die Bedrohung durch Software
490. tion des Systems zur Tarnung effektiveren Arbeit etc 3 Sch digung 1 Gr ter anzunehmender Unfall 130 KAPITEL 4 ENTWICKLUNG DER SYSTEMPROGRAMME Von der Verbreitung abgesehen gilt die Aufstellung auch f r Trojaner F r die angef hrten Aktivit ten ben tigt jede Softwareanomalie bestimmte Funktionen und Ressourcen des Betriebssystems die wir uns genauer ansehen wollen Zu 1 Verbreitung Bei der Verbreitung sind zwei Phasen zu unterscheiden Beim Transport auf den Rechner sind noch relativ komplexe Programme zum Kopieren Empfang via DF etc und der Anwender im Spiel Ab der Aktivierung handelt das Virus dagegen v llig selbst ndig und verwendet elementare Funktionen des Betriebssy stems Dies gilt auch f r die n chsten zwei Punkte Zur passiven und aktiven Verbrei tung tragen folgende Aktionen und Funktionen bei Transport auf den Rechner ber wechselbare Datentr ger und Kopierprogram me DF Tastatur mit ohne Unterst tzung des Anwenders Ausf hrung Start durch Anwender oder andere Programme bes im Urladepro ze Optional Residente Installation als TSR durch Reservierung von Speicher oder Verminderung des TOM Aktive Suche nach Programmen oder alternativ Einklinken in Interrupts Infect on Open e Datei manipulierbar machen Attribute ver ndern e Datei ffnen lesen manipulieren schreiben Infizieren Am Transport verseuchter Programme ist zwangsl ufig der Anwender beteilig
491. tions Interrupt Teil 4 2 22 2222 321 C 10 Aufbau Eintrag in interner Laufwerkstabelle 2 2 22 2220 323 Wichtiger Hinweis Folgende Rubriken wurden noch nicht in die Literatursammlung aufgenommen e Buchbesprechungen e Rubrik Random Bits amp Bytes e alle Zeitungsartikel 338 TABELLENVERZEICHNIS Literaturverzeichnis 1 2 E cs lt i Literatur zur Programmerstellung Programmieren in Assembler BRADLEY David J Programmieren in Assembler Carl Hanser Verlag M nchen Wien 1986 Grundlagen Assembler 80 THIES Klaus Dieter PC AT XT Assembler Buch te wi Verlag GmbH M nchen 1988 Grundlagen Assembler 80 Handbuch zu MASM Programmieren in C Borland Herst Turbo C Benutzerhandbuch und Turbo C Referenzhandbuch Borland 1990 Interna und Arbeit mit Turbo C Schnittstelle zu Assembler KERNIGHAN Brian W amp RITCHIE Dennis M Programmieren in C Carl Hanser Verlag M nchen Wien 1983 Grundlagen C Programmieren auf PCs unter MS DOS ALTHAUS Martin Das PC Profibuch Sybex Verlag GmbH D sseldorf 1988 Aufbau Master Bootblock Partitions Ara International Co LTD Herst Optima 1024 VGA Sync engl Ara International Co LTD 1989 Funktionen des BIOS INT 0x10 Video DUNCAN Ray Advanced MS DOS Programming engl Microsoft Press 1989 Aufbau Master Bootblock Partitions 339 340 LITERATURVERZEICHNIS 9 GERDES Martin Losgelassen Wie man residente Programme
492. tisiert die Ergebnisse der Anforderungsanalyse und zer legt die zu leistenden Aufgaben in Systemkomponenten d h zun chst in einzelne Ab wehrprogramme Diese lassen sich in drei Gruppen aufteilen 1 Im Abschnitt Pr fprogramme werden Programme behandelt die sich weder resi dent installieren noch in die Arbeit von MS DOS eingreifen Dazu geh ren Checker und Scanner Die Kontrollprogramme stellen eine Erweiterung bzw Ver nderung des Betriebs systems auf Programmebene dar Realisiert werden neue externe Kommandos mit Kontrollfunktionen die interne Befehle ersetzen Die speicherresidenten Programme kontrollieren Systemaufrufe auf beiden In terruptebenen Alle Watcher basieren auf einer universell einsetzbaren TSR Plattform und einem Interrupt C Interface die wichtige Grundfunktionen rea lisieren Die Beschreibungen der Programme sind nach einem festen Schema gegliedert Problemstellung M glichst genaue Schilderung des Problems ohne Expertenwis sen vorauszusetzen Aufgabenbeschreibung Was genau soll das Programm leisten Die Problemstel lung wird analysiert L sungen werden erarbeitet Systemarchitektur Welche Funktionen werden durch welches Modul realisiert wie arbeiten die Module zusammen Schnittstellen Fehlerbehandlung etc Funktionsbeschreibung Beschreibung der verwendeten Algorithmen evtl auch konkret anhand des Quelltextes Hinweise Zus tzliche Erl uterungen zur Funktion besondere
493. toma tisch nach jeder Operation Addition Subtraktion mit entsprechendem Aufwand an Rechenzeit normalisiert wird Dadurch sind huge Zeiger im Gegensatz zu ihren FAR Kollegen miteinander ber die logischen Operatoren lt und gt mit dem erwarteten Ergebnis vergleichbar Adre Arithmetik Auch bei der Addition und Subtraktion von Adressen ist zumindest in der nicht normalisierten Form Vorsicht geboten Beispiel Fehler durch Offset ber Unterlauf Ein Puffer der Gr e 144 kB soll sequentiell aufsteigend bearbeitet werden Dazu ist nach jedem Verarbeitungsschritt die lineare Adresse zu inkrementieren Die Erh hung des Offsets allein gen gt dabei nicht Nach sp testens 216 1 65535 Schritten findet ein berlauf Wrap Around statt bei dem der Offset auf Null zur ckgesetzt wird das Segment aber unbeeinflu t bleibt Es werden dann Bereiche durchlaufen die vom fehlerhaften Zugriff einmal ganz abgesehen u U nicht zum Puffer geh ren Abb 3 4 Inkrementierung hier in 32 kB Schritten Speicherbereiche von mehr als 64 kB Umfang k nnen generell nur ber Beeinflus sung von Segment und Offset adressiert werden L uft der Offset ber ist ein Segment wechsel erforderlich Eine M glichkeit der Implementierung dieses Verfahrens besteht darin die Segmentnummer um eins zu erh hen und den Offset auf 000016 zu setzen wenn der Offset nach der Inkrementierung den Wert 001016 erreicht hat Der Typ huge von Turbo C f
494. tr old x chr xgotoxy old_x old_y return key Funktion Display Message BYTE message BYTE attr char text Aufrufparameter attr Attributwert f r Textausgabe text auszugebende Nachricht Seiteneffekte Die Nachricht wird auf dem Bildschirm angezeigt der Tastaturpuffer wird ge leert R ckgabewert gedr ckte Taste Tabelle A 32 message Gebe Nachricht auf Bildschirm aus Tokenise Rights String tokenise wandelt einen Rechtestring rights an hand der Tokentabelle token in ein Rechtewort um token ist ein bis zu 16 Zei chen langer String der die Kennbuchstaben der verf gbaren Rechte enth lt z B A 4 AVSYS LIB 285 Seil zen trwx Stimmt ein Zeichen in rights mit einem Zeichen in token berein wird im R ckgabewert das der Position in token entsprechende Bit gesetzt Das erste Zeichen in token entspricht Bit 15 das 16 Zeichen Bit 0 Beispielsweise w re das Ergebnis f r den Rechtestring riws und die oben angef hrte Tokentabelle gleich C00616 Die Reihenfolge der Rechte in rights ist beliebig Gro und Kleinschreibung wird unterschieden Funktion Tokenise Rights String WORD tokenise char rights char token Aufrufparameter rights zu konvertierender Rechtestring max 16 Zeichen token String mit verf gbaren Rechten max 16 Zeichen Seiteneffekte keine R ckgabewert Ergebnis der Konvertierung Tabelle A 33 tokenise Wandle Rechtest
495. tragen die Flugsy steme zu verbessern Selbst bei einer Verseuchung des Com puters kann nachtr glich noch ermit telt werden was zur Infizierung f hrte Daf r mu sichergestellt sein da die Protokolldatei so vor Zugriff gesch tzt ist da diese Manipulationsversuche des Virus oder des Benutzers bersteht Der Systemverwalter kann durch Aus wertung der Daten den Infektionsweg feststellen Verantwortung zuweisen so wie dazu beitragen die Systemsicher heit zu verbessern Jeder Logeintrag besteht aus einer Zeitmarke Datum Uhrzeit und den Parame tern der beanstandeten Operation Normalerweise geh rt die Benutzerkennung unbe dingt dazu aber da MS DOS so etwas nicht unterst tzt ist diese Angabe hinf llig Wird Auskunft ber den Benutzer gew nscht sind eigene Schutzprogramme vorzusehen die vom Anwender vor der Freigabe des Rechners Angaben zur Identit t verlangen Indirekt kann das Gleiche ber die Einf hrung von Regeln erreicht werden die jedem Anwender vorschreiben da Name und Zeitraum der Rechnerbenutzung in eine Liste einzutragen sind ber die Zeitmarke in der Protokolldatei kann dann manuell auf den Verursacher geschlossen werden Diese Methode h ngt nat rlich vom guten Willen der Benutzer ab den unregelm ige Kontrollen st rken k nnen Entzug der Benutzungserlaubnis androhen etc Da die Zeitmarke eine wesentliche Rolle bei der Identifikation des Verursachers spielt m ssen die Funktionen zum n
496. trollen auf Programm oder Kommandozeilenebene der obersten Schicht der MS DoS Hierarchie Um die im Abschnitt 2 7 1 Schutzzonen und Kontrollpunkte beschriebenen Transport und Umbenennungs Operationen durch zuf hren sind bestimmte Dos Kommandos erforderlich die in der zweiteiligen Tabel le C 1 im Anhang C 1 aufgelistet sind Sicherheitsrelevante Befehle Betrachten wir die Tabelle der MS DOS Kom mandos unter dem Gesichtspunkt Transport von Dateien Gesucht ist eine Liste der sicherheitsrelevanten Befehle die durch neue Kommandos mit Kontrollfunktionen zu ersetzen sind Tabelle 4 1 fa t das Ergebnis des Selektionsvorgangs nach Funktions gruppen geordnet zusammen Die Transportfunktionen treten zum Teil versteckt auf format bertr gt falls mit der Option s aufgerufen den Bootblock und die Systemdateien io sys msdos sys und command com auf die formatierte Diskette Diese wird dadurch urladef hig d h MS DOS kann von dieser Diskette gestartet werden Ein relativ unbekannter Befehl ist sys der die Systemdateien nachtr glich auf Diskette oder Festplatte bertr gt Voraussetzung f r die Anwendung ist da bei der Formatierung entsprechend Platz reserviert wurde z B mit format b Kommandos der beiden anderen Gruppen sind von Bedeutung falls der Anwen der gegen die Schutzprogramme arbeitet Mit attrib lassen sich schreibgesch tzte Programme wieder beschreibbar machen ren bzw rename kann zum Tarnen eines Programms
497. tstellen wenn sie schon nicht verhindert werden konnte Auftragskontrolle Daten k nnen nur dem Auftrag entsprechend verarbeitet werden e Vertrag eindeutig gestalten e Auftragnehmer sorgf ltig ausw hlen e Vertragsausf hrung kontrollieren evtl Vertragsstrafen bei Verletzung Die Auftragskontrolle soll sicherstellen da bei der Verarbeitung sensitiver Daten durch Dritte nur die gew nschten Aufgaben durchgef hrt und die Daten nicht anderweitig genutzt werden Der Auftragnehmer kann die bergebenen Daten m glicherweise ma nipulieren Mit diesem Aspekt wollen wir uns bei der Transportkontrolle besch ftigen Transportkontrolle Sensitive Daten k nnen beim Transport weder gelesen noch ver ndert gel scht werden e Daten verschl sseln Sicherung von Vertraulichkeit Integrit t und Authentizit t e Daten kopiersch tzen e Auf Vollst ndigkeit berpr fen e Transportmodalit ten festlegen Verpackungs und Versandvorschriften Trans portwege Versandart wie Kurierdienste Einschreiben etc Auf Softwareanomalien bertragen bedeutet Transportkontrolle da eine Manipulati on der Software auf dem Weg zwischen zwei Stellen ausgeschlossen ist Dies ist nicht so einfach zu realisieren Einer Diskette sieht man nicht an ob sie evtl zu Vorf hrungs zwecken beim H ndler eingesetzt worden ist oder von einem Kunden nach Ablauf der Testperiode zur ckgegeben wurde Abhilfe ist durch versiegelte Verpackungen z B Einschwei en
498. twicklungsumgebung 256 ANHANG A SOFTWARE lt Programmname gt prj e LIB gebrauchsfertige Bibliotheksdateien avsys lib msdos_s lib e PACKAGE gebrauchsfertige Programme e DOCUMENT Dokumente aus Rechnernetzen zum Thema Softwareanomalien Be triebssysteminterna von MS DOS invntory doc Kurzbeschreibung des Inhalts der einzelnen Texte Kurzanleitungen zu den wichtigsten Servertypen engl A 2 Software zur Programmerstellung Turbo C C Compiler Alle C Quellcodes c werden mit dem Turbo C Compiler bersetzt wobei entweder die integrierte Entwicklungsumgebung tc exe oder die Kommandozeilenversion tcc exe zum Einsatz kommt Im ersten Fall kann auf se parate Kompilierungs und Linkl ufe verzichtet werden Die Kommandozeilenversion wird beim Einsatz von make ben tigt Bei den TSR Programmen ist die resultierende exe Datei mit dem externen Kom mando exe2bin in eine bin Datei umzuwandeln die vom Aufbau her mit dem com Typ identisch ist Nach der Umbenennung in eine com Datei ist das Programm betriebsbe reit Bei Benutzung von make werden diese Schritte automatisch erledigt Alternativ dazu kann bei exe2bin auch gleich die Zieldatei angegeben werden Beispiel exe2bin avwatchi avwatchi com Turbo Assembler Assembler Der Turbo Assembler tasm bersetzt die in Maschinensprache geschriebenen Module Endung asm in obj Dateien Da nur Biblio theksmodule in Assembler implementiert wurden kommt der A
499. u lichkeit gesichert Eine m gliche Anwendung w re die Kodierung von Firmen Telexen die jede Zweigstelle verschicken aber nur die Zentrale wieder entschl sseln kann Die bekannteste Methode zur asymmetrischen Verschl sselung d rfte das von Rivest Shamir und Adleman entwickelte RSA Verfahren sein Es beruht auf der Multi plikation zweier gro er Primzahlen deren Produkt nur mit sehr gro em Rechenaufwand wieder in seine Primfaktoren zerlegbar ist Allerdings wurden in letzter Zeit bedeutende Fortschritte bei der Faktorenzerlegung erzielt so da die Sicherheit des RSA Verfahrens von manchen Experten in Frage gestellt wird 99 Dennoch erfordert es Superrechner um einen solchen Code zu brechen PCs und Viren sind von diesen Leistungen noch sehr weit entfernt Elektronische Signatur Im allgemeinen wird beim RSA Verfahren ein 512 Bit breiter Schl ssel verwendet der die Verschl sselungsgeschwindigkeit allerdings auf ae 10 Figentlich nur 56 Bits 8 Bits sind redundante Pr finformation 52 KAPITEL 2 THEORIE DER ABWEHR der Geschwindigkeit von DES herunterbremst Darum kombiniert man beide Verfahren z B bei der elektronischen Signatur miteinander 88 Der schnelle DES Algorithmus berechnet den nur wenige Bytes umfassenden MAC ohne Anwendung eines Schl ssels der mit dem RSA Verfahren und dem Private Key des Senders verschl sselt wird Der Empf nger entschl sselt mit dem Public Key des Senders den MAC berechnet ihn sei ners
500. uasi als Bonus hinzu Das was die Netzkarte fiir die einzelnen APCs und die Verkabelung kostet kann zu einem guten Teil wieder damit hereingeholt werden da keine lokalen Festplatten und evtl Diskettenlaufwerke mehr ben tigt werden Das Novell Virus Fileserver Konzepte bieten nat rlich nur dann erh hte Si cherheit gegen ber Stand Alone APcs solange der Server selbst nicht verseucht wird Ende 1990 wurde von Jon David in Zusammenarbeit mit der Firma Novell ein Virus erforscht das in der Lage ist Schutzeinrichtungen der Server Software zu umgehen 49 Die Zusammenarbeit bestand darin da sich Novell einen Tag vor dem Ausl sedatum des Virus nach langen Verhandlungen dazu bereit erkl rte Versuche auf verschiedenen Netzkonfigurationen durchzuf hren Obwohl die Demonstration erfolgreich verlief rea gierte Novell aggressiv auf eine Mitteilung Jon Davids an die Presse Diese Art von Zusammenarbeit schadet sowohl den Bem hungen zur Bek mpfung von Computervi ren als auch dem Ansehen der betroffenen Firma Wo sind die Mainframe Viren Diese Frage wurde auf der Diskussionsliste VIRUS L s Anhang B oft gestellt und ebensooft kontrovers diskutiert Tatsache ist da Viren auf Gro rechnern ohne weiteres mit geringem Aufwand realisierbar aber in freier Wildbahn praktisch noch nie aufgetreten sind zumindest wurden keine F lle publik Auf APCs unterschiedlichster Hersteller dagegen IBM Apple Atari Commodore etc hat die Za
501. uf und wan deln den Inhalt der Strukturen T_FILE bzw T_SUBDIR in die zugeh rige Textform und zur ck um Abb 4 4 zeigt anschaulich wie die Textform der Datei und Verzeichnis eintr ge aufgebaut ist Systemarchitektur Da es wieder um die Durchsuchung von Dateibest nden geht kann auf die Funktion scan_dir zur ckgegriffen werden Wie bei ChkSys ist die Suche in die zwei Ebenen Verzeichnisstruktur und Dateibestand aufgegliedert die durch die Funktionen scan_structure und scan_files realisiert werden Auf beiden Ebenen kommt der oben beschriebene Vergleichsalgorithmus zur Anwendung Funktionsbeschreibung ChkState erwartet als Aufrufparameter eine Liste von Laufwerksangaben z B c d main initialisiert mit Hilfe von init das Programm ruft f r jeden Parameter der Kommandozeile scan_structure auf und nimmt die Nach bereitung vor Defines define POLYNOMIAL OxA001 define CRC_START 0 define BUF_SIZE 18 512 18 Sektoren 4 3 PRUFPROGRAMME 163 Globale Variablen FILE in_subdir Verzeichnisliste Eingabe FILE in_file Dateiliste Eingabe FILE out_subdir Verzeichnisliste Ausgabe FILE out_file Dateiliste Ausgabe struct T_ENTRY sub_anchor Verzeichnisliste struct T_ENTRY file_anchor Dateiliste struct T_ENTRY list_anchor Auswahlliste int sout_file eout_file 1 letzter Eintrag size_t buf_size Puffergroesse von BUF BYTE buf Puffer fuer CRC
502. um die Kernel Funktionen 2Big Set Date und 2Dig Set Time deren Objekt stets die Systemuhr ist Ein R ckgabewert von 0 signalisiert das erfolgreiche Setzen von Datum oder Zeit Das aufrufende Programm das Subjekt der Operation bleibt unber cksichtigt daher die Bezeichnung globale Rechte Funktion Bei einem Kernelaufruf enth lt das Register AH die Funktionsnummer Ist AH von 2B 6 und 2Djg verschieden wird die Kontroll sR mit FFFF jg beendet Das Interrupt C Interface f hrt dann mit der Ausf hrung der Original sr fort Andern falls bewirkt der Wert 0 den Abbruch des Aufrufs Obwohl dem aufrufenden Programm der erfolgreiche Abschlu der Operation vorget uscht wird bleibt die Systemuhr un ver ndert einfuegen in Defines define PRG_NAME AVWatch G define PRG_ID Cg lt lt 8 einfuegen in ISR_21 BYTE func Funktionsnummer func ax gt gt 8 SET DATE oder SET TIME 208 KAPITEL 4 ENTWICKLUNG DER SYSTEMPROGRAMME if func 0x2B func 0x2D return 0x0000 simuliere in Ordnung Nach Kompilierung Konvertierung in eine com Datei und Start ist von Anwe senheit und Wirkung nichts zu merken Lediglich der freie Arbeitsspeicher ist um ein paar Kilobytes geschrumpft Ein Test mit date oder time zeigt aber da AVWatchG funktioniert Egal ob die eingegebenen Werte g ltig sind oder nicht das Kommando vermeldet stets den ordnungsgem en
503. umme sig berechne aktuelles Siegel sig CRC_START make_crc_table POLYNOMIAL rewind in while bytes fread buf 1 min to_go BUF_SIZE in 0 sig block_crc buf bytes sig to_go bytes fclose in return sig seal sig Funktion Check Programm Seal check_seal int chk_seal char argv Aufrufparameter argv Array mit Zeigern auf die Kommandozeilenparameter Seiteneffekte keine Riickgabewert 0 Siegel intakt 1 Siegel besch digt 1 Fehler Tabelle 4 7 check_seal berpr fe Programmsiegel 4 3 3 Check State ChkState Problemstellung Wie unter 4 3 1 Check System bereits angesprochen nehmen manche Softwareanomalien Manipulationen am Dateibestand und am Dateisystem vor Ebenso k nnen Anwender unbefugt Dateien ins System einspielen oder aus dem System entfernen ChkSys kann aber nicht zwischen regul ren und hinzugekommenen Dateien unterscheiden solange sie nicht durch besondere Attribute auffallen Gel schte Datei en und Verzeichnisse werden berhaupt nicht erkannt weil kein Vergleich mit einem fr heren Zustand des Systems vorgesehen ist 4 3 PRUFPROGRAMME 159 Drei Dinge weisen auf bereits erfolgte illegale Aktivit ten im System hin falls kein Befugter die Operationen vorgenommen hat 1 Neue Dateien unbekannter Herkunft Einschleusung 2 Ver nderte Dateien Inhalt und Attribute wie Datum Zeit etc Infektion Mani pulation
504. unden wird s a gt config sys Diskette s Floppy Disk Environment Block mit Umgebungs Variablen die mit dem Dos Kommando set gesetzt ver ndert und gel scht werden k nnen z B path Werden durch command com und bestimmte andere Programme ausgewertet 329 DoD Das Department of Defense Verteidigungsministerium der USA EEPROM Das Electrically Erasable PROM ist wie das gt EPROM nichtfl chtig pro grammier und l schbar kann aber ohne spezielle Hardware besondere Schreib spannung UV Lampe auf elektrischem Wege ver ndert werden EPROM Ein Erasable PROM kann im Gegensatz zu einem PROM mehrmals durch das Aufbringen elektrischer Ladungen programmiert und durch uv Licht gel scht werden EXE Header Vorspann einer exe Datei der Adressinformationen enth lt MS DOS ben tigt diese Angaben beim Laden eines Programms zur Berechnung von im Co de enthaltenen verschiebbaren Adressen 14 INTEL Relocatable Object Module Formats Festplatte s Harddisk File Server engl Der File Server Datei Dienst stellt den einzelnen Stationen die an ein Netzwerk angeschlossenen sind Programme und Daten zu Verf gung die alle ben tigen z B das Betriebssystem FIPS Der Federal Information Processing Standard ist die Vorschrift f r Informa tionsverarbeitung durch staatliche Stellen in den USA Floppy Disk engl Die Floppy Disk schlappe Scheibe ist ein flexibler aus tausch
505. ung interner Speicher 2 2 mn nennen 100 3 4 1 Organisation des Arbeitsspeichers 2 2 2 2 2220000 101 3 4 2 Start und Struktur von Programmen 2 2 2 2 nen 104 3 5 Verwaltung externer Speicher 2 2 mn n nen 111 3 5 1 Master und Partition Boot Record 2 2 2 2 111 3 5 2 Funktionen zur Dateibearbeitung 2 22 116 3 5 3 Der Urladevorgang 222 run 00 ee eens 120 3 6 Hine und Ausgabe 4 zu was wage anne a ae EES 122 3 7 Speicherresidente Programme 2 2 2 nn nn 123 3 7 1 TSR Programme 2 2 om onen 123 INHALTSVERZEICHNIS 3 7 2 Ger tetreiber 2 222 rer rennen 3 7 3 Vor und Nachteile 2 2 2 n nn 4 Entwicklung der Systemprogramme 4 1 Anforderungsanalyse 00000000005 4 1 1 Kommandoebene 2 2 nn 4 1 2 Interruptebene 2 22 2 22m 4 1 3 Der Urladevorgang 2 2 2 2 22 nennen 4 1 4 Qualit t der SchutzmaBnahmen 4 2 Systementwurt coe cue Se se ne ae a 4 2 1 Bibliotheken 2 22 nn 4 2 2 Priifprogramme 000 4 2 3 Neue Kommandos 4 2 4 Residente Programme 2 2 2 nn 4 2 5 Hilfsprogramme 2 2 nennen 4 3 Pr fprogrammier i sun area ee 4 3 1 Check System ChkSys 2 2 2222 2 2 0200 4 3 2 Seal und Check Seal chk seal 2 4 3 3 Check State ChkState 2 2 22 22 0200 4 4 Kommandos mit Kontrollfunktionen 2 2 2 2 ALAN AV CODY a aa AAD AVRe
506. usbreitung gut beschreibt Es stellt sich die Frage ob Erkenntnisse der Biologie bei der Virenbek mpfung auch f r die Eind mmung von Computerviren verwendet werden k nnen In sehr direkter Form fand dieser Gedanke bereits im Aufsatz The IPM Model of Computer Virus Management von S Jones und E White Anwendung 31 Die Autoren schlagen vor das aus der Agrarwissenschaft stammende Integrated Pest Management Modell IPM auf Computer zu bertragen Der Gedanke Bereits existierende Erkenntnisse wirksame Analysemethoden und Ver fahren aus der Landwirtschaft nutzen um dadurch evtl neue M glichkeiten zur Viren abwehr zu finden Ein Vergleich zwischen biologischen und programmierten Viren deckt interessante Parallelen auf die in diesem Abschnitt untersucht werden 85 Allerdings f ngt die Gegen berstellung mit einem Unterschied an W hrend biologische Viren im Laufe der Evolution durch Mutation und Selektion entstanden sind werden Computerviren erst seit kurzer Zeit von Menschen programmiert und haben nicht die F higkeit sich selbst zu vervollkommnen Das Aufkommen solcher Viren stellt aber eine m gliche zuk nftige Entwicklung dar Transport Vektor Viren benutzen einen lebenden Wirt ohne den sie sich nicht verbreiten und Aktivit ten entfalten k nnen Auf einen Computer bertragen bedeutet diese Eigenschaft da ein Virus in einem Objekt befinden mu das auf ir gendeine Art und Weise zur Ausf hrung gebracht werden kann D
507. usf hrung zur Interrupt Service Routine ISR Das zu verwendende R cksprungkom mando hei t iret return from interrupt das neben dem Programmz hler auch das Flagregister restauriert Abb 3 5 stellt noch einmal graphisch den Ablauf des Vorgangs dar Die Verwendung von Softwareinterrupts hat den Vorteil da das aufrufende Pro gramm die Adresse der Zielroutine nicht kennen mu die Angabe einer simplen Num mer gen gt So lassen sich z B alle Ms Dos Dateifunktionen mit dem Befehl int 21h aufrufen Obwohl die tats chliche Lage der Routine im Speicher von Version zu Version des Betriebssystems verschieden ist laufen Programme einwandfrei und ohne Anpas sung ab Viele der ber Softwareinterrupts angebotene Dienste unterscheiden noch einmal zwischen mehreren Funktionen die meist durch den Inhalt des AX Registers ausgew hlt werden So sind z B die mehr als 100 Dos Funktionen allesamt ber den Interrupt 80 KAPITEL 3 SYSTEMPROGRAMMIERUNG UNTER MS DOS Abbildung 3 5 Bearbeitung eines Software Interrupts 2116 erreichbar Beim Aufruf eines Interrupts ist zu beachten da die Serviceroutine m glicherweise Registerinhalte zerst rt und die Bereitstellung von Datenbereichen und Parameterbl cken erfordert MS DOS stellt Funktionen zum Lesen und ndern von Interruptvektoren zur Verf gung so da Programme nicht direkt auf die Vektortabelle zugreifen m ssen F r die beiden Betriebssystemaufrufe finden sich bei Turbo C die Funktione
508. ute Rekursionstiefe und Funktionen zur Verzeichnis bzw Dateiverarbeitung Durch die Ubergabe von Zeigern auf die Bearbei tungsfunktionen wird die Suchroutine universell einsetzbar ChkSys setzt auf dieser Scan Plattform auf und f gt erg nzend Kontroll und Reportfunktionen hinzu die von scan_dir aktiviert werden Durch diese Bauweise reduziert sich der Programmieraufwand f r ChkSys auf die eigentlichen Kontrollfunk tionen Das Hauptprogramm wertet lediglich die Aufrufparameter aus f hrt einige Initialisierungen durch und ruft die Suchfunktion auf Mit chksys 1st kann eine schwarze Liste von Dateien angegeben werden deren Anwesenheit auf dem System unerw nscht ist Jede Zeile enth lt genau einen Eintrag der auch Jokerzeichen aber keine Pfade enthalten darf Stimmt der Name einer auf gefundenen Datei mit einem Eintrag der Liste berein wird dies im Report vermerkt Abb 4 1 Abbildung 4 1 Ein Ausgabe ChkSys Funktionsbeschreibung scan_dir Das Suchverhalten der Scan Plattform wird durch vier Parameter gesteuert path bezeichnet den Startpfad der mit einem Back slash enden mu Die Suchmaske mask darf Jokerzeichen enthalten und w hlt die zu suchenden Dateien und Verzeichnisse aus Wenn also z B die Verzeichnisstruktur ei nes Datentr gers ermittelt werden soll mu die Suchmaske lauten weil scan_dir sonst nicht alle Verzeichnisse erfa t attr grenzt die Suche ber die Attribute ein Tab 4 5 Es werden a
509. utz der Programmintegrit t w re v llig ausreichend 5 1 EINSCHRANKUNGEN 243 In einem Rechenzentrum oder Betrieb hingegen ist mit Aktionen der Benutzer gegen die Schutzsoftware zu rechnen Diese kann auf normalen MS DOS Rechnern keine v llige Sicherheit bieten aber helfen die Grenze zwischen versehentlich und ab sichtlich deutlich zu ziehen Mit der Installation der Programme und Durchf hrung der vorgeschlagenen Ma nahmen ist es nicht mehr m glich versehentlich Program me von Diskette auszuf hren oder auf Festplatte zu kopieren Gegen einen Benutzer der einen Virus trotz Schutzma nahmen auf den Rechner bringt kann bei Entdeckung ganz anders vorgegangen werden als gegen einen der an einem gew hnlichen System arbeitet Zudem gilt f r die meisten Anwender da Schutzma nahmen gegen Schusselig keit und Leichtsinn v llig ausreichend sind Dies wird mit der kontrollierten Isolation erreicht Andere Benutzer ben tigen eine kleine Ged chtnisst tze was Regeln im Um gang mit fremden Programmen und dem firmeneigenen Computer angeht Eine War nung des Kontrollsystems kann dies bieten Unter Ber cksichtigung der Tatsache da kein Konzept auf Softwarebasis gegen einen gezielten Angriff oder das Umgehen von Schutzma nahmen sicher sch tzen kann wurden die gesetzten Anforderungen erreicht 5 1 2 Selbstschutz Das W chterprogramm mu gegen Angriffe gesch tzt werden falls der Einsatz in feindlicher Umge
510. verlust 77 78 79 80 81 82 83 84 KES 91 1 S 18 30 Zugangssperren f r APC System und Benutzerverwaltung Zugriffssicherung Pro grammgfreigabe Datensicherung Verwaltung Entsorgung Recovery GLISS Hans amp HERWEG Ralf Gliss und Herweg GmbH Pulheim PC Einsatz in Gro unternehmen Richtlinien f r dezentralisierte Sicherheitsverantwortung KES 90 6 S 403 404 Wege zur PC Sicherheit ohne zentrale Regelung der DV Sicherheit Sicherheit auf Minis und Gro rechnern WETTMANN Hartmut Bonn Grundlagen Wie sicher ist UNIX KES 90 3 S 199 202 berblick und Diskussion der Zugriffssicherungen unter UNIX SCHRAMM Christof Pr fungsstelle des Bayrischen Sparkassen und Girover bandes M nchen Revision Nachtrag Verbesserung der Sicherheit im MVS KES 90 3 S 203 205 Diskussion der Sicherheit und Anwendung von APFs Autorized Program Facility Aktuell VMS Erneut Sicherheitsl cke KES 90 6 S 407 Sicherheitsrisiko Kommando ANALYSE PROCESS DUMP Eilmeldung DEC Windows erm glicht unautorisierten Zugriff KES 91 1 S 13 Der Window Manager der von Windows mit System Rechten aufgerufen wird kann selbst gew hlt und erstellt werden Validierung von Software und Systemen IT Sicherheitszertifikate ZSI Evaluations Handbuch liegt vor KES 90 5 S 348 349 Handbuch der ZSI Zentralstelle f r Sicherheit in der Informationstechnik zur Be wertung der Sicherheit v
511. verschiedener Viren Rechenbeispiele MU TOPF G nter Hrsg Trojanische Pferde Viren und W rmer Eine ernst zunehmende Gefahr f r PC Anwender Begleitmaterial zum Film des SWF perComp Verlag Hamburg 1989 Grundlagen Computeranomalien Typen Funktion Gefahren POZZO Maria M amp GRAY Terence E An Approach to Containing Computer Viruses engl in 29 S 319 329 urspr nglich in C amp S 6 87 S 321 331 Theoretische Grundlagen zur Eind mmung von Viren Detektion ber Verschl sse lung St rken und Schw chen Risikoklassen R STEL Nobert Projektleiter BAPPERT Dagmar DIETER Stefan SCHU BERT Michael TELGHEIDER Thomas TREBER Christian Computerviren Studienarbeit zur Vorlesung Projektmanagement WS 89 90 an der FH Fulda Nicht ffentlich zug nglich evtl ber Herrn Gillner FH Fulda Grundlagen Computerviren SCH NEBURG Eberhard HEINZMANN Frank amp NAMYSLIK Frank Com puterviren Markt amp Technik Verlag AG Haar 1990 Passiver und vorbeugender Schutz SIMON Hans J Virenjagd per Grips Computerviren ohne Impfstoffe und Killerprogramme aufsp ren und beseitigen c tS 5 1990 S 218 230 Mit konventionellen Waffen PCTools Norton Utitilities etc Viren entdecken und bek mpfen STOLLER Jack Virus Protection The Security Officer s Role engl C amp A Volume 88 4 18 19 not yet reviewed LITERATURVERZEICHNIS 343 38 WYK Ken van Editor Virus
512. viele unbekannte Faktoren wie tats chliche Vermehrungsrate Austausch von Vektoren Elimination und andere in die Rechnung eingehen ist das Ergebnis entsprechend ungenau Tatsache ist da heute f r ein neu entdecktes Virus binnen weniger Tage ein Abwehrprogramm ent wickelt wird Verbreitungsraten wie aus den Gr nderzeiten der Computerviren z B Brain ein Boot Virus geh ren der Vergangenheit an Dennoch sollte nicht un tersch tzt werden da viele wahrscheinlich die allermeisten Computer nur unzurei chend gesch tzt sind und l ngst nicht alle m glichen Ma nahmen auch ergriffen wer den Dazu kommt neben technischen Aspekten oft auch die mangelnde Kenntnis der Anwender ber das vorhandene Sicherheitsrisiko Dadurch wird auch den einfachsten Computerviren das Vordringen erm glicht Die durch die angesprochenen M glichkeiten und Verfahren erzeugte Virenflut er schwert verantwortungsvollen Programmierern die Entwicklung von Programmen die Viren erkennen und beseitigen k nnen Es zeichnet sich eine Entwicklung ab die die Bek mpfung bestimmter d h identifizierbarer Viren unm glich macht Konzepte zur Abwehr von Softwareanomalien allgemein und Computerviren im speziellen sind Ge genstand des n chsten Kapitels Vorher soll zun chst noch die rechtliche Seite der Problematik und Ma nahmen von ffentlicher Hand untersucht werden 1 6 Ma nahmen ffentlicher Stellen Die mutwillige Verseuchung von Rechnern kann u U auch re
513. von Dateinamen A 4 3 Stringverarbeitung A 4 4 Listenverwaltung A 4 5 Zugriff auf die Kommandozeile A 4 6 Spezielle Funktionen ffentliche Datennetze B 1 Grundlagen Electronic Mail B 2 Besonderheiten UUENCODE B 3 LISTSERV Server Diskussionslisten B 4 TRICKLE Server B 5 FTP Server B 6 NETSERV Server B 7 Mailboxen B 8 Der Netz Knigge Informationen zu MS DOS C 1 Kommandos Interrupts Funktionen C 2 ASSIGN JOIN SUBST Abk rzungsverzeichnis Glossar INHALTSVERZEICHNIS Einf hrung 1 Einf hrung Was m ssen Programme zur Abwehr von Computerviren und anderen Softwareanoma lien leisten Wie werden sie konzipiert und implementiert Im Laufe von f nf Kapiteln werden diese und andere Fragen im Hinblick auf den IBM PC unter MS DOS beantwortet Die in diesem Buch entwickelten Programme sind in der Programmiersprache C und in 80 86 Assembler geschrieben wobei der Anteil an Assembler m glichst gering ge halten wurde Grundkenntnisse in C werden vorausgesetzt Programmierfertigkeiten in Assembler sind nicht notwendig Die n tigen Informationen f r die Systemprogram mierung unter MS DOS vermittelt das Buch Alles was f r das Verst ndnis der Pro gramme und der Feinheiten der INTEL Prozessorfamilie notwendig ist wird ausf hrlich und anhand von Beispielen erl utert Das Kapitel Theorie der Softwareanomalien definiert den Begriff Softwarean om
514. von Programmen zur Abwehr Die Ausbreitung konnte so im Keim erstickt werden Es soll hier nicht verschwiegen werden da ein Computernetz berhaupt erst die Existenz des Wurms erm glicht hat Auch d rfte mancher Trojaner oder Virus von Net zen profitiert haben sei es durch aktive Benutzung oder passiv durch die Versendung verseuchter Programme Durch meist verantwortungsvolle Netz und Mailboxbetreiber kam es bis jetzt noch nicht zur einer massenhaften Verbreitung von Softwareanoma lien von den Wurm Epidemien einmal abgesehen Insgesamt wiegen die Vorteile des elektronischen Datenaustauschs die Nachteile allemal auf ffentliche Netze wie BITNET INTERNET und EARN sind laut Satzung daf r da da Wissenschaftler schnell und unkompliziert Forschungsergebnisse miteinander aus tauschen k nnen In fast keiner anderen Disziplin d rfte die Umsetzung dieses Ge dankens so gelungen sein wie bei der Bek mpfung von Softwareanomalien Experten und Laien aus aller Welt konferieren ber neue Viren Abwehrma nahmen theoreti sche und philosophische Aspekte Dokumente und Programme sind f r jedermann mit Netzzugriff verf gbar Die folgenden Abschnitte erl utern Grundprinzipien der Nach richten bermittlung in Computernetzen deren Benutzung und den Zugriff auf diverse Server und Informationsdienste 301 302 ANHANG B OFFENTLICHE DATENNETZE B 1 Grundlagen Electronic Mail Eine iiber ein Computernetz versandte Nachricht ist im Prinzip eine
515. wandelt das direkt dem Ministerium des Inneren unterstellt ist 84 Es laufen zur Zeit Mitte 1991 Bem hungen seitens Deutschland England Frankreich und den Niederlanden einen zumindest europaweiten Konsens zu finden Auf amerikanischer Seite wurden nach Ver ffentlichung der Gr nb cher Proteste laut die sich gegen Wirtschaftsprotektionismus per Sicherheitskriterien wandten Glei che Vorw rfe lie en sich nat rlich auch auf europ ischer Seite gegen das Orange Book erheben Erstrebenswert erscheint daher die Ausarbeitung von Konvertierungsregeln die die Gleichwertigkeit der verschiedenen Sicherheitsstufen festlegen 5 PC ist eine allgemeinere Bezeichnung f r am Arbeitsplatz eingesetzte Computer als Pc 1 6 MASSNAHMEN OFFENTLICHER STELLEN 23 Das Orange Book Das DoD Department of Defense Verteidigungsministeri um der USA ver ffentlichte bereits 1983 seine Trusted Computer System Evaluati on Criteria Kriterien zur Bewertung vertrauenswiirdiger Computersysteme im sog Orange Book Anhand dieser Bewertungsma regeln wird ein Computersystem in bestimmte Klassen eingeordnet die stark an milit rische hierarchische Sicherheitsstu fen angelehnt sind Tab 1 2 Diese Einstufung gilt nur f r eine bestimmte Konfigurati on der Software auf einer bestimmten Hardware und ist Voraussetzung f r den Einsatz eines Systems im milit rischen Bereich Da weder das Konzept noch die Kriterien selbst zur Bewertun
516. wieder los wird 10 11 12 13 14 15 16 17 18 in c t 8 90 S 270 283 Entfernen von TSR Programmen GOEBEL Amy J TRYST DOC engl ber TRICKLE Server Directory MSDOS SYSUTL 1988 Detailinformation zum Urladeproze auf IBM PCs IBM Herst Technical Reference engl Industrial Business Machines Corporation 1985 Grundlagen Hardware bes Harddisk KAMIN Jonathan MS DOS Profibuch mit Harddisk Management SYBEX Verlag GmbH D sseldorf 1989 Bootvorgang Organisation Boot Block LAI Robert S MS DOS Device Treiber Addison Wesley Publishing Company 1986 Grundlagen Device Driver Microsoft Corporation Herst Microsoft MS DOS 3 1 Programmierhandbuch Programmer s Reference Manual in englischer Sprache engl Markt amp Technik Verlag 1986 DOS Interrupts Device Driver SMODE Dieter Das gro e MS DOS Profi Arbeitsbuch Franzis Verlag GmbH M nchen 1988 DOS Interrupts Aufbau Bootblock Bootvorgang TANDON Hrsg Benutzerhandbuch Tandon Corp 1985 Durch Setup steuerbares Bootverhalten WEITZ Carl Markus amp STILLER Andreas Selbstfindung Residente PC Programme erkennen ihre Kopien in c t 9 90 S 224 ff Grundlagen TSR Programme Quelle Server TRICKLE DSORUSII ANSI SYS ARC ber TRICKLE Server Directory MSDOS SYSUTL 1988 ANSI Sequenzen Literatur zu Computeranomalien Viren Theoretische Untersuchungen Experimente LITERATURVERZEICHNIS 341
517. wird die Funktion des Kommandos kurz erl utert C 1 KOMMANDOS INTERRUPTS FUNKTIONEN Nr Adresse Funktion Prozessor Interrupts 001g 0000016 divide by zero Oti 0000416 single step trace 0216 0000816 NMI non maskable interrupt 0316 0000C16 breakpoint 1 byte interrupt 0416 0001046 overflow on INTO 0516 0001416 ROM BIOS print screen 286 bound check failed 0616 0001816 invalid opcode 0716 0001Cj processor extension not available Hardware Interrupts 0816 0002016 timer tick 286 double fault 0916 0002416 keyboard 286 segment overrun OAig 0002816 reserved 286 IRQ2 cascade invalid task state seg ment OBig 0002Cig COM2 286 segment not present OCig 0003016 COMI 286 stack segment overflow ODig 0003416 LPT2 286 general protection fault OEi 0003816 disk controller 286 page fault OFig 0003Cig LPTI BIOS Interrupts 1016 0004016 video driver 1116 0004416 equipment check 1216 0004816 conventional memory size 1316 0004Ci disk driver 141g 0005016 serial communications port driver 1516 0005416 cassette 286 1 0 subsystem extensions 1616 0005816 keyboard driver 1716 0005Ci 6 parallel port printer driver 1816 0006016 ROM BASIC 1916 0006416 bootstrap 1Aig 0006815 real time CMOS clock driver 1Bi6 0006C16 ctrl break 1Cig 0007016 timer tick 1D 6 0007
518. worte haben ebenfalls ihre korrekte Form niederwertiges Wort gefolgt vom h herwertigen Wort Abb 3 7 Die Zahlen rechts von der Darstellung des Stack links geben das Displacement an das f r den Zugriff auf die Parameter zu BP zu addieren ist z B 0816 f r long Die Assembler Struktur rechts definiert symbolische Konstanten welche als Displacements benutzt werden k nnen Die aufgerufene Funktion findet auf dem Stack an oberster von der Adresse her unterster Position zun chst die R cksprungadresse und dann die Argumente vor Beim Aussprung aus der Funktion wird die R cksprungadresse wieder vom Stack in den Programmz hler geladen und das Hauptprogramm mu den f r die bergabe benutzten Stackbereich wieder freigeben Theoretisch k nnte man dazu pop Befehle verwenden schneller und einfacher geht es wenn man die Anzahl der auf dem Stack deponierten Bytes zum Stackpointer addiert Bei dem ganzen Verfahren tritt die Unterscheidung in NEAR und FAR Zeiger wie der u erst st rend in Erscheinung Je nach verwendetem Speichermodell m ssen Code und Daten NEAR oder FAR adressiert werden Dies wirkt sich auf die Parameter ber gabe und den zu verwendenden ret Befehl aus Abh ngig davon ob der Sprung zur Unterroutine intra oder intersegmental erfolgt liegen die Argumente an unterschied licher Position relativ zum Stackpointer auf dem Stack weil die R cksprungadresse ein oder zwei Bytes belegt Dies impliziert da es mind zwei V
519. wortungslosigkeit zum Aus druck deren Ursache man in Naivit t Ignoranz oder b sem Willen ausmachen kann Etliche Zeitschriften und B cher besonders aus der Goldgr berzeit der Compu terviren ver ffentlichten Programmcode fix und fertig zum Abtippen f r z B den Homecomputer Apple II W hrend lteren Publikationen zugute gehalten werden kann da damals Viren noch kein erkanntes Problem waren gilt das sicher nicht mehr f r Schriften aus neuerer Zeit Selbst B cher deren Aufmachung den Eindruck vermittelt da ihr Anliegen die Bek mpfung von Viren ist enthalten funktionsf higen Quelltext oder zumindest detaillierte Anleitungen in Pseudocode G ngige Schutzbehauptungen wie Einsatz nur zu Testzwecken sollen die Ver antwortung des Autors auf den Leser verlagern Einer dieser harmlosen Testviren ist heute als Burger Virus den Programmierern bekannt die Abwehrprogramme schrei ben Auch in Deutschland wird nichts gegen derlei Gebaren unternommen Dadurch entsteht der Eindruck solche Ver ffentlichungen seien in Ordnung Auf diese Weise wird es sehr schwierig werden zuk nftigen Virusprogrammierern den Nachschub an Information zu entziehen 2 1 2 Verbreitungswege Wie kommt das Virus ins System Betrachten wie einen APC der nichts als ein Netzteil die Mutterplatine mit Speicher den Prozessor und eine Graphikkarte enth lt und in den kein Kabel eingesteckt ist Das Netzkabel und die Verbindung zum Mo
520. zeichnet Damit ein ge tarntes Programm wieder ausf hrbar wird mu es der Benutzer noch in exe oder com umbenennen und evtl dekodieren Weil MS DOS dem Anwender die Vergabe von Dateinamen nicht vorschreibt eignen sie sich wenn berhaupt nur begrenzt zur Iden tifizierung des Inhalts Es ist deshalb ein Verfahren zu entwickeln um Programm und sonstige Dateien durch Analyse des Inhalts voneinander zu unterscheiden Namens nderungen von Programmen sind f r die Sicherheit interessant weil bei Watchern Programmnamen oft mit Rechten verkn pft sind Durch einfaches Um benennen wird u U aus einem beliebigen Programm ein privilegiertes mit Rechten zum Schreiben von ausf hrbaren Dateien Handelt es sich um einen Virus oder einen Troja ner ist der Tag schnell verdorben Unter UNIX sind Namens nderungen kein Problem weil die Rechte direkt mit den Dateieintr gen verkn pft sind Der Dateiname ist nur ein Feld in diesem Eintrag und kann beliebig ge ndert werden Dateien gleichen Namens im gleichen Verzeichnis k nnen also auch unterschiedliche Rechte haben 4 4 KOMMANDOS MIT KONTROLLFUNKTIONEN 173 Der Funktionsumfang von copy wird stark zusammengestrichen damit die Haupt last der Programmierung nicht auf luxuri sen Kopieroptionen sondern auf den Kon trollfunktionen liegt Es kann und mu genau eine Quell und Zielspezifikation ange geben werden Die Verkn pfung von Dateien per Zeichen ist nicht m glich die Schalter f
521. zen die Einstufung C2 Computer Associates und IBM streben das B1 Level f r ihre Produkte an AT amp T wartet mit einem B1 UNIXx mit der Bezeichnung System v MLS f r Multi Level Security auf das auch f r die Stufen C1 und C2 konfiguriert werden kann Damit bei neuen Versionen nicht eine komplette Neubewertung durchgef hrt wer den mu wurde das RAMP rating maintenance phase Programm ins Leben gerufen mit dessen Hilfe eine einmal erreichte Sicherheitsstufe beibehalten werden soll Z B ar beitet DEC an einer C2 Level Mvs Version die Mitte 1990 in das RAMP Programm aufgenommen wurde 24 KAPITEL 1 THEORIE DER SOFTWAREANOMALIEN 1 6 4 Organisationen zur Virusbek mpfung 1991 wurden auf Europaebene die Institutionen CARO Computer Anti Virus Researchers Organisation und EICAR European Institute for Computer Anti Virus Research ins Leben gerufen CARO ging aus einem vom Hamburger Percomp Verlag Anbieter des Virus Telex Services veranstalteten internationalen Virenforum hervor Das Micro bit Virus Center der Universit t Karlsruhe soll demnach als Sammelstelle f r neu ent deckte Viren und Virusinformationen dienen und Anti Virusforschern zur Verf gung stehen Unter Beteiligung von Industrie Staat und Wissenschaft wurde EICAR zur L sung von praktischen Problemen bei der Virenbek mpfung gegr ndet Von dem durch CARO bereitgestellten Informationspool wurden Personen aus geschlossen die Viruscode publiziert und dam
Download Pdf Manuals
Related Search
Related Contents
Release Notes - Community RTI Connext Users 00216 - Tunisiens du Monde JVC KW-NT500HDT Specification Sheet Model 425 Datasheet Kwikset 488BL LH 5 Installation Guide Hamilton Beach 840055200 User's Manual Monix Smalt 18 GV User Manual.docx ERPLY Accounting User Manual HP 415E User's Manual Copyright © All rights reserved.
Failed to retrieve file