GlassWorm, Mac으로 진출: 신선한 인프라, 새로운 트릭
Detection stack
- AIDR
- Alert
- ETL
- Query
요약
GlassWorm 뒤의 위협 행위자는 Windows 중심 활동에서 macOS로 피벗하여 Solana 블록체인 기반 C2 포인터를 통해 암호화된 JavaScript 페이로드를 가져오는 악성 VS Code 확장 프로그램을 배포하고 있습니다. 이 파동은 하드웨어 지갑 트로이 목마화(trojanization)를 추가함으로써 브라우저, 개발자 툴링, macOS 키체인 전체에 걸쳐 자격 증명 도용을 계속하면서 기능을 확장합니다. 인프라에는 과거 GlassWorm 작전에서 재사용된 Solana 지갑 주소와 IP가 포함되어 있어 운영 도구와 호스팅의 지속성을 시사합니다. 연구자들은 확장 프로그램이 제거되기 전까지 5만 회 이상의 다운로드가 있었음을 관찰하여 개발자 환경에 대한 의미 있는 노출을 나타냅니다.
조사
Koi Security는 Open VSX 마켓에서 세 개의 악성 VS Code 확장을 식별하고 이들의 명령 및 제어 워크플로우를 Solana 지갑 및 이전에 GlassWorm에 연결된 IP 주소와 연결했습니다. 임플란트는 15분의 실행 지연 시간을 포함하며 이후 AES-256-CBC JavaScript 페이로드를 해독하여 실행합니다. macOS에서는 LaunchAgents를 통해 지속성이 수립됩니다. 수집 대상은 브라우저 지갑 및 데스크탑 지갑 데이터, 개발자 액세스 토큰, SSH 키, 및 macOS 키체인 자료를 포함합니다. 맬웨어는 /tmp/ijewf/ 하에 도난 데이터를 배치한 후 /p2p와 유사한 서버 경로로 추출합니다. 또한 Ledger Live와 Trezor Suite와 같은 합법적 하드웨어 지갑 동반 앱을 트로이 목마화된 유사체로 교체하려 시도하여 고가치 비밀 및 거래를 포착합니다.
완화
개발자 툴링에 대한 제어를 강화하여 확장 허용 목록 및 보안 검토를 VS Code 확장에 대해 요구하십시오. 특히 오픈 마켓 출처의 것들에 대해 유의하십시오. 지연된 실행 패턴 및 LaunchAgents의 의심스러운 생성 또는 수정을 감지하는 런타임 감지를 배포합니다. Solana 기반 C2 조회와 관련된 의심스러운 아웃바운드 활동을 모니터링하고 차단하며 확인된 재사용된 IP에 대한 비정상적 연결에 대한 네트워크 감지를 추가하십시오. 개발자 및 클라우드 계정에는 다요소 인증(MFA)을 요구하며 하드웨어 지갑의 무결성 검사를 구현하십시오(발행자 확인, 공증/서명 검증, 통제된 소프트웨어 업데이트 경로).
대응
새로운 또는 수정된 LaunchAgents, 키체인 저장소에 대한 비정상적인 액세스, Solana 참조 C2 엔드포인트에서의 검색 시도를 경고로 트리거합니다. 악성 VS Code 확장을 격리하고 제거한 다음 관련된 LaunchAgent 지속성을 제거하십시오. 서 /tmp/ijewf/에서을 대상으로 한 포렌식을 수행하여 자격 증명 스테이징 범위를 확인하고 어떤 데이터가 수집되었는지 확인하십시오. 하드웨어 지갑 애플리케이션(Ledger Live, Trezor Suite)의 무결성을 검증하고 변조가 의심될 경우 신뢰할 수 있는 소스에서 다시 설치하십시오. 영향을 받은 자격 증명을 재설정하고 SSH 키 및 개발자 토큰을 교체하고 세션을 무효화하며 동일한 확장 ID, 파일 경로 및 지속성 아티팩트에 대해 엔드포인트 전반에 걸쳐 검색을 확장하십시오.
graph TB %% Class Definitions classDef action fill:#99ccff classDef technique fill:#ffcc99 classDef operator fill:#ff9900 classDef tool fill:#cccccc %% Nodes action_initial_access[“<b>행동</b> – 초기 접근”] class action_initial_access action technique_vs_code_ext[“<b>기법</b> – T1176.002: 악성 VS Code IDE 확장<br/><b>설명</b>: 공격자가 Visual Studio Code용 악성 확장을 배포하여 피해자 시스템에서 코드를 실행한다.”] class technique_vs_code_ext technique technique_delay[“<b>기법</b> – T1497.003: 실행 지연<br/><b>설명</b>: 악성코드가 분석 회피를 위해 일정 시간(예: 15분) 대기한 후 페이로드를 실행한다.”] class technique_delay technique technique_decrypt[“<b>기법</b> – T1027.009 / T1027.004: AES-256-CBC 페이로드 복호화<br/><b>설명</b>: 암호화된 페이로드가 메모리 내에서 256비트 키를 사용한 AES-CBC 방식으로 복호화된다.”] class technique_decrypt technique technique_c2_retrieve[“<b>기법</b> – T1573.001: 솔라나 블록체인에서 엔드포인트 조회<br/><b>설명</b>: C2 서버 주소가 공개 블록체인에 저장되며 악성코드가 이를 가져온다.”] class technique_c2_retrieve technique technique_c2_fetch[“<b>기법</b> – T1048.003: 비암호화 프로토콜 데이터 전송<br/><b>설명</b>: 악성코드가 비암호화된 프로토콜(예: HTTP)을 사용하여 C2 엔드포인트에 연결한다.”] class technique_c2_fetch technique technique_persistence_agent[“<b>기법</b> – T1543.001: LaunchAgent 설치<br/><b>설명</b>: 지속성을 위해 사용자 LaunchAgents 디렉터리에 LaunchAgent plist 파일이 배치된다.”] class technique_persistence_agent technique technique_persistence_daemon[“<b>기법</b> – T1543.004: LaunchDaemon 설치<br/><b>설명</b>: 지속성을 위해 시스템 LaunchDaemons 디렉터리에 LaunchDaemon plist 파일이 배치된다.”] class technique_persistence_daemon technique technique_modify_plist[“<b>기법</b> – T1647: PLIST 파일 수정<br/><b>설명</b>: 공격자가 plist 파일을 편집하여 실행 동작을 변경하거나 악성 명령을 추가한다.”] class technique_modify_plist technique technique_dump_keychain[“<b>기법</b> – T1555.001 / T1555.002: 키체인 덤프<br/><b>설명</b>: macOS 키체인에서 자격 증명 자료가 추출된다.”] class technique_dump_keychain technique technique_steal_keys[“<b>기법</b> – T1552.001 / T1552.004: 개인 키 및 토큰 탈취<br/><b>설명</b>: 암호화폐 개인 키와 인증 토큰이 수집된다.”] class technique_steal_keys technique technique_stage_data[“<b>기법</b> – T1074: 데이터 스테이징<br/><b>설명</b>: 수집된 파일이 이후 유출을 위해 /tmp/ijewf로 복사된다.”] class technique_stage_data technique technique_archive[“<b>기법</b> – T1560.001 / T1560.003: 수집 데이터 압축<br/><b>설명</b>: 데이터가 ZIP과 같은 아카이브 형식으로 압축된다.”] class technique_archive technique technique_exfil[“<b>기법</b> – T1048.003: 비암호화 비-C2 채널을 통한 유출<br/><b>설명</b>: 스테이징된 아카이브가 주요 C2와 연결되지 않은 비암호화 채널을 통해 전송된다.”] class technique_exfil technique technique_priv_esc[“<b>기법</b> – T1548.006: TCC 조작<br/><b>설명</b>: macOS TCC(투명성, 동의 및 제어) 데이터베이스를 수정하여 더 높은 권한을 획득한다.”] class technique_priv_esc technique technique_impact[“<b>기법</b> – T1496.002: Ledger Live / Trezor Suite 교체<br/><b>설명</b>: 합법적인 암호화폐 지갑 애플리케이션이 트로이 목마 버전으로 교체되어 사용자 자산이 탈취된다.”] class technique_impact technique %% Connections action_initial_access –>|uses| technique_vs_code_ext technique_vs_code_ext –>|triggers| technique_delay technique_delay –>|leads to| technique_decrypt technique_decrypt –>|establishes| technique_c2_retrieve technique_c2_retrieve –>|contacts| technique_c2_fetch technique_c2_fetch –>|installs| technique_persistence_agent technique_c2_fetch –>|installs| technique_persistence_daemon technique_persistence_agent –>|modifies| technique_modify_plist technique_persistence_daemon –>|modifies| technique_modify_plist technique_modify_plist –>|enables| technique_dump_keychain technique_dump_keychain –>|enables| technique_steal_keys technique_steal_keys –>|stores in| technique_stage_data technique_stage_data –>|archives| technique_archive technique_archive –>|exfiltrates via| technique_exfil technique_exfil –>|facilitates| technique_priv_esc technique_priv_esc –>|enables| technique_impact
공격 흐름
탐지
가능한 macOS 브라우저 암호 발견 시도 (명령줄을 통해)
보기
탐지할 IOC (SourceIP): GlassWorm의 Mac으로 가기: 새 인프라, 새로운 트릭
보기
탐지할 IOC (DestinationIP): GlassWorm의 Mac으로 가기: 새 인프라, 새로운 트릭
보기
탐지할 IOC (이메일): GlassWorm의 Mac으로 가기: 새 인프라, 새로운 트릭
보기
GlassWorm macOS 키체인 접근 탐지 [Linux 프로세스 생성]
보기
macOS [Linux 프로세스 생성]에서의 키체인 접근을 위한 잠재적 AppleScript 실행
보기
GlassWorm에 의한 Solana 블록체인 C2 통신 탐지 [프록시]
보기
시뮬레이션 실행
프리리퀴짓: 원격 측정 및 기준선 사전 비행 검사가 통과해야 합니다.
합리적 설명: 이 섹션은 탐지 규칙을 발동하도록 설계된 적수 기술(TTP)의 정확한 실행을 세부적으로 설명합니다. 명령 및 내러티브는 식별된 TTP를 직접 반영해야 하며 탐지 논리에 의해 예상되는 정확한 원격 측정을 생성하는 것을 목표로 합니다. 추상적이거나 관련 없는 예는 오진을 초래할 수 있습니다.
-
공격 내러티브 및 명령:
이미 낮은 권한의 macOS 사용자 계정을 탈취한 공격자는키 체인에 저장된 서비스 계정 비밀번호를 수집하려고 합니다. 별도의 바이너리를 드롭하지 않기 위해 공격자는 AppleScript를 통해 내장된보안도구를 호출하는 한 줄의 스크립트를 작성합니다셸 스크립트를 실행하십시오. 스크립트는 사용자의 세션에서 직접 실행되어 Sigma 규칙이 일치하는 정확한 명령줄을 가진 프로세스 생성 이벤트를 발생시킵니다.# 테스트 키체인 항목 생성 (시연용; 실제 공격자는 기존 항목을 대상으로 함) security add-generic-password -a attacker -s pass_users_for_script -w SuperSecret123 # 암호를 읽는 AppleScript 실행 osascript -e 'do shell script "security find-generic-password -s '''pass_users_for_script''' -w"' -
회귀 테스트 스크립트:
#!/usr/bin/env bash set -euo pipefail # 1단계: 대상 키체인 항목이 존재하는지 확인 (멱등성) if ! security find-generic-password -s pass_users_for_script -w >/dev/null 2>&1; then security add-generic-password -a attacker -s pass_users_for_script -w SuperSecret123 fi # 2단계: 탐지 규칙을 발동시키는 AppleScript 실행 echo "[+] 키체인 항목을 읽기 위한 AppleScript 실행 중..." osascript -e 'do shell script "security find-generic-password -s '''pass_users_for_script''' -w"' -
정리 명령:
# 테스트 키체인 항목을 제거하여 시스템을 깨끗하게 유지 security delete-generic-password -s pass_users_for_script echo "[+] 정리 완료: 테스트 키체인 항목 제거됨."