eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС
выпущен 4 ноября!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Русский / Russian English / Английский

Сейчас на форуме: (+2 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS · SVN ·

 eXeL@B —› Основной форум —› Нужна помощь при разборе кода драйвера
Посл.ответ Сообщение


Ранг: 660.7 (! !)
Статус: Участник
ALIEN Hack Team

Создано: 19 сентября 2008 15:30 New!
Цитата · Личное сообщение · #1

Доброго всем времени суток. Вот столкнулся с такой проблемой - при исследовании одной подлой малвари из неё (из малвари) был извлечён драйвер, который эта малварь использует для завершения процессов популярных антивирусов. Драйвер - не обычное фуфло с NtOpenProcess->NtTerminateProcess, для завершения процессов он использует какой-то другой алгоритм. Приложение из третьего колца получает хэндл символьной ссылки драйвера через CreateFileA и передаёт драйверу запрос через WriteFile. В качестве параметра запроса используется идентификатор процесса-жертвы. Далее драйвер что-то с там делает и процесс вырубается, да причём вырубается, даже если является обьектом отладки, например, под олькой отлаживаемый процесс можно вырубить, и олька ничего не заметит. Более того, драйвер вырубает процессы таких зверей, как Антивирус Касперского 8 и Agnitum Outpost 6, хотя они имеют защиту, основанную на перехвате KDT, два процесса в памяти, которые друг друга страхуют, и ещё некоторые другие фичи. Короче, вопрос - помогите исследовать алгоритм, узнать, как драйвер это делает. Проблема в том, что функции режима ядра документированы плохо - мне самому не справиться. Прикладываю архив - в архиве сам драйвер, программа для посылки запросов на завершение процесса, а также KMD Manager by Four-F чтоб установить и запустить драйвер. Я для отладки использовал Айс, но это не очень уж удобно, слишком уже к ольге привык, может, и по этому поводу кто-то что-то подскажет?

{ Атач доступен только для участников форума } - Driver.rar

Ранг: 8.3 (гость)
Статус: Участник

Создано: 19 сентября 2008 15:51 New!
Цитата · Личное сообщение · #2

Sality вариант, практически без изменений.
Убивает антивирусы твои простым способом. Сначала она их открывает через ObOpenObjectByPointer, поинтер это EPROCESS через PsLookupProcess...... по Id процесса соот-но. Потом вызывается оригинальный NtTerminateProcess через указатель, по индексу (hardcoded под все винды) из оригинальной SSDT, сама таблица ищется приложением (поищи в приложении KeServiceDescriptorTable строку), драйвер просто вызывает то, что ему передают.


Ранг: 660.7 (! !)
Статус: Участник
ALIEN Hack Team

Создано: 19 сентября 2008 16:00 New!
Цитата · Личное сообщение · #3

KeBugCheck пишет:
сама таблица ищется приложением (поищи в приложении KeServiceDescriptorTable строку)
Ага, есть такое дело в малвари, но в проге, которую я выкладывал - нету, а процессы всё равно умирают - как так?
Sality вариант, практически без изменений.
Можно про это подробнее, что за вариант? Где можно найти?
Сначала она их открывает через ObOpenObjectByPointer, поинтер это EPROCESS через PsLookupProcess...... по Id процесса соот-но
Ты хотел сказать - через PsLookupProcessbyProcessId?

Ранг: 8.3 (гость)
Статус: Участник

Создано: 19 сентября 2008 16:19 New!
Цитата · Личное сообщение · #4

ARCHANGEL пишет:
Ты хотел сказать - через PsLookupProcessbyProcessId?

Да. PsLookupProcessByProcessId, ObOpenObjectByPointer, RealNtTerminateProcess(handle, 1), ZwClose(handle);


ARCHANGEL пишет:
Ага, есть такое дело в малвари, но в проге, которую я выкладывал - нету, а процессы всё равно умирают - как так?

А оно надо только на инит, потом адрес запоминается в драйвере.


ARCHANGEL пишет:
Можно про это подробнее, что за вариант? Где можно найти?

знающие люди уже все заломали и изучили, см. pdf
rapidshare.com/files/144587782/Win32_Sality.rar.html

+ гугл по имени малваре


Ранг: 660.7 (! !)
Статус: Участник
ALIEN Hack Team

Создано: 19 сентября 2008 16:27 New!
Цитата · Личное сообщение · #5

KeBugCheck пишет:
знающие люди уже все заломали и изучили, см. pdf
Это хорошо, нам такие люди нужны, за ПДФ спасибо
А оно надо только на инит, потом адрес запоминается в драйвере.
Попросту говоря, он там жёстко захардкоден?

Ранг: 8.3 (гость)
Статус: Участник

Создано: 19 сентября 2008 16:30 New!
Цитата · Личное сообщение · #6

Там переменная, которая запоминает адрес ориг.таблицы, а потом путем захардкоденных констант id сервиса NtTerminateProcess по этой таблице получается адрес оригинала, который и вызывается. От сплайсенга такое не спасет, а от аверских перехватов - то да.


Ранг: 660.7 (! !)
Статус: Участник
ALIEN Hack Team

Создано: 19 сентября 2008 16:35 New!
Цитата · Личное сообщение · #7

KeBugCheck пишет:
От сплайсенга такое не спасет, а от аверских перехватов - то да.
А зачем такое нужно? В драйвере при выполнении ведь всё не так, как в третьем колце - NtTerminateProcess импортируется из ntoskrnl.exe (или аналога), и при вызове из драйвера на KeServiceDescriptorTable не опирается, можно ничё и не искать, а просто вызвать функцию и всё, или нет?

Ранг: 8.3 (гость)
Статус: Участник

Создано: 19 сентября 2008 16:52 New!
Цитата · Личное сообщение · #8

Потому что эта функция не экспортируется ядром, она есть только в виде указателя в SSDT. Экспортируется её r0 заглушка ZwTerminateProcess, которая из r3 не вызывается никогда и в конечном итоге опирается на ту же самую SSDT как и все Zw функции r0, потому что они это переходники с PreviousMode = KernelMode специально для дров. А малвари как раз и нужно грохать защищенные аверские процессы из-под ядра. А вызвав функцию напрямую через указатель ты минуешь хуки ssdt.


Ранг: 660.7 (! !)
Статус: Участник
ALIEN Hack Team

Создано: 19 сентября 2008 16:56 New!
Цитата · Личное сообщение · #9

KeBugCheck
А, ну тогда ясно, в общем, спасибо, я узнал всё, что хотел, более этого - моя мальварь оказалась именно этой Sality, так что все дальнейшие вопросы отпадают сами собой, топик закрываю
 eXeL@B —› Основной форум —› Нужна помощь при разборе кода драйвера
Эта тема закрыта. Ответы больше не принимаются.

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS