Top Banner
Типичная атака на систему ДБО Евгения Поцелуевская [email protected]
38

Демонстрация атаки на ДБО

Nov 11, 2014

Download

Documents

Dmitry Evteev

 
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Демонстрация атаки на ДБО

Типичная атака на систему ДБО

Евгения Поцелуевская[email protected]

Page 2: Демонстрация атаки на ДБО

Positive Technologies – это:

MaxPatrol – уникальная система анализа

защищенности и соответствия стандартам

XSpider – инновационный сканер безопасности

Positive Research – один из крупнейших

исследовательских центров в Европе

Positive Hack Days – международный форум по

информационной безопасности

Page 3: Демонстрация атаки на ДБО

Проводим более 20-ти крупномасштабных тестирований на проникновение в год

Анализируем защищенность систем ДБО на потоке

Участвуем в ПК 3, разработке СТО БР ИББС

Развиваем SecurityLab.ru – самый популярный интернет-портал, посвященный информационной безопасности

Лицензиаты ФСТЭК, ФСБ, Министерства обороны РФ

Мы

Page 4: Демонстрация атаки на ДБО

А еще

Page 5: Демонстрация атаки на ДБО

Самые распространенные уязвимости систем ДБО

Отсутствует маскирование PAN

Возможна идентификация приложений

Недостаточная защита от Brute Force

Межсайтовое выполнение сценариев

Возможно проведение атак на сессию

Слабая парольная политика

Предугадываемый формат идентификаторов пользователей

Стандартные сообщения об ошибках

Незащищенная передача данных при аутентификации

Раскрытие информации об идентификаторах

Page 6: Демонстрация атаки на ДБО

Результаты анализа защищенности ДБО

Получение данных для подключения к СУБД и внутренним системам (возможно развитие из внутренней сети)

Доступ в личные кабинеты пользователей

Проведение транзакций без ввода OTP авторизованным пользователем

Несанкционированное проведение транзакций

Выполнение команд на сервере

Полный контроль над системой

Большинство систем ДБО содержали серьезные уязвимости, просто каждая ДБО была уязвима по-своему

Полный контроль над СУБД

Page 7: Демонстрация атаки на ДБО

PHDays I-Bank

PHDays I-Bank НЕ ЯВЛЯЕТСЯ системой ДБО, которая действительно работает в каком-либо из существующих банков

Система разрабатывалась специально для конкурса на PHDays 2012

Page 8: Демонстрация атаки на ДБО

Демонстрация

Page 9: Демонстрация атаки на ДБО

Самые распространенные уязвимости систем ДБО

Отсутствует маскирование PAN

Возможна идентификация приложений

Недостаточная защита от Brute Force

Межсайтовое выполнение сценариев

Возможно проведение атак на сессию

Слабая парольная политика

Предугадываемый формат идентификаторов пользователей

Стандартные сообщения об ошибках

Незащищенная передача данных при аутентификации

Раскрытие информации об идентификаторах

Page 10: Демонстрация атаки на ДБО

Шаг 1: аутентификация

Недостаточная защита от Brute Force

Слабая парольная политика

Предугадываемый формат идентификаторов пользователей

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

Примеры идентификаторов: 1000001, 1000002, …

Пользователь может установить свой пароль. Проверяется только его длина. Наверняка найдется кто-то с паролем 12345678

Есть же CAPTCHA. В чем проблема?

Page 11: Демонстрация атаки на ДБО

Демонстрация

Page 12: Демонстрация атаки на ДБО

Проблемы реализации CAPTCHA у PHDays I-BANK

Значение передается в скрытом поле HTML-формы

PUlUTTVFak0= =ITM5EjM MjE5MTI=

public function encodeCaptchaCode($code) { return @base64_encode(@strrev(@base64_encode($code)));}

Для шифрования не используются временные значения – расшифровать строку проще простого

Page 13: Демонстрация атаки на ДБО

Как еще можно обходить CAPTCHA

Brute Force (допускается повторная отправка одного и того же значения)

Передавать значение, не совпадающее с кодом, но попадающее под требования проверки (приложение проверяет только длину кода или наличие определенных символов)

Передавать запросы, для которых CAPTCHA не проверяется (например, код может не требоваться при передаче определенных заголовков в запросе)

Использовать автоматические распознаватели текста (FineReader)

Автоматизировать удаление наложенных на текст шумов

...

На крайний случай всегда есть дрессированные обезьянки ручная проверка

