Обнаружение кейлоггеров режима ядра
От: woors  
Дата: 26.03.13 23:10
Оценка:
Всем доброго времени суток!
Возникла такая тема по поводу обнаружения кейлоггеров режима ядра(драйверов-фильтров), перекопал достаточно много материала, но не нашел ничего конкретного. На некоторых источниках(как пример, в книге Зайцева "rootkits,spyware, keyloggers ...") промелькнула такая фраза по поводу мониторинга стека драйвера keyboardclass, но как? Посоветуйте, люди добрые, хотя бы в какую сторону копать, в ядреном режиме новичок.

Заранее спасибо.
keylogger kernel mode
Re: Обнаружение кейлоггеров режима ядра
От: Psybot  
Дата: 27.03.13 06:03
Оценка:
Здравствуйте, woors, Вы писали:

W>Всем доброго времени суток!

W>Возникла такая тема по поводу обнаружения кейлоггеров режима ядра(драйверов-фильтров), перекопал достаточно много материала, но не нашел ничего конкретного. На некоторых источниках(как пример, в книге Зайцева "rootkits,spyware, keyloggers ...") промелькнула такая фраза по поводу мониторинга стека драйвера keyboardclass, но как? Посоветуйте, люди добрые, хотя бы в какую сторону копать, в ядреном режиме новичок.

W>Заранее спасибо.


Для начала — разобраться, что такое драйверы устройств, PnP-стек, фильтры класса, фильтры устройств, legacy-фильтры. После этого станет понятно, как проверять целостность стека.
Re: Обнаружение кейлоггеров режима ядра
От: okman Беларусь https://searchinform.ru/
Дата: 27.03.13 06:12
Оценка: +1
Здравствуйте, woors, Вы писали:

W>Возникла такая тема по поводу обнаружения кейлоггеров режима ядра(драйверов-фильтров), перекопал достаточно много материала, но не нашел ничего конкретного.


Драйверы клавиатуры, в том числе фильтры, регистрируются стандартно, через реестр.
Например, фильтры класса клавиатуры прописываются в ключе реестра
HKLM\SYSTEM\CurrentControlSet\Control\Class\{4d36e96b-e325-11ce-bfc1-08002be10318}, в
значениях UpperFilters и LowerFilters, аналогичные ключи существуют и для фильтров
уровня устройств. Один из вариантов защиты — мониторить данные ветки на предмет
добавления туда новых записей.

В malware частенько используется другой способ — хуки Major Table, в этом случае для
обнаружения драйвера нужно ставить наблюдение за Major Table всех драйверов стека.

Еще можно установить перехват на загрузку модулей — PsSetLoadImageNotifyRoutine и
отслеживать загрузку драйверов, не входящих в состав Windows.

Мне интересно вот что — допустим, поймали Вы некоторое "тело" в стеке клавиатуры.
Как определить, что это именно кейлоггер, а не обычный легальный драйвер, который, к
примеру, просто исправляет ошибки работы с питанием нижележащего драйвера ?
Re[2]: Обнаружение кейлоггеров режима ядра
От: Psybot  
Дата: 27.03.13 06:26
Оценка:
O>В malware частенько используется другой способ — хуки Major Table, в этом случае для
O>обнаружения драйвера нужно ставить наблюдение за Major Table всех драйверов стека.

Этот способ сейчас представляет скорее историческую ценность. От современных руткитов стоит ожидать, например, модификацию списка устройств.


O>Мне интересно вот что — допустим, поймали Вы некоторое "тело" в стеке клавиатуры.

O>Как определить, что это именно кейлоггер, а не обычный легальный драйвер, который, к
O>примеру, просто исправляет ошибки работы с питанием нижележащего драйвера ?

Обычно фиксируется "чистое" состояние и любые его изменения считаются нарушением.
Re[3]: Обнаружение кейлоггеров режима ядра
От: okman Беларусь https://searchinform.ru/
Дата: 27.03.13 06:31
Оценка:
Здравствуйте, Psybot, Вы писали:

P>Этот способ сейчас представляет скорее историческую ценность.


Это не значит, что от него не нужно защищаться.

P>Обычно фиксируется "чистое" состояние и любые его изменения считаются нарушением.


Да, пользователь обновляет драйвер nVidia и ему вылетает алерт в красном цвете. Классика жанра !
Re[4]: Обнаружение кейлоггеров режима ядра
От: Psybot  
Дата: 27.03.13 06:39
Оценка:
Здравствуйте, okman, Вы писали:

O>Это не значит, что от него не нужно защищаться.

Разумеется.
Re[4]: Обнаружение кейлоггеров режима ядра
От: acDev Россия  
Дата: 27.03.13 13:21
Оценка:
А что можно сделать, если драйвер просто мониторит таблички _gafAsyncKeyStateXXX (аналогично вызову GetAsyncKeyState из UserMode) ?
Re[5]: Обнаружение кейлоггеров режима ядра
От: x64 Россия http://x64blog.name
Дата: 27.03.13 14:08
Оценка:
D>А что можно сделать, если драйвер просто мониторит таблички _gafAsyncKeyStateXXX (аналогично вызову GetAsyncKeyState из UserMode) ?

Ну, наверное, сообщать о таком драйвере пользователю и пусть сам думает? Ещё, как вариант, можно переместить эту таблицу в памяти, исправив ссылки на неё внутри Win32k, но во-первых, кейлоггер может попытаться сделать аналогичное, во-вторых, вряд ли PG отнесётся к этому спокойно на 64-битных системах.
JID: x64j@jabber.ru
Re[5]: Обнаружение кейлоггеров режима ядра
От: okman Беларусь https://searchinform.ru/
Дата: 27.03.13 14:35
Оценка:
Здравствуйте, acDev, Вы писали:

D>А что можно сделать, если драйвер просто мониторит таблички _gafAsyncKeyStateXXX (аналогично вызову GetAsyncKeyState из UserMode) ?


Наверное, уже ничего Драйвер в системе — система скомпрометирована.
Он может маскировать свое присутствие и противодействовать попыткам сделать что-то с ним.
С такими угрозами лучше бороться превентивно, не допуская их попадания на компьютер.
А отлавливать "тварей" на уже зараженной машине — последнее дело...
Re[6]: Обнаружение кейлоггеров режима ядра
От: acDev Россия  
Дата: 27.03.13 15:02
Оценка:
Здравствуйте, okman, Вы писали:

O>С такими угрозами лучше бороться превентивно, не допуская их попадания на компьютер.


Это актуально для антивирей. А вот для всяких утилит (антируткитсы и т.п.) вопрос актуален.
Re[5]: Обнаружение кейлоггеров режима ядра
От: ononim  
Дата: 27.03.13 16:11
Оценка:
D>А что можно сделать, если драйвер просто мониторит таблички _gafAsyncKeyStateXXX (аналогично вызову GetAsyncKeyState из UserMode) ?
поставить в дебаг регистрах бряку на доступ к памяти и отловить всех читателей по-одному.
Как много веселых ребят, и все делают велосипед...
Re[6]: Обнаружение кейлоггеров режима ядра
От: Аноним  
Дата: 28.03.13 09:20
Оценка:
Здравствуйте, ononim, Вы писали:

D>>А что можно сделать, если драйвер просто мониторит таблички _gafAsyncKeyStateXXX (аналогично вызову GetAsyncKeyState из UserMode) ?

O>поставить в дебаг регистрах бряку на доступ к памяти и отловить всех читателей по-одному.
Удачи ставить дебаг регистровые бряки на х64 системах
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.