BigSquatRat npm 패키지 캠페인 분석
Detection stack
- AIDR
- Alert
- ETL
- Query
요약
이 보고서는 Node.js 원격 접근 트로이 목마를 설치하는 악성 npm 패키지 bigmathix를 프로파일링합니다. 이 패키지는 난독화된 다단계 코드를 사용하여 공격자가 제어하는 GitHub 콘텐츠와 aurevian.cloud에서 후속 페이로드를 가져옵니다. 탐지는 동적 복호화 키와 실행을 제어하는 초기화 인수로 인해 방해되며, 이는 JavaScript 개발자를 대상으로 한 공급망 공격과 일치합니다.
조사
연구원들은 패키지를 디지털 해독하여 자식 프로세스를 생성하고, DNS 해상도를 수행하며, 파생된 키를 사용하여 내장된 URL을 복호화하는 체인을 재구성했습니다. 초기화 값을 무차별 대입하여 aurevian.cloud에서 2단계 페이로드를 복구했으며, RAT 논리의 최종 단계에서 추가적인 난독화를 도입했습니다. 분석가들은 유사한 타임스탬프에 게시된 관련 GitHub 저장소와 추가 npm 패키지를 연관시켜 캠페인 범위를 매핑했습니다.
완화
신뢰할 수 없는 npm 종속성을 피하고—특히 새로 게시된 다운로드 수가 적은 패키지 또는 갑작스러운 버전 변경이 있는 모듈—해시/출처 제어를 통해 무결성을 검증하세요. node.exe에 의해 생성된 의심스러운 자식 프로세스와 알 수 없는 도메인으로의 예상치 못한 출력 조회를 모니터링하십시오. aurevian.cloud에 대한 외부 필터링을 적용하고 Node.js 프로세스에 의해 생성된 Windows 런 키 또는 Linux systemd 서비스와 같은 지속성에 대해 경고를 설정하십시오.
대응
bigmathix가 식별되면 엔드포인트를 격리하고 패키지를 제거하며 생성된 Node.js 프로세스를 종료합니다. 생성된 Run 키 또는 systemd 단위를 삭제하고 관련 도메인/IP를 차단하고 DNS, 프로세스 계보, 네트워크 출력 로그를 수집합니다. 다운로드된 페이로드와 wscript.exe 실행기 또는 예약 서비스와 같은 지속성을 식별하기 위해 포렌식을 수행한 후 일치하는 아티팩트를 찾기 위해 환경을 수색합니다.
“graph TB %% Class Definitions Section classDef action fill:#99ccff classDef process fill:#ffcc99 classDef persistence fill:#ccffcc classDef c2 fill:#ccccff classDef cleanup fill:#ffccff %% Nodes Definitions node_supply_chain[“<b>기술</b> – T1195.001 공급망 타협<br /><b>설명</b>: 악성 코드를 배포하기 위해 소프트웨어 공급망을 타협합니다.<br /><b>상세</b>: 악성 npm 패키지 ‘bigmathix’이 게시되었습니다.”] class node_supply_chain action node_obfuscation[“<b>기술</b> – T1027 난독화된 파일 또는 정보<br /><b>서브기술</b>: T1027.009 (스테가노그래피), T1027.004 (전송 후 컴파일)<br /><b>설명</b>: 패키지는 실행 시 해독되는 난독화된 JavaScript를 포함합니다.”] class node_obfuscation action node_process_creation[“<b>기술</b> – T1543 시스템 프로세스 생성 또는 수정<br /><b>서브기술</b>: T1543.001 (출시 에이전트)<br /><b>설명</b>: 로더가 자식 Node.js 프로세스를 생성하고 (T1036.009) 실행을 숨기기 위해 프로세스 트리를 끊습니다.”] class node_process_creation process node_dns_key_derivation[“<b>기술</b> – T1071.004 응용 계층 프로토콜 DNS<br /><b>추가</b>: T1590.002 (도메인/IP), T1596.001 (암호화 자료 획득)<br /><b>설명</b>: 숫자 인수를 생성하고 IP에 대한 DNS 조회를 수행하며 IP와 원격 README의 SHA-256 해시를 결합하여 복호화 키를 도출합니다.”] class node_dns_key_derivation action node_encrypted_download[“<b>기술</b> – T1573.001 암호화된 채널 비대칭 암호화<br /><b>설명</b>: AES-GCM 암호화된 채널을 사용하여 aurevian.cloud에서 2단계 페이로드를 가져옵니다.”] class node_encrypted_download action node_persistence_linux[“<b>기술</b> – T1543.002 systemd 서비스<br /><b>설명</b>: 지속성을 위해 systemctl을 통해 시작되는 systemd 서비스를 생성합니다.”] class node_persistence_linux persistence node_persistence_windows[“<b>기술</b> – T1547.014 레지스트리 런 키 시작 폴더<br /><b>설명</b>: Windows에서 wscript.exe → node.exe를 실행하는 ASEP 런키를 만듭니다.”] class node_persistence_windows persistence node_c2[“<b>기술</b> – T1104 도구 전송 인그레스 (C2)<br /><b>설명</b>: RAT가 C2를 폴링하고 명령을 실행하며 MetaMask Chrome 확장 프로그램을 확인합니다.”] class node_c2 c2 node_cleanup[“<b>기술</b> – T1070.004 파일 삭제, T1070.009 레지스트리 지우기<br /><b>설명</b>: 최종 단계는 파일을 삭제하고 레지스트리/런 키 항목을 제거하여 증거를 없앱니다.”] class node_cleanup cleanup %% Connections Showing Attack Flow node_supply_chain u002du002d>|leads_to| node_obfuscation node_obfuscation u002du002d>|leads_to| node_process_creation node_process_creation u002du002d>|uses| node_dns_key_derivation node_dns_key_derivation u002du002d>|uses| node_encrypted_download node_encrypted_download u002du002d>|enables| node_persistence_linux node_encrypted_download u002du002d>|enables| node_persistence_windows node_persistence_linux u002du002d>|supports| node_c2 node_persistence_windows u002du002d>|supports| node_c2 node_c2 u002du002d>|triggers| node_cleanup “
공격 흐름
탐지
LOLBAS WScript / CScript (프로세스 생성 경유)
보기
런 키에 추가된 의심스러운 파일 확장자 [ASEPs] (레지스트리 이벤트 경유)
보기
의심스러운 NodeJS 자식 프로세스 [Linux] (cmdline 경유)
보기
특이한 프로세스에 의해 시작된 추정 GitHub 파일 다운로드 (네트워크 연결 경유)
보기
탐지를 위한 IOC (이메일): BigSquatRat npm 패키지 캠페인 분석
보기
탐지를 위한 IOC (HashSha1): BigSquatRat npm 패키지 캠페인 분석
보기
탐지를 위한 IOC (HashSha256): BigSquatRat npm 패키지 캠페인 분석
보기
wscript.exe 경유의 Node.js RAT 실행 탐지 [Windows 프로세스 생성]
보기
난독화 스크립트 및 지속성을 위한 systemctl을 사용하는 Node.js 맬웨어 탐지 [Linux 프로세스 생성]
보기
시뮬레이션 실행
전제조건: 텔레메트리 및 기준선 체크가 통과해야 합니다.
이유: 이 섹션은 탐지 규칙을 유발하도록 설계된 공격자 기술의 정확한 실행을 자세히 설명합니다. 명령과 설명은 식별된 TTP를 직접 반영하고 탐지 논리에 의해 기대되는 정확한 텔레메트리를 생성해야 합니다. 추상적이거나 관련 없는 예는 오진으로 이어질 것입니다.
-
공격 서사 및 명령:
공격자는 Node.js 런타임이 필요한 악성 JavaScript 페이로드를 보유하고 있습니다. 표준 응용프로그램 화이트리스트를 피하기 위해, 그들은wscript.exe—네이티브 Windows 스크립트 호스트—를 사용하여node.exe을 간접적으로 실행하여 탐지 규칙에 맞는 부모/자식 관계를 만듭니다. 절차는 다음과 같습니다:- 악성 스크립트 (
malicious.js)를 드롭하여 단순히node.exe페이로드로 생성합니다. - Windows Script Host가 실행할 래퍼 JavaScript (
launcher.js)를 생성하고; 이 래퍼는WScript.Shell을 사용하여node.exe페이로드로 생성합니다. - 를 실행합니다.
wscript.exe //B //Nologo launcher.js. - 를 통해 래퍼를 실행하십시오.
생성된 프로세스 트리는생성된 프로세스 트리는
- 악성 스크립트 (
-
, 목표 텔레메트리를 생성합니다.
회귀 테스트 스크립트:다음 PowerShell 스크립트는 Windows 테스트 호스트에서 전체 체인을 자동화합니다. -
정리 명령: 아티팩트를 제거하고 남아있는 프로세스를 종료하십시오.
# 검증 후 실행되는 정리 스크립트 $tempPath = "$env:TEMP" Remove-Item -Path (Join-Path $tempPath "launcher.js") -ErrorAction SilentlyContinue Remove-Item -Path (Join-Path $tempPath "malicious.js") -ErrorAction SilentlyContinue # 테스트에 의해 생성된 보류 node.exe 프로세스를 종료합니다 Get-Process -Name node -ErrorAction SilentlyContinue | Stop-Process -Force