Page 14: Демонстрация атаки на ДБО

Шаг 1: аутентификация

Недостаточная защита от Brute Force

Слабая парольная политика

Предугадываемый формат идентификаторов пользователей

Раскрытие информации об идентификаторах

Page 15: Демонстрация атаки на ДБО

Шаг 2: авторизация для проведения транзакции

Предугадать OTP не получится, алгоритм генерации достаточно надежный

Page 16: Демонстрация атаки на ДБО

Шаг 2: авторизация для проведения транзакции

Предугадать OTP не получится, алгоритм генерации достаточно надежный

Но так ли нужно его угадывать? ;)

Page 17: Демонстрация атаки на ДБО

Шаг 2: авторизация для проведения транзакции

Шаг1Ввод платежных реквизитов и суммы платежа

Шаг2Ввод одноразового пароля

Шаг3Проверка OTP, подтверждение транзакции

Шаг4Проведение транзакции

Page 18: Демонстрация атаки на ДБО

Демонстрация

Page 19: Демонстрация атаки на ДБО

Другие варианты обхода авторизации по OTP

Brute Forсe (возможна повторная отправка значений для одного и того же OTP)

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

Предугадывание значений OTP (слабые алгоритмы генерации OTP)

Получение информации об ожидаемом значении OTP в открытом виде (например, путем получения доступа к лог-файлу)

Page 20: Демонстрация атаки на ДБО

Race condition

Если отправлять много запросов, то возможна ситуация,

когда запросы будут выполняться одновременно:

Запрос N

Проверка наличия необходимой

суммы

Зачисление денег

Profit! $$$

Запрос N+1

Проверка наличия необходимой

суммы

Зачисление денег

Хочу перевести 1000 рублей на

свой же счет

Page 21: Демонстрация атаки на ДБО

Race condition

Если отправлять много запросов, то возможна ситуация,

когда запросы будут выполняться одновременно:

Запрос N

Проверка наличия необходимой

суммы

Зачисление денег

Profit! $$$

Запрос N+1

Проверка наличия необходимой

суммы

Зачисление денег

Хочу перевести 1000 рублей на

свой же счет

Пользователь: хочу перевести 10 000 рублей на свой же счет

Page 22: Демонстрация атаки на ДБО

Race condition

Если отправлять много запросов, то возможна ситуация,

когда запросы будут выполняться одновременно:

Запрос N

Проверка наличия необходимой

суммы

Зачисление денег

Profit! $$$

Запрос N+1

Проверка наличия необходимой

суммы

Зачисление денег

Хочу перевести 1000 рублей на

свой же счет

Пользователь: хочу перевести 10 000 рублей на свой же счет

Приложение: Проверяю… у пользователя 10 000 рублей, достаточно для перевода.

Page 23: Демонстрация атаки на ДБО

Race condition

Если отправлять много запросов, то возможна ситуация,

когда запросы будут выполняться одновременно:

Запрос N

Проверка наличия необходимой

суммы

Зачисление денег

Profit! $$$

Запрос N+1

Проверка наличия необходимой

суммы

Зачисление денег

Хочу перевести 1000 рублей на

свой же счет

Пользователь: хочу перевести 10 000 рублей на свой же счет

Приложение: Проверяю… у пользователя 10 000 рублей, достаточно для перевода. ….Перевожу необходимую сумму (баланс=0 рублей)

Page 24: Демонстрация атаки на ДБО

Race condition

Если отправлять много запросов, то возможна ситуация,

когда запросы будут выполняться одновременно:

Запрос N

Проверка наличия необходимой

суммы

Зачисление денег

Profit! $$$

Запрос N+1

Проверка наличия необходимой

суммы

Зачисление денег

Хочу перевести 1000 рублей на

свой же счет

Пользователь: хочу перевести 10 000 рублей на свой же счет

Приложение: Проверяю… у пользователя 10 000 рублей, достаточно для перевода. ….Перевожу необходимую сумму (баланс=0 рублей)….Начисляю необходимую сумму (Запрос N: + 10 000, Запрос N+1: +10 000)

Page 25: Демонстрация атаки на ДБО

Демонстрация

Page 26: Демонстрация атаки на ДБО

XML External Entity

Уязвимость позволяет внедрять XML-код, и, как следствие:

Читать файлы на сервере

Сканировать ресурсы внутренней сети посредством HTTP-, SMB-, FTP- запросов

Реализовать отказ в обслуживании

