Игорь Гульев - Создаем вирус и антивирус

Тут можно читать онлайн Игорь Гульев - Создаем вирус и антивирус - бесплатно ознакомительный отрывок. Жанр: Прочая околокомпьтерная литература. Здесь Вы можете читать ознакомительный отрывок из книги онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.

Игорь Гульев - Создаем вирус и антивирус краткое содержание

Создаем вирус и антивирус - описание и краткое содержание, автор Игорь Гульев, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Virus Warning!

С этим сообщением, хоть раз в жизни, сталкивался любой пользователь компьютера. Вирмейкеры с упорством маньяков плодят все новые и новые разновидности вирусов. Бытует мнение, что избавиться от них можно лишь с помощью сложных и дорогостоящих новейших антивирусных программ. Это не совсем верно – знание принципов действия и способов внедрения вирусов поможет вовремя их обнаружить и локализовать, даже если под рукой не окажется подходящей антивирусной «вакцины».

В этой книге вы найдете обширный материал, посвященный проблеме защиты информации, рассмотренной с обеих сторон баррикад (как от лица вирмейкера, так и создателя антивирусов).

Создаем вирус и антивирус - читать онлайн бесплатно ознакомительный отрывок

Создаем вирус и антивирус - читать книгу онлайн бесплатно (ознакомительный отрывок), автор Игорь Гульев
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать
Метод предопределенных адресов

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

Имея программу, основанную на одном из ранее описанных способов определения реального адреса обработчика DOS, загрузочные дискеты с разными версиями DOS и немного терпения, можно получить примерно вот такую информацию.

Оригинальный обработчик DOS версии 3.30 всегда имеет вид:

;Точка 0

2E CS:

891EB800 MOV [00B8],BX

2E CS:

8C06BA00 MOV [00BA],ES

CB RETF
...

;Точка 1

2E CS:

3A26FF0D CMP AH,[0DFF]

77DC JA 1443

80FC51 CMP AH,51

74A1 JZ 140D

...

80FC64 CMP AH,64

74BA JZ 143A

;Точка 2

Оригинальные обработчики DOS версий 5.0–7.0 очень похожи. В общем случае они состоят из следующих фрагментов: Фрагмент 1 (если он присутствует) всегда располагается в нижних адресах памяти. Большинство алгоритмов трассировки заканчивают работу, достигнув этой точки. Для DOS версий 5.0–6.22 этот фрагмент присутствует, если в CONFIG.SYS есть строка DOS=HIGH (вне зависимости от того, осуществляется ли запуск поддерживающего эту опцию драйвера HIMEM.SYS). Если драйвера нет, то JMP FAR просто указывает на фрагмент 2, размещающийся в нижних областях памяти. Если строки DOS=HIGH нет, то фрагмент 1 вырожден (состоит из одной команды внутрисегментного перехода), и обработчик состоит из фрагмента 2.

;Точка 0

90 NOP

90 NOP

E8CC00 CALL CheckA20

2E CS:

FF2E6A10 J MP FAR NEXTDOS

Фрагмент 2 может располагаться как в верхних, так и в нижних адресах памяти.

;Точка 1

NEXTDOS:

FA CLI

80FC6C CMP AH,6C

77D2 JA 40D0
...

80FC50 CMP AH,50

748E JZ 40A9

;Точка 2

Для DOS 7.0 структура обработчика, в общем, такая же. Исключение – фрагмент 1 присутствует всегда, вне зависимости от содержимого файла CONFIG.SYS. Теперь приведем конкретные значения адресов, полученные для разных случаев:

DOS 7.0 (русская версия)

Точка 0 00C9:0FB2 9090

Точка 1 FF03:41E7 80FA

Точка 2 FF03:420A 1E06

Точка 2А FF03:5333 2ACD

DOS 6.20

device=himem.sys

dos=high

Точка 0 0123:109E 9090

Точка 1 FDC8:40F8 80FA

Точка 2 FDC8:411B 1E06

Точка 2A FDC8:41D1 2ACD

DOS 6.20

dos=high

Точка 0 0123:109E 03EB

Точка 1 03AC:40F8 80FA

Точка 2 03AC:411B 1E06

Точка 2A 03AC:41D1 2ACD

DOS 6.20

Точка 1 002A:40F8 80FA

Точка 2 002A:411B 1E06

Точка 2A 002A:41D1 2ACD

DOS 5.0

device=himem.sys

dos=high

Точка 0 0123:109E 9090

Точка 1 FDC8:40EB 80FA

Точка 2 FDC8:410E 1E06

Точка 2A FDC8:41C4 2ACD

DOS 5.0

dos=high

Точка 0 0123:109E 03EB

Точка 1 03AC:40F8 80FA

