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

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

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

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

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

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

Собейкис В.Г. Азбука хакера 3. Компьютерная вирусология — М.: Майор, 2006. — 512 c.
ISBN 5-98551-013-1
Скачать (прямая ссылка): hakeriazbukahakera2006.djvu
Предыдущая << 1 .. 77 78 79 80 81 82 < 83 > 84 85 86 87 88 89 .. 123 >> Следующая

раздела. В любом случае, между (0,0,1) и (0,1,1) мы имеем 62 свободных
сектора. Это 62 * 512 - 31744 байтов (вполне достаточно для вируса).
Инфицирование MBR можно производить двумя методами:
а) сохранить оригинальную MBR в свободной зоне и поместить код вируса на
ее место, затем прочитать оригинальную MBR из свободной зоны;
б) изменить оригинальную MBR и заставить ее загружать вирус, а не
загрузочную запись - при условии, что вирус сам будет загружать ее
(Boot).
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
Первый метод требует внесения в 510-й байт вируса особой
последовательности '0AA55h\ чтобы пометить его как правильную таблицу
разделов. При втором методе система больше не сможет загружаться с
дискеты. Если при загрузке вы используете дискету и попытаетесь изменить
диск на С, то получите 'Invalid drive specification'. Эту проблему решают
так: начинают вирус со следующего кода:
start:
jmp over_partition
db 18h dup (0); 1bh - 3 bytes (the jmp opcode)
part_table:
db 1E5h dup (0); the rest until 200h
over_partition:
... ;остальная часть вируса
Когда вирус будет готов записаться на место оригинальной MBR, вы должны
скопировать данные из области от IBEh до 200h в адрес part_table. То есть
при загрузке с дискеты мы получаем таблицу разделов на нужном месте и в
придачу доступный диск С:. Преимущество - в сокрытии вируса. Недостаток -
в возможности легкого удаления. Выходом является комбинирование int 13h с
особыми анти-туннелинговыми процедурами. В противном случает программы
авиров трассируют int 13h и обойдут процедуры вашего сокрытия.
На самом деле предложенный код не очень хорош. При запуске система
загружает только 1 сектор (например 200h байтов). То есть, прыжок
over_partition будет прыжком за 200h байтов - куда-то в пустоту. Мы
решаем эту проблему следующим образом:
jmp realstart ; (variables here) realstart:
;(резидентная часть) => ES = новый сегмент для вируса
ГЛАВА 7. Многоцелевые вирусы
mov ah, 02h ;загружаем весь вирус из MBR/BS mov ai, sector Jen ;в новый
сегмент (ES) в офсете mov dh, 0 ;0, когда система загружает только один
mov сх, 1 ;сектор, а вирусу нужно больше места
movbx, О irrt 13h
over_this:
pushes
lea ax, go_in_new_segment ;начинаем в сегменте ES push ax
.освобождаем область 007ch
retf
old_partition_table db 200h dup (0) ;эта область нужна
;для сохранения ;таблицы разделов
GoJn_new_segment:
При этом начало вируса выглядит так:
(1)
Загрузчик вируса
=>зта часть меньше 1 BEh байтов
(2)
(3)
Остальная часть вируса
Резервируем 200h байтов
=> область, зарезервированная для Таблицы разделов
=>здесь находится остальная часть кода
Рис. 17. Схема планируемого вируса
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
После загрузки вируса в новый сегмент и прыжка к новому сегменту мы
попадаем в зону (3). Здесь мы читаем оригинальную MBR из того места, где
сохранили ее. Далее мы вставляем оригинальную загрузочную запись в зону
(2). Чтобы получить ¦"правильную таблицу разделов", мы должны уровнять
длины (1) и (2) зоны. Легче всего "назначить" Таблицу разделов таким
образом, чтобы первые 200Ь байтов заканчивались правильной таблицей
разделов.
2. Инфицирование Boot
Этот вид немного легче инфицирования MBR, поскольку системе не нужно
делать никаких проверок. Но мы должны точно определить адрес загрузочной
записи, иначе система "повиснет". Для этого вам нужно сохранить
оригинальную Boot в свободной области, а вместо нее вставить вирусный
код. При запуске компьютера MBR загрузит ваш вирус и передаст ему
контроль. Сделав свою работу, ваша "зверушка" загрузит оригинальную
загрузочную запись из свободной зоны и прыгнет к ней. Вот и все дела.
Теперь посмотрим, что вирус делает при старте. Не забывайте, что здесь мы
говорим о многоцелевых вирусах! Это означает, что инфектор должен "жить"
не только в областях загрузочного сектора, но и в файлах. Чтобы
проверить, где он в данный момент (в Boot или файле), мы проверяем слово
в PSP:0000:
cmp word ptr es:[0], 20CDh ;это маркер для правильной je in_file ;PSP
in_boot:
... (загрузочная последовательность)
in_fiie:
... (файловая последовательность)
Рассмотрим сначала "загрузочную" часть. Предположим, что мы пишем вирус,
заменяющий MBR. То есть он сохраняет оригинальную MBR в каком-то месте, а
сам размещается в физическом секторе 0. Система загружает его и передает
ему контроль.
ГЛАВА 7. Многоцелевые вирусы
Что нужно сделать в первую очередь? Правильно! Настроить стек. На самом
деле мы могли бы обойтись и без этого. Но, в любом случае, сделайте
установку стека:
cli
хог ах, ах mov ss, ах mov sp, 7C00h sti
MBR делает это сама. Мы могли бы не производить повтора, но подобное
действие пригодится нам позже для некоторых сравнений. К примеру, если вы
не захотите использовать множество флагов, то позже можете сравнить sp с
7c00h и при их равенстве определить, что вы находитесь в загрузочном
секторе.
Далее мы резервируем память для вируса. Сначала предполагаем, что
Предыдущая << 1 .. 77 78 79 80 81 82 < 83 > 84 85 86 87 88 89 .. 123 >> Следующая