Взламываем банк, или Один день из жизни пентестера - «Финансы и Банки» » Финансы и Банки
Создать акаунт

Взламываем банк, или Один день из жизни пентестера - «Финансы и Банки»

12 июл 2016, 13:00
Новости Банков
0
0
Взламываем банк, или Один день из жизни пентестера - «Финансы и Банки»
Взламываем банк, или Один день из жизни пентестера - «Финансы и Банки»
Профессиональные «взломщики» банков тестируют возможные действия злоумышленников

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

Взлом для борьбы со взломщиками

Тестирование на проникновение (пентестинг) — это, по сути, моделирование действий злоумышленника с целью получения несанкционированного доступа к объекту тестирования.

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

Начало

Итак, приступим. Для начала попытаемся понять, что мы знаем о ресурсах компании. Пока ничего. Система для нас представляет своего рода черный ящик. Пришло время это исправить. Первым делом идем в банк, открываем счет и подключаем ДБО. Готово!

Теперь осмотримся вокруг на предмет доступных для изучения и анализа ресурсов банка. Здесь сразу интересна сама система ДБО. Далее, для поиска других ресурсов, смотрим, какие еще поддомены прописаны для evilbank.com. Так, после перебора порядка 100 тысяч разных популярных и не очень имен находим интересный поддомен — admin.evilbank.com. Оказывается, что система ДБО построена на популярной программной платформе, которая, конечно, обладает собственным административным интерфейсом.

Попробовав наугад пару логин/пароль, мы попадаем внутрь — быстрые взломы до сих пор не редкость. Сочетание двух простых конфигурационных ошибок (простой пароль и административный интерфейс, доступный из Интернета) дает возможность выполнить произвольный код на сервере ДБО. Дело в том, что разработчиками платформы была предусмотрена возможность выполнения различных команд и скриптов в контексте операционной системы. Так мы получаем доступ к банковской сети.

Теперь, когда мы собираемся атаковать инфраструктуру банка, нам понадобятся учетные записи его сотрудников. Для их получения воспользуемся таким классическим методом, как фишинг. Чтобы реализовать подобную схему, нам потребуется зарегистрировать домен, похожий на оригинал, а именно — ev1lbank.com.

Далее необходимо выбрать цели для атаки. Обычно социальные сети (такие как Linkedin или «ВКонтакте») предоставляют огромные возможности для сбора информации о пользователях компаний. Так, например, легко можно узнать, кто работает в определенной организации, найти рабочие почтовые адреса и должности потенциальных жертв. Когда мы обнаружили адреса для рассылки, имеет смысл подготовить несколько таргетированных сценариев фишинга. Довольно популярными схемами до сих пор являются сообщения от известного сообщества в соцсетях с вредоносным контентом или различные предложения от любимых жертвой сервисов. После того как мы успешно проводим фишинговую атаку, в нашем распоряжении оказываются несколько учетных записей.

Проникновение

Пришло время пробираться внутрь сети. Для этого воспользуемся административным интерфейсом, к которому у нас уже есть доступ. Получив его, мы, скорее всего, окажемся в DMZ-зоне (демилитаризованная зона), в которой в принципе не должно быть обычных пользователей. Однако все равно имеет смысл осмотреться на предмет того, какие «машины» присутствуют в доступном нам сегменте. Нам повезло! Оказывается, в банке никто не задумывался о какой бы то ни было сегментации, поэтому мы можем попробовать атаковать Windows-пользователей.

Также параллельно мы запускаем сканирование доступных сетевых ресурсов. Это действие также дает нам неплохой улов: несколько машин с SSH (протокол удаленного управления), FTP-сервер, веб-интерфейс системы мониторинга, несколько баз данных, какой-то веб-портал, криптосервис, а также несколько Windows-компьютеров со специфичными портами вроде RDP (Remote Desktop Protocol — протокол удаленного рабочего стола) и SMB (Server Message Block — сетевой протокол, служащий для удаленного доступа к файлам, принтерам и т. п.).

А теперь проверим, что там с протоколом Netbios. Ага, отлично: нашлась пара учетных записей, состоящих из логина и хеша пароля (код, вычисляемый из пароля, из которого нельзя восстановить пароль, но который можно подобрать путем перебора. — Прим. ред.). Ставим хеши паролей на словарный перебор, поскольку с высокой вероятностью пароли не будут слишком сложными и перебор не займет много времени.

