26.07.2021

Обобщённые результаты исследований защищённости по требованиям Банка России: на что стоит обратить внимание

Сегодня мы начинаем цикл публикаций, посвящённых прошедшему вебинару для финансовых организаций. В этой статье разберём обобщённые результаты наших исследований защищённости по требованиям Банка России.

При проведении работ по тестированию на проникновение наши исследователи моделируют атаки с позиции внешнего злоумышленника, не обладающего легитимным доступом к ресурсу, и внутреннего нарушителя. На основании построенной модели и нормативных документов Банка России выделили следующие объекты.

С позиции внешнего злоумышленника:

  • клиентская часть каналов ДБО;
  • мобильные приложения;
  • сервисы внешнего периметра.

С позиции внутреннего нарушителя:

  • Автоматизированная банковская система (АБС), Системы ДБО для юридических и физических лиц, АРМ КБР.
  • Серверы базы данных и приложений АБС, ДБО ФЛ ДБО ЮЛ, системы приёма платежей.
  • Типовые рабочие места кассира, пользователя (оператора) — работника банк, администратора информационной безопасности, администратора АБС, администратора системы приёма платежей, администратора ДБО для ЮЛ, администратора ДБО для ФЛ.
  • Сетевое оборудование.
  • Точки доступа к беспроводной сети.

Методика проведения работ, найденные уязвимости, их эксплуатация и рекомендации по устранению отражаются в отчёте.

Найденные уязвимости группируются по степени критичности. В основе градации лежат возможности злоумышленника при их эксплуатации:

vulnerabilitiesrate.png

Разберём каждые объекты исследования: какие проверки провели, какие уязвимости нашли.

Клиентская часть ДБО

Работы обычно проводятся в режимах «чёрный» и «серый» ящики. «Серый» ящик обусловлен тем, что злоумышленник может быть так же и клиентом банка. А наличие учётной записи даёт больше возможностей добиться конечной цели.

Основные направления моделируемой атаки:

  • получение несанкционированного доступа к ресурсу;
  • обход механизмов аутентификации, авторизации и управления сессиями;
  • получение несанкционированного доступа к обрабатываемой информации.

При проверке веб-приложений наши исследователи опираются на 10 самых критичных уязвимостей по OWASP.

Обнаруженные уязвимости в интернет-банках

Межсайтовая подделка запроса

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

Например, пользователь на сайте или форуме читает пост с картинками. Мошенник создаёт тег, в котором в качестве источника картинки указан URL, при переходе по которому выполняется действие на сайте банка. Если банк хранит информацию об аутентификации пользователя в cookie, и, если они ещё не истекли, при попытке загрузить картинку браузер отправит cookie в запросе на перевод денег на счёт злоумышленника, чем подтвердит аутентификацию. Таким образом, транзакция будет успешно завершена, хотя её подтверждение произойдёт без ведома пользователя-клиента банка.

Эта уязвимость возникает из-за некорректной настройки средств защиты сайта. Например, некорректной настройки CORS или отсутствия CSRF токенов.

Для предотвращения атаки применяются следующие методы защиты:

  • Настройка политики совместного использования ресурсов только для разрешённых доменов.
  • Ввод CSRF токена.

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

При проведении работ в одном из банков для учётной записи с ролью «Администратор» был установлен слабый пароль, подбираемый словарём часто встречающихся паролей (он соответствовал логину).

Возможность перебора кода аутентификации

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

Необходимо установить ограничение на количество попыток ввода пароля, увеличить время ожидания по истечении попыток ввода, применить CAPTCHA для защиты от автоматизированного перебора.

captcha.png

Возможность перебора имён пользователей

Любой пользователь мог перебирать существующие в системе имена других пользователей. Ответ от сервера различался при наличии пользователя в базе данных и при его отсутствии.

Необходимо настроить одинаковый ответ на любые вводимые данные.

Отсутствие HTTP заголовка X-Frame-Options

На веб-сервере отсутствовал данный заголовок для предупреждения атаки Clickjacking (внедрение вредоносного кода на безопасную страницу). Многие сайты были взломаны подобным способом, включая Twitter, Facebook, Paypal.

Для устранения данной уязвимости в настройках веб-сервера необходимо установить для X-Frame-Options значение параметра «SAMEORIGIN», что запретит открытие атакуемого сайта внутри iframe, при обращении с другого домена.

Некорректная настройка механизма управления сессиями

Был некорректно реализован автоматический выход из системы: окно об окончании сессии игнорировалось, и страница обновлялась для продолжения работы сайта. При повторной аутентификации старые сессионные данные оставались валидными в течение 2-х часов.

Необходимо обнулять старые данные сессии на стороне сервера после получения новых в следующих случая: при ручном и автономном выходах из системы, при повторной аутентификации и т.д.

Мобильные приложения