Точка 2 03AC:411B 1E06

Точка 2A 03AC:41D1 2ACD

DOS 5.0

Точка 1 002A:40EB 80FA

Точка 2 002A:410E 1E06

Точка 2A 002A:41D1 2ACD

DOS 3.30

Точка 0 0070:05DC 892E

Точка 1 0294:1460 3A2E

Точка 2 0294:1480

Точка 2A 0294:151B 2ACD

DOS 3.10Точка 0 0070:0D43

DOS 3.20Точка 0 0070:17D0

Точка 2 является оптимальной, то есть в нее целесообразнее всего передавать управление, чтобы обойти резидентные антивирусные мониторы. Точка 2A – это позиция инструкции INT 2Ah, которую DOS обязательно выполняет в процессе обработки 21-го прерывания.

В конце каждой строки приведены контрольные слова – на тот случай, если по указанному адресу находится нечто иное.

Борьба с антивирусными мониторами

Современные антивирусные мониторы умеют отслеживать факт прямого обращения программ к DOS.

Защиту 21-го прерывания можно организовать более эффективно, используя метод встраивания в ядро операционной системы. Общепринятая схема такова: в точку входа прерывания INT 21h записывается инструкция JMP FAR на обработчик, который проверяет номер функции на безопасность. Он восстанавливает оригинальные инструкции в точке входа прерывания и вызывает обработчик INT 21h. После возврата управления из прерывания, в точку входа снова записывается инструкция JMP FAR, и управление передается программе, вызвавшей INT 21h.

Здесь описан обычный «сплайсинг» (встраивание), который широко применяется разработчиками вирусов. Отметим, что для перехода не обязательно использовать инструкцию JMP FAR (она занимает 5 байт в памяти и не везде может быть размещена). Вместо нее можно применить INT 3, затратив всего 1 байт. В то же время необходимо обеспечить обработку вызовов с кодами 00h, 4Ch, 31h (они не возвращают управление в исходную точку), а также самовызовов (при завершении процессов посредством INT 27h и INT 20h).

Процесс развивается следующим образом. Первый компонент антивирусного монитора встраивается в ядро DOS, а второй – просто перехватывает цепочку 21-го прерывания. Когда программа выполняет инструкцию INT 21h, управление передается второму компоненту. У антивирусных мониторов существует список функций, которые воспринимаются ими как опасные. Они могут сделать проверку на наличие заданной функции в этом списке, затем выставить флаг «проход цепочки» и передать управление дальше. Когда первый компонент получает управление, он проверяет флаг «прохода цепочки». Если он выставлен, то была инструкция INT 21h, поэтому необходимо сбросить флаг «проход цепочки» и передать управление в DOS. Если флаг сброшен, это значит, что был выполнен прямой вызов. В этом случае требуется принимать соответствующие меры против возможных действий вируса.

Эта идея исключительно проста и эффективна. В том или ином виде ее применяют почти все современные антивирусные мониторы. Вот один из таких вариантов.

После трассировки прерывания выполняется обращение к DOS по оригинальному адресу. Программа AVPTSR перехватывает обращение. Точнее, AVPTSR перехватывает INT 2Ah, причем этот вызов произведен из INT 21 h, вблизи начала фрагмента. Обработчик INT 08h, то есть таймера, периодически восстанавливает вектор 2Ah, если он был отключен.

Подразумевается, что флаг прохода цепочки 21-го прерывания проверяется в обработчике INT 2Ah.

Конструирование неотслеживаемого обращения к DOS

Для чего нужно такое конструирование? Неужели антивирусные мониторы настолько бдительны, что пресекают любые попытки открыть для модификации EXE– или СОМ-файл? Да, это действительно так. Авторы антивирусных мониторов обладают достаточно эффективными средствами, чтобы предотвратить прямые обращения к DOS со стороны вирусов.

Обратимся к мнению Ю. Косивцова: «Для обнаружения действия нерезидентных вирусов необходимо контролировать вызов функций DOS с номерами: 3Dh (открытие файла через описатель), 0Fh (открытие файла через FCB и 5Dh) и подфункцию 00h (косвенный вызов DOS). Если при открытии файла обнаружено, что расширение его СОМ, ЕХЕ или SYS, то можно выдавать предупреждающее сообщение».

Список выглядит слишком коротким. Действительно, а что произойдет, если сначала переименовать программный файл? И почему не учтена функция 6Ch (расширенное открытие файла)? А что будет, если открыть файл для чтения, а затем изменить режим доступа прямым обращением к SFT?

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Игорь Гульев читать все книги автора по порядку

Игорь Гульев - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Создаем вирус и антивирус отзывы


Отзывы читателей о книге Создаем вирус и антивирус, автор: Игорь Гульев. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x