Самый низкоуровневой keylogger usb

Тема в разделе "WASM.NT.KERNEL", создана пользователем katrus, 12 июл 2008.

  1. katrus

    katrus New Member

    Публикаций:
    0
    Регистрация:
    7 мар 2007
    Сообщения:
    612
    Для клавиатуры ps/2 - понятно. Самый низкоуровневой keylogger можно реализаовать поставив обработчик прерывания клавиатуры. А USB?
     
  2. comrade

    comrade Константин Ёпрст

    Публикаций:
    0
    Регистрация:
    16 сен 2002
    Сообщения:
    232
    Адрес:
    Russian Federation
    У него свои прерывания есть? Но зачем вообще? В любом случае включается код в i8042prt.sys (или что-то типа этого), так следует и оттуда воровать клавишы.
     
  3. katrus

    katrus New Member

    Публикаций:
    0
    Регистрация:
    7 мар 2007
    Сообщения:
    612
    Нет никакой связи между i8042prt.sys и USB клавиатурой ...
     
  4. Four-F

    Four-F New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2002
    Сообщения:
    1.237
    Как это ни странно, но связь есть - через HID mapper driver (kbdhid.sys). Не знаю доходят ли IRP до i8042prt, но маппер гоняет запросы туда-сюда между USB стеком клавы и PS/2 стеком. Прерывания, наверное, не генерятся, но IRP проходят через kbdclass.

    http://msdn.microsoft.com/en-us/library/ms790189.aspx
     
  5. lev

    lev New Member

    Публикаций:
    0
    Регистрация:
    25 окт 2006
    Сообщения:
    16
    Можно все сделать намного проще. Переопределить функцию IRP_MJ_READ у драйвера kbdclass
    Далее начать отслеживать IRP пакеты в которых переопределить CompletionRoutine на свою, а когда вызовется CompletionRoutine своего драйвера вытащить от туда коды нажатых клавишь и вызвать реальную CompletionRoutine.
    О таком подходе была статья на рутките, все работает на 100%, проверял личьно.
    Преимущества данного кейлогера – получает символы как USB ,так и PS/2 клавиатур даже если их подключено сразу несколько.
    Недостаток – невозможно определить в каком приложении нажаты клавиши, и какая раскладка языка.
     
  6. katrus

    katrus New Member

    Публикаций:
    0
    Регистрация:
    7 мар 2007
    Сообщения:
    612
    Кbdclass - драйвер высокого уровня. Можно установить фильтр перед kbdclass и он удет получать коды первым.

    У меня интерес (честно говоря, чисто теоретического характера) как сделать keylogger более низкого уровня.

    Недавно нашел антикелоггер buеgеm. Он входит в состав нескольких антивирусов и распространяется по закрытой подписке. Очень любопытная штуковина. На ps/2 хучит idt на usb цепляется к usbhid.
     
  7. selflessa

    selflessa New Member

    Публикаций:
    0
    Регистрация:
    25 май 2008
    Сообщения:
    13
    также один из универсальных методов состоит в хуке в ядре GetMessage
     
  8. Vilco

    Vilco Vitaly

    Публикаций:
    0
    Регистрация:
    5 мар 2007
    Сообщения:
    190
    Адрес:
    Nsk, Russia
    Не очень низкоуровнево
     
  9. tylerdurden

    tylerdurden New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2004
    Сообщения:
    322
    У меня на работе был проект антикилоггер, я хукал MJ и потом обрубал ввод а слал по лпс на юзерский модуль а он уже непосредственно проге, конечно можно было перехватить WH_MSG но большинство обламывал.
     
  10. CrystalIC

    CrystalIC New Member

    Публикаций:
    0
    Регистрация:
    26 июл 2008
    Сообщения:
    500
    Hardware breakpoints on ports.