SOC Prime Bias: 치명적

26 3월 2026 15:16

GlassWorm, 악성 Chrome 확장 프로그램 안에 RAT 숨기다

Author Photo
Ruslan Mikhalov SOC Prime에서 위협 연구 책임자 linkedin icon 팔로우
GlassWorm, 악성 Chrome 확장 프로그램 안에 RAT 숨기다
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

요약

GlassWorm은 손상된 npm, PyPI, GitHub 및 OpenVSX 패키지를 악용하여 다중 단계의 멀웨어 플랫폼을 배포합니다. 첫 번째 단계는 Solana 블록체인 메모를 쿼리하여 명령 및 제어 주소를 얻고 암호화된 페이로드를 다운로드하는 로더를 실행합니다. 두 번째 단계는 자격 증명, 암호화폐 지갑 파일 및 호스트 정보를 탈취하며, 세 번째 단계는 브라우저 데이터를 캡처하도록 설계된 악성 Chrome 확장과 함께 지속적 WebSocket 기반 RAT를 배포합니다. 이 작전은 주로 개발자와 암호화폐 보유자를 겨냥합니다.

조사

분석가는 초기 침해를 악성 사전 설치 스크립트와 합법적인 패키지에 임베드된 유니코드 기반 로더와 연결했습니다. 그들은 C2 URL의 드롭 위치로 작동하는 두 개의 Solana 지갑 주소를 밝혀냈고, 로더가 여러 Solana RPC 엔드포인트를 폴링하는 것을 발견했습니다. 세 번째 단계의 RAT는 DHT 부트스트래핑 노드에 의존하며 DHT 해상도가 실패하면 Solana 기반 검색으로 되돌아갑니다. 연구원들은 또한 탈취 인프라를 식별하고 캠페인에 사용된 악성 Chrome 확장을 매핑했습니다.

완화

조직은 npm 및 기타 패키지 생태계의 공급망 스캐닝을 시행하고, 패키지 무결성과 게시자 신뢰성을 확인하며, 알려진 악성 IP와 도메인을 차단해야 합니다. 엔드포인트 방어는 악의적인 Node.js 런타임, 예상치 못한 예약 작업, 의심스러운 레지스트리 실행 키를 모니터링해야 합니다. 브라우저 자격 증명 저장소를 강화하고, 암호화폐 사용자는 가능한 경우 하드웨어 지갑 인증을 채택해야 합니다.

대응

GlassWorm이 탐지되면, 영향을 받은 엔드포인트를 격리하고, 악성 프로세스를 중지하며, 모든 드랍 파일과 예약 작업과 같은 지속성 메커니즘을 제거하십시오. 손상된 npm 토큰을 철회하고, 암호화폐 지갑 자격 증명을 변경하며, 브라우저에 저장된 암호를 재설정하십시오. 호스트 로그의 완전한 포렌식 검토를 완료하여 로더 실행을 추적하고 보안 제어를 업데이트하여 미래의 공급망 손상의 위험을 줄이십시오.

