라자루스 추적: 전염성 인터뷰 C2 인프라 내부
Detection stack
- AIDR
- Alert
- ETL
- Query
요약
Red Asgard는 Upwork를 통해 홍보된 암호화폐 프로젝트와 관련된 공급망 침해를 보고하였으며, Lazarus 운영자들이 빌드/워크플로우에 악성 코드를 내장했습니다. 이 체인은 VSCode 작업 자동 실행을 악용하고, Function 생성자를 통해 구현된 Node.js 백도어 및 Vercel에 호스팅된 명령 및 제어 인프라에서 악성 JavaScript를 가져오기 위해 쿠키 게이트 배달을 사용합니다. C2 스택은 단계 하나의 Vercel 도메인과 단계 두의 전용 Windows 서버로 나뉘며, 이는 XMRig 채굴 기능을 갖춘 강력하게 난독화된 Python 백도어를 제공합니다. 캠페인에는 또한 Pastebin 데드 드롭, 사용자 정의 바이너리 프로토콜 및 분석과 중단을 복잡하게 만드는 엄격한 자격 증명 분할이 사용됩니다.
조사
연구자들은 토큰 인증 엔드포인트를 노출하는 세 개의 Vercel 도메인을 나열하고 Express.js on 포트 1244에서 실행되는 다섯 개의 전용 C2 시스템을 확인했습니다. 그들은 또한 활발한 캠페인 토큰을 추론하거나 열거하기 위해 사용된 타이밍 오라클 기술을 문서화했습니다. 64 계층의 암호화된 페이로드를 역공학하여, 시작 폴더를 통해 지속성을 유지하고 예약된 작업 생성을 통해 지속성을 유지하는 트로이 목마화된 구성 요소가 밝혀졌습니다. 추가 발견 사항으로는 하드코딩된 MongoDB 자격 증명, 약 1000개의 Pastebin 데드 드롭 URL, 여러 포트에서 사용자 정의 Z238 바이너리 프로토콜 리스너가 포함되었습니다. 64-layer obfuscated payload ultimately revealed a trojanized component that persists via Startup folder placement and scheduled task creation. Additional findings included hard-coded MongoDB credentials, approximately 1,000 Pastebin dead-drop URLs, and custom Z238 binary protocol listeners on multiple ports.
완화
식별된 Vercel 도메인에 대한 아웃바운드 통신을 차단하고 포트 1244, 1249, 22411-22412에 대한 출구를 제한하세요. 시작 위치에서 Windows Update Script.pyw 생성 모니터링, ‘Runtime Broker’라는 예약된 작업 및 채굴기로 위장한 의심스러운 msedge.exe 실행을 모니터링하세요. Function.constructor를 호출하는 Node.js 프로세스 및 /keys 엔드포인트에 대한 비정상적인 HTTP POST 활동을 감지하세요. VSCode 자동 실행 작업을 비활성화하고 신뢰할 수 없는 저장소에서 npm 설치 또는 빌드 단계 실행 전에 패키지 스크립트를 검토하여 노출을 줄이세요.
대응
지표가 관찰되면 영향을 받은 시스템을 격리하고 의심스러운 프로세스를 종료하며 포렌식 검토를 위해 메모리 및 디스크 아티팩트를 보존하세요. 노출된 MongoDB 자격 증명을 취소하고 관련 서비스 계정 비밀을 회전시키세요. 영향을 받은 사용자를 식별하기 위해 계정 및 접근 재고 조사를 수행한 후 자격 증명을 재설정하고 활성 세션/토큰을 무효화하세요. 암호화폐 도난 또는 지갑 침해 증거가 있는 경우 내부 이해 관계자에게 통지하고 법 집행 기관과 협조하세요.
“graph TB %% Class definitions classDef technique fill:#cce5ff classDef artifact fill:#e2f7d6 %% Step 1 u2013 Phishing via Service tech_phishing[“<b>기법</b> – <b>T1566.003 피싱: 서비스 통한 스피어피싱</b><br/><b>설명</b>: 공격자가 Upwork에서 프리랜서로 가장하고 악성 코드 저장소를 전달하기 위해 허위 구직 인터뷰를 게시했습니다.”] class tech_phishing technique artifact_upwork[“<b>아티팩트</b> – <b>이름</b>: Upwork 허위 구직 공고<br/><b>목적</b>: 피해자로 하여금 악성 저장소를 다운로드하도록 유도합니다.”] class artifact_upwork artifact tech_phishing u002du002d>|전달| artifact_upwork %% Step 2 u2013 공급망 훼손 tech_supplychain[“<b>기법</b> – <b>T1195.001 공급망 훼손: 소프트웨어 종속성 및 개발 도구 훼손</b><br/><b>설명</b>: 악성 VSCode <code>tasks.json</code>과 저장소에 주입된 JavaScript 코드.”] class tech_supplychain technique artifact_tasksjson[“<b>아티팩트</b> – <b>이름</b>: VSCode <code>tasks.json</code><br/><b>내용</b>: JavaScript 함수 생성자와 <code>getCookie()</code>를 호출하는 악성 작업 정의.”] class artifact_tasksjson artifact artifact_upwork u002du002d>|포함| artifact_tasksjson artifact_tasksjson u002du002d>|활성화| tech_supplychain %% Step 3 u2013 사용자 실행 tech_userexec[“<b>기법</b> – <b>T1204.002 사용자 실행: 악성 파일</b><br/><b>설명</b>: 피해자가 VSCode에서 프로젝트 폴더를 열어 악성 작업이 자동 실행됩니다.”] class tech_userexec technique artifact_tasksjson u002du002d>|트리거됨| tech_userexec %% Step 4 u2013 JavaScript 실행 tech_jsexec[“<b>기법</b> – <b>T1059.007 명령 및 스크립팅 인터프리터: JavaScript</b><br/><b>설명</b>: 추가 페이로드를 다운로드하기 위해 VSCode 작업 및 함수 생성자를 통해 JavaScript 실행.”] class tech_jsexec technique tech_userexec u002du002d>|이어짐| tech_jsexec %% Step 5 u2013 Python 백도어 tech_python[“<b>기법</b> – <b>T1059.006 명령 및 스크립팅 인터프리터: Python</b><br/><b>설명</b>: 심하게 난독화된 Python 백도어 (<code>bro_*.js</code>)가 피해자의 호스트에 다운로드 및 실행되었습니다.”] class tech_python technique artifact_python_backdoor[“<b>아티팩트</b> – <b>이름</b>: 난독화된 Python 백도어 (<code>bro_*.js</code>)<br/><b>특징</b>: 다층의 인코딩 및 디코딩.”] class artifact_python_backdoor artifact tech_jsexec u002du002d>|다운로드| artifact_python_backdoor artifact_python_backdoor u002du002d>|실행| tech_python %% Step 6 u2013 시작 시 지속성 tech_startup[“<b>기법</b> – <b>T1037.005 부팅 또는 로그온 초기화 스크립트: 시작 항목</b><br/><b>설명</b>: <code>Windows Update Script.pyw</code>를 시작 폴더에 배치하여 지속성 확보.”] class tech_startup technique artifact_startup_script[“<b>아티팩트</b> – <b>이름</b>: <code>Windows Update Script.pyw</code><br/><b>위치</b>: 시작 폴더”] class artifact_startup_script artifact tech_python u002du002d>|생성| artifact_startup_script artifact_startup_script u002du002d>|활성화| tech_startup %% Step 7 u2013 예약된 작업 tech_schedtask[“<b>기법</b> – <b>T1053 예약된 작업/작업</b><br/><b>설명</b>: ‘Runtime Broker’라는 이름의 예약 작업, 로그온 시 실행하도록 생성됨.”] class tech_schedtask technique artifact_schedtask[“<b>아티팩트</b> – <b>이름</b>: 예약된 작업 ‘Runtime Broker'<br/><b>트리거</b>: 사용자 로그온 시”] class artifact_schedtask artifact tech_startup u002du002d>|추가| artifact_schedtask artifact_schedtask u002du002d>|실행| tech_schedtask %% Step 8 u2013 브라우저에서 신원 정보 수집 tech_credbrowser[“<b>기법</b> – <b>T1555.003 암호 저장소의 신원 정보: 웹 브라우저의 신원 정보</b><br/><b>설명</b>: 악성코드가 브라우저 프로필 데이터와 저장된 자격 증명을 수집함.”] class tech_credbrowser technique artifact_browser_data[“<b>아티팩트</b> – <b>데이터</b>: 추출된 브라우저 비밀번호와 쿠키”] class artifact_browser_data artifact tech_schedtask u002du002d>|수집| tech_credbrowser tech_credbrowser u002du002d>|저장| artifact_browser_data %% Step 9 u2013 웹 세션 쿠키 도용 tech_stealcookie[“<b>기법</b> – <b>T1539 웹 세션 쿠키 도용</b><br/><b>설명</b>: <code>getCookie()</code> 함수가 피해자의 브라우저에서 세션 쿠키를 가져왔습니다.”] class tech_stealcookie technique artifact_getcookie[“<b>아티팩트</b> – <b>데이터</b>: 브라우저에서 캡처된 세션 쿠키”] class artifact_getcookie artifact tech_credbrowser u002du002d>|활성화| tech_stealcookie tech_stealcookie u002du002d>|생성| artifact_getcookie %% Step 10 u2013 대체 인증 자료 사용 tech_altauth[“<b>기법</b> – <b>T1550.004 대체 인증 자료 사용: 웹 세션 쿠키</b><br/><b>설명</b>: 수집된 쿠키가 인증된 웹 세션을 하이재킹하는 데 이용되었습니다.”] class tech_altauth technique artifact_getcookie u002du002d>|사용됨| tech_altauth %% Step 11 u2013 가면 만들기 tech_masquerade[“<b>기법</b> – <b>T1036.003 가면 만들기: 합법적 유틸리티 이름 바꾸기</b><br/><b>설명</b>: ‘Runtime Broker.exe’와 ‘msedge.exe’로 악성 바이너리의 이름을 바꿨습니다.”] class tech_masquerade technique artifact_renamed_bins[“<b>아티팩트</b> – <b>파일</b>: <code>Runtime Broker.exe</code>, <code>msedge.exe</code> (악성)”] class artifact_renamed_bins artifact tech_altauth u002du002d>|전달| artifact_renamed_bins artifact_renamed_bins u002du002d>|사용| tech_masquerade %% Step 12 u2013 방어책 손상 tech_impairdefense[“<b>기법</b> – <b>T1562 방어책 손상</b><br/><b>설명</b>: 탐지를 피하기 위해 PowerShell을 통해 윈도우 디펜더 예외가 추가되었습니다.”] class tech_impairdefense technique artifact_defender_exclusion[“<b>아티팩트</b> – <b>명령</b>: 디펜더 예외 경로를 추가하는 PowerShell 스크립트”] class artifact_defender_exclusion artifact tech_masquerade u002du002d>|실행| artifact_defender_exclusion artifact_defender_exclusion u002du002d>|활성화| tech_impairdefense %% Step 13 u2013 난독화된 파일 tech_obfuscation[“<b>기법</b> – <b>T1027 난독화된 파일 또는 정보</b><br/><b>설명</b>: 페이로드는 64개의 중첩된 난독화 계층 (Base85, XOR, zlib, 역방향 Base64)을 사용합니다.”] class tech_obfuscation technique tech_impairdefense u002du002d>|보호| tech_obfuscation %% Step 14 u2013 아티팩트 숨기기 tech_hideartifacts[“<b>기법</b> – <b>T1564.012 아티팩트 숨기기: 파일/경로 예외</b><br/><b>설명</b>: 악성 아티팩트를 숨길 수 있는 디펜더 예외 및 숨겨진 파일 사용.”] class tech_hideartifacts technique tech_obfuscation u002du002d>|용이하게 함| tech_hideartifacts %% Step 15 u2013 데드드롭 해체자 tech_dead_drop[“<b>기법</b> – <b>T1102.001 웹 서비스: 데드드롭 해체자</b><br/><b>설명</b>: 악성코드는 약 1,000개의 데드드롭 Pastebin 계정을 통해 명령을 가져왔습니다.”] class tech_dead_drop technique artifact_pastebin[“<b>아티팩트</b> – <b>서비스</b>: Pastebin 데드드롭 해체자 계정”] class artifact_pastebin artifact tech_hideartifacts u002du002d>|가져옴| artifact_pastebin artifact_pastebin u002du002d>|명령을 제공| tech_dead_drop %% Step 16 u2013 FTP를 통한 데이터 유출 tech_exfilftp[“<b>기법</b> – <b>T1048.003 대안 프로토콜을 통한 데이터 유출: 암호화되지 않은 비u2011C2 프로토콜</b><br/><b>설명</b>: 수집된 데이터는 포트 21의 FTP를 통해 유출되었습니다.”] class tech_exfilftp technique artifact_ftp[“<b>아티팩트</b> – <b>프로토콜</b>: 데이터 전송에 사용된 FTP(포트 21)”] class artifact_ftp artifact tech_dead_drop u002du002d>|데이터 전송| tech_exfilftp tech_exfilftp u002du002d>|사용| artifact_ftp %% Step 17 u2013 리소스 하이재킹 (Monero 채굴) tech_resourcehijack[“<b>기법</b> – <b>T1496.001 리소스 하이재킹: 컴퓨트 하이재킹</b><br/><b>설명</b>: 감염된 호스트를 수익화하기 위해 ‘msedge.exe’로 위장된 XMRig Monero 채굴자가 배포되었습니다.”] class tech_resourcehijack technique artifact_xmrig[“<b>아티팩트</b> – <b>파일</b>: ‘msedge.exe’라는 이름의 XMRig 채굴자 바이너리”] class artifact_xmrig artifact tech_exfilftp u002du002d>|자원 제공| tech_resourcehijack tech_resourcehijack u002du002d>|실행| artifact_xmrig %% Step 18 u2013 브라우저 정보 검색 tech_browserdisc[“<b>기법</b> – <b>T1217 브라우저 정보 검색</b><br/><b>설명</b>: 공격자가 추가 자격 증명 및 세션 데이터를 찾기 위해 브라우저 정보를 열거함.”] class tech_browserdisc technique artifact_browser_info[“<b>아티팩트</b> – <b>데이터</b>: 브라우저 버전, 프로필 경로, 설치된 확장 프로그램”] class artifact_browser_info artifact tech_resourcehijack u002du002d>|수집| tech_browserdisc tech_browserdisc u002du002d>|수집함| artifact_browser_info “
공격 흐름
탐지
제 3자 서비스 / 도구를 통한 데이터 유출 / 유입 / C2 가능성 (dns 사용)
보기
Windows Defender 환경설정 의심스러운 변경 (powershell 사용)
보기
자동 시작 위치의 의심스러운 바이너리 / 스크립트 (file_event 사용)
보기
숨겨진 파일이 Linux 호스트에서 생성되었습니다 (파일 이벤트 경유)
보기
제3자 서비스/도구를 통한 데이터 침입/탈출/C2 가능성 (프록시 경유)
보기
IOCs(이메일) 탐지: 라자루스 사냥하기: 전염성 인터뷰 C2 인프라 내부
보기
IOCs(목적지 IP) 탐지: 라자루스 사냥하기: 전염성 인터뷰 C2 인프라 내부
보기
IOCs(출발지 IP) 탐지: 라자루스 사냥하기: 전염성 인터뷰 C2 인프라 내부
보기
IOCs(HashSha256) 탐지: 라자루스 사냥하기: 전염성 인터뷰 C2 인프라 내부
보기
의심스러운 getCookie 함수가 Vercel 도메인에서 악성 자바스크립트를 가져옵니다 [Windows 파일 이벤트]
보기
errorHandler.js의 Function.constructor 사용이 의심스러움 [Windows 파일 이벤트에서 백엔드 RCE]
보기
악성 프로세스가 RuntimeBroker 및 msedge.exe로 XMRig 채굴 소프트웨어로 가장 [Windows 프로세스 생성]
보기
악성 VSCode 자동 실행 구성 [Windows 파일 이벤트]
보기
시뮬레이션 실행
필수 사전 작업: Telemetry & Baseline Pre-flight Check가 통과해야 합니다.
공격 서사 & 명령어
공격자는 합법적인 RuntimeBroker.exe 바이너리를 비표준 위치로 복사합니다 (%TEMP%) 잘 알려진 시스템 경로 기반 탐지를 피하면서 신뢰할 수 있는 프로세스로 위장합니다. 복사본을 실행함으로써 프로세스 생성 이벤트는 예상된 이미지 이름을 포함하지만, 기존 ‘System32’ 포함 검사에 실패하는 경로를 포함하여 수정합니다. selection_runtime.
회귀 테스트 스크립트
# -----------------------------------------------
# TC-20260114-A1B2C – 위장 시뮬레이션
# -----------------------------------------------
# 1. 경로 정의
$src = "$env:SystemRootSystem32RuntimeBroker.exe"
$dest = "$env:TEMPRuntimeBroker.exe"
# 2. 합법적인 바이너리를 비시스템 디렉터리에 복사합니다
Copy-Item -Path $src -Destination $dest -Force
# 3. 복사된 바이너리를 실행합니다 (이것은 Sigma 규칙을 트리거할 것입니다)
Start-Process -FilePath $dest -WindowStyle Hidden
# 4. 선택 사항: msedge 위장(채굴자) 시나리오 시뮬레이션
# (베나인 실행 파일을 복사, msedge.exe로 이름 변경, %LOCALAPPDATA%MicrosoftWindowsApplications에 배치)
$minerSrc = "$env:SystemRootSystem32notepad.exe"
$minerDest = "$env:LOCALAPPDATAMicrosoftWindowsApplicationsmsedge.exe"
Copy-Item -Path $minerSrc -Destination $minerDest -Force
Start-Process -FilePath $minerDest -WindowStyle Hidden
# -----------------------------------------------
정리 명령
# 악성 복사본 제거
Remove-Item -Path "$env:TEMPRuntimeBroker.exe" -Force -ErrorAction SilentlyContinue
Remove-Item -Path "$env:LOCALAPPDATAMicrosoftWindowsApplicationsmsedge.exe" -Force -ErrorAction SilentlyContinue