SOC Prime Bias: Medium

28 4월 2026 18:45

하이브리드 위협 생태계로 융합되는 위협: 새롭게 부상하는 하이브리드 공격 생태계에 대한 통찰

Author Photo
SOC Prime Team linkedin icon 팔로우
하이브리드 위협 생태계로 융합되는 위협: 새롭게 부상하는 하이브리드 공격 생태계에 대한 통찰
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

요약

이 보고서는 기존의 사이버 범죄 인프라가 점점 더 암호화폐 드래이너 운영과 수렴하여 웹2 및 웹3 자산을 위험에 빠뜨리는 하이브리드 공격 생태계를 형성하는 방법을 설명합니다. 위협 행위자는 피해자가 지갑을 연결하고, 토큰 거래를 승인하며, 여러 블록체인에 걸쳐 자금을 무의식적으로 전송하도록 설득하기 위해 AI 도구 또는 금융 서비스로 테마화된 세련된 피싱 페이지를 사용합니다. 두 가지 주요 예인 스탭드레이너와 이더랫은 이 모델이 브라우저 기반 지갑 드래이닝과 블록체인 인지 기능을 가진 윈도우 악성코드를 모두 포괄하는 방법을 보여줍니다. 결과적으로 위협은 이제 암호화폐를 사용하는 사용자에게서 비롯하여 주류 기업 환경 깊숙이 확장됩니다.

조사

연구원들은 SteaDrainer 악성코드 서비스 작동을 조사하였으며, PHP 및 자바스크립트 배포 인프라와 Web3Modal을 사용하여 지갑 연결 팝업 창을 나타내는 것을 포함하여 조사하였습니다. 그들은 또한 트로이 목마로 위장된 TFTP 인스톨러를 통해 배포되고 Run 레지스트리 키를 통해 지속성을 유지하며 Ethereum 및 Solana RPC 엔드포인트와 통신하는 이더렛 윈도우 악성코드를 분석하였습니다. 조사 중 팀은 두 경로와 연결된 악의적인 도메인, 레지스트리 키 및 명령줄 아티팩트 등의 지표를 추출하였습니다.

완화

조직은 알려진 악성 도메인에 대한 접근을 차단하고, 가능한 한 지갑 확장 프로그램에 대해 다중 인증을 요구하며, 의심스러운 Run 레지스트리 항목 및 예상치 못한 Node.js 프로세스에 대한 시스템 모니터링을 합니다. 보안 팀은 또한 공공 블록체인 RPC 서비스로의 트래픽을 이상 행동에 대해 검사하고, 브라우저 확장 프로그램을 조작 또는 남용의 징후가 없는지 정기적으로 검토해야 합니다.

대응

이 활동이 탐지되면, 영향을 받은 호스트를 즉시 격리하고, 악성 Run 레지스트리 항목을 제거하고, 허가되지 않은 Node.js 프로세스를 종료하며, 영향을 받은 지갑에서 부여한 모든 토큰 승인을 폐기해야 합니다. 조사자는 추가 페이로드 또는 지속성 메커니즘을 확인하기 위해 법의학 분석을 수행하고, 식별된 지휘 통제 인프라와의 추가 통신을 방지하기 위해 허용 목록 또는 차단 목록을 업데이트해야 합니다.