Читать файлы общедоступных ресурсов на базе Windows (\\host\C$)

Page 27: Демонстрация атаки на ДБО

Демонстрация

Page 28: Демонстрация атаки на ДБО

Хотите пример из продуктивной системы?

Милочка, а проверьте-ка систему ДБО нашего банка

Да, сэр

через полчаса…

Да тут же SQL-инъекция! Грубейшая ошибка разработки веб-приложения!

Page 29: Демонстрация атаки на ДБО

А ведь можно было бы…

По содержимому базы проанализировать платежи: порядок обработки, статусы, суммы, получатели

Page 30: Демонстрация атаки на ДБО

А ведь можно было бы…

По содержимому базы проанализировать платежи: порядок обработки, статусы, суммы, получатели

Найти клиентов, периодически переводящих крупные суммы в пределах установленных лимитов

Page 31: Демонстрация атаки на ДБО

А ведь можно было бы…

По содержимому базы проанализировать платежи: порядок обработки, статусы, суммы, получатели

Найти клиентов, периодически переводящих крупные суммы в пределах установленных лимитов

Выбрать тех, где не подключена услуга SMS-оповещения (например, сосредоточиться на некарточных счетах)

Page 32: Демонстрация атаки на ДБО

А ведь можно было бы…

По содержимому базы проанализировать платежи: порядок обработки, статусы, суммы, получатели

Найти клиентов, периодически переводящих крупные суммы в пределах установленных лимитов

Выбрать тех, где не подключена услуга SMS-оповещения (например, сосредоточиться на некарточных счетах)

Создать свой платеж, присвоив ему нужный статус, или просто подменить реквизиты платежа, уже готового к отправке в АБС

Page 33: Демонстрация атаки на ДБО

А ведь можно было бы…

По содержимому базы проанализировать платежи: порядок обработки, статусы, суммы, получатели

Найти клиентов, периодически переводящих крупные суммы в пределах установленных лимитов

Выбрать тех, где не подключена услуга SMS-оповещения (например, сосредоточиться на некарточных счетах)

Создать свой платеж, присвоив ему нужный статус, или просто подменить реквизиты платежа, уже готового к отправке в АБС

Profit!

Page 34: Демонстрация атаки на ДБО

Заключение

Большинство систем ДБО имеют серьезные уязвимости

Page 35: Демонстрация атаки на ДБО

Заключение

Большинство систем ДБО имеют серьезные уязвимости

Эксплуатация уязвимостей часто бывает не такой уж сложной

Page 36: Демонстрация атаки на ДБО

Заключение

Большинство систем ДБО имеют серьезные уязвимости

Эксплуатация уязвимостей часто бывает не такой уж сложной

Тем важнее их своевременно обнаружить и устранить

Page 37: Демонстрация атаки на ДБО

ЗаключениеПроблема Решение

Возможен обход механизма аутентификации

Реализовать эффективный алгоритм генерации идентификаторов пользователей, которые не были бы легко угадываемы (например, идентификатор может включать символы, зависящие от имени пользователя)

Устранить уязвимости, связанные с раскрытием информации об используемых идентификаторах (исправить код приложения, что и где править – расскажем :) )

Реализовать строгую парольную политику (задать длину и сложность пароля, периодичность смены пароля, невозможность использования предыдущих паролей, а также легко угадываемых словарных паролей)

Использовать правильную CAPTCHA (не передавать код CAPTCHA вместе со страницей; «шум» должен мешать не человеку, а машине; и т.п.)

Реализовать блокировку попыток подбора данных (при этом блокировка должна зависеть как от частоты попыток подбора и количества неправильно введенных паролей, так и от количества неправильно введенных идентификаторов, чтобы избежать блокировки легитимных пользователей)

….

Возможен обход механизма авторизации по OTP

Реализовать эффективный алгоритм генерации OTP

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

Обеспечить защиту от подбора OTP (при каждом вводе неправильного значения OTP меняется)

Race Condition

Обеспечить невозможность одновременного доступа к данным с целью изменения для разных потоков или разных компонентов приложения (использовать блокировку данных на время обработки)

XXE

Обеспечить проверку и фильтрацию входных данных от пользователя (экранирование специальных символов)

При необходимости использования XML запретить поддержку внешних сущностей (External Entity) и DTD….

… …

Page 38: Демонстрация атаки на ДБО

Спасибо за внимание!

Евгения Поцелуевская[email protected]