Проверки осуществляются по методике MASVS (MSTG) — это подробное руководство по анализу безопасности мобильных приложений и обратному проектированию для тестеров мобильной безопасности iOS и Android.

Работы включают проверки следующих требований:

  • требования конфиденциальности и хранения данных;
  • криптографии;
  • аутентификации и управлению сессиями;
  • сетевому взаимодействию;
  • устойчивости к атакам на стороне клиента;
  • взаимодействию с операционной системой;
  • качеству кода и настройкам сборки.

Уязвимость, связанная с отсутствием проверки PIN кода и хранения незашифрованных API ключей на локальном устройстве, позволяет сформировать работающее файл-хранилище «files/pin_cipher.data», тем самым осуществив аутентификацию с помощью PIN-кода. Злоумышленник может получить доступ к системе от имени легального пользователя.

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

Возможность получения легального имени пользователя при использовании функции восстановления пароля. Злоумышленник может получить легальное имя пользователя используя ответы функции восстановления пароля пользователя.

Рекомендуется скрывать информацию об ошибке от пользователя. Исключить возможность создания нескольких токенов восстановления пароля для одного и того же пользователя.

Удалённый сервер не осуществлял проверку подлинности клиента, поэтому, проверка осуществлялась вручную, что позволило смоделировать атаку типа «человек посередине». Такая атака даёт возможность для злоумышленника перехватить диалог между пользователем и сервером, получив доступ к системе от имени пользователя.

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

Наличие чувствительных данных в памяти позволяет злоумышленнику получить доступ к конфиденциальным данным.

Необходимо проверить корректность реализации механизма очистки памяти, либо использовать шифрование чувствительных данных сессии/пользователя внутри приложения.

Некорректное управление cookie и хранение чувствительных данных позволяет нарушителю организовать незаконное подключение к системе, сформировав валидные данные для незаконного подключения к системе от имени пользователя.

Необходимо реализовать механизм отзыва Bearer-токена пользователя, реализовать соответствующий API-вызов для этого действия, а также автоматически отзывать токен по истечении некоторого срока жизни и реализовать механизм удаления чувствительных данных после деаутентификации пользователя.

Уязвимость механизма отслеживания целостности установленного приложения. Злоумышленник изменяет состав приложения для включения требуемых ему компонентов.

Необходимо проверять подлинность компонентов приложения.

Факты сохранения чувствительных данных на устройство в папку приложения и разделяемые папки предоставляют злоумышленнику возможность получить доступ к конфиденциальным данным.

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

Сервисы внешнего периметра

Предоставленный заказчиком перечень IP-адресов сканируется посредством сетевого сканера Nmap на наличие открытых портов. Проверки объектов исследования производятся по методике OWASP Testing Guide. По результатам проведённых проверок формируется перечень выявленных уязвимостей.

В одном из банков на восьми хостах была выявлена уязвимость CVE-2019-0708 (Bluekeep).

На них же была выявлена уязвимость протокола RDP (CVE-2012-0002 и CVE-2012-0152).

Эксплуатация данных уязвимостей позволяет вызвать отказ в обслуживании рабочей станции («синий экран»), а также исполнить произвольный код на удалённой системе.

По согласованию с заказчиком, данный вектор атаки не развивался ввиду высокого риска отказа эксплуатируемой системы.

Необходимо своевременно устанавливать обновления безопасности на операционные системы.

Устаревшая версия Apache Tomcat

Установленная у заказчика версия Apache Tomcat 6.0.39 (2014 год) является устаревшей и содержит множественные уязвимости, в том числе удаленное выполнение кода.

Проблема решается обновлением до актуальной версии.

Отсутствие HTTP заголовка X-Content-Type-Option

На веб-сервере отсутствовал заголовок X-Content-Type-Option для предупреждения уязвимостей. Данный заголовок предотвращает атаки с использованием подмены MIME типов. Злоумышленник может провести атаку с подменой типов MIME, при которой он загружает файлы на/с сервера, изменив заголовок Content-type.

Необходимо в настройках веб-сервера установить для X-Content-Type-Options значение параметра «nosniff».

Внутренний сетевой периметр

С помощью Nmap проводится сканирование на наличие доступных сервисов. Доступные во внутренней сети хосты проверяются на наличие уязвимостей.

В начале небольшой бонус от наших исследователей: сканировали очень старые машины и нашли плеяду из Windows 2008 sp, которые «бьются по щелчку». Было запрошено от заказчика разрешение на их «пробитие». Нам позвонил заказчик со следующей просьбой: если пробьете наш домен через устаревшие версии, выделите это в отчете. Так как они устали сидеть за старыми машинами, которые нельзя пропатчить. Для большего понимания ситуации: сотрудники заказчика руками вносили локальные патчи, пытаясь починить всё, но это им не помогало. Что неудивительно, так как на Windows 8 уже больше 20 уязвимостей находятся автоматически, которые проблематично исправить даже опытному специалисту.

