За сколько можно взломать мобильную сеть?
Надежно ли электронное правительство
в эпоху WikiLeaks и Anonymous?

Взлом АСУ ТП – голливудские байки
или реалии сегодняшнего дня?
Интернет-банкинг – возможна ли победа
в битве с мошенниками?

Киберпреступность, кибершпионаж, кибервойна. Где грань?

среда, 22 августа 2012 г.

Типичные уязвимости систем ДБО

В московском хакспейсе Neúron состоялся мастер-класс, посвященный итогам конкурса «Большой ку$h» (PHDays 2012), где были рассмотрены типичные уязвимости в системах дистанционного банковского обслуживания. Хакерский клуб на Лужнецкой набережной посетили несколько десятков специалистов по информационной безопасности из различных банков, эксперты ИБ и исследователи уязвимостей.

Напомним, что специально для этого соревнования мы с нуля разработали собственную систему ДБО и заложили в нее типичные уязвимости, выявленные экспертами Positive Technologies в ходе работ по анализу защищенности таких систем. Разработка получила название PHDays I-Bank и представляла собой типичный интернет-банк с веб-интерфейсом, PIN-кодами для доступа к счету и процессингом. Всего в PHDays I-Bank было заложено 200 уязвимостей. Следует отметить, что уязвимости систем ДБО выходят за рамки классических веб-уязвимостей (таких как XSS или SQL Injection): по большей части уязвимости в PHDays I-Bank логические.



На площадке хакспейса Neúron выступили эксперты компании Positive Technologies (Денис Баранов, Глеб Грицай и Артем Чайкин) с презентацией «Уязвимости ДБО на примере PHDays I-Bank», в ходе которой рассказали о типичных проблемах защищенности систем дистанционного банковского обслуживания.

Вкратце перечислим основные проблемы систем ДБО, рассмотренные на мастер-классе. Большая часть уязвимостей присутствовала в системе PHDays I-Bank.

Проблема № 1

Предсказуемые идентификаторы пользователей. В PHDays I-Bank, как и почти во всех реальных ДБО, идентификатор пользователя состоит из цифр. Примеры идентификаторов: 1000001, 1000002. Этот недостаток позволяет осуществлять атаки, направленные на подбор (см. проблему № 3).

Проблема № 2

Слабая парольная политика. Пользователь способен заменить сложный пароль, установленный зачастую по умолчанию, на совсем простой, даже состоящий из одной цифры! Другая распространенная ошибка: системой проверяется только длина пароля, поэтому легко встретить пароли: 1234567 и 12345678. Кроме того, из-за проверки по регулярному выражению часто встречаются словарные пароли вида, например, P@ssw0rd.

Проблема № 3

Неэффективная защита от атак, направленных на подбор (Brute Force). В системах ДБО, как правило, используется три метода противодействия брутфорсу — блокирование учетной записи, блокирование IP-адреса, а также использование технологии CAPTCHA.

  • Блокирование, которое происходит после нескольких неудачных попыток аутентификации (обычно 3 или 5), не является оптимальным решением, обойти такую защиту несложно. Хакер может осуществлять атаки на целевого пользователя, а если ему известны все идентификаторы — реализовать масштабную DOS-атаку. В последнем случае подбирается не пароль к идентификатору, а идентификаторы к паролю. Кроме того, как правило, чтобы учетная запись была разблокирована, нужно позвонить в офис банка.
  • Блокирование IP-адреса — также опрометчивое решение. Во многих компаниях сотрудники «сидят» за одним общим внешний IP-адресом. Множественные попытки аутентификации могут выглядеть как попытка подбора пароля; итог — блокирование внешнего IP-адреса.
  • Использование «капчи» также подвержено различным рискам (первые две уязвимости присутствуют у PHDays I-Bank): повторная отправка одного и того же значения, передача значений в скрытом поле HTML-формы, передача пустого значения, высокая вероятность некорректной проверки (достаточно, чтобы совпала длина или присутствовали некоторые символы), а также отсутствие проверки CAPTCHA при отправке определенного заголовка.


Проблема № 4

Восстановление пароля. Возможность восстановления забытого пароля присутствует почти в каждом веб-приложении, и PHDays I-Bank — не исключение. Для некоторых пользователей I-Bank предусмотрена возможность восстановления пароля через веб-форму. Остальные пользователи, по замыслу, могут восстановить пароль, только обратившись в отделение банка.



Если для восстановления пароля нужно ввести идентификатор, а не адрес электронной почты, то злоумышленник способен узнать существующие в системе идентификаторы.



В PHDays I-Bank идентификаторы ключевых клиентов генерируются по специальному алгоритму.

Как видно, идентификатор сессии состоит всего из 4 символов. Все они цифровые, что значительно уменьшает энтропию. Кроме того, идентификатор сессии статичный: он изменяется только в том случае, если пользователь обновляет пароль.



Ключ, который необходимо ввести для восстановления пароля, генерируется с недостаточной энтропией. Чтобы подобрать ключ, необходимо перебрать не более 250 значений! После этого будет установлен новый пароль. В тех случаях, когда используются собственные механизмы сессии, надежность идентификатора играет важную роль.

Проблема № 5

Проблемы разграничения привилегий. Если возможность переводить деньги с чужих счетов — совсем редкое явление, то открытые лазейки для доступа к другим пользовательским данным в системах ДБО еще встречаются. Эксперты сталкивались с ошибками, позволяющими отправлять сообщения в техподдержку от лица любого пользователя ДБО, а также редактировать шаблоны платежей других пользователей. Такие уязвимости в PHDays I-Bank включены не были.