graph TB %% Class Definitions classDef technique fill:#99ccff classDef tool fill:#ffcc99 classDef process fill:#ffeb99 classDef operator fill:#ff9900 %% Nodes u2013 Techniques initial_access[“<b>기술</b> – <b>T1204.001 사용자 실행: 악성 링크</b><br/><b>설명</b>: 피해자가 악성 콘텐츠를 실행하도록 설계된 링크를 클릭한다.”] class initial_access technique delivery_html_smuggling[“<b>기술</b> – <b>T1027.006 난독화된 파일 또는 정보: HTML 스머글링</b><br/><b>설명</b>: 악성 JavaScript가 HTML에 숨겨진 형태로 웹 페이지를 통해 전달된다.”] class delivery_html_smuggling technique delivery_compile_after[“<b>기술</b> – <b>T1027.004 난독화된 파일 또는 정보: 전달 후 컴파일</b><br/><b>설명</b>: 페이로드는 초기 전달 이후 호스트에서 조립된다.”] class delivery_compile_after technique delivery_embedded_payloads[“<b>기술</b> – <b>T1027.009 난독화된 파일 또는 정보: 내장 페이로드</b><br/><b>설명</b>: 페이로드는 JavaScript와 같은 다른 파일 내부에 숨겨져 있다.”] class delivery_embedded_payloads technique delivery_deobfuscate[“<b>기술</b> – <b>T1140 파일 또는 정보 디오브퍼스케이션/디코딩</b><br/><b>설명</b>: Base64 데이터는 실행 전에 브라우저에서 디코딩된다.”] class delivery_deobfuscate technique persistence_run_key[“<b>기술</b> – <b>T1127.002 신뢰된 개발자 유틸리티 프록시 실행: ClickOnce</b><br/><b>설명</b>: 설치 프로그램이 Runu2011Key를 생성하여 악성 node.exe를 실행한다.”] class persistence_run_key technique persistence_appcert[“<b>기술</b> – <b>T1546.009 이벤트 트리거 실행: AppCert DLL</b><br/><b>설명</b>: 신뢰된 인증서로 서명된 DLL이 지속성을 위해 로드된다.”] class persistence_appcert technique recon_hardware[“<b>기술</b> – <b>T1592.001 피해자 호스트 정보 수집: 하드웨어</b><br/><b>설명</b>: 악성코드는 감염된 시스템의 하드웨어 정보를 조회한다.”] class recon_hardware technique recon_firmware[“<b>기술</b> – <b>T1592.003 피해자 호스트 정보 수집: 펌웨어</b><br/><b>설명</b>: 악성코드는 BIOS 및 펌웨어 정보를 수집한다.”] class recon_firmware technique c2_web_protocols[“<b>기술</b> – <b>T1071.001 애플리케이션 계층 프로토콜: 웹 프로토콜</b><br/><b>설명</b>: HTTP/HTTPS와 같은 표준 웹 트래픽을 C2에 사용한다.”] class c2_web_protocols technique c2_bidirectional[“<b>기술</b> – <b>T1102.002 웹 서비스: 양방향 통신</b><br/><b>설명</b>: 임플란트와 서버 간 양방향 메시징을 허용한다.”] class c2_bidirectional technique c2_oneway[“<b>기술</b> – <b>T1102.003 웹 서비스: 단방향 통신</b><br/><b>설명</b>: 서버 응답 없이 데이터만 전송한다.”] class c2_oneway technique c2_encrypted[“<b>기술</b> – <b>T1573 암호화된 채널</b><br/><b>설명</b>: C2 트래픽은 탐지를 피하기 위해 암호화된다.”] class c2_encrypted technique c2_data_encoding[“<b>기술</b> – <b>T1132 데이터 인코딩</b><br/><b>설명</b>: 데이터는 전송 전에 Base64 등으로 인코딩된다.”] class c2_data_encoding technique c2_config_repo[“<b>기술</b> – <b>T1602 설정 저장소 데이터</b><br/><b>설명</b>: 설정 데이터는 온체인 저장소에서 가져온다.”] class c2_config_repo technique asset_drain[“<b>기술</b> – <b>T1204.002 사용자 실행: 토큰 승인</b><br/><b>설명</b>: 피해자는 Web3Modal UI를 통해 토큰 권한을 승인하여 자산 이동이 가능해진다.”] class asset_drain technique %% Nodes u2013 Tools / Processes tool_malicious_link[“<b>도구</b> – <b>이름</b>: 악성 피싱 링크<br/><b>설명</b>: 가짜 거래 포털을 로드하는 URL.”] class tool_malicious_link tool tool_js_payload[“<b>도구</b> – <b>이름</b>: 난독화된 JavaScript 페이로드<br/><b>설명</b>: 브라우저에서 실행되는 Base64 인코딩 코드.”] class tool_js_payload tool process_installer[“<b>프로세스</b> – <b>이름</b>: Windows 설치 프로그램<br/><b>설명</b>: Runu2011Key 및 node.exe를 드롭한다.”] class process_installer process tool_node_exe[“<b>도구</b> – <b>이름</b>: node.exe<br/><b>설명</b>: 지속성 이후 악성 JavaScript를 실행한다.”] class tool_node_exe tool tool_web3modal[“<b>도구</b> – <b>이름</b>: Web3Modal UI<br/><b>설명</b>: 토큰 전송 승인을 요청하는 주입된 UI.”] class tool_web3modal tool %% Operators (optional) op_and((“AND”)) class op_and operator %% Connections u2013 Attack Flow initial_access –>|leads_to| delivery_html_smuggling delivery_html_smuggling –>|uses| tool_malicious_link delivery_html_smuggling –>|uses| tool_js_payload delivery_html_smuggling –>|enables| delivery_compile_after delivery_compile_after –>|enables| delivery_embedded_payloads delivery_embedded_payloads –>|triggers| delivery_deobfuscate delivery_deobfuscate –>|creates| process_installer process_installer –>|drops| persistence_run_key process_installer –>|may_use| persistence_appcert persistence_run_key –>|executes| tool_node_exe persistence_app_cert –>|loads| tool_node_exe tool_node_exe –>|collects| recon_hardware tool_node_exe –>|collects| recon_firmware recon_hardware –>|feeds| c2_web_protocols recon_firmware –>|feeds| c2_web_protocols c2_web_protocols –>|supports| c2_bidirectional c2_web_protocols –>|supports| c2_oneway c2_bidirectional –>|uses| c2_encrypted c2_oneway –>|uses| c2_encrypted c2_encrypted –>|encodes| c2_data_encoding c2_data_encoding –>|stores_config_in| c2_config_repo c2_config_repo –>|provides| asset_drain asset_drain –>|uses| tool_web3modal

