Иннополис 29 ноября 2018

Антон Казанцев, «Точка»: люди не перестают открывать «левые» ссылки и качать приложения из недоверенных источников

Далее

В мире известно о девяти крупнейших хакерских атаках на банки. В результате кибератак только в 2017 году из банков было украдено свыше 1,15 млрд рублей. Одним из самых распространенных видов мошенничества стали «фишинговые письма» –– атаки, которые даже сейчас сложно отследить. Осложняет защиту от преступников и их способность закрепляться в банковской базе после завершения атаки, что вполне может привести к повторному хищению средств. Антон Казанцев, архитектор информационной безопасности в банке «Точка», рассказал в рамках конференции PartyHack в Иннополисе о том, какими способами атакуют клиентов банка и сам банк, и почему это часто происходит благодаря невнимательным сотрудникам.

Фишинг и социальная инженерия

Фишинг — старая история, которая почему-то все еще работает. Техника довольно проста. Мы делаем похожую страничку, добавляем туда дополнительные поля, а когда клиент попадает на нее и вбивает свои реквизиты, злоумышленник получает доступ к ним и от имени этого человека начинает совершать операции. Более интересная тема со страничками p2p-переводов (перевод с карты на карту — «Хайтек»). Так же делают фишинговые p2p-странички, куда клиенты вбивают данные своей карты, которые получает злоумышленник и начинает совершать операции. Либо изначально данные получателя и карты не захардкожены в приложении, и клиент сразу же автоматически переводит деньги на злоумышленника. Иногда бывают и такие ситуации, когда пишут, что у клиентов не дошли деньги, и спрашивают, что им делать. За ночь отвечают некие люди, что их перевод видно, но он почему-то отменен, и просят перевести еще раз. Клиенты переводят снова и снова, таким образом опустошается счет, начинают приходить предъявления банку, который ничего не может сделать, потому что клиент сам по своей воле отдал деньги злоумышленнику, не посмотрев, на каком сайте он находится.

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


Два основных направления кражи денег из банка:

  • Атака на клиентов банка.
  • Атака на инфраструктуру банка.

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


Client-side атаки

XXS (с англ. Cross-Site Scripting — «межсайтовый скриптинг») — межсайтовое выполнение сценариев, когда злоумышленник отправляет некий JavaScript на сервер, и он возвращает его браузеру. А браузер выполняет этот JavaScript в контексте уязвимого приложения.

CSRF (Сross Site Request Forgery — «межсайтовая подделка запроса») — подделка межсайтовых запросов. Выполняется и существует она в случае, когда браузер не отражает действия пользователя. То есть он не может понять, осознанно ли пользователь кликнул на кнопку «Отправить данные» или перешел по присланной ему ссылке. Это реальный кейс по вводу сессии, который существовал в одном банке. Сессия эта появляется непосредственно тогда, когда клиент логинится в интернет-банке, и она может осуществлять его действия. C помощью CCS сессия выводится и получается заметный cookie с номером токена. Злоумышленник, подменив сессию в своем интернет-банке на интернет-банк cookie, которую он получил, приобретает полноценный доступ к банку клиента.


Основной метод, который появился с 2007 года и до сих пор работает, — это просадка троянов клиентам банка. История из серии «зашел по ссылке, и у меня украли деньги» реализуется следующим образом: у троянов есть функционал грабберов форм — они могут отправлять в командный центр логин и пароль, любые данные, которые вбивает клиент. Могут удаленно управлять компьютером, могут делать backconnect — когда клиент сидит за firewall с натом. Запустив эту программу на своем компьютере, он делает исходящий запрос в командный центр.


Трояны. Основные возможности:

  • Веб-инжекты.
  • Грабберы форм.
  • Удаленное направление (VNC, RDP и другие).
  • Бэк-коннект.
  • Автозаливы.
  • Связки с экспойт паками.
  • Мониторинг и редактирование баланса.

Автозаливы — очень интересная история, схожая с веб-инжектами. Только у них есть функционал по автоматической подмене платежных поручений, а веб-инжекты позволяют внедрять HTML-код в тело браузера. Клиент зашел в интернет-банк, выполнил все мультифакторные аутентификации, начал забивать платежное поручение, нажал кнопку «Сохранить», и в этот момент троян перехватывает запрос и подменяет своим. Клиент отправляет будто оригинальный запрос и видит это в своем интерфейсе, запрашивается СМС для подключения или код для ключа, платежное поручение улетает в банк уже измененным. Уже после клиент, разумеется, понимает, что деньги не дошли до нужного получателя, начинает звонить в банк, на что следует ответ, что он сам прислал такое платежное поручение. Клиент расстраивается, потому что даже через суд уже деньги не вернешь.


Server-side уязвимости веб-приложений банка

Server-side-атаки затрагивают непосредственно веб-приложение самого банка. Первый по уязвимости сервис для атак — это SQL injection (внедрение SQL-кода — «Хайтек»). Если ваше ДБО (дистанционное банковское обслуживание — «Хайтек») уязвимо к SQL injection, то возникает множество проблем. В частности, для того, чтобы проследить нужные платежи, не обязательно полностью захватывать базу данных и получать админские привилегии, вполне достаточно найти табличку, которая есть в каждом ДБО. Она отвечает за просадку платежей. Селектами находим эту табличку и инсертами вколачиваем нужные платежи. Этого хватает, чтобы обойти все двухфакторные аутентефикации, потому что чаще всего это СМС, реже — подпись ключами и криптография.

