SOC Prime Bias: High

21 Sep 2026 20:13 UTC

ChainScript: Відстеження Node.js RAT через блокчейн

Author Photo
SOC Prime Team linkedin icon Стежити
ChainScript: Відстеження Node.js RAT через блокчейн
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Резюме

ChainScript – це нещодавно виявлений віддалений доступ до трояну (RAT) на основі Node.js, що використовує децентралізовану блокчейн-інфраструктуру для виявлення команд і керування (C2). Шкідливе програмне забезпечення використовує техніку EtherHiding, запитуючи смарт-контракт Polygon для динамічного визначення активних кінцевих точок WebSocket і швидкої зміни інфраструктури. Його можливості включають інтерактивні оболонки, маніпулювання файлами та розвідку гаманця криптовалют.

Розслідування

Група Blackpoint’s Adversary Pursuit Group (APG) виявила ChainScript під час розслідування активності ClickFix, що включала зловмисні пакети Windows Installer. Аналітики спостерігали за компонентами зловмисного ПЗ, розміщеними в декількох каталогах з Microsoft-тематикою та смарт-контрактом Polygon, використовуваним як дозвіл. Розслідування показало, що атакуючий автоматизує розгортання контрактів-дозволів разом зі збірками шкідливого програмного забезпечення для забезпечення безпроблемних переходів C2.

Пом’якшення

Організації повинні зменшити шляхи виконання ClickFix, відключивши діалогове вікно Windows Run там, де воно не потрібне, та обмеживши встановлення MSI з каталогів, доступних для запису користувача. Команди безпеки повинні моніторити незвичні відносини процесів, особливо msiexec.exe створює wscript.exe або PowerShell. Користувачів слід навчати розпізнавати соціальну інженерію, яка запитує вручне виконання команд через Win+R.

Реагування

Якщо виявлено активність ChainScript, уражену систему слід негайно ізолювати, щоб запобігти бічному переміщенню або ексфільтрації даних через інтерактивну оболонку. Відповідачі мають виконати повний судовий перегляд вторинних навантажень та несанкціонованої стійкості в запланованих задачах або ключах реєстру Run. Потенційно відкриті облікові дані також слід змінити, особливо ті, що пов’язані з розширеннями браузера або локальними криптовалютними гаманцями.

Потік атаки

Ми все ще оновлюємо цю частину.

Визначення загроз

Можливі точки стійкості [ASEPs – Software/NTUSER Hive] (через registry_event)

Команда SOC Prime
21 вересня 2026

Можливість виконання через приховані командні рядки PowerShell (через cmdline)

Команда SOC Prime
21 вересня 2026

Виконання двійкового файлу NodeJS з незвичайного місця (через cmdline)

Команда SOC Prime
21 вересня 2026

Підозрілі дочірні процеси NodeJS [Windows] (через cmdline)

Команда SOC Prime
21 вересня 2026

LOLBAS WScript / CScript (через process_creation)

Команда SOC Prime
21 вересня 2026

Можливе створення запланованого завдання (через powershell)

Команда SOC Prime
21 вересня 2026

Підозріле заплановане завдання (через audit)

Команда SOC Prime
21 вересня 2026

Індикатори компрометації (HashSha256) для виявлення: ChainScript: Відстеження Node.js RAT через блокчейн

SOC Prime AI Rules
21 вересня 2026

Виявлення інфраструктури C2 на основі блокчейну для ChainScript [Підключення до мережі Windows]

SOC Prime AI Rules
21 вересня 2026

Виявлення виконання ChainScript RAT через PowerShell [Windows PowerShell]

SOC Prime AI Rules
21 вересня 2026

Виявлення виконання ChainScript Node.js RAT через Msiexec і Wscript [Створення процесу Windows]

SOC Prime AI Rules
21 вересня 2026

Виконання симуляції

  • Опис атаки та команди: Атакуючий розгортає платіжне навантаження на основі Node.js, яке призначене для імітації ChainScript. Мета – виявлення інфраструктури C2 шляхом запиту публічної кінцевої точки Ethereum RPC. Скрипт ініціює підключення WebSocket та відправляє JSON-RPC eth_call запит. Критично, запит включає специфічний селектор функцій 0x4ab7874e у межах навантаження. Ця дія спрямована на імітацію фази “виявлення” життєвого циклу шкідливого програмного забезпечення, коли адреса C2 вилучається зі смарт-контракту в блокчейні.

  • Скрипт для регресійного тестування:

    # Симуляційний скрипт для імітації виявлення блокчейну ChainScript через WebSocket
    # Це вимагає середовища Node.js або інструменту, здатного відправляти специфічні WebSocket JSON-RPC навантаження.
    # Для цієї симуляції ми використовуємо скрипт PowerShell для відправки сирого навантаження.
    
    $wsUri = "wss://eth-mainnet.g.alchemy.com/v2/YOUR_API_KEY" # Використовуємо заміщені кінцеві точки RPC
    $ws = New-Object System.Net.WebSockets.ClientWebSocket
    $ct = New-Object System.Threading.CancellationToken
    
    try {
        Write-Host "[+] Підключення до WebSocket RPC..."
        $connectTask = $ws.ConnectAsync($wsUri, $ct)
        $connectTask.Wait()
        Write-Host "[+] З'єднання встановлено."
    
        # Специфічне навантаження, що містить селектор функцій ChainScript
        $payload = '{
            "jsonrpc":"2.0",
            "method":"eth_call",
            "params":[{
                "to":"0x742d35Cc6634C0532925a3b844Bc454e4438f44e",
                "data":"0x4ab7874e0000000000000000000000000000000000000000000000000000000000000000"
            }],
            "id":1
        }'
        $bytes = [System.Text.Encoding]::UTF8.GetBytes($payload)
        $segment = New-Object ArraySegment[Byte] -ArgumentList @(,$bytes)
    
        Write-Host "[+] Відправка навантаження виявлення ChainScript (eth_call + 0x4ab7874e)..."
        $sendTask = $ws.SendAsync($segment, [System.Net.WebSockets.WebSocketMessageType]::Text, $true, $ct)
        $sendTask.Wait()
        Write-Host "[+] Навантаження відправлено."
    
    } catch {
        Write-Error "[-] Симуляція не вдалася: $($_.Exception.Message)"
    } finally {
        if ($ws.State -eq 'Open') {
            $ws.CloseAsync([System.Net.WebSockets.WebSocketCloseStatus]::NormalClosure, "Закривання", $ct).Wait()
        }
        $ws.Dispose()
        Write-Host "[+] Очищення завершено."
    }
  • Команди очищення:

    
    # Скриптом не вносяться стійкі зміни. 
    # Переконайтесь, що будь-які тимчасові процеси Node.js або локальні файли слухачів видалено.
    Stop-Process -Name "node" -ErrorAction SilentlyContinue
    Remove-Item -Path "$env:TEMPchainscript_sim.tmp" -ErrorAction SilentlyContinue