"graph TB %% Class Definitions classDef technique fill:#ffcc99 classDef persistence fill:#99ffcc classDef exfil fill:#ff9999 classDef credential fill:#ccccff classDef execution fill:#ffdb4d classDef collection fill:#c2f0c2 classDef command fill:#ffd699 %% Nodes u2013 Attack Steps step1_initial_access["<b>기술</b> – <b>T1195.001 공급 체인 손상</b><br/>악성 npm/pyPI 패키지와 손상된 GitHub 저장소가 로더를 배포합니다."] class step1_initial_access technique step2_obfuscation["<b>기술</b> – <b>T1027 난독화된 파일 또는 정보</b><br/>로더 코드는 전달 후 난독화되어 컴파일됩니다 (T1027.004)."] class step2_obfuscation execution step3_guardrails["<b>기술</b> – <b>T1480 실행 가드레일</b><br/>로더는 로케일, 언어, 시간대를 확인하고 타겟 러시아 지역 외에서는 실행을 중단합니다."] class step3_guardrails execution step4_dead_drop["<b>기술</b> – <b>T1102.001 Dead Drop Resolver</b><br/>로더는 Solana 블록체인 거래 메모를 폴링하여 C2 URL을 가져옵니다."] class step4_dead_drop command step5_cred_files["<b>기술</b> – <b>T1552.001 파일에 있는 자격 증명</b><br/>.npmrc, NPM_TOKEN, 클라우드 서비스 구성, SSH 개인 키를 수집합니다."] class step5_cred_files credential step6_browser_creds["<b>기술</b> – <b>T1555.003 웹 브라우저에서 자격 증명</b><br/>Chrome, Edge, Firefox에서 비밀번호, 쿠키, 자동완성 데이터, 결제카드를 추출하며, 앱에 묶여있는 암호화를 우회합니다."] class step6_browser_creds credential step7_private_keys["<b>기술</b> – <b>T1552.004 개인 키</b><br/>암호화폐 지갑 파일 및 시드 구문의 스크린샷을 복사합니다."] class step7_private_keys credential step8_exfil_webhook["<b>기술</b> – <b>T1567.004 Webhook을 통한 탈취</b><br/>스테이징된 데이터를 압축하여 공격자 제어의 HTTP 엔드포인트에 POST합니다."] class step8_exfil_webhook exfil step9_persistence_rc["<b>기술</b> – <b>T1037.004 RC Scripts</b><br/>HKCUSoftwareMicrosoftWindowsCurrentVersionRun 항목과 예약 작업을 생성하여 시작 시 PowerShell 실행기를 시작합니다."] class step9_persistence_rc persistence step10_wmi_event["<b>기술</b> – <b>T1546.003 WMI 이벤트 구독</b><br/>WMI 이벤트를 등록하여 USB 하드웨어 지갑을 감지하고 피싱 UI를 실행합니다."] class step10_wmi_event persistence step11_ps_profile["<b>기술</b> – <b>T1546.013 PowerShell 프로필</b><br/>PowerShell 프로필 스크립트를 통해 지속성을 추가합니다."] class step11_ps_profile persistence step12_vnc["<b>기술</b> – <b>T1021.005 VNC</b><br/>보이지 않는 원격 데스크톱을 위한 숨겨진 VNC (HVNC) 네이티브 모듈을 로드합니다."] class step12_vnc command step13_multi_stage["<b>기술</b> – <b>T1104 다단계 채널</b><br/>C2 명령어를 위한 양방향 Socket.IO WebSocket 채널을 설정합니다."] class step13_multi_stage command step14_input_injection["<b>기술</b> – <b>T1674 입력 주입</b><br/>RAT 내에서 eval()을 통해 공격자가 제공한 JavaScript를 실행합니다."] class step14_input_injection execution step15_keylog_clip["<b>기술</b> – <b>T1056.001 키로깅</b> & <b>T1115 클립보드 데이터</b><br/>악성 Chrome 확장은 키 입력을 기록하고, 클립보드 텍스트를 캡처하며 스크린샷을 찍습니다."] class step15_keylog_clip collection step16_browser_hijack["<b>기술</b> – <b>T1185 브라우저 세션 하이재킹</b><br/>확장은 쿠키와 세션 토큰을 수집하고 활성 탭을 공격자가 제어하는 URL로 리디렉션할 수 있습니다."] class step16_browser_hijack collection %% Connections u2013 Attack Flow step1_initial_access –>|leads to| step2_obfuscation step2_obfuscation –>|leads to| step3_guardrails step3_guardrails –>|leads to| step4_dead_drop step4_dead_drop –>|leads to| step5_cred_files step5_cred_files –>|leads to| step6_browser_creds step6_browser_creds –>|leads to| step7_private_keys step7_private_keys –>|leads to| step8_exfil_webhook step8_exfil_webhook –>|leads to| step9_persistence_rc step9_persistence_rc –>|leads to| step10_wmi_event step10_wmi_event –>|leads to| step11_ps_profile step11_ps_profile –>|leads to| step12_vnc step12_vnc –>|leads to| step13_multi_stage step13_multi_stage –>|leads to| step14_input_injection step14_input_injection –>|leads to| step15_keylog_clip step15_keylog_clip –>|leads to| step16_browser_hijack "

공격 흐름

탐지

일반적이지 않은 위치에서 실행되는 NodeJS 바이너리 (via cmdline)

SOC Prime 팀
2026년 3월 26일

가능한 IP 조회 도메인 통신 시도 (via dns)

SOC Prime 팀
2026년 3월 26일

가능한 지속성 포인트 [ASEPs – 소프트웨어/NTUSER 하이브] (via registry_event)

SOC Prime 팀
2026년 3월 26일

C2 채널로서의 가능한 Publicnode Ethereum 남용 시도 (via dns_query)

SOC Prime 팀
2026년 3월 26일

IOC (DestinationIP) 탐지: GlassWorm이 악성 Chrome 확장 프로그램 내에 RAT를 숨깁니다

SOC Prime AI 규칙
2026년 3월 26일

IOC (HashMd5) 탐지: GlassWorm이 악성 Chrome 확장 프로그램 내에 RAT를 숨깁니다

