Здравствуйте! Возник такой вопрос: можно ли обмануть клавиатурный (и мышиный) шпион, работающий в kernel-mode (также и user-mode), т.е. - создать "шумы", не позволяющие перехватывать ввод пароля, или еще как-нибудь. Нужно обезопасить конкретное приложение, а не систему в целом, но защитить желательно так, чтобы "честно" было. Т.е. надежно на 100% (или, хотя-бы - 99,99% ). Можно ли имитировать (программно, из своего драйвера) нажатия клавиш так, чтобы драйвер или программа-шпион ошиблись и посчитали искусственно создаваемые "шумы" как реальные нажатия клавиш. И еще вопросик: к тем, кто использовал Klog. Со всеми ли типами клавиатур работает данный драйвер? Нет ли проблемы, которую отметил Four-F в своем примере, когда драйвер некорректно работает с USB-устройствами? У меня нет USB клавиатуры, поэтому я не могу проверить. И, если он нормально работает с USB, нет ли ссылок на подобные универсальные перехватчики мыши (желательно на C, но можно и на Asm).
Шумы? интересно конечно, если из-за одно кейлоггера создавать программные, или еще лучше, аппаратные шумы... И зачем обманывать, если можно просто отследить, а потом бахнуть? Любой кейлоггер теряет свой смысл, если в нем не имеется возможность отсылать емейл, или хоть как-то работать с сеткой. Хороший фаерволл-это раз. Можно. Но и все остальные проги так же будут воспринимать эти "шумы", как нажатие клавиш. А если будешь отсылать нажатые клавишы конкретному приложению-кейлоггеру, то какой смысл? проще просто бахнуть кейлоггер.
Вы меня не совсем правильно поняли. Ситуация такая: есть приложение, работающе, например с БД. При запуске данной программы производится авторизация - пользователь вводит свои данные и СУБД принимает/отклоняет соединение. Так вот, если keylogger перехватит данные, он (или программа, идущая с ним дополнительно) сможет запустить приложение и авторизоваться в СУБД, а затем выполнить какие-то действия от имени пользователя. Так вот этого и нельзя допустить. P.S.: Описаная ситуация схематична, СУБД может быть локальной, а может и не быть СУБД вообще (=> Firewall - не то решение), т.е. авторизация пользователя в любом другом (возможно, локальном) приложении. Нужно обеспечить невозможность перехвата/подстановки пароля для конкретного приложения. А если будешь отсылать нажатые клавишы конкретному приложению-кейлоггеру, то какой смысл? проще просто бахнуть кейлоггер. А узнать-то как, что это кейлоггер по SDT etc.? Пока перекроешь все возможности перехвата - времени куча уйдет, да и нет гарантии, что не найдут новое решение для обмана, а писать придется тонну кода (Antikeylogger - целая спец. программа, писать которую нет ни времени, ни желания).
Я для этих целей использовал не кейлогер, а перехватывал интерфейсы COM обьектов работающих с СУБД. Это практически невозможно. Есть гарантия, что найдут (и очень быстро), если твоей программой будут пользоваться. Если же программа нафиг никому не нужна, то никто ничего искать не будет. Обойти Antikeylogger - задача на пару минут.
To Ms-Rem Есть гарантия, что найдут (и очень быстро), если твоей программой будут пользоваться. Если же программа нафиг никому не нужна, то никто ничего искать не будет. Надеюсь, что нужна. Хорошо, скажите, можно ли создать такую имитацию, которую драйвер мог бы принять за нажатие клавиш. Только 100%, чтобы нельзя было отличить от аппаратного нажатия. Для распознавания нажатий в распоряжении все права и драйвер. Если возможно, то как обмануть такую систему? Желательно с кодом
Такое невозможно даже теоретически. Имхо лучший выход - это сделать что-то типа экранной клавиатуры в программе, чтобы юзер вводил пароль с нее. А для большего мазохизма можно сделать порядок клавиш на экранной клавиатуре случайным, а текст на них делать картинками с защитой от распознавания. Этот метод требует интеграции такой фичи в программу, но и перехватить вводимый таким образом текст можно будет лишь написав кейлогер предназначеный специально для этой программы. Только юзера от таких фич будут крыть разработчика страшным матом...
"Такое невозможно даже теоретически. " Прошу прощения, за возможно нудное замечание, просто появилась одна идейка. Значит, если встроить в стек клавиатуры драйвер, наподобие Klog, то обмануть его программно не удастся? Т.е. нет способа перехитрить драйвер и послать какой-то программно-инициированный код с тем, чтобы этот Klog (к примеру) подумал, что это пользователь ткнул кнопочку на клаве/мышке.
Klog обмануть удасться, я говорю о невозможность сымитировать нажатие клавиши так, чтобы никто и накогда (при всем желании и умении) не смог написать программу которая сможет это нажатие отличить от настоящего.
Спасибо! Будем накапливать "знания и умения". Если есть исходники - посодействуйте в процессе накопления.
ksu_ant если ты хочеш сделать безопасным ввод пароля в своей проге то сделай например так выводиш на экран цифры от 0 до 9 в случайной последовалельности и пусть юзер наберает свой пароль кликая мышкой.
to doctor_Ice: Спасибо за подсказку, эту идею, в сочетании с предложением Ms-Rem, я рассматриваю как одну из вероятных в разработке. В связи с этим возникает вопрос: нет ли примеров (исходников) создания изображения, защищенного от распознавания, так как изобретать велосипед - нет ни времени, ни желания. to BITk0der: Это понятно, но вопрос и возник из-за того, что тяжело гарантировать, что мой драйвер будет ПЕРВЫМ. Из различных обсуждений стало ясно, что вражеский драйвер (назовем его так) имеет возможность встроиться "ниже" доверенного, а, следовательно, может вводить в заблуждение драйвер защиты и систему авторизации. Если я в этом ошибаюсь, - будет просто замечательно.
ksu_ant В связи с этим возникает вопрос: нет ли примеров (исходников) создания изображения, защищенного от распознавания, так как изобретать велосипед - нет ни времени, ни желания. вращение шум и эффект линзы
ksu_ant если рассматривать вопрос защиты от, именно, вражеского хук-а, то можно просто просмотривать все хуки, и подозрительные убивать, а еще же есть такая тема, что можно ставить хуки на хуки...тогда в любом случае твой хук будет первым...
Хуки-то ладно, наставить можно. Но вот в чем дело: но, как мы обсуждали выше с Ms-Rem, можно (хотя-бы теоретически) вклиниться в процесс обработки сигналов и посылать фальшивые пакеты, имитирующие нажатия клавиш пользователем. Это приведет к компрометации всей подсистемы авторизации. В смысле, если вредоносный объект каким-либо образом получит пароль пользователя (допустим, используя тот же перехват). Не могу же я все события клавиатуры шифровать драйвером - ОС и программы то работать должны. Да и если как-нибудь злоумышленник ухитрится расположить свой перехватчик ниже моего (учитывая предыдущие ответы, - это возможно), то даже шифрование теряет смысл.
ksu_ant нет ссылок не... да и зачем задача вообщем тривиальна главное грамотный шум под цвет текста почти и ломанные линии сплайны...