home *** CD-ROM | disk | FTP | other *** search
/ Chaos Computer Club 1997 February / cccd_beta_feb_97.iso / chaos / habi1 / txt / hb1_93.txt < prev    next >
Text File  |  1997-02-28  |  14KB  |  396 lines

  1.     
  2.  
  3.  
  4.  
  5.  
  6.  
  7.                            Virus- Programme
  8.                       Quelle: BA FRISCHE NR. 3
  9.     
  10.     Virus-Programmestelleneinhäutig unbekanntesoderzumindest
  11.     unbeachtetes (verdrangtes ?) Risiko für Grossrechenanlagen
  12.     bzw. deren Betreiber dar. Da diese Problematik in der bundes-
  13.     deutschen Fachpresse bisher so gut wie gar nicht angesprochen
  14.     wurde, geben wir im folgenden einen kleinen Überblick:
  15.     
  16.     Ein VlRUS-Progran~m ist ein Programm, das in einem Gross-
  17.     rechner angesiedelt sich in andere. im selben Rechner befind"
  18.     liche Programme reinkopiert und aus diesen so auch Viren
  19.     macht. Dabei kann das neu. oder. um bei der Analogie zu
  20.     bleiben, infizierte Programm, auch eine weiterentwickelte Art
  21.     des Virus darstellen Solche Programme können lange Zeit
  22.     unbemerkt in dem Rechner umherwandern. wodurch auch die
  23.     regelmassig gezogenen Backups mit Viren durchsetzt sind. Erst
  24.     wenn ein Auslöser dazukommt, wird die eigentliche Zerstörung
  25.     vorgenommen. In pascal-ähnlicher Notation könnte so ein Virus
  26.     folgendermessen aussehen-
  27.     
  28.     program virus:=
  29.     (123456;7,
  30.     
  31.     subroutine infizieren-exec:=
  32.     (loop: fiie = Öffne Exec-File;
  33.     if erste Zeile = 1234567 then
  34.     goto loop;
  35.     Virus vorne an File anhängen:
  36.     
  37.     subroutine zerstoren:-
  38.     (Zerstoren, was zerstört
  39.     werden soll)
  40.     
  41.     Salbroutine Auslöser:=
  42.     Wird TRU, falls Auslöser
  43.     gedruckt)
  44.     
  45.     main-program: =
  46.     (infizieren-exec,
  47.     if ausloser then zerstören;
  48.     gato next;)
  49.     next
  50.     
  51.     (1) Einfaches Beispielt Virus "Y"
  52.     
  53.     Dieser Virus durchsucht alle ExecProgramme (ausführbaren
  54.     Programme) ob in deren erster Zeile 1234567 steht d.h. das
  55.     Programm bereits infiziert ist. Falls nicht, wird das Programm
  56.     ebenfalls infiziert.
  57.     
  58.     Das Interessante an dieser Art von Programmen ist, dass sie
  59.     sich auch durch Netzwerke rasch fortpflanzen können: Sobald
  60.     User B am Rechner Y das (infizierte) Programm von User A auf
  61.     seinem Rechner laufen lässt, sind auch alle Programme von
  62.     User A infiziert.
  63.     
  64.     Allerdings lässt sich so ein Virus auch für nicht-zerstorerische
  65.     Zwecke verwenden Wird ein Kompressionsprogramm als Virus
  66.     verwendet, so werden automatisch alle Fiies verkleinert, und
  67.     das Virusprogramm setzt sich als Dekompressor vor das ge-
  68.     schrumpfte Programm. Allerdings mussdas Programm vor jeder
  69.     Infektion nochmals nachfragen, da sich sonst wieder unvorher-
  70.     sehbare Ergebnisse einstellen Ronnen, Nach Versuchen zu
  71.     urteilen, kann eine Platzersparnis bis zu 50% erreicht werden,
  72.     wobei die Ausführungsgeschwindigkeit wegen der Dekompres-
  73.     sion etwas absinkt. Beispieb
  74.     
  75.     program compress-virus:=
  76.     (01 234567:
  77.     
  78.     subroutine infizieren-exec:=
  79.     (loop:file = öffne exec-file
  80.     if erste Zeile = 01234567 then
  81.     goto loop;
  82.     compress file:
  83.     decompress an file
  84.     vorneanstellen;
  85.  
  86.     
  87.  
  88.  
  89.  
  90.  
  91.  
  92.     )
  93.     
  94.     main-program: =
  95.     (if erlaubnis then
  96.     infizieren-exec;
  97.     decompress rest-der-file:
  98.     tecompresste file ausführen;
  99.     
  100.     12} Virus zum Komprimieren ''C"
  101.     
  102.     Um nun ein Timesharing-System ZU einem vorgegebenen Zeit-
  103.     punkt unbenutzbar zu machen. kann man Virus V folgenderrnas-
  104.     sen abwandeln:
  105.     
  106.     subroutine zerstören:=
  107.     (loop: gato loop;)
  108.     
  109.     subroutine auslöser:=
  110.     (if jahr ~ 1r9&4 then
  111.     TRUE eise FALSE;
  112.     
  113.     (31 Modifiziertes Programm V
  114.     
  115.     Am 1.1.1985 wären alle infizierten Programme, sobald sie
  116.     aufgerufen werden, dazu übergegangen, nur noch leere Schlei-
  117.     fen aufzufuhren (Hubroutine zerstören). Wenn der Auslosezeit-
  118.     punkt genügend spät nach der ersten Infektion des Systems
  119.     angelegt ist, so dass man sicher sein kann, dass praktisch alle
  120.     Programme verseucht sind. ist der Fehler wohl nur noch sehr
  121.     schlecht wieder rauszukriegen, da auch alle dazu nötigen
  122.     UtilitiesYersautsind.Werdendiesewiedervoneiner"sauberen"
  123.     Qelle reinkopiert, so sind sie im Nu auch wieder angesteckt,
  124.     sobald irgend ein infiziertes Programm im betreffenden Benut-
  125.     zerbereich aufgerufen wird.
  126.     
  127.     if file = P2 then print
  128.     
  129.                  "if D(P1,P2) then print 0;";    ~ Öl,
  130.     
  131.     Schutz vor Viren
  132.     
  133.     Durch die Vernetzung und gleichzeitige Benutzung derselben
  134.     Daten und Programme ist prinzipiell jede Multiuser-
  135.     Rechenanlage gegen Viren anfällig, da der Rechner intern
  136.     "durchlässig" ist. Die sicherste Methode des Schutzes vor Viren
  137.     ist demnach die Abschottung des Rechners gegenüber anderen
  138.     Benutzern und Rechnern, was aber in den meisten Fällen dem
  139.     Sinn der Übung zuwider läuh.
  140.     
  141.     Jedoch kann man den Benutzerkreis in einzelne. und nun
  142.     zwingend völlig getrennte Bereiche aufteilen, so dass ein infi-
  143.     zierter Bereich nicht auch noch die anderen anstecken kann
  144.     Fuhrt man zugleich auch noch verschiedene Schutzcodes für
  145.     die Files ein (z.B. durch den Benutzer nur ausführbar. weder
  146.     lesbar noch beshreibbar>, so ist wieder eine gewisse Barriere
  147.     gegen die Infeftion errichtet. Wobei diese natürlich wieder durch
  148.     einen Virus, der diese Schwelle zuerst runtersetzt, sich dann
  149.     reinkopiert, und dann den ursprünglichen Zustand wieder her-
  150.     steilt, umgangen werden kann.
  151.     
  152.     Behebung der Infektion
  153.     
  154.     Analog zum biologischen Modell kann man in Rechnern die
  155.     eingedrungenen Viren wieder unschädlich machen Dazu muss
  156.     man zuerst feststellen, ob ein Programm ein Virus ist, um dann
  157.     eine Möglichkeit zu finden, den Virus unschädlich zu machen.
  158.     Um festzustellen, dass ein Programm P einen Virus darstellt,
  159.     muss man überprüfen, ob P andere Programme infiziert. Dies
  160.     geht aber auch nicht so einfach, da man den Virus V wieder so
  161.     modifizieren konnte, dass er nur dann andere Programme
  162.     infiziert, wenn eine VirusPrüfroutine D angezeigt hat, dass V
  163.     kein Virus ist.
  164.     
  165.     program kein─virus:=
  166.     
  167.     mal n-program: =
  168.     (if D(kein-virus) then
  169.     (infizieren;
  170.     if ausloser then
  171.     zerstören;
  172.     
  173.     goto next; +
  174.     )
  175.     )
  176.  
  177.     
  178.  
  179.  
  180.  
  181.  
  182.  
  183.     
  184.     {4) Unauffindbarer Virus KV
  185.     
  186.     Nun wird der neu Virus KV nur dann andere Programme
  187.     infizieren und als Virus arbeiten, wenn die Entscheidungsroutine
  188.     D festgestellt hat, dass KV eben kein Virus ist.
  189.     
  190.     Evolution von Viren
  191.     
  192.     Um die Auffindbarkeif von Viren zu erschweren kann man sich
  193.     selbst modifizierbare Virusprogramme einsetzen:
  194.     
  195.     program evolutions-virus:=
  196.     
  197.     Hubroutine print-zutalls-befehl =
  198.     Sprint Zufall Is─variablen namen,
  199.     
  200.     Zurkalis─variablennamen;
  201.     loop: i1 zufalls-bit = ü then
  202.     (print zufalls-operator,
  203.     Zufalls -variabienname,
  204.     goto loop;)
  205.     print Strichpunkt;
  206.     )
  207.     
  208.     Hubroutine kopiere - zufal I - in─virus: =
  209.     Sloop: copy evolutions virus to
  210.     virus till strichpunkt-
  211.     if zulalls-bit = 1 then
  212.     print Zufalls─befehl
  213.     i1 end-of-input-fiie goto loop;
  214.     
  215.     main - program =
  216.     (kopiere-zufall - in -virus;
  217.     infizieren;
  218.     if auslöser then zerstören;
  219.     goto next;
  220.     
  221.     next;)
  222.     
  223.     (5) Selbstmodifizierender Virus EV
  224.     
  225.     Dieser Virus kann auch mit einem Vergleichsprogramm das
  226.     zwei Programme vergleicht nicht gefunden werden da der
  227.     kopierte Virus immer eine neÜ Anweisung enthält, die zwar auf
  228.     den Programmablauf keinen Einfluss hat, aber die Viren unter-
  229.     schiedlich aussehen lässt.
  230.     
  231.     Man kann aber noch weitergehen Sind zwei Programme gleich,
  232.     so fuhren sie verschiedene Operationen aus, während zwei
  233.     verschiedene Programme die gleichen Operationen ausfuhren:
  234.     
  235.     program unauffindbarer-virus:=
  236.     1
  237.     
  238.     suhroutine kopiere-unauffindbar:=
  239.     (copy unauffindbarer-virus
  240.     to fälle
  241.     tili zeilenbeginn = zzz,
  242.     
  243.     copy unauffindbarer virus
  244.     to file
  245.     till end-of─Input─file;
  246.     
  247.     mein - program, =
  248.     (if random─bit = 0 then
  249.     file = P1 eise
  250.     file= P2
  251.     kopiere─unauffi ndbar;
  252.     
  253.     zzz;
  254.     infizieren;
  255.     if ausloser then zerstören;
  256.     goto next;
  257.     
  258.     next;)
  259.     
  260.     ~-
  261.     -
  262.     
  263.     ~ MIO
  264.                 t"
  265.                 Y
  266.                 U
  267.  
  268.     
  269.  
  270.  
  271.  
  272.  
  273.  
  274.     
  275.     (6) Unauffindbarer, selbstmoditizierender Virus UEV
  276.     
  277.     Das Programm UEV entwickelt sich zu zwei Programmtypen P1
  278.     und P2. Ist das Programm vom Typ P1, wird die Zeile zzz zu: if
  279.     D(P1,P2) then print 1; und wenn das Programm vom Typ P2 ist,
  280.     wird dieselbe Zeile zu: D(P1,P2) then print 0 Beide Programme
  281.     benutzen eine Entscheidungsroutine D die bestimmt ob die
  282.     Programme gleich sind. Sagt D, dass beide gleich sind, so gibt
  283.     P1 eine I aus und P2 eine 0 was der Aussage von D widerspricht.
  284.     Damit ist die Routine D zum Auffinden der Viren für die Katz.
  285.     Da P1 und P2 Weiterentwicklungen desselben Programmes sind,
  286.     ist die Ähnlichkeit der Weiterentwicklungen eines Programmes
  287.     nicht vorhersagbar Anstall zu versuchen, Viren durch Uberein-
  288.     stimmung der Programme zu finden, kann man auch versuchen,
  289.     siedurchVergleichderTätigkeitenzweierProgrammezufinden.
  290.     Da aber ein Virus als Teil eines Benutzerprogrammes auftritt
  291.     und auch selbst nur Zulässige Operationen ausführt, ist auch
  292.     dies Eßnegermassen schwierig.
  293.     
  294.     Wie gezeigt, istes nahezu unmöglich, in einem einmal infizierten
  295.     System alle enthaltenen Viren zu finden und auszumerzen.
  296.     Bestenfalls kann man ein Gleichgewicht zwischen Viren und
  297.     Heilungsprogrammen erreicht werden speziell dann, wenn
  298.     beide Programmarten selbstmodifizierend arbeiten. Eine noch
  299.     relativ gute Möglichkeit, um wenigstens das Ausmass der
  300.     Infektion überprüfen zu kcinnen, ist eine Aufzeichnung. wer von
  301.     wo aus welches Programm wann aufgerufen hat. Solche Mog-
  302.     lichkeiten bieten bisher aber nur einige wenige Systeme.
  303.     
  304.     PRAXIS
  305.     
  306.     Der erste Virus wurde am 3. 11. 1J83 auf einer VAX 111750 unter
  307.     Unix geboren. Er wurde zunächst ins Programm "vd", das die
  308.     File-Strukturen unter Unix grafisch anzeigt, eingebunden (und
  309.     den Benutzern bekanntgegeben, da es ja nur ein Experiment
  310.     sein sollte). Der Virus war, wie bei den gezeigten Beispielen.
  311.     am Anfang des Programmes angesiedelt. Um die Infektion
  312.     nachverfolgen zu können, wurden einige Vorsichtsmassnahmen
  313.     verwirklicht: Alle Infektionen mussten per Hand bestätigt werden
  314.     und es wurde nichts zerstört. In den fünf ausgeführten Experi-
  315.     menten wurden dem Eindringling für weniger als eine Stunde
  316.     allePrivilegienzugestanden.DiekürzesteZeitiagbei5Minuten
  317.     der Durchschnitt unter einer halben Stunde. Das Ergebnis war
  318.     so verheerend, dass die Flechnerbetreiber die Experimente
  319.     daraufhin stoppen liessen. (Typisches Verhalten, wenn Fehler
  320.     in Systemen entdeckt werden besser zudecken als beheben.. ).
  321.     Weitere Versuche wurden auf einem TOPS-20 (DEC-20), einer
  322.     anderen VAX unter VMS und einer IBM/370 unter VM/370
  323.     geplant Ein erfahrener TOP~21tProgrammierer hatte den ent-
  324.     sprechenden Virus in 6 Stunden fertig, ein VMf37}Neuling
  325.     brauchte 30 Stunden mit Beistand eines erfahrenen Program-
  326.     mierers, und ein VMS-Anfanger hatte binnen ZU Stunden seinen
  327.     Prototypen am Laufen Aber leider wurden auch hier die ent-
  328.     sprechenden Versuche von den Rechnerbetreibern bald unter-
  329.     sagt.
  330.     
  331.     Ein weiterer Vi rus-Angriff wurde im Marz 1984 gestartet Beglei-
  332.     tumstär.'de sehr behindernd Nur 26 Stunden Zugang zum Rech-
  333.     ner für einen 1108 ungewohnten Benutzer und einen Program-
  334.     mierer der 5 Jahre lang keine 1108 mehr bedient hatte Jedoch
  335.     stand der erste Virus bereits nach 18 Stunden. Nach weiteren 8
  336.     Stunden wurden die Ergebnisse den Programmierern, Verwal-
  337.     tern und Sicherheitsbeauftragten vorgetuhrt: Der Virus bewegte
  338.     sich ohne Probleme über die Grenzen der Benutzerbereiche
  339.     hinweg und erreichte höhere Prioritäten. wodurch das gesamte
  340.     System infiziert werden kann Der Virus bestand aus 5 Zeilen
  341.     Assembler, ca. 200Zeien Fortran und etwa 50 Kommandozeilen
  342.     Im August 1984 konnte ein weiterer Versuch auf einer VAX unter
  343.     Unix gestartet werden Sobald der Virus auch den Bereich des
  344.     Sysops erreicht hatte, war er im Nu (unter einer Minute} über
  345.     das gesamte System verteilt Als beste Möglichkeit, den Sysop
  346.     zu erreichen, stellte sich das Anbieten eines infizierten Pro-
  347.     gramms im Bulletin Board des Systems heraus, da die Sysops
  348.     neugierig wie immer, so schnell wie möglich diese Programme
  349.     ausprobieren wollen.
  350.     
  351.     Zusammenfassung
  352.     
  353.     Virusprogramme können in relativ kurzer Zeit entwickelt werden
  354.     es ist einfach, sie so zu gestalten, dass sie nur wenige oder gar
  355.     keine Spuren hinterlassen, und sie können ohne grosse Proble-
  356.     me die vom System errichteten Schranken umgehen Genauso,
  357.     wie sie sich in einem Computer verbreiten können, können sie
  358.  
  359.     
  360.  
  361.  
  362.  
  363.  
  364.  
  365.     auch durch Netzwerke wandern Absoluten Schutz bieten nur
  366.     völlig abgeschottete Systeme. Alle anderen Verfahren sind
  367.     entweder extrem zeitaufwendig oder ungenau
  368.     
  369.     Und nun ganz zum Schluss noch ein Bonbon für alle, die bis
  370.     hierher durchgehalten haben- Eine Anwendung eines sehr
  371.     speziellen, aber Überaus praktischen Virus ist ein geänderter
  372.     C-Compiler in einem Unix-System, der immer dann, wenn das
  373.     Login-Programm Kompiliert werd, einen neuen User JOSHUA
  374.     hinzufugt. Sowas soll - unbestätigten Meldungen zufolge - in der
  375.     amerikanischen National Secority Agency {NSA - US Verfas-
  376.     sungsschutz) schon laufen
  377.     
  378.     Die Bayrische Hackerpost erscheint in unregelmäßigen Abstan-
  379.     den Für nen kleinen Mauen gibt's 5 Ausgaben
  380.     
  381.     BHP Wo Basis, Adalbertstr 41b, ~8000 München 40
  382.     
  383.     viris1h1 ws
  384.     
  385.     if file = P1 then print
  386.     "if D(P1,P2) then print 1;''; ~,
  387.     Wie ~4nt)rinc~e ~nc~er~popt
  388.     
  389.     ·. D.' lnfornationchlatt fier den lahenabaJahanden DFü - Brnut~ar
  390.     
  391.     Frelc. O't~tcchicnd 18 2,-1 Icherle Wir 2,~0 / U111 Tüc I talein I ~pplrkcrt'
  392.     C,tlkl'tC Wallecho Emirat. 21~1loe. f lleocpur I 4 IC. ~ W11R 1 lO10-iople
  393.     
  394.     ~ 93 1
  395.     
  396.