Приём "обхода" кейлоггеров, использующих Hooks для слежения за клавиатурой
Иногда, при написании приложений, где производится ввод каких-либо важных данных (пассворды, например), необходимо как-то защитить эти самые данные от перехвата различного вида кейлоггерами.
Немного поразмыслив, я написал библиотеку, позволяющую «вычислять» и отгружать библиотеки, которые подключились к приложению. Примерную схему работы моей антихук-системы можно описать так:
Перечисляем все подгруженные к приложению библиотеки. Этот список будет «эталонным» для последующей проверки, т.е. подразумевается, что в этот список не попадет dll кейлоггера > Устанавливаем таймер на процедуру сравнения текущего состояния загруженных библиотек с эталонным. Если обнаружена новая либа, подгрузившаяся к приложению, мы спрашиваем пользователя (с указанием полного пути к либе), нужно ли её отгрузить. Зачем спрашивать? Дело в том, что если подгрузившаяся библиотека будет выполнять полезные функции (например, это будет DLL Punto Switcher’а, который также использует хуки, как и кейлоггеры), то выгрузка этой библиотеки повлечет за собой выгрузку библиотеки из импорта всех приложений в системе, что явно не понравится пользователю.
Буду очень благодарен людям, которые потестят данную "защиту" на различных кейлоггерах, использующие разные виды хуков (конкретно интересны хуки на создание окна (на CBT сообщения)) и соообщившие о результатах мне.
Предложенный мной способ не лишен недостатков, поэтому буду рад выслушать идеи по поводу других реализации.
Источник
Иногда, при написании приложений, где производится ввод каких-либо важных данных (пассворды, например), необходимо как-то защитить эти самые данные от перехвата различного вида кейлоггерами.
Немного поразмыслив, я написал библиотеку, позволяющую «вычислять» и отгружать библиотеки, которые подключились к приложению. Примерную схему работы моей антихук-системы можно описать так:
Перечисляем все подгруженные к приложению библиотеки. Этот список будет «эталонным» для последующей проверки, т.е. подразумевается, что в этот список не попадет dll кейлоггера > Устанавливаем таймер на процедуру сравнения текущего состояния загруженных библиотек с эталонным. Если обнаружена новая либа, подгрузившаяся к приложению, мы спрашиваем пользователя (с указанием полного пути к либе), нужно ли её отгрузить. Зачем спрашивать? Дело в том, что если подгрузившаяся библиотека будет выполнять полезные функции (например, это будет DLL Punto Switcher’а, который также использует хуки, как и кейлоггеры), то выгрузка этой библиотеки повлечет за собой выгрузку библиотеки из импорта всех приложений в системе, что явно не понравится пользователю.
Буду очень благодарен людям, которые потестят данную "защиту" на различных кейлоггерах, использующие разные виды хуков (конкретно интересны хуки на создание окна (на CBT сообщения)) и соообщившие о результатах мне.
Предложенный мной способ не лишен недостатков, поэтому буду рад выслушать идеи по поводу других реализации.
Источник