
Хакер #309. Самооборона по-хакерски
Исследователи «Лаборатории Касперского» обнаружили новую волну атак группы Head Mare, нацеленную на российские промышленные предприятия. В этой кампании хакеры использовали ранее неизвестный бэкдор PhantomPyramid, написанный на Python.
По данным компании, в марте 2025 года более 800 сотрудников примерно 100 организаций получили рассылку, которая содержала ранее неизвестный вредонос. Среди целей злоумышленников были приборостроительная и машиностроительная отрасли.
Потенциальные жертвы получали однотипные письма от некоего секретариата с архивом ZIP во вложении. В них отправители просили адресата подтвердить получение информации и ознакомиться с заявкой их архива. Если пользователь открывал вложение, он видел документ-приманку с запросом на ремонт оборудования якобы от одного из министерств.
Обычно в таких случаях злоумышленники отправляют запароленный архив, чтобы избежать его автоматического сканирования и обнаружении малвари. Но на этот раз хакеры использовали технику polyglot, которая позволяет атакующим создавать файлы, которые могут быть прочитаны разными системами и интерпретированы как несколько разных форматов. Так, они могут одновременно содержать и компоненты безобидного файла, и вредоносный код.
В результате один и тот же файл может быть распознан как изображение, документ или исполняемый файл, в зависимости от контекста, в котором его открывают. Так, несмотря на расширение ZIP, файл «Заявка_[REDACTED]_5_03Д.zip» представлял собой бинарный исполняемый файл, в конце которого был дописан небольшой ZIP-архив. Такая уловка позволяла открыть и просмотреть содержимое архива в стандартном файловом менеджере Windows Explorer, будто кроме него в файле ничего нет.
Внутри архива с паролем 2525 можно найти ярлык «Заявка_[REDACTED]_5_03Д.pdf.lnk». И если пользователь открывал его, запускался интерпретатор powershell.exe, после чего скрипт находил файл «Заявка_[REDACTED]_5_03Д.zip», содержащий бэкдор, и запускал его как исполняемый при помощи команды start.
Также он извлекал часть содержимого файла «Заявка_[REDACTED]_5_03Д.zip» (147 100 байт начиная с байта 7 166 046), сохранял как «Заявка_[REDACTED]_5_03Д.pdf» во временном каталоге и запускал его. В результате пользователь видел документ-приманку с заявкой на ремонт оборудования якобы от одного из министерств.
Исполняемая часть polyglot-файла представляла собой новый для экспертов бэкдор PhantomPyramid, написанный на Python версии 3.8 и скомпилированный с использованием PyInstaller.
При запуске бэкдор формирует запрос с полями uid, private_ip и public_ip и отправляет его в формате JSON на адрес http://109.107.182[.]11/hello.
Поле uid содержит идентификатор, который генерируется случайным образом. Для получения значения public_ip скрипт использует публичный сервис api.ipify.org. В свою очередь, значение поля private_ip — это IP-адрес устройства внутри локальной сети, который бэкдор получает в результате выполнения функций socket.gethostbyname(socket.gethostname()). После отправки данных управляющий сервер должен вернуть ответ об успешной регистрации бота.
Затем бэкдор начинает опрашивать адрес http://109.107.182[.]11/task?uid={uid} в цикле и пытается получить команду, которую выполнит с использованием функции Python subprocess.run. Если команда начинается с префикса process, то вместо subprocess.run будет использована функция subprocess.Popen. Дополнительно в бэкдоре реализована еще одна команда — load. Она позволяет злоумышленнику загружать на зараженную машину любые другие вредоносные компоненты с адреса, переданного вместе с командой, и сохранять их по указанному пути.
Исследователи отмечают, что им удалось получить один из загружаемых командой load компонентов, которым оказалось ПО MeshAgent — агент для удаленного управления устройствами с открытым исходным кодом, входящий в решение MeshCentral. Это легитимное ПО, которое, однако, используют и организации, и злоумышленники. В частности, оно присутствует в арсенале группировки Awaken Likho.