Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #94, ОКТЯБРЬ 2006 г.

Иммунитет к троянам

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». В программе есть всего одно место, где встречается вызов строки с таким словом, и оно находится здесь:

Содержание  Вперед на стр. 094-086-2
ttfb: 3.281831741333 ms