Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #61, ДЕКАБРЬ 2005 г.

Кража электронных денег

Крис Касперски ака мыщъх

Спецвыпуск: Хакер, номер #061, стр. 061-064-4


Кстати, еще один вопрос: "Это студенческая общага или серьезная платежная система?" Что стоило при миллионных оборотах (о которых не перестает упоминать реклама) нанять несколько человек для круглосуточной поддержки? Речь в данном случае идет о деньгах! Естественно, для хакеров безопаснее всего совершать кражи либо в полночь, либо в выходные дни.

Что внутри у Keeper'а

Некоторые восхищаются тем, как разработчикам удалось втиснуть в объем Keeper'a так много (опусы есть на www.owebmoney.ru/clashistory.shtml). А что они, собственно, в него вместили? Конечно, в наш век, когда Hello World с трудом вмещается на лазерный диск, программы, занимающие "всего" несколько мегабайт, уже вызывают уважение :).

Основной объем (~2,2 Мб) занимает WMClient.dll, который, собственно, и есть Keeper, он же DCOM-объект, написанный на Microsoft Visual .NET с компиляцией в машинный код, ничем не упакованный и никак не препятствующий своему анализу. Здесь нет ни шифрованного, ни p-кода, ни антиотладочных приемов, ни противодействия дизассемблеру, дамперу, API-шпиону. Ничего! Бери и анализируй. Во всяком случае, версия 2.4.0.3 (на момент написания статьи) ведет себя именно так. Будь разработчики хоть малость поумнее, они либо использовали бы Microsoft Visual C++ 6 (знаменитую "шестерку") плюс любой качественный протектор (например ExeCryptor), либо откомпилировали NET-приложение в p-код, дизассемблировать который намного сложнее.

WebMoney.exe (~180 Кб) - это только "пускалка", и в ней нет ничего интересного. Тем не менее, все-таки стоит дизассемблировать его. Хотя бы затем, чтобы посмеяться над разработчиками и оценить их квалификацию :).

Как ломают Keeper

Будем считать, что на компьютер с установленным Keeper'ом внедрен хакерский код, исполняющийся с пользовательскими привилегиями. То есть условимся, что нам не дали администраторских прав, хотя повысить свои привилегии с "Пользователя" до system в W2K/XP в общем-то не проблема, не говоря уже о 9x, где никакого разделения привилегий отродясь не бывало. Будем действовать в спартанских условиях, приближенным к боевым :). Что мы можем сделать? У нас два пути. Предварительно дизассемблировать Keeper, восстановить протокол обмена с сервером, дождаться, когда будет вставлен носитель, на котором лежит секретный ключ, и... дальше фантазируй сам :).

Но ковыряться в Keeper'е лениво. Дизассемблирование - это кропотливое дело, и на восстановление протокола обмена может уйти не одна неделя. Использование сниферов существенно сокращает этот срок, но меня все равно ломает. Гораздо проще и эффективнее воровать деньги руками самого Keeper'а. Устанавливаешь шпион, который клавиатурный ввод, дожидается ввода WMID или определяет его другими путями: WMID не является секретом ни для кого (первый способ в основном используется вирусами, второй хорош при целенаправленной атаке). Затем в один "прекрасный" момент (после 18 часов или в выходной день) отключается вывод на экран, запускается WebMoney.exe и путем эмуляции клавиатурно-мышиного ввода делается все, что угодно. Например, пополняется кошелек жертвы. А почему бы и нет? Мы же ломаем свой собственный кошелек, верно? Вот его и пополним! Мы же не бандиты, а честные хакеры :).

Назад на стр. 061-064-3  Содержание  Вперед на стр. 061-064-5