Пока выполняется перебор, займемся сервисами. Первым делом стоит повнимательнее взглянуть на обнаруженный нами Apache tomcat. Данный веб-сервер позволяет загружать на него Java-приложения в виде War-файлов и выполнять их в реальном времени. Проэксплуатировав такую особенность, мы можем выполнить произвольный код на данном сервере, если эта возможность не отключена. И мы видим, что возможность есть. Благодаря ей мы получили доступ еще к Linux-серверу с правами веб-сервера. Этого достаточно, чтобы получить пароли для подсоединения к базам данных.

Другое интересное поле — криптографический сервис. Недолгие поиски в Интернете приводят нас к демоверсии данного приложения. Заодно мы понимаем, что оно используется системой ДБО для подписи платежных сообщений.

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

Существуют два основных вектора эксплуатации данного сервиса:

1. Мы можем заставить криптосервис подписывать любые платежи, которые мы ему отправим.

2. Мы можем использовать криптосервис для эскалации атаки вглубь сети.

Попробуем подключиться к FTP-серверу. Нам снова везет: на нем забыли настроить какую бы то ни было аутентификацию. Итак, что же интересного можно найти? Различные логи (причем достаточно свежие), включая логи пользовательских операций в ДБО, выгрузки информации о пользователях (включая данные карт) и т. д. Бережно собираем все находки и анализируем логи на предмет строк подключения к базам данных и другой ценной информации вроде паролей.

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

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

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

Используя эти учетные записи, мы подключаемся к нескольким Windows-машинам. На них стоят антивирусы, поэтому утилиты, позволяющие «вытаскивать» из памяти пароли и прочую аутентифицирующую информацию «из коробки», работать не будут. Но это не проблема, поскольку существует большое количество различных способов их обхода. Для простоты берем классический инструмент Procdump из пакета утилит Sysinternals и делаем «снимок» памяти процесса, отвечающего за авторизацию и хранящего в памяти данные обо всех подключавшихся пользователях. Повторяем эту операцию на всех доступных машинах. Когда у нас набралось несколько таких «снимков», мы локально анализируем их, получаем хеши паролей и отправляем их на перебор.

Пока хеши перебираются, посмотрим еще немного на Windows-сегмент. В частности, попробуем подключиться к различным разделяемым ресурсам, воспользовавшись обнаруженными учетными записями. Как известно, разделяемые ресурсы — кладезь различной информации. Мы обнаруживаем базу данных приложения для хранения паролей KeePass. После ее расшифровки мы получили пароли от большинства внутренних систем, а также парочку интересных файлов, включая защищенный архив с разными полезными данными и пароль от архива в папке рядом.

Пока мы занимались такими увлекательными делами, наши пароли, собранные с Windows-машин, были подобраны успешно почти для всех пользователей. Что неудивительно. В итоге, проведя несколько итераций подключения к машинам под разными пользователями и сбор «снимков» памяти, мы в конечном итоге добрались до машины, на которую заходил доменный администратор. Несложно догадаться, что так мы получаем доступ к контроллеру домена. А это, по сути, конец пентеста. Обладая правами доменного администратора, мы можем подключаться к разделяемым ресурсам, удаленным рабочим столам или даже попытаться выкачать всю почту с Exchange-сервера.

Итог

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

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

Тем не менее в качестве профилактики можно посоветовать своевременное обновление ПО, регулярные аудиты собственных ресурсов и, конечно, повышение уровня осведомленности сотрудников.

Андрей ПЛАСТУНОВ, исследователь информационной безопасности Digital Security, для


