
Недавно наши коллеги из Центра промышленной экспертизы Positive Technologies обнаружили на MalwareBazaar один любопытный Windows-образец. Вот его SHA-256:
e014dadf6d93b312b93e2fc857791c241692da4015da7a24a4d42a946551add2
Наше внимание привлекло сообщение от аккаунта, с которого залили данный сэмпл.
В тексте сообщения пользователь с ником jeans описывает вредоносную программу, обнаруженную на компьютере с Windows в промышленной среде (на предприятии с оборудованием Siemens). По его словам, предположительно новый вредонос нацелен на промышленные системы управления (ICS). Он пытается манипулировать данными ПЛК по протоколам S7Comm и Modbus TCP, а также маскируется и закрепляется в Windows. Автор при этом подчеркивает, что фактический вред для контроллеров пока не подтвержден.

Хм, ICS-вредонос, причем уже с готовым названием S7Flip (то есть нам даже не нужно напрягать свою фантазию, чтобы назвать его)? Звучит интересно! Давайте взглянем, что там внутри.
После закрепления в автозапуске под названием aphp.exe сэмпл начинает собирать адреса устройств в локальной сети — это адреса 192.168.*.*, 10.*.*.* и 172.*.*.*, после чего проверяет на них наличие определенных открытых портов, которые широко используются промышленными устройствами:
102 — в основном используют контроллеры Siemens для взаимодействия по протоколу S7Comm или S7Comm+.
502 — стандартный порт протокола Modbus TCP; его могут использовать устройства любых производителей.
44818 — в основном используют контроллеры Allen-Bradley (Rockwell) для взаимодействия по протоколу EtherNet/IP (CIP).
Подключение к устройствам Allen-Bradley (Rockwell) фактически не работает. Реализация клиента для EtherNet/IP (CIP) отсутствует: ветка переиспользует Siemens-клиент и пытается подключиться по порту 102 как к контроллеру Siemens. С настоящим Allen-Bradley соединение не установится — воздействие на устройства, открывшие только порт 44818, не оказывается вовсе.
Определив нужные устройства, S7Flip подключается к ним и начинает применять один из деструктивных механизмов (или сразу оба).
Механизм 1: «randomize» значений
По S7Comm (порт 102): по очереди обходит блоки DB 1–10; для каждого выбирает случайное смещение 0–99, читает оттуда 4-байтовое целое, прибавляет случайное целое число от −10 до +10 и записывает обратно.
По Modbus TCP (порт 502): выбирает 16-битный holding-регистр по случайному адресу 0–99, читает текущее значение, прибавляет случайное целое число от −10 до +10 и записывает обратно.
Механизм 2: инверсия битов (findAndModifyInputs)
По S7Comm (порт 102): последовательно проходит первые 100 байтов в блоках DB 1–10: читает байт, меняет его младший бит на противоположный и записывает обратно.
По Modbus TCP (порт 502): последовательно проходит однобитовые ячейки записи (coils — дискретные выводы, команды, флаги) в диапазоне 0–255: читает бит, меняет на противоположный и записывает обратно.
Каждое изменение пишется в logs.csv рядом с исполняемым файлом и содержит пять колонок — время, тег, вендор, старое и новое значение.

Помимо данного бинаря, мы нашли еще один:
88717716e54b35682a28d673764975d439a31ee194c85dfc619a15ea93ab1280
По логике работы он ничем не отличается от рассмотренного ранее образца. Главное отличие заключается в том, что библиотека libmodbus, реализующая работу протокола Modbus, в e014dadf6d93b312b93e2fc857791c241692da4015da7a24a4d42a946551add2 динамически слинкована, а в 88717716e54b35682a28d673764975d439a31ee194c85dfc619a15ea93ab1280 — статически.
В этот же день с этого же аккаунта jeans, помимо e014dadf6d93b312b93e2fc857791c241692da4015da7a24a4d42a946551add2 (название файла — Edge.exe), был залит еще один бинарь:
2c57c1a39933514c63b5a7b585f5948ead04b65e4df96fb595ccda84208c4aa0
При ближайшем рассмотрении он оказался вайпером. При запуске он по-джентльменски спрашивает, не хотите ли вы установить Microsoft Edge:

И если вы отказываетесь, то вайпер прекращает свою работу :)
Но вот если вы соглашаетесь... то будьте готовы к «непредвиденным обстоятельствам». Вот их список:
рекурсивное удаление всего содержимого папки
%USERPROFILE%\Desktop;
там же будет создан файл
compiled-desktop, который будет содержать ровно1 048 576случайных байт;
ну и, разумеется, файл
README.txtс вежливой просьбой перевести биткоины в размере 100 долларов.
После всего этого вредонос добавляет себя в автозапуск.
Расшифровка файлов не предусмотрена: содержимое рабочего стола нигде не сохраняется. Это псевдовымогатель-вайпер.
Самое интересное, что в README.txt указан кошелек, на который злоумышленники предлагают переслать деньги: bc1qp6ejw8ptj9l9pkscmlf8fhhkrrjeawgpyjvtq8 — это официальный кошелек для донатов проекта Bitcoin[.]org. Т. е. жулики на самом деле не хотят выкупа? Хм, интересно...
Чуть позже jeans залил еще один вариант данного инструмента — f47502628708300840efe2771a3c5e7e9a631205512f0a2ee6382a00a92056e2, причем на этот раз файл называется не Edge.exe, а Edgev5.exe.
Обозначает ли v5 какое-то развитие или дальнейшее улучшение вредоноса? Да, в новой версии автор добавил симметричное шифрование файлов с помощью AES-256-GCM, а также расширил количество папок для шифрования: теперь помимо Desktop шифрованию подлежат Downloads и Documents. Правда, есть один нюанс... ключ для расшифрования данных находится в файле master_key.dat, да и биткоин-кошелек такой же, как и в более ранней версии вайпера.
По всей видимости, автор вредоноса активно развивает и тестирует свой инструмент. Возможно, в будущем он начнет активно применять его в «боевом» виде.
А какая связь между S7Flip и вайперами?
В ходе чтения у вас, возможно, возник вопрос: «а как связаны S7Flip и вайпер между собой?» И на самом деле определенные совпадения есть:
все бинари были собраны с помощью тулчейна GCC 16.2.0;
timestamp сборки PE-файлов
88717716e54b35682a28d673769475d439a31ee194c85dfc619a15ea93ab1280(S7Flip) и2c57c1a39933514c63b5a7b585f5948ead04b65e4df96fb595ccda84208c4aa0(Edge.exe) совпадает с точностью до дня — 2026-09-13;
общий аккаунт, с которого файлы были залиты на MalwareBazaar, —
jeans.
Достаточно ли этих данных, чтобы утверждать, что S7Flip и вайперы разработаны одним и тем же автором? Нет, определенные сомнения все равно остаются, но некоторая взаимосвязь все же есть.
Индикаторы компрометации
SHA-256 |
Имя |
PT Fusion |
|---|---|---|
|
S7Flip |
|
|
S7Flip |
|
|
Edge.exe (ver 1) |
|
|
Edgev5.exe |