POSITIVE HACK DAYS



ОРГАНИЗАТОР

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

  • 22 Августа 2012

     Хакерский клуб на Лужнецкой набережной посетили несколько десятков специалистов по информационной безопасности из различных банков, эксперты ИБ и исследователи уязвимостей.

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

    master1.png

    Рис. Распределение уязвимостей в 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 при отправке определенного заголовка.

    master2.png

    Рис. Значения передаются в скрытом поле HTML-формы, а для шифрования не используются временные значения (PUlUTndVVE0= → =ITNwUTM → MTUwNTI= → 15052)

    Проблема № 4

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

    master3.png

    Рис. Форма восстановления пароля в PHDays I-Bank

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

    master4.png

    Рис. Форма для ввода идентификатора в PHDays I-Bank

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

    master5.png

    Рис. Алгоритм генерации идентификаторов ключевых клиентов в PHDays I-Bank

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

    master6.png

    master7.png

    Рис. Слабая энтропия идентификатора сессии

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

    Проблема № 5

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

    Проблема № 6

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

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

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

    master8.png

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

    master9.png

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

    master10.png

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

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

    Проблема № 7

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

    Проблема № 8

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

    master11.png

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

    master12.png

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

    Проблема № 9

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

    master13.png

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

    Как это было на 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

     



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

    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, и НЕ ЯВЛЯТСЯ системой, которая действительно работает в каком-либо из существующих банков.

Возврат к списку