Проблема № 6

One-time password (OTP). Одноразовые пароли используются для защиты от не санкционированных пользователем действий — выполнения транзакций, изменения пароля, редактирования личных данных. OTP может запрашиваться как после первичной аутентификации (логин и пароль), так и перед выполнением каждой транзакции (или другого действия).

Во-первых, OTP не запрашивается при переводе небольших сумм (например, до 100 долл.), во-вторых, не исключена повторная отправка одного и того же OTP, в-третьих, OTP часто легко предугадать, в-четвертых, некоторые пользователи отключают OTP, а в-пятых — можно обойти шаг проверки OTP и сразу выполнить транзакцию.

В PHDays I-Bank были реализованы два типа одноразовых паролей: эмуляция использования внешнего устройства (в коде это было осуществлено в классе TransactionA) и одноразовые пароли на скретч-картах (в классе TransactionB).



Предугадать OTP невозможно. Но при этом можно обойти шаг проверки и выполнить транзакцию напрямую! Заменяем step3 на step4 (One-time password, TransactionA)



Алгоритм генерации OTP ненадежен (One-time password, TransactionB)



OTP может принимать только два значения (One-time password, TransactionB)

Бывает так, что OTP запрашивается только при проведении транзакций, но другие действия можно сделать без ввода одноразового пароля (отправить сообщение в техподдержку, изменить пароль, изменить или создать шаблон платежа, открыть новый счет).

Проблема № 7

Изменение шаблона платежа. Использование шаблонов платежей позволяет сократить время на ввод однотипных данных — номера счета получателя и ФИО получателя. Если у злоумышленника есть возможность изменять данные шаблона, то он без труда сможет заменить счет получателя, указав свой. Пользователь, скорее всего, не заметит подмены и подтвердит выполнение транзакции.

Проблема № 8

HelpDesk — обход аутентификации. Помимо системы ДБО специалистами Positive Technologies была реализована примитивная система для сотрудников банка — HelpDesk. Попав в систему «не для всех», можно получить достаточное количество информации, которая значительно упростит взлом целевой системы. На практике «злоумышленник» мог ознакомиться с парольной политикой, информацией о механизмах защиты и даже паролях пользователя.


Для эксплуатации уязвимости в тестовой системе HelpDesk хорошо подходила утилита Modify Headers

Утилита Modify Headers позволяет, не зная логин или пароль, обходить аутентификацию с помощью передачи в каждом HTTP-запросе специального заголовка

Проблема № 9

HelpDesk — Race condition. Если отправлять много запросов, то возможна ситуация, когда запросы будут выполняться одновременно. Чтобы защититься от Race condition и исключить ситуацию появления денег из ниоткуда, nginx был настроен на блокирование слишком частых обращений, а именно — не более трех запросов в секунду к сценарию, осуществляющему транзакции. На виртуальных машинах nginx установлен не был, и один из участников обнаружил проблему Race condition.

Если отправлять много запросов, то возможна ситуация, при которой запросы будут выполняться одновременно

Как это было на PHDays

За сутки до начала соревнования участникам был предоставлен исходный код систем, а также виртуальная машина с установленным клиентом PHDays I-Bank. Участники должны воспользоваться обнаруженными уязвимостями — на этот этап выделялось 20—30 минут. Важную роль в успехе играли автоматизация и многопоточность.

Стратегию прохождение конкурса можно было разделить на две основные задачи. Во-первых, необходимо было получить доступ к учетной записи, используя простые и словарные пароли, слабую энтропию ключа для восстановления пароля и слабую энтропию идентификатора сессии. Во-вторых, требовалось обойти OTP. Способы обхода OTP отличались для разных учетных записей – и участникам нужно было предусмотреть различные способы обхода.  

Призовой фонд «Большого куша» составлял 20 000 руб. Деньги в системе PHDays I-Bank были распределены по следующему принципу: чем сложнее было получить доступ к определенному сегменту, тем большая сумма там находилась. Учетные записи, с которых осуществлялась демонстрация, имели слабые пароли: 1234567 и password. Участники также имели уязвимые учетные записи: идентификатор сессии обладал слабой энтропией.

P. S. 18 августа состоялся еще один мастер-класс по конкурсу «Большой ку$h». На этот раз — удаленный, в рамках конференции по практической безопасности SecurIT 2012, которая в настоящее время проходит в Индии. Материалы выступлений приведены ниже.

Презентации выступлений на русском и английском языках:

Типовые уязвимости систем ДБО from Positive Hack Days



Typical Vulnerabilities of E-Banking Systems from Positive Hack Days



Запись мастер-класса на английском языке доступна по следующим ссылкам:

http://my.comdi.com/record/69891/ — Part 1
http://my.comdi.com/record/69739/ — Part 2
http://my.comdi.com/record/69885/ — Part 3
http://my.comdi.com/record/69890/ — Part 4

Ну а желающие изучить код интернет-банка могут скачать образ готовой системы по следующей ссылке: http://downloads.phdays.com/phdays_ibank_vm.zip

P. P. S. Система PHDays I-Bank была разработана специально для конкурсов в рамках форума PHDays 2012, и НЕ ЯВЛЯТСЯ системой, которая действительно работает в каком-либо из существующих банков.

Комментариев нет:

Отправить комментарий