На главную | Содержание | Назад | Вперёд
Наши друзья

 

 

Регистрация нажатий клавиш

Регистрация нажатий клавиш является одним из самых мощных методов компьютерного шпионажа. Используя перехват для дескриптора клавиатуры внутри ядра, набор средств для взлома может перехватывать парольные фразы, включая те, которые используются для разблокирования секретных ключей в криптографических системах. Регистрация нажатий клавиш не требует больших объемов пространства на жестком диске, поэтому может пройти несколько дней или недель, прежде чем хакер сочтет необходимым забрать файл с зарегистрированной информацией. Программа регистрации может распознавать комбинации управляющих клавиш, а также
определять, когда символы набираются в верхнем или нижнем регистре. Обычно каждому нажатию клавиши соответствует определенный код опроса клавиатуры (scancode). Код опроса клавиатуры представляет собой численное представление в памяти нажатий клавиши.
За последнее десятилетие появилось множество различных видов программ регистрации нажатий клавиш, а методы их работы зависят от атакуемой операционной системы. На многих старых Windows и DOS-системах для регистрации нажатий клавиш было достаточно организовать перехват прерывания 9. Начиная с систем под управлением Windows NT, программу мониторинга нажатий клавиш следует инсталлировать как драйвер. Подобная ситуация характерна и для Linux.
С точки зрения хакера остаются две проблемы: 1) как сохранить данные в файл; и 2) кто будет их отправлять по сети. Если перехваченные нажатия клавиш сохраняются в открытом тексте, то они доступны все желающим. Если они отправляются на чей-то электронный адрес, то у владельца этого адреса окажется ценная информация. Эти проблемы можно решить с помощью средств криптографии. Зарегистриро­ванные нажатия клавиш могут храниться в виде информации, зашифрованной с помощью открытого ключа, а их передача может осуществляться с помощью широковещательной рассылки, по общедоступному и в то же время защищенному каналу.
Программа регистрации нажатий клавиш в Linux-системе
За последнее время опубликовано несколько программ регистрации нажатий клавиш в Linux-системах. Программного код этих программ является общедоступным. Эти программы обычно сделаны в виде подгружаемых модулей ядра (LKM). В UNIX-системах набор средств для взлома, как правило, уже реализован в виде модуля LKM, поэтому мониторинг нажатий клавиш можно просто добавить в виде рас­ширенной функции. Набор средств для взлома в системе Linux способен внедриться в текущий поток символов с помощью существующего драйвера клавиатуры или может непосредственно организовать перехват дескриптора прерывания.
Программа регистрации нажатий клавиш для Windows NT/2000/XP
В системах Windows NT/2000/XP поддерживается специальный тип драйвера устройств, который называется фильтрующим драйвером (filter driver) или просто фильтром. Большинство драйверов в Windows работают последовательно. То есть каждый драйвер передает данные следующему драйверу в цепочке. Фильтрующий драйвер просто добавляет себя в эту цепочку и выполняет фильтрацию данных или изменяет передаваемые данные до того, как передать управление. Набор средств для взлома может добавить себя в уже существующую цепочку драйверов для клавиатуры. Конечно, можно использовать и непосредственный перехват прерывания клавиатуры. В любом случае, можно перехватывать последовательности нажатия клавиш и записывать их в файл либо пересылать по сети.
Контроллер клавиатуры
На материнской плате находится большое количество контроллеров для аппаратных средств. В этих контроллерах содержатся регистры, из которых можно прочесть или в которые можно записать данные. Как правило, регистры чтения/записи на контроллере называют портами. В клавиатуре обычно используется микропроцессор 8048, а на материнской плате, как правило, есть дополнительный микропро­цессор 8042. Микросхема 8042 программируется для преобразования кодов опроса клавиатуры. Иногда эта же микросхема используется для управления входными данными, получаемыми от мыши PS/2 и, иногда, для уведомления центрального процессора о нажатии кнопки Reset.
Относительно контроллера клавиатуры нас интересуют следующие порты: порт 0x60: чип 8048, регистр данных клавиатуры
порт 0x64: чип 8042, регистр состояния клавиатуры
Для чтения символов с клавиатуры необходимо перехватить прерывание клавиатуры. Предпринимаемые для этой цели действия изменяются в зависимости от операционной системы. Для систем под управлением Windows, вероятнее всего, необходимо будет перехватить прерывание int 0x31. Данные должны быть прочитаны из прерывания 0x60 сразу после вызова IRQ 1 и до того, как произойдет какое либо-другое прерывание клавиатуры.
Ниже представлен пример простого обработчика для прерывания клавиатуры.
KEY_INT:
push eax
in al, 60h
// делаем что-то с символов в al pop eax
jmp DWORD PTR [old_KEY_INT]

 

На главную | Содержание | Назад | Вперёд
 
Яндекс.Метрика