
Взлом Maersk через унаследованную систему: что проверить в старых приложениях на VB6 и .NET
11 ноября 2026 года A.P. Moller-Maersk сообщила, что посторонние получили доступ к одной из её систем и выгрузили из неё данные. Взломали не основную платформу, а локальную legacy-систему, которая досталась компании вместе с одним из ранее купленных бизнесов. Для команд, которые сопровождают старые приложения на VB6, Access и Web Forms, это знакомый сценарий: о такой системе вспоминают, когда она уже стала точкой входа.
Что известно на 13 ноября. В заявлении, которое цитирует The Register, Maersk называет систему «локальной», полученной «в результате предыдущего приобретения», и пишет, что следов влияния на другие системы и на интеграции клиентов через API и EDI не нашли.
Infosecurity Magazine добавляет версию вымогателей: группировка WhiteArmor утверждает, что вынесла около 100 ГБ логистических данных, включая записи водителей и пароли в открытом виде, и требует 5 млн долларов в биткоинах. Сама Maersk пока говорит, что чувствительные данные, по предварительным выводам, не раскрыты.
Название купленной компании и стек системы не раскрываются, поэтому выводы ниже — не разбор конкретного кода Maersk, а чек-лист для похожих случаев. Если после инвентаризации окажется, что унаследованную систему проще заменить, чем латать, а своей команды на это нет, обсудить аудит и переписывание можно с внешней студией, например на yusmpgroup.ru. Но начать стоит с того, что можно сделать своими силами за неделю.
Почему унаследованные системы взламывают чаще
Систему, доставшуюся после покупки компании, обычно никто не считает своей. Команда, которая её писала, ушла или осталась у продавца, документации нет, а бизнес-процесс на ней продолжает работать. Seemant Sehgal из BreachLock в комментарии Infosecurity Magazine говорит именно об этом: при сделках M&A владельцы систем теряются, и тестирование на проникновение стоит проводить ещё на этапе due diligence, до подписания.
В мире VB это выглядит так:
- десктопное приложение на VB6 ходит в SQL Server под общим логином
sa, пароль которого записан в INI-файле или в коде; - база Access с таблицей пользователей лежит на общем диске, пароли в ней хранятся текстом;
- сайт на ASP.NET Web Forms крутится на старом IIS, а строка подключения в
web.configне зашифрована; - служба обмена с партнёрами по FTP или EDI работает под учётной записью человека, уволенного несколько лет назад.
Каждый пункт по отдельности не выглядит аварией. Вместе они дают ровно ту картину, о которой заявляют вымогатели: доступ к локальной системе и пароли, которые можно прочитать без взлома хешей.
Как найти пароли в открытом виде в старой базе
Быстрее всего начать с базы данных. Запрос ниже ищет в SQL Server столбцы, по названию похожие на хранилище паролей. Затем по каждому найденному столбцу стоит посмотреть, что в нём лежит: хеш фиксированной длины или читаемый текст.
-- Столбцы, похожие на пароли, во всех таблицах текущей базы
SELECT s.name AS schema_name, t.name AS table_name,
c.name AS column_name, ty.name AS data_type, c.max_length
FROM sys.columns c
JOIN sys.tables t ON t.object_id = c.object_id
JOIN sys.schemas s ON s.schema_id = t.schema_id
JOIN sys.types ty ON ty.user_type_id = c.user_type_id
WHERE c.name LIKE '%pass%' OR c.name LIKE '%pwd%' OR c.name LIKE '%parol%'
ORDER BY s.name, t.name;Если значения в столбце разной длины и читаются глазами, пароли хранятся открытым текстом. В Access то же самое проверяется просмотром таблиц пользователей. В исходниках на VB6 и VB.NET ищите строки Password=, pwd= и User ID=sa в коде, INI-файлах и app.config. Переход на хеширование с солью — это правка схемы и формы входа, а не всего приложения: в .NET для этого есть класс Rfc2898DeriveBytes (PBKDF2), который работает и из VB.NET.
Что проверить, кроме паролей
Кроме паролей, проверьте учётные записи, сетевой доступ, конфигурацию и журналы. Через них старая система и связана с остальной инфраструктурой. Maersk отдельно подчёркивает, что инцидент не затронул интеграции через API и EDI. Для небольшой компании это самая опасная часть: старая система часто связана с новой через общую базу, сетевую папку или служебную учётку с широкими правами. Darin Fredde из Ridge Security формулирует вопрос для расследования так: выдержали ли границы между legacy-системой и остальной сетью.
Порядок проверки:
- Учётные записи. Выгрузите логины, под которыми работают службы, задания и подключения к базе. Отключите учётки уволенных сотрудников и подрядчиков, общий
saзамените отдельным логином с минимальными правами. - Сеть. Проверьте, откуда доступен сервер. Внутреннему приложению на VB6 не нужен открытый наружу порт SQL Server или RDP.
- Конфигурация. Зашифруйте секции
connectionStringsвweb.configсредствамиaspnet_regiis, уберите пароли из INI-файлов. - Журналы. Включите аудит входов в SQL Server и Windows. Без журналов после инцидента нельзя понять, что именно выгрузили.
- Решение о будущем. Для каждой системы запишите срок: изолировать, перенести или вывести из эксплуатации.
Подробный список того, что смотреть в коде, мы собирали в чек-листе аудита legacy-кодовой базы на VB.NET, а меры для сайтов на Web Forms — в материале о защите старых приложений на ASP.NET Web Forms.
Что сделать на этой неделе
- Составить реестр унаследованных систем с владельцем, стеком и датой последнего обновления.
- Найти пароли в открытом виде в базах, коде и конфигурации.
- Отключить лишние учётные записи, сменить общие пароли служб и закрыть внешний доступ к серверам.
- Включить журналы входов и проверить, что они сохраняются хотя бы 90 дней.
Если владельца у системы так и не нашлось, это тоже результат: такую систему стоит либо передать на сопровождение, либо запланировать её замену. Как передать поддержку внешней команде без потери знаний, мы разбирали в статье об аутсорсинге поддержки приложений на VB6 и VB.NET.
Вопросы об инциденте Maersk
Через какую систему взломали Maersk?
По заявлению Maersk от 11 ноября 2026 года, доступ получили к локальной legacy-системе, которая досталась компании после одного из прошлых приобретений. Название купленной компании и технологии системы не раскрываются. Влияния на другие системы Maersk и на интеграции клиентов через API и EDI компания не обнаружила.
Подтверждены ли слова вымогателей о паролях в открытом виде?
Нет. Утверждение о 100 ГБ данных и паролях водителей в открытом виде принадлежит группировке WhiteArmor, которая требует 5 млн долларов. Maersk сообщает, что, по предварительным выводам, чувствительные данные не раскрыты. Расследование продолжается.
Касается ли это компаний, которые никого не покупали?
Да. Унаследованной бывает и система, оставшаяся от уволенного разработчика или бывшего подрядчика: владельца нет, документации нет, а процесс на ней работает. Риски те же — общие логины, пароли в конфигурации и забытый внешний доступ.