Иммунитет к троянам BUG(O)R Хакер, номер #094, стр. 094-086-1 (zona_bugor@bk.ru, http://hunger.ru) Модификация алгоритмов шифрования в программах Все мы знаем, что запретный плод сладок, и, наверное, у многих возникает желание получить доступ к чужим данным – будь то красивая аська или почтовый ящик. Но, как правило, от сокровенной информации нас ограждает пароль. Многие люди для его хищения используют трояны, что само по себе подло. В общем случае такие программы дают возможность узнать пароль. Неважно, каким образом, но конечный результат всегда один: заветный пассворд — в лапах хакера. Так давай раз и навсегда покончим с этим. Сегодня я расскажу об универсальном методе защиты от троянцев. Начало. Применение этого революционного метода мы разберем на самом популярном альтернативном ICQ-клиенте - QIP. На момент написания статьи последней версией является QIP 2005 Build 7960. QIP и прочие подобные программы хранят пароли от учетных записей (в нашем случае - это icq-номер) различными способами - будь-то файл или реестр. Перед сохранением пароля от учетной записи на винт он проходит несколько стадий, где над ним осуществляются какие-то надругательства. Ведь пассворд нужно сначала зашифровать и скрыть от посторонних глаз, а потом, наоборот, расшифровать, чтобы отправить ключевое слово по сети. В общем случае схема шифрования и расшифровки выглядит так: [расшифрованный пароль] >> [действия программы, направленные на шифрование пароля] >> [зашифрованный пароль] С точностью до наоборот выглядит процесс расшифровки: [зашифрованный пароль] >> [действия программы, осуществляющиеся при зашифровке] >> [расшифрованный пароль] Программы, которые воруют пароли, как правило, используют в своей основе набор действий по расшифровке ключа. Другими словами, их авторы просто рипают алгоритм расшифровки и используют в своих программах. Но что будет, если мы переделаем схемы таким образом: [расшифрованный пароль] >> [действия программы] >> [наша процедура, в которую мы передадим зашифрованный пароль, чтобы он зашифровался еще больше:) ] >> [зашифрованный пароль] Процесс расшифровки тоже преображается: [зашифрованный пароль] >> [наша процедура] >> [действия программы по расшифровке] >> [расшифрованный пароль] Проще говоря, мы допишем в уже готовую программу еще один виток действий, который скроет наш пароль от всяких нехороших людей :). Тогда все трояны мигом пойдут лесом. Но хватит лить воду на мельницу - пора переходить к кодингу. Из инструментов нам понадобится OllyDBG (http://ollydbg.de) и PETools (http://uinc.ru/files/neox/PE_Tools.shtml). Прежде всего нам надо подготовить файл qip.exe для работы с ним. Опытным путем было установлено, что в qip.exe есть проверка контрольной суммы файла, так как при изменении в файле значения хоть одного байта мы будем лицезреть сообщение с надписью: «Sorry, qip.exe file is corrupted.». Это в нашем случае недопустимо, так как нам придется исправить в программе не один и даже не два байта, мы должны убрать эту проверку целостности файла. Делается это очень просто. Загружаем qip.exe в отладчик, далее — ПКМ > Search for > All referenced text strings. Там сделаем поиск по слову «corrupted». В программе есть всего одно место, где встречается вызов строки с таким словом, и оно находится здесь: |