'

EXE-вирусы для MS DOS

Понравилась презентация – покажи это...





Слайд 0

EXE-вирусы для MS DOS Неверов А.В.


Слайд 1

Форматы EXE-файлов


Слайд 2

Формат EXE-программы для MS DOS


Слайд 3

Бинарный код файла MZ-заголовок Код Данные


Слайд 4

Формат MZ-заголовка Relocation Table


Слайд 5

Значение полей MZ-заголовка


Слайд 6

Значение полей MZ-заголовка


Слайд 7

Загрузка MZ-файла 1) Определяется участок памяти с размером, достаточным для загрузки программы. 2) Формируется и заполняется MCB для переменных среды. 3) Создается и заполняется блок памяти для PSP (сегмент:0000h – PSP, сегмент+0010h:0000h – программа). В PSP заносятся необходимые значения. 4) Устанавливается адрес DTA равный PSP:0080h. 5) В рабочую область загрузчика считывается форматированная часть MZ-заголовка (без Relocation Table). 6) Вычисляется длина загрузочного модуля по формуле Size = ((PageCnt * 512) – (HdrSize * 16)) – PartPag.


Слайд 8

Загрузка MZ-файла 7) Вычисляется сегментный адрес для загрузки START_SEG = PSP + 10h. 8) Определяется смещение загрузочного модуля в файле, равное HdrSize * 16. 9) Считывается в память загрузочный модуль, начиная с адреса START_SEG:0000h. 10) Для каждого элемента в таблицу настройки адресов выполняются следующие операции: a) считываются значения входных смещения и сегмента I_OFF и I_SEG; б) вычисляется новое значение сегмента RELO_SEG = START_SEG + I_SEG; в) читается слово по адресу RELO_SEG:I_OFF; г) к прочитанному слову прибавляется значение START_SEG; д) полученное значение запоминается по тому же адресу - RELO_SEG:I_OFF. 11) Распределяется память для программы в соответствии с MinMem и MaxMem.


Слайд 9

Загрузка MZ-файла 12) Инициализируются регистры: а) DS = ES = PSP (таким образом, после загрузки exe-программы регистры DS и ES указывают не на сегменты данных, а на PSP. Следовательно, чтобы программа работала корректно, программист должен самостоятельно выполнить инициализацию этих регистров); б) AX = результат правильности инициализации драйверов, указанных в командной строке; в) SS = ReloSS + START_SEG; SP = ExeSP; г) CS = ReloCS + START_SEG; IP = ExeIP.


Слайд 10

Типы вирусов для EXE-программ в MS DOS Вандалы (Overwrite) Спутники (Companion) Создание COM-спутника Переименование EXE-файла Внедряемые (Parasitic) Стандартное заражение Внедрение методом сдвига Внедрение переносом


Слайд 11

Вандалы (Overwrite) Считать тело вируса в буфер Найти подходящую жертву Открыть найденный exe-файл Проверить зараженность файла Записать текст вируса в начало файла (поверх имеющейся информации)


Слайд 12

Спутники (Companion) Создание COM-спутника Если в командной строке есть параметры для запускаемого файла – сохранить их Найти exe-файл Проверить наличие «спутника» Скопировать тело вируса под именем <имя файла>.COM Передать управление зараженному файлу. При необходимости передать ему параметры командной строки


Слайд 13

Спутники (Companion) Переименование EXE-файла Сохранить параметры командной строки Найти exe-файл Проверить, имеется ли для него спутник с именем, выбранным для инфицирования Скопировать жертву по выбранным именем Записать текст вируса в файл со старым именем жертвы Вернуть управление инфицированному файлу. При необходимости передать ему параметры командной строки


Слайд 14

Внедряемые (Parasitic) Стандартное заражение EXE-файла Текст вируса записывается в конец файла Чтобы вирус получил управление возможно два приема: Модификация MZ-заголовка Модификация одной из инструкций сегмента кода, как правило, первой


Слайд 15

Внедряемые (Parasitic) Внедрение методом сдвига Найти жертву Проверить зараженность Считать тело жертвы (полностью) в буфер Записать тело вируса Записать тело жертвы


Слайд 16

Внедряемые (Parasitic) Активация после внедрения методом сдвига Создать временный файл Переписать в него текст жертвы После выполнения вируса передать управление файлу жертвы Если есть необходимость, то перед запуском сохранить параметры командной строки, а при передаче управления вернуть их жертве


Слайд 17

Внедряемые (Parasitic) Внедрение методом переноса Из начала файла считывается фрагмент файла, равный по длине телу вируса Данный фрагмент записывается в конец заражаемого файла На его место записывается тело вируса


Слайд 18

Внедряемые (Parasitic) Активация после внедрения методом переноса После срабатывания вируса необходимо восстановить исходный код зараженного файла во временный файл После завершения работы вируса запустить текст программы из временного файла Или можно не использовать временный файл, восстановив рабочую версию жертвы в том же файле, а затем заразив ее вновь


×

HTML:





Ссылка: