* Данная работа не является научным трудом, не является выпускной квалификационной работой и представляет собой результат обработки, структурирования и форматирования собранной информации, предназначенной для использования в качестве источника материала при самостоятельной подготовки учебных работ.
17
Малая Академия наук
школьников Крыма «Искатель»
Секция информатики
КОМПЬЮТЕРНЫЙ ФАЙЛОВО-ЗАГРУЗОЧНЫЙ
ПОЛИМОРФНЫЙ СТЕЛС-ВИРУС ONEHALF 3544,
ОСОБЕННОСТИ АЛГОРИТМА И МЕТОДЫ Б ОРЬБЫ С НИМ.
Действительный член МАН «Ис катель»
Ученик 10 – го класса
Форосской общеобразовательной школы I – III ступени
КОРАБЛЕВ Андрей
Руководитель : КОРАБЛЕВ А . Б . - системотехник
ВВЕДЕНИЕ
Мы живем на стыке двух тысячелетий , когда человечест во вступило в эпоху новой научно-технической революции.
К концу двадцатого века люди овладели многими тайнами превращения вещества и э нерг ии и сумели использовать эти знан ия для улучшения своей жизни . Но кроме вещества и энергии в жизни человека ог ромную роль играет еще одна составляющая - информация . Это самые разнообразные сведения , сообщения , известия , знания , умения.
В середине нашего ст олетия появил ись специальные устройства - компьютеры , ориентиров анные на хранение и преобразование информации и произошла компьютерная революция.
Сегодня массовое применение персональных компьютеров , к сожалению , оказалось связанным с появлением самовоспро изводящихся программ-в ирусов , препятствующих нормальной работе компьюте ра , разрушающих файловую структуру дисков и наносящих ущерб хранимой в компьютере инфо рмации.
Несмотря на принятые во многих страна х законы о борьбе с компьютерными преступ лениями и раз работку специальных программ ных средств защиты от вирусов , количество новых программных вирусов постоянно растет . Э то требует от пользователя персонального комп ьютера знаний о природе вирусов , способах заражения вирусами и защиты от них . Это и послужило с т имулом для выбор а темы моей работы.
Я хочу показать на основе вируса Onehalf 3544, надел авшего много шума в 1994-95 годах , возможные пут и заражения , распространения , разрушительные спосо бности вирусов и рекомендовать способы обнару жения и защиты от них .
Работа выполнена на основе анализа ли стинга кода тела вируса , полученного при п омощи дизассемблера Sourcer версии 7.0 и экспериментального зара жения - лечения нескольких компьютеров с разны ми типами жестких дисков , и использовании различных антивирусных и прикладных програм м . Особую благодарность за предоставление мат ериалов для подготовки моей работы хочу в ыразить системному программисту Александру Крыжа новскому из Ялты и моему руководителю сис темотехнику Алексею Кораблеву.
КЛАССИФИКАЦИЯ ВИРУСОВ.
В наст оящее время изве стно более 35000 программных вирусов , их можно классифицировать по следующим признакам :
Ё среде обитания
Ё способу заражения с реды обитания
Ё воздействию
Ё особенностям алгоритма
В зависимости от среды обитания вирусы мож но разделить на сетевые , файловые , загруз очные , файлово-загрузочные и макро-вирусы , распрост раняющиеся вместе с документами и электронным и таблицами . Файловые вирусы внедряются главным образом в исполняемые модули , т . е . В файлы , имеющи е расширения COM и EXE . Загруз очные ви русы внедряются в загрузочный сектор диска ( Boot -сектор ) или в сектор , содержащий программу загрузки системного диска ( Master Boot Record ). Файлово-загрузочные вирусы за ражают как файлы , так и загрузочные сектор а дисков.
По способу заражения вирусы делятся на резидентные и нерезидентные . Резидентный вирус при заражении (инфицировании ) компьютера оставляет в оперативной памяти свою резидентную част ь , которая потом перехватывает обращение опер ационной системы к объектам заражения (файлам , загрузочным секторам дисков и т . п .) и внедряется в них . Резидентные вирусы находятся в памяти и являются активными вплоть до выключения или перезагрузки комп ьютера . Нерезидентные вирусы не заражают память компьютера и являются активными ограниченное время.
По степени воздействия вирусы можно разделить на следующие виды :
Ё неопасные , не мешающие работе компьютера , но у меньшающие объем свободной оперативной памяти и памяти на дисках , действия таких виру сов проявляются в каких-либо графических или звуковых эффектах
Ё опасные вирусы , которые могут привести к ра зличным нарушениям в работе компьютера
Ё очень опасные , воздействие которых может привести к потере программ , уничтожению данных , стира нию информации в системных областях диска.
По особенн остям алгоритма вирусы т рудно классифицир овать из-за большого разнообразия . Известны вирусы-невидимки , назы ваемые стелс-вирусами , которые очень трудно обнаружить и обезвредить , так как они перехватывают обраще ния операционной системы к пораженным файлам и секторам дисков и подста вляют вместо своего тела незараженные участки диска . Наиболее трудно обнаружить вирусы-мутанты (полиморфные ) , содержащие алгоритмы шифровки-расшифровки , благодар я которым копии одного и того же виру са не имеют ни одной повторяющейся цепочк и байтов .
Рассма триваемый мной вирус Onehalf 3544 примечателен не только тем , что его появление вызвал о большой резонанс в компьютерном мире , но и тем , что он одновременно объединяет в себе множество свойств являясь очень опасным резиден тным файлово-загрузочным полиморфны м стелс-вир усом . В моей работе я покажу каждое из его свойств , его сильные и слабые сто роны.
АНАЛИЗ АЛГОРИТМА ВИРУСА.
Размещение вируса в зараженно м файле.
Зашифрованное тело вируса длиной 3544 байта в зараженном файле находится посл е конца файла , при этом зараженный ф айл содержит в себе 10 «пятен»-фрагментов кода расшифровщика и таблицу размещения «пятен» , размещающуюся в начале файла и содержащу ю также информацию о смещении начала тела вируса от начала файла.
Зараж енный файл ( приращение длины 3544 байт ).
- Таблица размещения «пятен» кода расшифров щика
- «Пятна» , в которых содержится расшифровщи к тела вируса
- Тело зараженного файла
- Зашифрованное тело в ируса
Размещение вируса в зараженном MBR .
После зара жения MBR вирус запи сывает на место оригинальног о MBR св ой обработчик загрузки тела вируса в памя ть , затем пишет 7 секторов кода своего тела в 7 секторов от конца 0 дорожки диска в скрытых секторах , а затем пишет оригиналь ный MBR в восьмой от конца 0 дорожки диска . Рассмот рим на примере диска с 17 секторами на дорожку.
-Обработчик загрузки тела ви-
руса в память.
- Оригинальный MBR .
7 секторов , содержащие
тело вируса.
Алгоритм и нсталляции вируса.
При запуске зараженного файла на исполнение или загрузке с зараженного MBR вирус пр и помощи собственного обработчика прерывания Int 12 h – выдач а объема памяти - оценивает количество свободн ой оперативной памяти и наличие своей коп ии в памяти и если ее менее 4 кил обайт или память уже содержит тело вируса - отдает управление файлу или оригинальному загрузчику . Для поиска своей копии в па мяти вирус вызывает несуществующую DOS - функцию (пр ерывание Int 21 h , функция 54 h ). Если вируса нет в памяти , то в регистр АХ возвращается код ошибки выполнения функции . Если вирус уже загружен в память , то он перехватывает эту фун кцию и возвращает в регистр АХ некое число , отличное от кода ошибки . По наличию этого числа вирус определяет наличие сво ей ко п ии в памяти и не за ражает ее повторно . При наличии 4 и более килобайт свободного ОЗУ и отсутствии тела вируса в памяти вирус сначала анализируе т геометрию диска при помощи собственного обработчика прерывания Int 13 h ( дисковые операции ), ищет последни й DOS ди ск или Extended Partition в системе , ищет признак заражения MBR (03 Dh в MBR ). Если MBR не зараж ен , то пишет 7 секторов кода своего тела в 7 секторов от конца 0 дорожки диска в скрытых секторах , а затем пишет оригинальны й MBR в восьмой от конца 0 дорожк и диска . После записи своего тела на диск или получив признак зараженности MBR , вирус анализирует нал ичие своего тела в памяти и при отсут ствии переписывает 7 секторов своего тела с диска . При наличии тела в памяти вирус отдает ему управление .
Далее вирус использует свои обработчики прерываний :
Int 1 h – прерывание отладки и трассировки – для «завешивания» системы при попытке трассировать код вируса в память ;
Int 1 Ch – таймер – для перехвата DOS (прерывание Int 21 h ) при его загрузке ;
Int 13 h – дисковые операц ии – для обслуживания чтения – записи дисков и операции шифровки-расшиф ровки дорожек диска . При этом вирусу прихо дится использовать для этого метод трассировк и (пошагового исполнения ) оригинального обработчик а для определения точки входа данного пре рывани я . Это нужно для корректного возврата прерывания обратно . Вирус вынужден вызывать оригинальное прерывание отладки и выполнять перехват в пошаговом режиме ;
Int 24 h – критическа я ошибка – для перехвата сообщения о критической ошибке при неудачных попытках запи си на диск.
В случае старта с зараженного файла вирус лечит его в памяти и записывает на диск у же не зараженным.
Далее вирус считывает из MBR нижнюю границ у зашифрованной дорожки и анализирует , не дошла ли граница до седьмой дорожки от начала диска . Если ш ифрование дошло до этого значения , то шифрация запрещается для того , чтобы не повредить системные области диска . Если не дошло , то вирус шифрует две дорожки вверх от нижней гр аницы шифрованных дорожек используя ключ , хра нящийся в MBR . Следует учитывать , чт о ключ ген ерируется из случайного числа при заражении диска и на каждом диске является уни кальным . Это является одним из признаков п олиморфизма . При удачной шифровке в MBR записывается новое значение нижней границы зашифрованной д орожки.
Следующим шагом ви руса является а нализ совпадения трех параметров : зашифрована ли половина дорожек диска , кратен ли день в системной дате четырем и является ли четным счетчик заражения компьютеров , хран ящийся в теле вируса . При совпадении трех этих параметров вирус выводит на дисплей сообщение « Dis is OneHalf ! Press any key to continue …» и ожида ет нажатия любой клавиши для продолжения работы . Однако совпадение всех параметров явл яется чрезвычайно редким и не стоит рассч итывать на то , что вирус таким образом выдаст свое прису тствие в системе.
Далее вирус читает оригинальный MBR и передает ему управление дальнейшей загрузкой при эт ом сохраняя свои обработчики прерываний Int 13 h (для обслужива ния шифрованных дорожек ) и Int 1 Ch (для перехвата DOS и контроля через перехваченное прер ывание Int 21 h записи файла на дискету ). Вирус корректно расшифровывает данные с зашифрованных дорожек и не за тормаживает работу компьютера.
При помощи собственного обработчика преры вания Int 12 h вирус скрывает уменьшение размера свободной памяти на 4 килоба йта для всех программ , кро ме программы CHKDSK ( утилита проверки диска из компле кта DOS ) и программы Norton Commander . При помощи собственного обработчика прерывания обслуживания DOS Int 21 h скрывает приращение длины зараженного файла . Однако следует помнит ь , что в зараженн ой системе могут отсутствовать зараженные фай ла , т.к . в алгоритме вируса предусмотрено и х лечение при успешном заражении . При попы тке трассировки вируса в памяти при помощ и вызова прерывания Int 1 h он при помощи собственного обрабо тчика «за вешивает» систему организацией ц икла без выхода . Эти действия вируса позв оляют говорить о том , что он является стелс-вирусом , а возможность заражения файлов и MBR диск а о том , что он является файлово-загрузочн ым.
Алгоритм заражения файлов для размножения.
Вирус OneHalf 3544 для своего размножения использует заражение файлов которые записываются на гибкие магнитные носители (дискеты ). При обнаружении обращения DOS к дискете для записи файла вирус определяет , не превышает ли длина заражаемого .СОМ файла + д лина тела вируса (3544 байт ) велич ины 64 килобайта . Эта величина является пределом длины файлов такого типа . Если превышает , то заражение не производится , а если не превышает , то производится проверка имени файла . Если имя файла содержится в сп иске не по д лежащих заражению ( SCAN , CLEAN , FINDVIRU , GUARD , NOD , VSAFE , MSAV , CHKDSK ), то заражение также не производится . Далее вирус производит пои ск признака зараженности файла . Если файл уже заражен , то число секунд во времени создания файла будет равно остатку д еления числа даты во времени создания файла на 30. При наличии признака заражения файл повторно не заражается .
Если файл не заражен , то в теле файла создается 10 пустых «пятен» для размещ ения в них расшифровщика тела вируса . Выби рается случайное число для их размещени я в теле файла , проверяя при этом , чтоб ы расстояние между двумя ближайшими было не менее 10 байт . Здесь мы можем увидеть , что размещение «пятен» кода расшифровщика является случайным , что также мы можем отн ести к проявлениям полиморфности вир у са . Код расшифровщика записывается в « пятна» . Таблица размещения «пятен» записывается в начале файла . При неудачной записи «п ятна» удаляются и файл не заражается .
Генерируется случайное число , которое становится ключом шифрации тела виру са . Тело вируса ши фруется , ключ записы вается в таблице размещения «пятен» расшифров щика . Зашифрованное тело вируса записывается в конец заражаемого файла . При неудачной з аписи заражение отменяется и «пятна» расшифро вщика удаляются . Если запись произведена успе шно , то уже з а раженный файл за писывается на дискету . Из-за того , что для выбора ключа шифровки тела вируса исполь зуется случайное число , что исключает повторе ние байт в шифрованном теле вируса , можно классифицировать вирус OneHalf 3544 как вирус-мутант или полиморфный в ирус.
ВЫВОДЫ.
Вирус OneHalf 3544 является тщательно разработанным файлово-загрузочным мути рующим стелс-вирусом , использующим оригинальный ме ханизм заражения и размножения ;
Однако при наличии отличного механизма полиморфности недостаточно развитый механизм стелсирования позволяет обнаруживать вирус при просмотре количества памяти в Norton Commander и просмот ре MBR д иска программой Diskedit из комплекта Norton Utilities (версия не ниже 6.0) т с ключом /M (запрет использования прерываний DOS ).
При всей тщател ьности прописывания процедур заражения и шифровки - расшифровки диска при практических заражениях дисков обн аружено , как минимум , две ошибки . Одна из них состоит в том , что некоторые диски емкостью 420 мегабайт заражаются некорректно (п ри заражении невер н о определяется количество секторов MBR и последний сектор тела ви руса «отражается» на сектор , занимаемый Partition Table , что привод ит диск в нерабочее состояние ). Следует уч есть , что в этом случае вирус успевает корректно перенести оригинальный MBR в один из скрытых секторов и можно восста новить работоспособность диска при помощи пер еноса MBR на свое место вручную Diskedit ’ ором . При этом не следует забывать , что вирус не успевает полностью отработать свой механизм инсталляц ии (вылечить файл-переносчик ) и з аражение может повториться снова при его запуске . Второй ошибкой является то , что при шиф ровании некоторых дисков вирус «ошибается» и шифрует последние 2 дорожки с ключом , отли чным от записанного в MBR . При следующем запуске и работе с зашифрованными доро жками он корректно исправляет эту ошибку . Однак о , если этот момент совпадает с расшифровк ой дорожек антивирусами , то последние 2 дорожки можно считать утерянными.
Наличие шифрации данных на диске и вышеперечисленных ошибок дает основание отнест и вирус к к атегории очень опасных . Ни в коем случае нельзя удалять вирус из MBR и памяти не произведя п редварительную расшифровку дорожек диска – в месте с телом вируса из MBR будет удале н ключ к шифру.
Вирус имеет несколько слабых мест , которые можно использовать для борьбы с ним .
1) Запись в MBR нового значения нижне й границы заши-
фрованныхнных дорожек дает возможность обнаружить
вирус по изменению MBR встроенными возможностями
BIOS (прове рка на вирусы ) и ревизором Adinf .
2) Проверка заражаемого фай ла на зараженность , выпол-
няемая сравнением количества секунд времени созда -
ния файла с остатком деления даты времени создания
файла на 30, дает возможность примен ить метод вакци -
нирования файлов с целью предотвратить распростра -
нение вируса с компьютера даже при наличии зараже -
ния . При изменении количества секу нд во времени соз-
дания файла вирус буд ет с читать такой файл уже зара -
женным , а т.к . он вылечивает фай л-носитель при первом
заражении мы не будем иметь в системе и файлах , пе-
реписываемых на дискету , тела виру са.
3) Хранение в MBR ключа шифро вания дорожек диска и
последне го значения границы дорожек дает возмож -
ность в большинстве случаев корре ктно расшифровать
дорожки . Хранение в файле таблицы размещения «пя -
тен» расшифровщика позволяет корректн о удалить «пят -
на» и само тело вируса из файла.
4) Проверку наличия своего тела в памяти вирус произво -
дит вы зовом несуществующей функции DOS и анализом
кода возврата . Это дает возмо жность написать резидент -
ную вакцину , которая бы перехватывала вызов этой
функции , выводила аварийное сообщение и запрещала
дальнейшее выполнение операций . Этот способ приме
ни л Александр Крыжановский в своей вакцине
VS_ONE_H.
5) Запрет заражения файлов с опр еделенными именами да
ет возм ожность «обмануть» вирус для получения истин
ного значения объема ОЗУ . Достаточно назвать нашу про
гр амму с запросом размера память как CHKDSK , и мы
получим истинное значение количества памяти . По раз -
нице мы можем судить о заражен ии нашей системы.
6) Многие вирусы трассируют int13 h до BIOS , чтобы
обойти антивирусные ревизоры . Так же поступае т и
O ne H alf, если увидит , что машина не заражена , и ее нуж -
но заразить - тогда он прописывает себя в MBR, но де
лает это после того , как оттрассир ует int13 h .
Вакцина А.Крыжановского также перехватывает int13 h ,
и использует антитрассировочный алгори тм , называю -
щийся в программистком мире "поплав ок ". Как только
кто-л ибо в системе совершал попытку оттрассировать
прерывание 13 h , вакцина выдает предупреж дение и
останавливает систему.
Метод «поплавка» основан на том , что трассировка
делае тся пошагово – процессор переключается в режим
отладки , и после выполнения каждой команды вызывает
debug-прерывание , используемое , обычно отлад чиками
для пошаговой отладки программы , чт обы п роанализиро
вать результаты выполнения команды . Вызов отладочно
го прерывания подразумевает , что ис пользуется стек
процессора , в котором сохраняется а дрес возврата . Это и
используется для того , чтобы определить трассировку :
Мы запрещаем прерывания , затем поме щаем в первую
свободную ячейку стека код 0000 или FFFF (оба адреса
не могут быть адресом возврата ), зате м считываем из
первой свободной ячейки стека значе ние , разрешаем пре
рывания и сравниваем считанное зна чение с тем , что мы
туда помещали.
Смысл метода в том , что когда программа выполняется
нормально , после запрета прерываний , никто не сможет
прервать выполнение нашей программы , и поэтому
поместив в первую свободную ячейку стека какое-либо
значение , мы затем сможем ег о же оттуда и прочитать ,
потому что стек использовать неком у . Если же програм
ма выполняется пошагово , то несмотр я на запрет преры -
ваний , процессор все равн о в ызовет debug-прерывание
после команды , которой мы помещали в стек число . Это
debug -прерывание поместит в использова нную нами ячей -
ку стека адрес возврата , после чего этот адрес мы и про -
читаем следующей командой чтения и з стека . Получив
несовпадение записанного и считанного чисел мы смо -
жем убедиться в том , что включе н режим пошагового
выполнения команд процессора и мы можем утверждать ,
что подверглись заражению вирусом.
Для предотвраще ния заражения компьютера вирусом OneHalf 3544 рекомендую использовать резидентную вакцину VS _ ONE _ H , написанную ял тинским программистом Александром Крыжанов ск им . Так же можно использовать AVP монитор Евген ия Касперского . Можно использовать для обнару жения заражения ревизор ADINF Дмитрия Мостового , но необх одимо помнить , что его лечащий блок не умеет расшифровывать дорожки , а простое вос становление MBR приведе т к потере зашифрованных данных !
Для обнаружения и лечения вируса и устранения его последствий рекомендую исполь зовать полифаг DoctorWeb Игоря Данилова (версия не ниже 1.7, версия 1.6 просто удаляет тело вируса из системы , а это недопустимо ), AVP 3.0 Pro Евгения Касперского , а так же можно использовать словацкий фаг ONEHALF (специально написан для данного в ируса ) , полифаги TBAV , F - PROT , Norton Antivirus .
Источники информации.
1. Информатика : Учебник / под ред . Проф . Н.В . Макаровой . - М .:
Ф инансы и статистика , 1997.
2. П . Абель . Язык асс емблера для IBM PC и программирования .
Мо сква , 1992.
3. Листинг вируса Onehalf 3544, полученный при помощи диз-
ас семблера Sourcer v. 7.0
4. Вакцина против вируса OneHalf 3544 (VS_ONE_H.COM), напи -
са нная Александром Крыжановским , 1995.
5. Антивирусные программы DrWeb 1.6; 1.7; 4.15; 4.16; AVP 3.0
Pro build 1.32, Adinf 12.0, TBAV, F-PROT, NAV.
6. Хижняк П.Л . Пишем вирус и антивирус для IBM – совместимых
компьютеров . Инто . Москва 1991
7. Касперский Е . Компьют ерные вирусы в MS - DOS . Эдель . Моск -
ва . 1992 г.
8. Интернет : сайты www . avp . ru ; www . virus . com ;
www . virus . perm . ru
8. Электронный журнал « Infected voice » № 5/1995.
Содержание.
1. Ведение ……………………………………………………… 2
2. Классификация вирусов …………………………………… 3
3. Анализ алгоритма вир уса ………………………………… .5
4. Размещение вируса в зараженно м файле ………………… .5
5. Размещение вируса в зараженном MBR ………………… ..6
6. Алгоритм инсталляции вируса …………………………… .7
7. Алгоритм заражения ф айлов для размножения………… ...9
8. Выводы …………………………………………… ………… 11
9. Источники информации …………………………………… .1 7