RCE — это не уязвимость, а то, что влечет эксплуатация тех или иных уязвимостей. RCE расшифровывается как Remote Code Execution — компьютерная уязвимость, при которой происходит удаленное выполнение кода на взламываемом компьютере или сервере. RCE является максимальной угрозой класса А1 по классификации OWASP. Происходит это, когда мы отправляем приложению некий код без должной валидации, он принимается этим сервером и отдается интерпретатору.

Многие программисты о существовании IDOR даже не слышали, что меня очень удивляет. Расшифровывается как Insecure Direct Object Reference — небезопасные прямые ссылки на объекты. Особенность заключается в том, что у нас есть интернет-банк, а у него какой-то метод оплаты — с какого счета и кому оплатить. Нам интересен вариант «с какого счета оплатить». И если мы в этом параметре подставим другой счет, то без должной проверки он выполнится. По сути, можно методом перебора перевести со всех счетов огромное количество денег.

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


Состояние гонки (англ. Race Condition) — ошибка проектирования многопоточной системы или приложения, при которой работа системы или приложения зависит от того, в каком порядке выполняются части кода. Состояние гонки — «плавающая» ошибка (гейзенбаг), проявляющаяся в случайные моменты времени и «пропадающая» при попытке ее локализовать.


APT-атаки или бесконтактное ограбление

Если нужно украсть сразу много, то это уже АРТ (Advanced Persistent Threat, развитая устойчивая угроза или целевая кибератака — «Хайтек»). Во всех банках существует Active Directory для управления учетными данными. Основная наша цель — администратор этого контроллера домена. Как это делается? Рассказываю историю, как угнать домен за пять минут. Админы постоянно используют Group Policy Preferences. Это позволяет очень просто управлять компьютерами в домене, в частности, можно подключать сетевые диски, выполнять какие-то действия, но при этом нужно ввести пароль. Тот, кто не читает предупреждение от системы, вбивает сразу же пароль администратора домена. Этот пароль шифруется на очень криптостойком алгоритме AES 256, ключ от которого лежит на сайте Microsoft. Отправляется это все в общую папку, которая доступна абсолютно всем пользователям домена. Дальше необходимо просто просадить на компьютер любого сотрудника, зайти в папку Policys, найти XML и параметр password, в котором лежит ключ. Подсовываем этот ключ и получаем пароль от домена.


Из чего состоит банк:

  • АБС — автоматизированная банковская система;
  • система ДБО;
  • процессинг, который управляет карточками;
  • АРМ КБР и Swift: АРМ связан с Центробанком, через него гоняются платежи по России, а Swift — международная система;
  • платежный шлюз, через который проходят самые разные платежи — за квартиру, интернет и телефон. Он связан с разными платежами типа QIWI, «Рапиды» и CyberPlat.

Windows — очень особенная ОС, потому что у нее есть обычай сохранять все пароли в оперативной памяти. Есть одна утилита, mimikatz, которая позволяет получать их в открытом виде. Заходим в компьютер, если у нас есть права локального администратора, запускаем эту программу, заходим на следующий компьютер и там запускаем ее тоже, сграбливаем все пароли. И когда-нибудь мы попадем на тот компьютер, где есть пароль домена.

Если у нас нет полномочий локального админа, то начинаем запускать эксплойты. Чаще всего в таких случаях тоже сидит девочка-секретарь, которой ни к чему пароль локального админа. Есть хороший сайт –– www.rapid7.com, на котором есть база данных по эксплойтам и непосредственно сами эксплойты. Их можно скачать и по очереди запускать на тех компьютерах, которые есть в нашем бутнете. Получили привилегии, запустили mimikatz, сдампили все пароли и переходим к следующему компьютеру. Запустили эксплойты, у нас появилась сессия с правами system, от нее запускаем снова getsystem, после mimikatz и хэшим dump-пароли, а потом их можно расшифровать. Собственно, всё, так получают контроль над всей сетью банка. Чтобы проследить платеж в АРМ КБР (автоматизированное рабочее место клиента Банка России — «Хайтек»), используются банальные файловые шары. Ничего не мешает злоумышленнику, у которого есть доступ в этот файловый сервер, туда залезть и подменить эти файлики.

Чтобы проследить платеж в АРМ КБР (автоматизированное рабочее место клиента Банка России — «Хайтек»), используются банальные файловые шары. Ничего не мешает злоумышленнику, у которого есть доступ в этот файловый сервер, туда залезть и подменить эти файлики.

Для атаки на процессинг не нужны подставные лица и юридические фирмы. Если есть доступ в процессинг, злоумышленники, как правило, сидят около двух месяцев и изучают его. А затем в один момент делают следующее. Они выпускают карты, достаточно карт 30–50, абсолютно на разных юридических и физических лиц, не так важно. Вывозят их в какую-нибудь Индию, а сами едут в Таиланд. В один прекрасный момент заходят на процессинг и делают повышение лимитов карт. Они их просто в миллион девяток выставляют. И у них есть карты с неограниченным выводом средств, пока хватает денег в банкомате. Они засовывают карты в банкоматы и опустошают таким образом. Фишка в том, что все это происходит в разных странах и до банка не сразу же доходит этот файлик, который говорит, что транзакция проведена. Обычно проходит от одного до пяти дней, пока платежная система его подгрузит. Таким способом очень много банков было поломано.

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


Чистка следов после атаки АРТ:

  • Затирание логов.
  • Затирание MBR.
  • Запуск криптолокера.

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


Сломать и украсть не так сложно, сложнее вывести эти деньги, спрятаться, чтобы вас не нашли. Так что те, кто собирается ступить на эту дорогу, — помните про первый и второй пункт.

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