Книги
чёрным по белому
Главное меню
Главная О нас Добавить материал Поиск по сайту Карта книг Карта сайта
Книги
Археология Архитектура Бизнес Биология Ветеринария Военная промышленность География Геология Гороскоп Дизайн Журналы Инженерия Информационные ресурсы Искусство История Компьютерная литература Криптология Кулинария Культура Лингвистика Математика Медицина Менеджмент Металлургия Минералогия Музыка Научная литература Нумизматика Образование Охота Педагогика Политика Промышленные производства Психология Путеводители Религия Рыбалка Садоводство Саморазвитие Семиотика Социология Спорт Столярное дело Строительство Техника Туризм Фантастика Физика Футурология Химия Художественная литература Экология Экономика Электроника Энергетика Этика Юриспруденция
Новые книги
Цуканов Б.И. "Время в психике человека" (Медицина)

Суворов С. "Танк Т-64. Первенец танков 2-го поколения " (Военная промышленность)

Нестеров В.А. "Основы проэктирования ракет класса воздух- воздух и авиационных катапульных установок для них" (Военная промышленность)

Фогль Б. "101 вопрос, который задала бы ваша кошка своему ветеринару если бы умела говорить" (Ветеринария)

Яблоков Н.П. "Криминалистика" (Юриспруденция)
Реклама

Азбука хакера 3. Компьютерная вирусология - Собейкис В.Г.

Собейкис В.Г. Азбука хакера 3. Компьютерная вирусология — М.: Майор, 2006. — 512 c.
ISBN 5-98551-013-1
Скачать (прямая ссылка): hakeriazbukahakera2006.djvu
Предыдущая << 1 .. 46 47 48 49 50 51 < 52 > 53 54 55 56 57 58 .. 123 >> Следующая

ЮН 2 Первона- чальный sp Первоначальное значение установленное в
sp при выполнении программы.
12Н 2 Чексумма Слово ориентирует значение чкусуммы таким образом,
чтобы суммы всех слов в файле была FFFF Hex. Если файл имеет длину в
нечетное число байтов, то последний байт рассматривается как слово с
старшим байтом = 0. Часто эта чексумма не используется, и некоторые
компиляторы даже не беспокоятся о его правильной установке.
14Н 2 Первоначальный ip Первоначальное значение для командного
указателя ip при загрузке программы.
16Н 2 Первоначальный cs Первонвчапьное значение сегмента кода
относительно начала кода в ЕХЕ-файпе. Оно перемещается DOS в загрузочное
время.
18Н 2 Офсет таблицы перемещений Офсет начала таблицы перемещения
от начала таблицы (измеряется байтами).
1АН 2 Количество наложений (оверлеев) Резидент, основная часть
программы всегда имеет это слово в установленном виде.
199
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
Инфицирование ЕХЕ-файла
Вирус, предназначенный для инфицирования ЕХЕ-файла, должен уметь
модифицировать ЕХЕ-заголовок и таблицу указателей перемещения, а также
размещать свой код в загрузочном модуле. Это можно сделать множеством
способов, некоторые из которых требуют больших усилий, чем другие. Вирус
Intruder-B прикрепляется к концу ЕХЕ-программы и получает контроль, когда
программа стартуется. Это требует подпрограмму, сходную с вирусом Timid-П
- подпрограмму, которая копирует программный код из памяти в файл на
диске, а затем приводит файл в порядок.
Intruder-B имеет собственные сегменты кода, данных и стека. Универсальный
ЕХЕ-вирус не может делать никаких предположений о сегментах,
установленных жертвой. Это привело бы к сбою системы при встрече с
программой, которая не соответствовала бы одному из предположений.
Для установки сегментов вируса мы должны разместить в заголовке ЕХЕ-файла
новые сегментные значения для cs и ss. Старые сегменты нужно сохранить
где-то в вирусе. Тогда мы сможем передать контроль жертве, чтобы она
закончила свое выполнение. Мы должны разместить два указателя на эти
сегментные ссылки в таблице указателей перемещения, так как они являются
ссылками перемещения в сегменте кода вируса.
Добавление указателей в таблицу указателей перемещения - это не просто
дело. Чтобы добавить указатели в таблицу, нужно расширить размеры
таблицы. Иногда проще не инфицировать файл, чем расширять заголовок.
Здесь мы можем использовать два метода, каждый из которых обладает
недостатками и преимуществами.
Загрузочный модуль может "весить" сотни килобайтов, поэтому перемещение
его займет большое время. Пользователь может заподозрить что-то неладное.
С другой стороны, если вирус решит не перемещать загрузочный модуль, то
около половины всех ЕХЕ-файлов получат иммунитет против инфекции.
Вирус Intruder-B выбрал тихий подход. Он не инфицирует каждый ЕХЕ-файл.
200
ГЛАВА 5. Инфекция EXE-файлов
Пусть основная подпрограмма вируса выглядит примерно так:
VSEG SEGMENT
VIRUS:
mov ax.cs Остановить d$=cs для вируса mov ds.ax
cli
mov ss.cs: [HOSTS] mov sp,cs:[HOSTS+2] sti
jmp DWORD PTR cs:[HOSTC]
HOSTS DW ?,?
HOSTC DW ?,?
Тогда, чтобы инфицировать новый файл, подпрограмма копирования должна
выполнить следующие шаги:
1. прочитать ЕХЕ-заголовок в программе-жертве;
2. расширить размер загрузочного модуля (который является четным и
кратным 16 байтам), чтобы cs:0000 стал первым байтом вируса;
3. записать код вируса, выполнив конец атакованного ЕХЕ-файла;
4. записать первоначальное значение ss:sp, хранящееся в ЕХЕ-заголовке, в
локацию HOSTS на диске в вышеуказанном коде;
5. записать первоначальное значение csrip, хранящееся в ЕХЕ-заголовке, в
локацию HOSTC на диске в вышеуказанном
коде;
6. сохранить Первоначальный ss-SEG VSEG, Первоначальный sp-OFFSET FINAL +
STACK_SIZE, Первоначальный cs-SEG VSEG и Первоначальный ip-OFFSET VIRUS в
ЕХЕ-заголовке вместо старых значений;
от
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
7. добавить две записи таблицы перемещений в EXE-заголовке;
8. добавить два указателя перемещений в конце таблицы указателей
перемещений в ЕХЕ-файле на диске (локации этих указателей рассчитываются
из заголовка). Первый указатель должен указывать на сегментную часть
HOSTS. Второй указывает на сегментную часть HOSTC;
9. пересчитать размер инфицированного ЕХЕ-файла и подстроить такие поля
заголовка, как Счет страниц и Размер последней страницы;
10. переписать новый ЕХЕ-заголовок на диск.
Все первоначальные значения сегментов должны быть рассчитаны из размера
инфицированного загрузочного модуля. Код, выполняющий инфекцию, находится
в подпрограмме INFECT.
Механизм поиска файлов
Как и в Timid-II, в Intruder-B механизм поиска можно поделить на две
части: FINDEXE ищет файлы для инфекции, а FILE OK определяет, можно ли
данные файлы инфицировать.
Процедура FILE_OK почти аналогична своей тезке из Timid-
II. Она должна открыть осматриваемый файл и решить, можно ли его
инфицировать при условии, что он еще не заражен. Для такого решения
Предыдущая << 1 .. 46 47 48 49 50 51 < 52 > 53 54 55 56 57 58 .. 123 >> Следующая