SOC Prime Bias: High

21 Sep 2026 20:13 UTC

체인스크립트: 블록체인을 통한 Node.js RAT 추적

Author Photo
SOC Prime Team linkedin icon 팔로우
체인스크립트: 블록체인을 통한 Node.js RAT 추적
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

요약

ChainScript는 원격 액세스 트로이 목마(RAT)로 새로 발견된 Node.js 기반이며, 명령 및 컨트롤(C2) 발견을 위해 분산 블록체인 인프라를 사용합니다. 이 악성코드는 EtherHiding 기법을 사용하여 활성 WebSocket 엔드포인트를 동적으로 해결하고 인프라를 빠르게 회전합니다. 주요 기능으로는 인터랙티브 셸, 파일 조작, 암호화폐 지갑 탐색 등이 포함됩니다.

조사

Blackpoint의 적대자 추적 그룹(APG)은 악성 Windows Installer 패키지가 관련된 ClickFix 활동을 조사하는 동안 ChainScript를 식별했습니다. 분석가들은 다수의 Microsoft 테마 디렉터리에 걸쳐 악성코드 구성요소가 단계적으로 배치되고, 해제 역할을 하는 Polygon 스마트 계약이 사용됨을 관찰했습니다. 조사는 위협 행위자가 악성코드 빌드와 함께 해제 계약의 배포를 자동화하여 원활한 C2 전환을 가능하게 한다는 것을 보여주었습니다.

완화

조직은 Windows 실행 대화 상자를 사용하지 않는 곳에서는 비활성화하고 사용자 작성 가능 디렉토리에서 MSI 설치를 제한하여 ClickFix 실행 경로를 줄여야 합니다. 보안 팀은 주의할 점은 특히 msiexec.exe 생성하는 wscript.exe 또는 PowerShell의 비정상적인 프로세스 관계를 모니터링해야 합니다. 사용자는 Win+R.

응급 대처

만약 ChainScript 활동이 탐지되면, 인터랙티브 셸을 통한 측면 이동이나 데이터 유출을 방지하기 위해 영향을 받은 시스템을 즉시 고립시켜야 합니다. 응급 대처자는 Forensics 전체 검토를 통해 이차 페이로드 및 무단 지속성에 대한 레지스트리 실행 키에서 확인해야 합니다. 특히 브라우저 확장자나 로컬 암호화폐 지갑과 관련 있는 경우, 잠재적으로 노출된 자격 증명도 회전시켜야 합니다.

공격 흐름

이 부분은 아직 업데이트 중입니다.

탐지

잠재적 지속성 포인트 [ASEPs – 소프트웨어/NTUSER 하이브] (registry_event 통해)

SOC Prime 팀
2026년 9월 21일

은폐 PowerShell 명령줄을 통한 실행 가능성 (cmdline 통해)

SOC Prime 팀
2026년 9월 21일

비일반적 위치에서 실행되는 NodeJS 바이너리 (cmdline 통해)

SOC Prime 팀
2026년 9월 21일

의심스러운 NodeJS 하위 프로세스 [Windows] (cmdline 통해)

SOC Prime 팀
2026년 9월 21일

LOLBAS WScript / CScript (process_creation 통해)

SOC Prime 팀
2026년 9월 21일

잠재적 예약 작업 생성 (powershell 통해)

SOC Prime 팀
2026년 9월 21일

의심스러운 예약 작업 (audit 통해)

SOC Prime 팀
2026년 9월 21일

탐지할 IOCs (HashSha256): ChainScript: 블록체인을 통한 Node.js RAT 추적

SOC Prime AI 규칙
2026년 9월 21일

ChainScript 블록체인 기반 C2 인프라 발견 탐지 [Windows 네트워크 연결]

SOC Prime AI 규칙
2026년 9월 21일

PowerShell을 통한 ChainScript RAT 실행 탐지 [Windows PowerShell]

SOC Prime AI 규칙
2026년 9월 21일

Msiexec 및 Wscript를 통한 ChainScript Node.js RAT 실행 탐지 [Windows 프로세스 생성]

SOC Prime AI 규칙
2026년 9월 21일

시뮬레이션 실행

  • 공격 내러티브 및 명령: 공격자는 ChainScript를 모방하도록 설계된 Node.js 기반 페이로드를 배포합니다. 목표는 공공 Ethereum RPC 엔드포인트를 쿼리하여 C2 인프라를 발견하는 것입니다. 스크립트는 WebSocket 연결을 시작하고 JSON-RPC eth_call 요청을 보냅니다. 중요한 것은 요청이 페이로드 내에서 특정 기능 선택자 0x4ab7874e 을 포함한다는 점입니다. 이 행동은 맬웨어 수명 주기의 “발견” 단계를 시뮬레이션하므로, C2 주소가 블록체인에서 스마트 계약으로부터 가져옵니다.

  • 회귀 테스트 스크립트:

    # WebSocket을 통해 ChainScript 블록체인 발견을 모방하는 시뮬레이션 스크립트
    # 이 시뮬레이션은 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