Компьютерный СМЕРШ Зайцев Олег (z-oleg.com/secur) Спецвыпуск: Хакер, номер #060, стр. 060-070-6 Из спецпрограмм стоит отметить PrivacyKeyboard и Anti-keylogger, которые перехватывают кучу системных функций и отлавливают типичное для кейлоггера поведение. Они хорошо ловят кейлоггеры всех видов, но ставить отдельный продукт для поимки клавиатурного шпиона - это на любителя. Конечно, настоящий Х-мэн в состоянии обойтись и без спецпрограмм, так как большинство кейлоггеров построено на основе ловушек, а ловушки предполагают загрузку библиотеки-перехватчика во все GUI-процессы, что и выдает такие кейлоггеры с головой. Как раз во время написания этой статьи мне прислали файл для анализа - оказалось, Family Key Logger: 5. Поиск перехватчиков событий клавиатуры/мыши/окон (Keylogger, троянские DLL) C:\WINDOWS\system32\CTF\ctfs.dll -->gt; Подозрение на Keylogger или троянскую DLL C:\WINDOWS\system32\CTF\ctfs.dll>gt; >gt; >gt; Нейросеть: файл с вероятностью 99,92% похож на типовой перехватчик событий клавиатуры/мыши >gt; >gt; >gt; C:\WINDOWS\system32\CTF\ctfmon.dll -->gt; С высокой степенью вероятности обнаружен Keylogger или троянская DLL C:\WINDOWS\system32\CTF\ctfmon.dll>gt; >gt; >gt; Нейросеть: файл с вероятностью 99,98% похож на типовой перехватчик событий клавиатуры/мыши Как видно из протокола, кейлоггер поймался на мелочи - его демаскировали DLL, в которых, собственно, и размещены хуки. Далее самое сложное – отличить кейлоггер от некой безобидной DLL, предназначенной для отлова горячих клавиш, что осуществляется с помощью IDA, причем препарирование сводится к поиску кода Hook'а и анализа того, какие функции он выполняет. Наш подопытный экспортирует функцию, инсталлирующую Hook: листинг IDA - фрагмент кода, устанавливающего Hook кейлоггера Верстальщику: строки .text:1000151A:. и .text:1000151 :. выделить цветом или жирным шрифтом .text:1000150A InstallKeyboardHook proc near .text:1000150A push ebp .text:1000150B mov ebp, esp .text:1000150D push 0 ; dwThreadId .text:1000150F mov eax, hmod .text:10001514 push eax ; hmod .text:10001515 push offset KeyboardProc ; lpfn .text:1000151A push 2 ; idHook .text:1000151C call ds:SetWindowsHookExA .text:10001522 mov ds:hhk, eax .text:10001527 mov eax, ds:hhk .text:1000152C pop ebp .text:1000152D retn .text:1000152D InstallKeyboardHook endp В данном коде для нас интересны параметры функции SetWindowsHookExA. Параметр idHook задает тип перехватчика (в нашем случае он "2", то есть клавиатура, что наводит на соответствующие подозрения), offset KeyboardProc - смещение функции-обработчика. Посмотрим, что делает этот самый KeyboardProc (листинг урезан: в настоящем звере несколько веток, а я оставил короткий и наглядный фрагмент; более сложный обработчик отличается только тем, что фиксирует имя пользователя и имя окна в фокусе ввода - все остальное остается неизменным). |