Кампанія AsyncRAT використовує AutoIt для багатоступеневої доставки шкідливого ПЗ
Detection stack
- AIDR
- Alert
- ETL
- Query
Короткий опис
Виявлено ланцюжок з п’яти стадій інфекції AsyncRAT, що використовує соціально спроектований файл batch та справжній інтерпретатор AutoIt для виконання. Шкідливе ПЗ спирається на багатошарову обфускацію, включаючи реконструкцію фрагментів Base64 та багаторазове XOR-декодування, щоб уникнути виявлення. На фінальному етапі розгортається пакет AsyncRAT на основі .NET, який інжектується у справжній процес Windows для викрадення інформації та захоплення знімків екрану.
Розслідування
Розслідування простежило виконання від шкідливого batch файлу до PowerShell скрипту, за яким слідував скрипт-завантажувач AutoIt з назвою kojuyn.ini який скидає зашифроване навантаження. Аналітики використали PE-Sieve для підтвердження процесу інжекції у charmap.exe і визначили, що навантаженням був збірка .NET, здатна до патчування AMSI. Кінцеве навантаження було відновлено з пам’яті як Veukuzmw.dll.
Пом’якшення
Захисники повинні контролювати підозріле виконання PowerShell з використанням прихованих вікон та batch файлів, створених у папці автозапуску користувача. Організаціям варто обмежити виконання підписаних скриптів та стежити за справжніми бінарними файлами, такими як charmap.exe ініціювання несподіваних зовнішніх мережевих з’єднань. Також рекомендується здійснювати посилений моніторинг активності інтерпретатора AutoIt та спроб інжекції в пам’ять.
Реакція
Якщо виявлена активність AsyncRAT, уражену кінцеву точку слід негайно ізолювати, щоб зупинити подальшу комунікацію C2 або ексфільтрацію даних. Відповідачі повинні виконати криміналістичний аналіз пам’яті, щоб виявити інжектовані навантаження та зберегти леткі артефакти. Системи також повинні бути перевірені на наявність механізмів стійкості в папці автозапуску, тоді як історія команд PowerShell має бути переглянута для додаткового вивантаження або латерального переміщення.
Потік атаки
Ми ще оновлюємо цю частину.
Виявлення
Підозрілий виконуваний файл, що містить лише цифри в назві (через cmdline)
Підозрілі рядки PowerShell (через powershell)
Возможные индикаторы обфускации PowerShell (через powershell)
Підозрілі бінарні файли/скрипти у місці автозапуску (через file_event)
IOC (HashSha256) для виявлення: AsyncRAT, доставлений через AutoIT: повний аналіз ланцюга
IOC (SourceIP) для виявлення: AsyncRAT, доставлений через AutoIT: повний аналіз ланцюга
IOC (DestinationIP) для виявлення: AsyncRAT, доставлений через AutoIT: повний аналіз ланцюга
Інжекція процесу AsyncRAT у charmap.exe [Створення процесу Windows]
Стійкість PowerShell через папку автозапуску [Windows Powershell]
Виконання симуляції
-
Сценарій атаки та команди: Зловмисник отримав початковий доступ і хоче встановити стійкість. Щоб уникнути виявлення, вони уникають прямих змін до Реєстру. Замість цього вони використовують оболонку команд (
cmd.exe) для виклику прихованої інстанції PowerShell. Ця інстанція PowerShell отримує інструкцію записати невеликий шкідливий batch файл у папку автозапуску поточного користувача. Це забезпечує, що навіть після перезавантаження, код зловмисника буде автоматично виконуватися, коли користувач увійде в систему. -
Сценарій регресійного тестування:
# Цей скрипт імітує точний ланцюг: CMD -> PowerShell (прихований) -> Запис у автозапуск $startupFolder = "$env:APPDATAMicrosoftWindowsStart MenuProgramsStartup" $targetFile = Join-Path $startupFolder "persistence_test.bat" $payloadContent = "@echo off`necho 'Persistence Test Successful'" # Ми виконуємо через CMD, щоб задовольнити вимогу правила 'ParentImage: cmd.exe' Start-Process cmd.exe -ArgumentList "/c powershell.exe -WindowStyle Hidden -Command `"$payloadContent | Out-File -FilePath '$targetFile' -Encoding ascii`"" -Wait Write-Host "Команду симуляції відправлено. Перевірте події Sysmon ID 1 і 11." -
Команди для очищення:
$startupFolder = "$env:APPDATAMicrosoftWindowsStart MenuProgramsStartup" $targetFile = Join-Path $startupFolder "persistence_test.bat" if (Test-Path $targetFile) { Remove-Item $targetFile -Force Write-Host "Прибирання завершено: $targetFile видалено." } else { Write-Host "Файл не знайдено, очищення не потрібне." }