SOC Prime Bias: 높음

14 Jul 2026 15:26 UTC

다단계 LNK 공격, TON 블록체인으로 Node.js 백도어 전달

Author Photo
SOC Prime Team linkedin icon 팔로우
다단계 LNK 공격, TON 블록체인으로 Node.js 백도어 전달
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

요약

정교한 다단계 공격이 피싱을 통해 전달된 악성 LNK 파일을 사용하여 Node.js 기반 백도어를 배포합니다. 이 악성 코드는 TON 블록체인에 질의하여 자신의 명령 및 제어 주소를 얻는 EtherHiding 기법에 의존하여 운영자에게 인프라 업데이트를 쉽게 만듭니다. 또한 사용자 정의 바이트코드 가상 머신 인터프리터와 강력하게 난독화된 PowerShell 스크립트를 포함한 고급 회피 방법을 사용합니다.

조사

LevelBlue 관리 위협 연구팀은 의심스러운 ZIP 아카이브 및 LNK 파일과 관련된 보안 알림을 통해 이 캠페인을 발견했습니다. 분석가는 비트 연산 및 산술 논리를 사용하여 악성 URL을 재구성하는 PowerShell 명령을 디코딩했습니다. 그들은 또한 암호화된 바이트코드를 실행하기 위해 사용되는 사용자 정의 JavaScript VM 인터프리터를 조사하고 TON 블록체인 상의 거래에서 명령 및 제어 검색을 추적했습니다.

완화

조직은 신뢰할 수 없는 출처의 LNK 파일 실행을 제한하고 특히 비트 논리 연산이나 대규모 정수 계산을 포함한 명령을 감시하여 의심스러운 PowerShell 동작을 모니터링해야 합니다. 강력한 이메일 필터링을 사용하여 악성 링크를 차단하고 무단 Node.js 설치 또는 실행을 감시해야 합니다. 비정상 프로세스에 대한 블록체인 관련 API 접근을 제한하면 명령 및 제어 검색을 방해할 수도 있습니다.

대응

이 활동이 감지되면 영향을 받은 엔드포인트를 격리하고 의심스러운 node.exe 또는 PowerShell 프로세스를 즉시 종료하세요. 메모리 포렌식을 수행하여 암호 해독된 JavaScript 바이트코드를 복구하고 질의 중인 특정 명령 및 제어 도메인을 식별하세요. 무단 지속성을 위한 레지스트리 Run 키를 검토하고 악성 코드에 의해 생성된 Windows Defender 제외 항목을 검사하세요.

공격 흐름

시뮬레이션 실행

전제 조건: 원격 측정 및 기준 사전 검사 통과해야 합니다.

이유: 이 섹션은 탐지 규칙을 유발하기 위해 설계된 적대적 기술(TTP)의 정확한 실행을 자세히 설명합니다. 명령 및 설명은 반드시 식별된 TTP를 직접 반영하고 탐지 로직에 의해 예상되는 정확한 측정 데이터를 생성해야 합니다. 추상적이거나 관련 없는 예는 오진을 초래합니다.

  • 공격 내러티브 및 명령: 적대자는 시스템에 백도어를 설정하려고 합니다. 탐지를 피하기 위해 LNK 파일을 사용하여 PowerShell 명령을 실행합니다. 명확한 URL 대신, -band 255 and -shr 8 를 사용하여 대규모 정수 값을 조작합니다. 처리되면 악성 페이로드를 가리키는 URL을 재구성합니다. 페이로드가 가져오거나 준비되면 PowerShell 프로세스가 node.exe 를 시작하여 자바스크립트 기반 백도어를 실행하고 기기에서 합법적인 개발자 활동과 섞입니다.

  • 회귀 테스트 스크립트:

    # 난독화된 PowerShell -> Node.js 실행 체인의 시뮬레이션
    # 이 스크립트는 탐지 규칙에 필요한 특정 명령줄 인수를 모방합니다.
    
    $jsPayload = "console.log('C2 Connection Established');"
    
    # 1단계: PowerShell 난독화 단계의 시뮬레이션 (프로세스 명령줄에 나타나는 것처럼)
    # 실제 공격에서는 이 명령이 LNK 파일에 의해 트리거됩니다.
    $simulatedPSCommand = "powershell.exe -ExecutionPolicy Bypass -WindowStyle Hidden -band 255 -shr 8 -Command `"`$url = [Convert]::ToString([bigint]123456789); iwr `$url | iex`""
    
    # 2단계: 동일한 체인의 일부로서의 후속 Node.js 실행 시뮬레이션
    # Start-Process를 사용하여 부모-자식 관계를 시뮬레이션합니다.
    Start-Process "powershell.exe" -ArgumentList "-NoProfile -Command `"$simulatedPSCommand; node.exe $jsPayload`""
  • 정리 명령:

    # 이 시뮬레이션으로 생성된 영구 파일은 없었지만,
    # 생성된 node 프로세스가 종료되었음을 확인합니다.
    Stop-Process -Name "node" -ErrorAction SilentlyContinue
    Stop-Process -Name "powershell" -ErrorAction SilentlyContinue