Тема: Безпека онлайн-банкінга очима кодера
Першоджерело: http://covetouzeyez.blog.net.ua/2013/02/06/bezpeka-onlajn-bankinha-ochyma-kodera/
1. Вступ
Метою написання цього тютора є злоба і ненависть до BIFIT`а бажання відкрити очі кліентів онлайн банкінга (далі скорочено до ОБ) на низький рівень захисту їх банківських рахунків. Я теж користуюсь послугами ОБ за допомогою ПО iBank BIFIT`а та з подивом дізнався, як легко злодій може викрасти ключі від мого рахунку. Сподіваюсь, що після прочитання цієї статті клієнти ОБ стануть більш обачні. Можливо ця стаття викличе увагу банківських менеджерів(та служби безпеки :-)) і вони стануть приділяти більше уваги інформуванню клієнтів про ризики використання ОБ. Усе тут написане не є великим секретом для BIFIT`а/Банків/програмістів, які з цим стикалися. Мета статті - наочно показати вразливість, а не використати її, тому долучений до статті код не надсилає награбоване на пошту/адмінку :-)
2. Огдяд ПЗ Клієнт-Банк для ОБ від компанії BIFIT
Команія BIFIT є лідером на пострадянському просторі в сфері розробки та впровадження ПЗ для ОБ. Ось що про це написано на російському сайті команії:
На 1 января 2012 года система «iBank 2» внедрена и промышленно эксплуатируется в 837 российских банках и филиалах, успешно обслуживая более 650 тысяч корпоративных и более 450 тысяч частных клиентов.
Команія пропонує наступні різновиди ПЗ:
* 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» (тобто його клієнтська частина), написане на 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 2».
Злоумышленники используют доступ к системе от имени демонстрационных клиентов для тестирования и отладки вредоносных программ, создаваемых с целью хищения средств клиентов.
В связи с этим компания «БИФИТ» закрыла демонстрационный доступ к тестовому экземпляру системы «iBank 2» и заблокировала соответствующие ключи проверки подписи демонстрационных клиентов, а также убрала из свободного доступа все дистрибутивы системы «iBank 2» и документацию.
Для получения дистрибутивов, пакетов обновления системы и документации обращайтесь в службу сопровождения компании «БИФИТ» по электронной почте: support@bifit.com.
Здавалося б, що мені саме час зайти на сайт свого банку й використати свій ключ од рахунку (котрого в вас може й не бути), але iBank використовується в багатьох фінансових установах, котрі не так параноїдально ставляться до своєї безпеки. На час написання статті відкритим залишається УкрСібБанк https://my.ukrsibbank.com/ua/sme/operat … ess/login/
Пізніше додам посилання на гітхаб