Профессиональные «взломщики» банков тестируют возможные действия злоумышленников О том, что банки периодически взламывают злоумышленники, известно давно. Но как именно это происходит? Чтобы узнать это, мы обратились к специалисту по информационной безопасности, в чьи задачи входит, в частности, взлом банковских систем для выявления уязвимостей. Итак, попробуем взломать банк вместе. Взлом для борьбы со взломщиками Тестирование на проникновение (пентестинг) — это, по сути, моделирование действий злоумышленника с целью получения несанкционированного доступа к объекту тестирования. Сегодня мы займемся проектом по пентестингу для банка evilBank, проведя основные манипуляции «в прямом эфире». Если вы не так много знали о том, как происходит тестирование на проникновение, мы расскажем, чем занимаются банковские пентестеры на практике, описав один условный рабочий день «этичного» хакера. Все схемы и находки взяты из реальных проектов по тестированию на проникновение. Начало Итак, приступим. Для начала попытаемся понять, что мы знаем о ресурсах компании. Пока ничего. Система для нас представляет своего рода черный ящик. Пришло время это исправить. Первым делом идем в банк, открываем счет и подключаем ДБО. Готово! Теперь осмотримся вокруг на предмет доступных для изучения и анализа ресурсов банка. Здесь сразу интересна сама система ДБО. Далее, для поиска других ресурсов, смотрим, какие еще поддомены прописаны для evilbank.com. Так, после перебора порядка 100 тысяч разных популярных и не очень имен находим интересный поддомен — admin.evilbank.com. Оказывается, что система ДБО построена на популярной программной платформе, которая, конечно, обладает собственным административным интерфейсом. Попробовав наугад пару логин/пароль, мы попадаем внутрь — быстрые взломы до сих пор не редкость. Сочетание двух простых конфигурационных ошибок (простой пароль и административный интерфейс, доступный из Интернета) дает возможность выполнить произвольный код на сервере ДБО. Дело в том, что разработчиками платформы была предусмотрена возможность выполнения различных команд и скриптов в контексте операционной системы. Так мы получаем доступ к банковской сети. Теперь, когда мы собираемся атаковать инфраструктуру банка, нам понадобятся учетные записи его сотрудников. Для их получения воспользуемся таким классическим методом, как фишинг. Чтобы реализовать подобную схему, нам потребуется зарегистрировать домен, похожий на оригинал, а именно — ev1lbank.com. Далее необходимо выбрать цели для атаки. Обычно социальные сети (такие как Linkedin или «ВКонтакте») предоставляют огромные возможности для сбора информации о пользователях компаний. Так, например, легко можно узнать, кто работает в определенной организации, найти рабочие почтовые адреса и должности потенциальных жертв. Когда мы обнаружили адреса для рассылки, имеет смысл подготовить несколько таргетированных сценариев фишинга. Довольно популярными схемами до сих пор являются сообщения от известного сообщества в соцсетях с вредоносным контентом или различные предложения от любимых жертвой сервисов. После того как мы успешно проводим фишинговую атаку, в нашем распоряжении оказываются несколько учетных записей. Проникновение Пришло время пробираться внутрь сети. Для этого воспользуемся административным интерфейсом, к которому у нас уже есть доступ. Получив его, мы, скорее всего, окажемся в DMZ-зоне (демилитаризованная зона), в которой в принципе не должно быть обычных пользователей. Однако все равно имеет смысл осмотреться на предмет того, какие «машины» присутствуют в доступном нам сегменте. Нам повезло! Оказывается, в банке никто не задумывался о какой бы то ни было сегментации, поэтому мы можем попробовать атаковать Windows-пользователей. Также параллельно мы запускаем сканирование доступных сетевых ресурсов. Это действие также дает нам неплохой улов: несколько машин с SSH (протокол удаленного управления), FTP-сервер, веб-интерфейс системы мониторинга, несколько баз данных, какой-то веб-портал, криптосервис, а также несколько Windows-компьютеров со специфичными портами вроде RDP (Remote Desktop Protocol — протокол удаленного рабочего стола) и SMB (Server Message Block — сетевой протокол, служащий для удаленного доступа к файлам, принтерам и т. п.). А теперь проверим, что там с протоколом Netbios. Ага, отлично: нашлась пара учетных записей, состоящих из логина и хеша пароля (код, вычисляемый из пароля, из которого нельзя восстановить пароль, но который можно подобрать путем перебора. — Прим. ред.). Ставим хеши паролей на словарный перебор, поскольку с высокой вероятностью пароли не будут слишком сложными и перебор не займет много времени. Пока выполняется перебор, займемся сервисами. Первым делом стоит повнимательнее взглянуть на обнаруженный нами Apache tomcat. Данный веб-сервер позволяет загружать на него Java-приложения в виде War-файлов и выполнять их в реальном времени. Проэксплуатировав такую особенность, мы можем выполнить произвольный код на данном сервере, если эта возможность не отключена. И мы видим, что возможность есть. Благодаря ей мы получили доступ еще к Linux-серверу с правами веб-сервера. Этого достаточно, чтобы получить пароли для подсоединения к базам данных. Другое интересное поле — криптографический сервис. Недолгие поиски в Интернете приводят нас к демоверсии данного приложения. Заодно мы понимаем, что оно используется системой ДБО для подписи платежных сообщений. Что же, отличная цель. После того как мы развернули сервис, быстро понимаем, что при его создании полностью игнорировались правила безопасной разработки. Так, уязвимость переполнения буфера была найдена в функции обработки одного из сообщений от клиента сервиса. В итоге был написан эксплоит, позволяющий выполнять произвольный код на криптосервисе. Существуют два основных вектора эксплуатации данного сервиса: 1. Мы можем заставить криптосервис подписывать любые платежи, которые мы ему отправим. 2. Мы можем использовать криптосервис для эскалации атаки вглубь сети. Попробуем подключиться к FTP-серверу. Нам снова везет: на нем забыли настроить какую бы то ни было аутентификацию. Итак, что же интересного можно найти? Различные логи (причем достаточно свежие), включая логи пользовательских операций в ДБО, выгрузки информации о пользователях (включая данные карт) и т. д. Бережно собираем все находки и анализируем логи на предмет строк подключения к базам данных и другой ценной информации вроде паролей. Получив некоторое количество логинов и паролей из файлов с FTP-сервера, пробуем найти учетные записи для подключения к другим узлам в сети. Перебор нескольких записей позволяет нам подключиться к одному из хостов с правами пользователя и доступом ко всем его файлам. Кроме того, мы пробуем найденные учетные записи для доступа к Windows-компьютерам, но, к сожалению, ничего не выходит. И это наталкивает нас на мысль, что нужно проверить, не нашлись ли пароли от учетных записей, собранных в процессе атаки на Windows-пользователей. Как и следовало ожидать, большинство паролей было подобрано успешно, поскольку многие из них попросту не менялись никогда и выглядели шаблонно (например, время года год). Используя эти учетные записи, мы подключаемся к нескольким Windows-машинам. На них стоят антивирусы, поэтому утилиты, позволяющие «вытаскивать» из памяти пароли и прочую аутентифицирующую информацию «из коробки», работать не будут. Но это не проблема, поскольку существует большое количество различных способов их обхода. Для простоты берем классический инструмент Procdump из пакета утилит Sysinternals и делаем «снимок» памяти процесса, отвечающего за авторизацию и хранящего в памяти данные обо всех подключавшихся пользователях. Повторяем эту операцию на всех доступных машинах. Когда у нас набралось несколько таких «снимков», мы локально анализируем их, получаем хеши паролей и отправляем их на перебор. Пока хеши перебираются, посмотрим еще немного на Windows-сегмент. В частности, попробуем подключиться к различным разделяемым ресурсам, воспользовавшись обнаруженными учетными записями. Как известно, разделяемые ресурсы — кладезь различной информации. Мы обнаруживаем базу данных приложения для хранения паролей KeePass. После ее расшифровки мы получили пароли от большинства внутренних систем, а также парочку интересных файлов, включая защищенный архив с разными полезными данными и пароль от архива в папке рядом. Пока мы занимались такими увлекательными делами, наши пароли, собранные с Windows-машин, были подобраны успешно почти для всех пользователей. Что неудивительно. В итоге, проведя несколько итераций подключения к машинам под разными пользователями и сбор «снимков» памяти, мы в конечном итоге добрались до машины, на которую заходил доменный администратор. Несложно догадаться, что так мы получаем доступ к контроллеру домена. А это, по сути, конец пентеста. Обладая правами доменного администратора, мы можем подключаться к разделяемым ресурсам, удаленным рабочим столам или даже попытаться выкачать всю почту с Exchange-сервера. Итог Как мы видим, большое количество реально работающих атак завязано на человеческом факторе. Сюда можно отнести как различные ошибки конфигурирования сетей и сервисов, какие-то забытые и уже неиспользуемые ресурсы, так и подверженность людей социальной инженерии. При этом не стоит забывать и про уязвимости в программных продуктах. Ситуация с безопасностью даже в известных банках продолжает удивлять и расстраивать. Несмотря на известные всем меры безопасности и работу специалистов, простые правила защиты по-прежнему игнорируются. И результатом работы пентестеров в подавляющем большинстве случаев является взлом банковских систем. Стоит задуматься о том, что квалификация злоумышленников порой не уступает профессионализму «этичных» хакеров, и они не ограничены при этом рамками договора. Тем не менее в качестве профилактики можно посоветовать своевременное обновление ПО, регулярные аудиты собственных ресурсов и, конечно, повышение уровня осведомленности сотрудников. Андрей ПЛАСТУНОВ, исследователь

Смотрите также:


Комментарии
Минимальная длина комментария - 50 знаков. комментарии модерируются
Top.Mail.Ru