1. Вступление Целью написания этого тьютора являеться злоба и ненависть к BIFIT`у желание открыть глаза клиентов онлайн банкинга (далее сокр. до ОБ) на низкий уровень защиты их банковских счетов. Я сам пользуюсь услугами ОБ с помощью ПО iBank BIFIT`а и с удивлением узнал, насколько легко злоумышленник может украсть ключи от моего счета. Надеюсь что после прочтения данной статьи клиенты ОБ станут более осмотрительны. Возможно данная статья привлечет внимание банковских менеджеров (со службой безопасности ) и они станут больше уделять внимания информированию клиентов о рисках ОБ. Всё что я здесь описал не являеться большим секретом для BIFIT`а/Банков/системных программистов, которые с этим сталкивались. Цель статьи только наглядно показать уязвимость, а не использовать ее, поэтому прикрепленный к статье код не отправляет награбленное на почту/админку 2. Обзор ПО Клиент-Банк для ОБ от компании BIFIT Комания BIFIT лидер на постсоветском пространстве в сфере разработки и внедрения ПО для ОБ. Вот что об этом написано на российском сайте комании: Комания предлагает такие версии клиентов: * PC-Банкинг * Интернет-банкинг Остальные сервисы спецефичны и редко используються (Enterprise-Банкинг(интеграция с 1С), SMS-Банкинг, Phone-Банкинг). В качестве хранилища ключей «iBank 2» использует файлы, чип-карты и токены. В этой статье мы ограничимся рассмотрением уязвимостей ОБ на примере Интернет-банкинга (PC-Банкинг работает аналогично) с использованием файловых ключей на платформе Windows х86. Я также уверен в уязвимости других версий банкинга и носителей ключей с помощью MITM атаки, но лень копаться без вознаграждения детальных исследований пока еще не проводил. 3. Среда выполнения клиентского ПО «iBank 2» для ОБ Ни для кого не секрет, что в подавляющем большинстве в качестве десктопной ОС используеться ОС семейства Windows. Она имеет огромное количество "фич", плачевно влияющих на ее защищенность. Хотя наиболее вопиющие дыры залатаны/остались в прошлом, вроде RPC DCOM, прямого доступа к портам ввода\вывода и адресному пространству ядра из пользовательских приложений(Windows 9x/ME), но тяжелый балласт совместимости с уже существующим ПО не дает майкрософту возможности кардинально поменять свое отношение к проблемам безопасности. Главная фича это почти рутовые права простого пользователя, из которой вытекают остальные фичи: возможности читать/писать из/в адресное пространство чужого процесса, внедрение своей DLL в почти любой процесс и система оконных сообщений, унаследованная от Windows 3.11, которую легко перехватить. Хотя большинство проблем решаемо установкой стронних программ, но из коробки защита оставляет желать лучшего. Пользователя доят майкрософт, антивирусные компании и хакеры (одновременно!) и менять это положение вещей никому не выгодно. А банковские служащие либо молчат о возможных рисках использования ОБ, либо заставляют подписать кабальное соглашение, в котором снимают с себя ответственность за безопасность ваших средств. ПО «iBank 2», как PC-Банкинг, так Интернет-банкинг, написаны на Java и выполняеться в JavaVM SE, которая, в свою очередь, являеться простым Windows приложением. 4. Код, использующий уязвимости Проект состоит из 2х частей: DLL, которая выполняеться в адресном пространстве JavaVM SE, со всеми основными функциями и EXE, который содержит детектор окна банковского клиента с "интерфейсом" (значек в трее с единственным пунктом меню - "Exit"). Код написан на Assembler (FASM). FASM мой любимый асм компилятор и на это есть много причин. Главные - бесплатный, шустрый, с удобным встроеным редактором, поддержкой x86-64, мощным макроязыком и встроеным линкером, а также INTEL синтаксисом, к которому я привык. Единственный минус фасма - отсуствие многих важных хидеров по сравнению с пакетом MASM32. Для EXE я использовал PureBasic. Алгоритм работы: * идентификация запущенного ПО «iBank 2» в JavaVM SE * внедрение нашей DLL в JavaVM SE * запись всех нажатых клавиш кейлоггером * перехват WinAPI GetFileAttributesExW сплайсингом * в новом обработчике GetFileAttributesExW проверяем все файлы на сигнатуру "iBKS" в начале файла * при закрытии окна записываем результаты работы сессии ПО «iBank 2» (скриншот, нажатия клавиш, файловое хранилище ключей) * открываем "награбленное" в папке 5. Как протестировать код? Заходим на сайт BIFIT`a, кликаем на "Дистрибутивы" и читаем: Казалось бы тут я должен был зайти на сайт своего банка и достать свой ключ к счету (которого у вас может и не быть), но iBank установлен во многих финансовых учереждениях, которые не так параноидально относяться к своей безопасности. На момент написания статьи открытым остаеться УкрСибБанк https://my.ukrsibbank.com/ua/sme/operations/staraccess/login/ исходники + бинарники: http://www.sendspace.com/file/af4s76 pass:12345