Мораль данной истории такова: берегите нервы и силы безопасников, обновляйте устаревшие версии, иначе ваша система будет пробиваться на раз.

Получение доступа к сети Active Directory без учётной записи

Для доступных сетей был установлен механизм порчи протоколов LLMNR, NBT-BS и MD2NS, позволяющий провести атаку типа «человек посередине» для типовых протоколов сети Active Directory. Дополнительно были запущены серверы аутентификации для SMB, MSSQL, HTTP, LDAP протоколов. В течение первого дня исследования были собраны NTLMv2 хэши 7 пользователей, среди которых была аудиторская учетная запись с расширенными правами доступа.

pass.png

По собранным хэшам при помощи перебора методом грубой силы удалось получить пароли всех семи пользователей. Данные «учётки» были равнозначны и могли быть использованы для получения прав рядового пользователя в домене предприятия.

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

Найденная учётная запись имела доступ по RDP к АРМ с правами локального администратора, которую также использует пользователь, имеющий существенные права в домене.

После получения NTLM-хэша пользователя, имеющего данные права, были обнаружены две АРМ, доступные пользователю, с правами локального администратора. При этом содержащие учётные данные об интерактивных сессиях администраторов домена.

На АРМ был осуществлён сбор данных из lsass, затем проведена атака типа Pass The Hash с использованием полученного из lsass NTLM-хэша. Таким образом, получен полный доступ к АРМ администраторов домена, что является критической уязвимостью.

Local Privilege Escalation

В одном из банков использовался Lotus Notes 8.5, в котором имеется уязвимость, позволяющая повысить привилегии доменного пользователя на хосте. В итоге был получен локальный административный доступ к предоставленной рабочей станции (CVE-2015-0179).

Решение тоже заключается в обновлении.

Oracle TNS poison

И вот ещё уязвимость, которую можно закрыть обновлением. Данная уязвимость встречалась почти в каждом отчёте.

Oracle TNS listener уязвим к атаке «Oracle TNS poison»— разновидность техники «человек посередине». Данная атака позволяет перехватывать весь трафик, таким образом получая аутентификационные данные.

Используя эксплойт, опубликованный на github, осуществлена атака, за время проведения которой удалось перехватить данные от 2 учётных записей.

Включены протоколы для альтернативного поиска и разрешения имён LLMNR/NBT-NS

Используя программное обеспечение Responder подменили запросы нашим IP-адресом, так как протоколы были включены, смогли успешно перехватить хэш.

Необходимо отключить протоколы LLMNR и NBT-NS, используя групповые политики.

Local File Inclusion

Расположенные на адресах IP камеры были уязвимы к Local File Inclusion, то есть возможно получить удалённый доступ к файлам на сервере с помощью специально сформированного запроса. Это может привести к установке дополнительного вредоносного программного обеспечения на устройства. Нам удалось получить логины и пароли администратора устройства.

На сайте производителя имеется исправление, которое следует установить.

Дефолтная учётная запись Cisco OfficeExtend Access Point

И снова возвращаемся к теме паролей. Был кейс, где для учётной записи «admin» установлен пароль производителя. Данный пароль можно было найти в документации Cisco OfficeExtend Access Point.

Необходимо установить надёжный пароль, соответствующий следующим правилам:

  • Минимально рекомендуемая длина пароля — в пределах от 12 до 14 символов. Увеличение длины пароля всего на 2 символа даёт в 500 раз больше вариантов, чем увеличение алфавита на 18 символов.
  • Пароли должны быть сгенерированы случайным образом, если это возможно.
  • Рекомендуется избегать использования паролей, содержащих словарные слова («password»), повторяющиеся наборы букв («passpass»), буквенные или числовые последовательности («aaaaaaaa», «12345678»), ники, имена (собственное имя, имена родственников), клички домашних животных, романтические отсылки (нынешние или прошлые), биографическую информацию.
  • Рекомендуется включать в пароль цифры и иные символы, если это разрешено системой.
  • Рекомендуется использовать как прописные, так и строчные буквы, когда это возможно.
  • Рекомендуется избегать использования одного пароля для различных сайтов или целей.

На этом завершаем обзор результатов исследований защищённости. И в конце хотелось сказать, что требования регуляторов — это хорошо, но не стоит их реализацию воспринимать только «для галочки», нужно помнить и о фактической защите данных. Если не знаете, где ваши слабые места (увы, но как показывает практика, они есть), мы их найдём и дадим рекомендации по устранению.

Татьяна Каргина, менеджер по работе с заказчиками «Перспективного мониторинга»

Иван Червяков, маркетолог «Перспективного мониторинга»

Рекомендуемые статьи