Анти KeyLogger

Тема в разделе "WASM.WIN32", создана пользователем DrSex, 28 окт 2006.

  1. DrSex

    DrSex Юрий

    Публикаций:
    0
    Регистрация:
    1 апр 2005
    Сообщения:
    98
    Адрес:
    Россия
    Можно ли стандартными API написать AntiKeyLogger?
    Или хотя бы узнать чьи процессы имеют хук на клаву??
    Есть ли уже готовые решения??
     
  2. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    AVZ антивирус Зайцева :)
     
  3. DrSex

    DrSex Юрий

    Публикаций:
    0
    Регистрация:
    1 апр 2005
    Сообщения:
    98
    Адрес:
    Россия
    А как нибудь побыстрее??
    Ситуация: сидит класс студентов. Подходит админ, вводит пароль. Надо чтобы перед вводом админ узнал из каких процессов поставлен хук.
     
  4. DrSex

    DrSex Юрий

    Публикаций:
    0
    Регистрация:
    1 апр 2005
    Сообщения:
    98
    Адрес:
    Россия
    Да еще - что это за антивирус??
     
  5. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    да куда проще
    http://z-oleg.com/secur/avz/
     
  6. DrSex

    DrSex Юрий

    Публикаций:
    0
    Регистрация:
    1 апр 2005
    Сообщения:
    98
    Адрес:
    Россия
    Thanks !!! *)
     
  7. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Asterix
    Больше похоже на антиспайвар, чем на авер.
     
  8. rav

    rav New Member

    Публикаций:
    0
    Регистрация:
    19 июл 2004
    Сообщения:
    159
    Адрес:
    Москва
    Нет, нельзя.
     
  9. t1LAN

    t1LAN Алексей

    Публикаций:
    0
    Регистрация:
    10 июл 2006
    Сообщения:
    10
    Адрес:
    Россия
    это и есть больше антиспайвар. )
     
  10. green_newbie

    green_newbie New Member

    Публикаций:
    0
    Регистрация:
    18 окт 2006
    Сообщения:
    51
    Список хуков в системе, насколько я знаю, хранится где-то внутри user32.dll. Лично я бы решил эту проблему интерсептом SetWindowsHookEx, загружаться в процессы, которые юзают user32.dll можно через AppInit_Dlls.
    Не исключено также, что клава хукается с помощью драйвера- фильтра(сырцы подобного есть на sysinternals.com)
     
  11. ZaitsevOleg

    ZaitsevOleg New Member

    Публикаций:
    0
    Регистрация:
    30 окт 2006
    Сообщения:
    1
    Если резюмировать методы и контрметоды, получится следующее:
    1. Хук. Его можно словить с помощью отладочного хука или чего-то вроде моего AVZ. Библиотека слишком заметна и выдает его. Поведенческий анализатор в антикейлоггере AVZ по сути хукает кучу функиций и выводит в лог данные о их использованиии
    2. Глобальный хук. Отличается от обычного тем, что обработчик может быть в теле EXE - принцип тот-же, но заметность меньше. Поймать сложнее - только глобальный перехват SetWindowsHookEx и мониторинг
    3. Циклический опрос клавиатуры. Стандартным API не ловится, ловится перехватом функций, отвечающих за опрос клавиатуры и мониторингом
    4. Драйвер-фильтр. Его можно изловить, изучив стек драйвера клавиатуры, но возможны ложные срабатывания
    5. Подмена драйвера клавиатуры - ловится проверкой его ЭЦП по каталогу безопасности Microsoft
    6. Кейлоггер-руткит UserMode. Идея - перехват API, отвечающего за получение сообщений - далее отфильтровываются сообщения типа "клавиатура" и дело в шляпе. Помогает даже от экранных клавиатур ... ловится антируткитом, который показывет перехваты в user32.dll
    7. Ядреный кейлоггер-руткит. Аналог 6 в режиме ядра, поймать его сложно - нужно отслеживать перехваты в KeSDT Shadow и целостность ядреного кода

    По моей статистике в основном доминируют методы 1,2,3; реже - 4. Студент скорее всего применит метод 1, ибо его исходники лежат на каждом углу. Слудовательно, можно применить отладочный хук + контроль за левыми DLL, внедряющимися в GUI процессы, в большинстве случаев этого имхо достаточно
     
  12. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    green_newbie
    Судя по "где-то внутри user32.dll" матчасть мы не знаем. Об основных методах известно заинтересованным, а вот новичкам можно почитать книгу того же Зайцева о руткитах либо о клавиатурных шпионах (в первой всё собрано в куче).
     
  13. rav

    rav New Member

    Публикаций:
    0
    Регистрация:
    19 июл 2004
    Сообщения:
    159
    Адрес:
    Москва
    Легко обходится.
     
  14. DelExe

    DelExe New Member

    Публикаций:
    0
    Регистрация:
    22 авг 2005
    Сообщения:
    165
    Уж извините, но стандартными Win32Api этот сделать не представляется возможным. Мелкомягкие такой интерфейс 3-ему кольцу не предоставили.

    То о чем Вы говорите, в полной мере, возможно лишь с уровня ядра. Когда-то данный вопрос уже обсуждался на форуме. Ответ следующий (привожу для W2k):
    1) Получить KTEB
    2) Получить THREADINFO (или как её называют _WIN32_THREAD – в Шрайбера).
    pThread = [KTEB + 124h]
    3) Получить стуктуру десктопа DESKTOPINFO (недокументированна)
    pDesktopInfo = [pThread + 34h]
    4) После чего получить доступ к масиву хуков HOOK установленных для даного потока
    pHook = (pDesktopInfo + 10h) + i*4
    5) Имея в наличии хотя бы одну из стуктур HOOK можна пройтитсь по связанному списку для получения всех остальных.
    6) Отбрасывая ненужные типы набрать список хуков для клавы с их хенделами, DLL или именем процесса, адресами процедур…
    7) Становиться возможным закрывать “неугодные” хуки.
    Код (Text):
    1. Структура хука для W2k:
    2. typedef struct _OBJECT_USER_HOOK
    3. {
    4.     DWORD dwHANDLE_HOOK;
    5.     DWORD dwReference;//??
    6.     PDWORD unknow0;
    7.     PDWORD DesktopObject;
    8.     DWORD dwCurrentAddrStruct;
    9.     DWORD uknow1;
    10.     DWORD dwTypeHOOK;
    11.     DWORD dwProccAddr;
    12.     DWORD dwflags;
    13.     DWORD dwIndexMasAtom;
    14.    
    15. } OBJECT_USER_HOOK,
    16.     *POBJECT_USER_HOOK,
    17.     **PPOBJECT_USER_HOOK;
    P.S. Наведённый алгоритм не является единственным, возможен доступ к структуре хука другими способами, но только в ядре. Более того – в WinXP структуры, которые я называл, изменились. А значит – другие смещения. Что там в Winst-e я не интересовался.