<strong>공격 시나리오</strong> 

시뮬레이션 실행

전제 조건: Telemetry & Baseline 사전 비행 검사가 통과해야 합니다.

  • 공격 내러티브 및 명령어

    공격자는 이미 악성 자바스크립트 파일(payload.js)을 대상에 배치했습니다. 지속성을 얻기 위해, 그들은 설치한 node.exe 바이너리를 사용하여 conhost.exe 를 헤드리스 모드에서 시작하고, 그런 다음 자바스크립트 페이로드를 로드합니다. 이 기술은 가시적인 콘솔 창을 피하고 일반적인 node 사용에 삼투합니다.

    1. 악성 페이로드 드롭 (payload.js)을 임시 위치에 보냅니다.
    2. 실행 node.exe 는 명령어를 사용하여 conhost.exe --headless 를 페이로드에 포인팅합니다.
    3. 예약 작업 생성 시스템 시작 시 명령어를 실행하여 지속성을 제공합니다.
  • 회귀 테스트 스크립트

    # EtherRAT 지속성 시뮬레이션 – PowerShell
    # -------------------------------------------------
    # 1. 악성 자바스크립트 페이로드 준비
    $payloadPath = "$env:TEMPpayload.js"
    @"
    // 최소 악성 JS – 실제로 이더렛 임플랜트를 로드합니다
    const { exec } = require('child_process');
    exec('calc.exe'); // 예제 부작용
    "@ | Set-Content -Encoding UTF8 $payloadPath
    
    # 2. node.exe 위치 찾기 (PATH에 있다고 가정)
    $node = (Get-Command node.exe).Source
    if (-not $node) {
        Write-Error "node.exe not found in PATH."
        exit 1
    }
    
    # 3. conhost 명령어 라인 구축
    $conhostCmd = "C:WindowsSystem32conhost.exe --headless `"$payloadPath`""
    
    # 4. node.exe를 통해 실행 (이렇게 해서 부모-자식 관계 생성)
    $script = "require('child_process').exec(`"$conhostCmd`")"
    & $node -e $script
    
    # 5. 선택 사항: 지속성을 위한 예약 작업 생성
    $taskName = "SystemUpdate"
    $action = New-ScheduledTaskAction -Execute $node -Argument "-e `"$script`""
    $trigger = New-ScheduledTaskTrigger -AtLogOn
    Register-ScheduledTask -TaskName $taskName -Action $action -Trigger $trigger -RunLevel Highest -Force
  • 정리 명령어

    # 예약 작업 제거
    Unregister-ScheduledTask -TaskName "SystemUpdate" -Confirm:$false
    
    # 페이로드 삭제
    Remove-Item -Path "$env:TEMPpayload.js" -Force
    
    # 테스트에서 비롯된 conhost 프로세스를 중지
    Get-Process conhost -ErrorAction SilentlyContinue | Where-Object {
        $_.Path -eq 'C:WindowsSystem32conhost.exe' -and $_.CommandLine -match '--headless'
    } | Stop-Process -Force