SOC Prime AI 규칙
2026년 3월 26일

IOC (HashSha256) 탐지: GlassWorm이 악성 Chrome 확장 프로그램 내에 RAT를 숨깁니다

SOC Prime AI 규칙
2026년 3월 26일

IOC (HashSha1) 탐지: GlassWorm이 악성 Chrome 확장 프로그램 내에 RAT를 숨깁니다

SOC Prime AI 규칙
2026년 3월 26일

IOC (SourceIP) 탐지: GlassWorm이 악성 Chrome 확장 프로그램 내에 RAT를 숨깁니다

SOC Prime AI 규칙
2026년 3월 26일

IOC (이메일) 탐지: GlassWorm이 악성 Chrome 확장 프로그램 내에 RAT를 숨깁니다

SOC Prime AI 규칙
2026년 3월 26일

GlassWorm RAT 및 데이터 탈취 탐지 [Windows 네트워크 연결]

SOC Prime AI 규칙
2026년 3월 26일

Ledger/Trezor 피싱 바이너리 실행 탐지 [Windows 프로세스 생성]

SOC Prime AI 규칙
2026년 3월 26일

시뮬레이션 실행

전제 조건: Telemetry & Baseline Pre‑flight Check가 통과했어야 합니다.

근거: 이 섹션은 탐지 규칙을 트리거하기 위해 고안된 적의 기술 (TTP)의 정확한 실행을 자세히 설명합니다. 명령과 내러티브는 식별된 TTP를 직접 반영해야 하며, 탐지 논리가 예상하는 정확한 텔레메트리를 생성하는 것을 목표로 해야 합니다.

  • 공격 내러티브 및 명령:
    공격자는 Ledger Live/Trezor 지갑 클라이언트로 가장하는 악성 바이너리를 얻었습니다. 이 바이너리는 Assaac.exe 라는 이름으로 합법적인 실행 파일로 위장합니다. 이 파일은 사용자의 %APPDATA% 디렉터리에 내려지고, 동반 JavaScript 파일 (index.js)은 숨겨진 하위 폴더 QtCvyfVWKH에 위치합니다. 공격자는 그런 다음 바이너리를 실행하여, Windows가 Sigma 규칙이 관찰하는 정확한 이미지 이름과 명령 줄 경로로 프로세스 생성 이벤트를 기록하게 합니다.

    단계별:

    1. 숨겨진 폴더를 만들고 악성 스크립트를 내려줍니다.
    2. 악성 실행 파일 (Assaac.exe)을 사용자의 AppData에 복사합니다.
    3. 실행 파일을 실행하여 읽기 시작하고 index.js 자격 증명 도난 루틴을 시작합니다.
  • 회귀 테스트 스크립트:

    # ------------------------------------------------------------
    # 악성 파일 설정
    # ------------------------------------------------------------
    $appData = $env:APPDATA
    $folder  = Join-Path $appData "QtCvyfVWKH"
    $exePath = Join-Path $appData "Assaac.exe"
    $jsPath  = Join-Path $folder "index.js"
    
    # 숨겨진 폴더가 존재하는지 확인
    New-Item -ItemType Directory -Path $folder -Force | Out-Null
    # 폴더 숨기기 (옵션)
    (Get-Item $folder).Attributes += 'Hidden'
    
    # 더미 악성 실행 파일 배포 (데모용으로 calc.exe 복사본 사용)
    Copy-Item -Path "$env:SystemRootSystem32calc.exe" -Destination $exePath -Force
    
    # 더미 JavaScript 페이로드 배포 (탐지를 위한 내용은 관련 없음)
    @"
    // 악성 페이로드 플레이스홀더
    console.log('암호지갑 도난 실행됨');
    "@ | Set-Content -Path $jsPath -Encoding UTF8
    
    # ------------------------------------------------------------
    # 악성 바이너리를 실행 (이것이 Sigma 규칙을 트리거해야 함)
    # ------------------------------------------------------------
    & $exePath "$jsPath"
    
    # ------------------------------------------------------------
    # 스크립트 끝 – 수동 정리를 위해 아티팩트 남기기
    # ------------------------------------------------------------
  • 정리 명령:

    # 아직 실행 중인 경우 악성 프로세스 종료
    Get-Process -Name "Assaac" -ErrorAction SilentlyContinue | Stop-Process -Force
    
    # 생성된 파일 및 폴더 제거
    Remove-Item -Path $exePath -Force -ErrorAction SilentlyContinue
    Remove-Item -Path $jsPath -Force -ErrorAction SilentlyContinue
    Remove-Item -Path $folder -Recurse -Force -ErrorAction SilentlyContinue