InterLock: Повний розбір інструментів операції з програмами-вимагачами
Detection stack
- AIDR
- Alert
- ETL
- Query
Резюме
InterLock — це операція подвійнoгo здирництва, що діє з жовтня 2024 року, яка викрадає дані, має витік на сайті Tor і шифрує файли в середовищах FreeBSD/ESXi та Windows. Ланцюг вторгнення використовує ScreenConnect MSI-інсталятори для початкового доступу, багатомовний бекдор NodeSnake для постійності, механізм збору облікових даних NTLM і спеціальну систему шифрування, що пакує навантаження програми-здирника. Трафік командно-контрольного сервера покладається на WebSocket-комунікацію, захищену RC4, підтриману статичними IP-адресами для підтримки та додатковими кінцевими точками Cloudflare Tunnel. Програма-здирник додає розширення .interlock, залишає записку зі здирництвом, що містить URL-адресу переговорів .onion і використовує слабкі ключі, згенеровані PRNG, які можуть дозволити відновлення.
Розслідування
Звіт аналізує 15 зразків, включаючи чотири інсталятори MSI ScreenConnect, три імпланти NodeSnake (JavaScript, Java та нативний C++), одну DLL викрадача NTLM і чотири виконувані файли програм-здирників. Усі артефакти поділяють три жорстко зашиті IP-адреси C2 і той самий цикл дешифрування криптера, позначений байтовим шаблоном 488b041f483345f04889041e. У своїй нативній формі NodeSnake додає тунелювання TCP, викрадення потоків і протидиагностування. Вона створює щоденне заплановане завдання та очищає журнали подій Windows через wevtapi.dll. Інфраструктура також включає два домени, захищені Let’s Encrypt, і кілька безкоштовних піддоменів Cloudflare Tunnel.
Захист
Захисники повинні блокувати відомі IP-адреси C2 і домени Cloudflare Tunnel на периметрі. Якщо ConnectWise ScreenConnect не потрібен, його слід видалити або відключити. Засоби безпеки повинні виявляти байтовий шаблон криптера та префікс рукостискання зашифрованого WebSocket з RC4 92 01 88 fe. Також слід контролювати заплановане завдання з назвою TaskSystem і будь-яке створення файлів з розширенням .interlock. Контроль доступу з найменшими привілеями може додатково зменшити ризик збору облікових даних NTLM і зловживання інструментом rundll32.
Відповідь
Якщо виявлено InterLock, ізолюйте постраждалий хост, збережіть повний бінарний файл для судової експертизи і витягніть вбудований публічний ключ RSA-4096 разом із зашифрованими ключами для кожного файлу. За можливості намагайтесь відновити ключі, використовуючи слабенький rand() плюс clock() ГВП якщо надійні часові штампи доступні. Видаліть заплановане завдання TaskSystem, видаліть артефакти .interlock і відновіть постраждалі дані з резервних копій. Постраждалих користувачів слід повідомити, а подію з подвійним здирництвом слід повідомити в правоохоронні органи.
"graph TB %% Class definitions classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef malware fill:#ff9999 classDef process fill:#cccccc classDef operator fill:#ff9900 %% Initial Access initial_access["<b>Action</b> – <b>T1204.004 User Execution</b>: Malicious MSI installer delivered"] class initial_access action msiexec_tool["<b>Tool</b> – <b>Name</b>: Msiexec<br/><b>Technique</b>: T1218.007 System Binary Proxy Execution"] class msiexec_tool tool screenconnect_client["<b>Malware</b> – <b>Name</b>: ScreenConnect client<br/><b>Purpose</b>: Remote access component"] class screenconnect_client malware nodesnake_backdoor["<b>Malware</b> – <b>Name</b>: NodeSnake backdoor<br/><b>Capabilities</b>: Interactive Windows shell and oneu2011shot commands"] class nodesnake_backdoor malware %% Persistence persistence_task["<b>Action</b> – <b>T1546 Event Triggered Execution</b>: Scheduled task created"] class persistence_task action scheduled_task["<b>Process</b> – <b>Name</b>: TaskSystem<br/><b>Schedule</b>: Daily at 20:00"] class scheduled_task process self_delete["<b>Action</b> – <b>T1070.009 Indicator Removal</b>: Selfu2011deletion after execution"] class self_delete action %% Credential Access credential_access["<b>Action</b> – <b>T1556.008 Modify Authentication Process</b>: NTLM hash harvesting"] class credential_access action ntlmthief_dll["<b>Tool</b> – <b>Name</b>: NtlmThief DLL<br/><b>Function</b>: Harvest NTLM hashes and force NTLMv1"] class ntlmthief_dll tool %% Defense Evasion defense_evasion["<b>Action</b> – <b>T1027 Obfuscated Files or Information</b>: Payloads packed with custom crypter"] class defense_evasion action custom_crypter["<b>Tool</b> – <b>Name</b>: Custom Crypter<br/><b>Techniques</b>: XOR, junk code, compileu2011afteru2011delivery, compression, stripped binaries"] class custom_crypter tool %% Command and Control c2_communication["<b>Action</b> – <b>T1071.001 Application Layer Protocol</b>: WebSocket channel (RC4 encrypted)"] class c2_communication action websocket_impl["<b>Tool</b> – <b>Name</b>: WebSocket client<br/><b>Features</b>: Dynamic URLs via Cloudflare Tunnel"] class websocket_impl tool %% Proxy Services proxy_service["<b>Action</b> – <b>T1090 Proxy</b>: Internal and multiu2011hop proxying"] class proxy_service action cloudflare_tunnel["<b>Tool</b> – <b>Name</b>: Cloudflare Tunnel<br/><b>Purpose</b>: Dynamic resolution of C2 URLs"] class cloudflare_tunnel tool protocol_tunneling["<b>Action</b> – <b>T1572 Protocol Tunneling</b>: TCP tunnel relays"] class protocol_tunneling action %% Privilege Escalation / Defense Evasion priv_esc["<b>Action</b> – <b>T1055.003 Process Injection</b>: Thread Execution Hijacking"] class priv_esc action tls_injection["<b>Action</b> – <b>T1055.005 Process Injection</b>: Thread Local Storage injection"] class tls_injection action process_injection_tool["<b>Tool</b> – <b>Name</b>: Process Injection routine"] class process_injection_tool tool %% Discovery discovery["<b>Action</b> – <b>T1016 System Network Configuration Discovery</b>: Collect system and network info"] class discovery action %% Collection collection["<b>Action</b> – <b>T1560.001 Archive via Utility</b> and <b>T1560.003 Archive via Custom Method</b>: Package exfiltrated data"] class collection action %% Exfiltration exfiltration["<b>Action</b> – <b>T1020 Automated Exfiltration</b> and <b>T1048.002 Exfiltration Over Asymmetric Encrypted Nonu2011C2 Protocol</b>"] class exfiltration action %% Impact impact["<b>Action</b> – <b>T1486 Data Encrypted for Impact</b>: InterLock ransomware encrypts files"] class impact action ransomware["<b>Malware</b> – <b>Name</b>: InterLock ransomware<br/><b>Encryption</b>: AESu2011256u2011CBC and RSAu20114096 OAEP<br/><b>Extension</b>: .interlock"] class ransomware malware ransom_note["<b>Action</b> – <b>T1490 Inhibit System Recovery</b>: Clear event logs and drop ransom note"] class ransom_note action artifact_cleanup["<b>Action</b> – <b>T1070 Indicator Removal</b>: Delete artifacts and files"] class artifact_cleanup action %% Connections initial_access –>|uses| msiexec_tool msiexec_tool –>|installs| screenconnect_client screenconnect_client –>|drops| nodesnake_backdoor nodesnake_backdoor –>|creates| persistence_task persistence_task –>|creates| scheduled_task scheduled_task –>|executes| self_delete nodesnake_backdoor –>|enables| credential_access credential_access –>|uses| ntlmthief_dll nodesnake_backdoor –>|obfuscates| defense_evasion defense_evasion –>|employs| custom_crypter nodesnake_backdoor –>|communicates via| c2_communication c2_communication –>|uses| websocket_impl websocket_impl –>|routes through| cloudflare_tunnel cloudflare_tunnel –>|supports| proxy_service proxy_service –>|includes| protocol_tunneling nodesnake_backdoor –>|performs| priv_esc priv_esc –>|uses| process_injection_tool process_injection_tool –>|also performs| tls_injection nodesnake_backdoor –>|performs| discovery nodesnake_backdoor –>|packages data with| collection collection –>|exfiltrates via| exfiltration exfiltration –>|delivers payload to| impact impact –>|uses| ransomware ransomware –>|leaves| ransom_note ransom_note –>|triggers| artifact_cleanup %% Class assignments class msiexec_tool tool class screenconnect_client malware class nodesnake_backdoor malware class ntlmthief_dll tool class custom_crypter tool class websocket_impl tool class cloudflare_tunnel tool class process_injection_tool tool class ransomware malware "
Потік атак
Виявлення
Підозрілий зв’язок домену Trycloudflare (через dns)
Переглянути
Підозріле виконання з профілю публічного користувача (через створення процесу)
Переглянути
Можливе використання Schtasks або AT для створення наполегливості (через командний рядок)
Переглянути
Можливе використання PING для відкладеного виконання (через командний рядок)
Переглянути
Підозріла команда та контроль за запитом DNS з незвичним доменом верхнього рівня (через dns)
Переглянути
Можлива системна перевірка (через командний рядок)
Переглянути
Можливий облік або маніпуляція групою (через командний рядок)
Переглянути
IOC (Emails) для виявлення: InterLock: повне розбиття інструментарію операції програми-здирника
Переглянути
IOC (SourceIP) для виявлення: InterLock: повне розбиття інструментарію операції програми-здирника
Переглянути
IOC (HashSha256) для виявлення: InterLock: повне розбиття інструментарію операції програми-здирника
Переглянути
IOC (DestinationIP) для виявлення: InterLock: повне розбиття інструментарію операції програми-здирника
Переглянути
IOC (HashMd5) для виявлення: InterLock: повне розбиття інструментарію операції програми-здирника
Переглянути
Виявлення рукостискання та шаблону URL WebSocket NodeSnake [Підключення до мережі Windows]
Переглянути
Виявити ELF варіант InterLock з використанням sysconf для підрахунку ЦП [Створення процесу Linux]
Переглянути
Виявлення методів виконання імпланта NodeSnake JS і DLL InterLock [Створення процесу Windows]
Переглянути
Виявлення програми-здирника InterLock та підготовка виходу команд NodeSnake [Події файлу Windows]
Переглянути
Виконання симуляції
Передумови: Телеметрія та перевірка базового рівня повинні пройти.
Аргументація: Цей розділ деталізує точне виконання техніки супротивника (TTP), призначеної для спрацьовування правила виявлення. Команди та нарація МАЮТЬ безпосередньо відображати ідентифіковані TTP для генерування точної телеметрії, яку очікує логіка виявлення.
-
Атакове наратив та команди:
Супротивник скомпрометував робочу станцію з низькими привілеями та виконує імплант NodeSnake JavaScript, який виконує дві дії:- Перевірка рівня привілеїв – він виконує
cmd.exe /c net1 sessionдля списку активних мережевих сесій, відомий метод для визначення, чи процес запущено як SYSTEM або звичайний користувач. - Виконання навантаження на основі DLL – він залишає шкідливу DLL (
evilpayload.dll) у%TEMP%та запускає її черезrundll32.exe %TEMP%evilpayload.dll,run %TEMP%evilpayload.dll. Це імітує техніку InterLock з використанням rundll32 як завантажувача другого відступу.
Обидві команди виконуються безпосередньо для створення точних рядків командного рядка, які Sigma-правило відповідає.
- Перевірка рівня привілеїв – він виконує
-
Скрипт регресійного тесту:
# ------------------------------------------------- # Симуляція NodeSnake/InterLock – ініціює Sigma правило # ------------------------------------------------- # 1. Створення фіктивної шкідливої DLL (двійковий файл не потрібен для виявлення) $dllPath = "$env:TEMPevilpayload.dll" Set-Content -Path $dllPath -Value "MZ" -Encoding ASCII # Мінімальне заповнення заголовка PE # 2. Виконання команди перевірки привілеїв (точне співпадіння) Write-Host "[*] Виконується перевірка привілеїв (cmd.exe /c net1 session)" cmd.exe /c net1 session # 3. Виконання завантаження навантаження через rundll32 (точне співпадіння) Write-Host "[*] Запуск шкідливої DLL через rundll32.exe" rundll32.exe "$dllPath,run $dllPath" # 4. Пауза, щоб дозволити обробку SIEM Start-Sleep -Seconds 10 -
Команди очищення:
# ------------------------------------------------- # Очищення після симуляції # ------------------------------------------------- $dllPath = "$env:TEMPevilpayload.dll" if (Test-Path $dllPath) { Remove-Item -Path $dllPath -Force Write-Host "[+] Видалено $dllPath" } else { Write-Host "[-] ДDLL не знайдена для видалення." } # Опціонально очистити історію PowerShell для зменшення слідів Clear-History