블로그
home
Nation-State Cyber Actors Analysis Report
home
🇰🇵

[IG-25-4004-O] 북한 위협 행위자 Contagious Interview 캠페인 분석(Analyzing the North Korean Threat Actor Interview Campaign) : BeaverTail, OtterCookie Malware Analysis

Classification
TLP:CLEAR
Release Date
2025/02/03
Writer
GyeongRyeol Kim
Editor
Bohyeong Son
Mihee Kim
Tags
Malware
DPRK
Javascript
NPM
가상자산
InfoStealer
2 more properties

1. 개요

○ 2024.12.25. NTT Security Holdings에서 북한 위협 행위자가 Contagious Interview 캠페인*에 사용한 OtterCookie 악성코드 분석내용 일부 공개
* 2023.11.21 Palo Alto에서 명명한 IT기업에 취업을 원하는 구직자를 대상으로 하는 공격 캠페인
○ BeaverTail, Invisible Ferret을 이용해 정보 탈취 및 백도어 등을 수행하는 기존 사례*에 더해 Loader 및 새로운 유형의 악성코드를 사용한 특징 발견됨
새로운 유형의 OtterCookie 악성코드는 시스템 정보 탈취, 백도어, 클립보드 캡쳐 기능 수행
[그림 1] 금번 Contagious Interview 캠페인 사례 공격 흐름도

2. 대응방안

○ 링크드인, 헤드헌터 등을 통한 구직 시 취업 담당자의 신원 및 지원 회사 확인 필요
○ 화상회의 앱 설치 요구 시 안내받은 링크가 아닌 공식 사이트를 통한 다운로드 필요
○ GitHub, NPM, Bitbucket 등의 코드 저장소를 통한 파일 다운로드 시 해당 저장소 및 계정의 신뢰도 파악 필요
- 다운로드한 파일은 실제 환경이 아닌 가상 환경에서 실행하는 방법 고려

3. 악성코드 상세 분석

3.1. Contagious Interview 캠페인

○ Contagious Interview 캠페인 흐름
① 북한 위협 행위자가 익명 또는 모호한 신원의 고용주로 가장하여 SW개발자에게 접근
② 평가를 가장해 정상 사이트(Github, NPM 등)를 이용해 악성 프로젝트/패키지 파일 설치 유도
③ 악성파일 설치 시 사용자 몰래 백도어 다운로드 후 감염
악성코드 종류
주요 악성 행위
BeaverTail
전자 지갑 탈취, 브라우저 Login Data 및 Local State 정보 탈취, 추가 페이로드(Invisible Ferret) 다운로드
Invisible Ferret
시스템 정보 탈취, 위치정보 탈취, 브라우저 계정정보 탈취, 백도어, 원격제어 프로그램 설치 및 실행
OtterCookie
시스템 정보 탈취, 백도어, 클립보드 캡쳐
[표 1] Contagious Interview 캠페인에 사용된 악성코드 종류
○ 기존에 식별된 BeaverTail 악성코드는 프로젝트/패키지 내 js 파일 자체에 숨겨진 채로 실행되는 구조였으나, 이번 공격은 프로젝트/패키지 내 Loader 형식의 악성 js 파일이 C2에 접근해 BeaverTail, OtterCookie 스크립트를 읽어와 실행하는 구조
[그림 2] BeaverTail 악성코드 실행 방식 변화 (좌: 기존, 우: 최근)
○ 이번 캠페인에서 사용된 Loader 형식의 js 파일은 [그림 3]와 같이 작성된 것으로 알려짐
npoint.io 사이트는 json 파일을 보관하는 저장소 사이트로 해당 사이트에 업로드된 json 파일에 cookie 값으로 저장된 악성 스크립트를 읽어와 사용
위 특징으로 인해 해당 파일에서 발견된 추가 악성코드를 OtterCookie로 명명한 것으로 추정
[그림 3] 추가 스크립트 로드 및 실행하는 Loader js 파일 (출처: NTT Security Holdings)
[그림 4] json 형식으로 저장된 악성 스크립트
○ js 파일이 사용된 NPM 패키지 정보는 확인 불가하여, 확보 가능한 BeaverTail, OtterCookie 악성코드에 대해 분석 진행

3.2. BeaverTail 악성코드 분석 (MD5: 01abb0b0fff83bea08eef2a1bd8cb413)

○ js 파일에서 변수 및 함수명이 잘 작성된 스크립트 중간에 가독성이 좋지 않고 심각한 난독화가 되어 있는 BeaverTail 악성코드 확인됨
○ 변수와 함수의 이름이 구분하기 힘들게 작성되어 있으며 더미 코드도 일부 작성되어 있고, 배열에 문자열들을 저장한 뒤 이를 조합해서 함수로 사용하는 방식
[그림 5] 난독화 된 BeaverTail 악성코드 일부
○ BeaverTail 스크립트 난독화 해제하여 확인 결과 [표 2]의 동작 수행
크로스 플랫폼(Windows, Linux, MacOS)으로 작성된 특징 발견됨
기능
상세 내용
전자 지갑 탈취
(MacOS, Windows, Linux) Chrome, Brave, Opera 브라우저별로 경로 설정 후 확장프로그램 내 전자지갑 정보 탈취(* 탈취 대상은 [표 3] 참고) “~/.config/solana/id.json” 파일(블록체인 플랫폼인 Solana로 생성한 지갑의 keypair 저장소) 탈취 FireFox 브라우저는 moz-extension 폴더 내 idb를 비롯한 파일들 탈취 (Windows) Microsoft Edge 브라우저 지갑 탈취 작업 추가 수행
브라우저 별 Login Data, Local State 탈취
(MacOS) “~/Library/Keychains/login.keychain” 파일(macOS에서 사용되는 기본 키체인 정보) 탈취 Chrome, Brave 브라우저 프로필 별 Login Data 탈취 (Windows, Linux) Chrome, Brave, Opera 브라우저 별 Local State 및 Login Data 탈취
Invisible Ferret 다운로드 및 실행
(MacOS, Windows, Linux) C2(<IP>:1224/pdown)에서 p.zi 파일 다운로드 후 p2.zip 으로 이름 변경 및 tar –xf 명령어로 홈디렉토리에 압축해제 C2(<IP>:1224/client/<campaign_id>)에서 .npl(Invisible Ferret) 파일 다운로드 후 앞서 압축 해제한 파일 내 python.exe로 .npl 실행
안티 디버깅
(MacOS, Windows, Linux) 브라우저 환경에서 console 메서드(log, warn, info, error, exception, table, trace)을 이용한 디버깅 탐지 및 방해 debugger 명령, 무한 루프 및 무한 재귀 호출 함수를 통해 분석 방해
[표 2] 운영체제 별 BeaverTail 악성코드 동작
브라우저 확장프로그램 ID
확장프로그램 지갑 종류
nkbihfbeogaeaoehlefnkodbefgpgknn
MetaMask Wallet
ejbalbakoplchlghecdalmeeeajnimhm
MetaMask Wallet
fhbohimaelbohpjbbldcngcnapndodjp
Binance Wallet
hnfanknocfeofbddgcijnmhnfnkdnaad
Coinbase Wallet
ibnejdfjmmkpcnlpebklmnkoeoihofec
TronLink Wallet
bfnaelmomeimhlpmgjnjophhpkkoljpa
Phantom Wallet
aeachknmefphepccionboohckonoeemg
Coin98 Wallet
hifafgmccdpekplomjjkcfgodnhcellj
crypto.com Wallet
jblndlipeogpafnldhgmapagcccfchpi
kaia Wallet (구 : kaikas Wallet)
acmacodkjbdgmoleebolmdjonilkdbch
Rabby Wallet
dlcobpjiigpikoobohmabehhmhfoodbb
Argent X Wallet
aholpfdialjgjfhomihkjbmgjidlcdno
Exodus Web3 Wallet
[표 3] 탈취 확장프로그램 지갑 목록
○ 다음 단계인 Invisible Ferret 악성코드는 C2 접근 불가로 직접적인 파일 확보 불가하나 기존 사례와 동일하게 동작하는 것으로 알려짐
[표 4]는 기배포문서의 “Invisible Ferret - pay 악성코드” 분석 내용 중 수정사항
번호
명령
수행 동작
1
ssh_obj
shell 명령어 실행
2
ssh_cmd
실행중인 python 강제 종료
3
ssh_clip
키로깅 데이터(클립보드 포함) 전송
4
ssh_run
브라우저 계정정보 탈취를 위한 bow(brow99.py) 다운로드 및 실행
5
ssh_upload
피해자 시스템의 폴더 목록, 파일, 검색 결과 등 FTP 서버에 전송
6
ssh_kill
크롬, 브레이브 브라우저 강제 종료
7
ssh_any
원격 제어 프로그램(AnyDesk) 실행을 위한 adc(any99.py) 다운로드 및 실행
8
ssh_env
(Windows) C,D,E,F,G 드라이브 (Linux, MacOS) : 각 계정별 홈디렉토리 운영체제 별로 시작 지점의 하위 폴더(node_modules 제외)를 탐색하며 환경변수 파일(.env) 업로드
[표 4] Invisible Ferret pay 스크립트 수행 동작

3.3. OtterCookie 악성코드 분석

○ “3.2. BeaverTail 악성코드”와 같은 파일에 작성되었으나, BeaverTail과 다른 C2와 통신하며 다른 기능을 수행하는 스크립트 확인됨
○ 해당 기능의 스크립트만 작성된 파일(MD5: 30ed90b4a570d6ff0c29759bfff491c2)이 발견되어 BeaverTail과 분리하여 분석된 것으로 추정
○ OtterCookie 악성코드는 [표 5]의 세 가지 동작을 수행함
소켓 통신을 통한 추가 동작의 경우 분석 시점에서는 통신이 되지 않아 분석 불가하나, 시스템 환경 정찰 및 문서, 이미지 파일 등을 조사해 암호화폐 지갑 키 탈취를 하는 것으로 알려짐
NO
수행 동작
1
시스템 기본 정보 탈취 - OS 종류, platform, release 정보, hostname, userinfo, uid
2
클라이언트-서버 소켓 통신 통해 시스템 기본 정보 탈취 및 추가 동작 수행
3
clipboardy 모듈 설치 후 0.5초 간격으로 클립보드 내용 탈취
[표 5] OtterCookie 수행 동작
[그림 7] OtterCookie 악성코드 일부
[그림 8] 소켓 통신을 통해 실행된 추가 명령어 (출처: NTT Security Holdings)
○ OtterCookie에서 사용되는 C2 주소는 [표 6]의 세 가지 유형으로 분류 가능
주소 유형
사용 목적
<C2>/api/v2/process/<uid>
시스템 기본 정보 탈취용
<C2>:5918
소켓 기반 메시지 송수신을 통한 명령어 실행 및 클라이언트 시스템 정보 확인
<C2>/api/v2/makelog
로그 기록용 (클립보드 내용 탈취 기록 포함)
[표 6] C2 주소 유형
○ (추가내용) 확보한 OtterCookie 악성코드 중, 초기 버전으로 추정되는 파일의 경우 소켓 통신을 통한 추가 동작 대신 하드코딩된 스크립트를 통해 암호화폐 관련 데이터 탈취 수행
Linux, MacOS의 경우 계정별 홈디렉토리, Windows의 경우 마운트된 디스크를 조사하여 하위 폴더를 탐색하며 [표 7]의 조건에 맞는 데이터 탈취
항목
내용
탐색 제외 폴더명
node_modules, .vscode, .git, .next, .nvm, .local, .cache, .npm, .package.json, AppData, Windows, Program Files, ProgramData
탐색 대상 파일 확장자
txt, ts, js, tsx, jsx, json, csv, env, py, config, cpp
암호화폐 관련 데이터
5,K,L로 시작하는 50~51자리의 영문자 및 숫자 조합 (비트코인 개인키) 64자리의 16진수 문자열 (SHA256 해시값) (이더리움 개인 키) 12자리에서 24자리 사이의 영문자열 (seed로 가능성 있는 값들)
[표 7] 파일 탐색에 사용되는 특정 조건 목록

4. IOC 정보

NO
Type
Data
Info
1
MD5
01abb0b0fff83bea08eef2a1bd8cb413
BeaverTail+OtterCookie (일부 난독화)
2
MD5
30ed90b4a570d6ff0c29759bfff491c2
OtterCookie (난독화X)
3
MD5
9154c7d643e6d762dd1ab1df9125e4ea
BeaverTail+OtterCookie (난독화)
4
MD5
ef13692228ee8e929c6e2e463b1ec30b
BeaverTail+OtterCookie (json, 난독화)
5
C2
api.npoint[.]io/e9769067e97d0baa4d09
6
C2
zkservice[.]cloud
7
C2
w3capi[.]marketing
8
C2
payloadrpc[.]com
9
C2
185.235.241[.]208:1224
10
C2
45.128.52[.]14:1224
11
C2
45.159.248[.]55:1224

5. 참고자료

1.
Contagious Interviewが使用する新たなマルウェアOtterCookieについて : https://jp.security.ntt/tech_blog/contagious-interview-ottercookie
2.
Contagious Interview: DPRK Threat Actors Lure Tech Industry Job Seekers to Install New Variants of BeaverTail and InvisibleFerret Malware : https://unit42.paloaltonetworks.com/north-korean-threat-actors-lure-tech-job-seekers-as-fake-recruiters/
3.
北からのジョブオファー: ソフトウェア開発者を狙うContagious Interview : https://security.macnica.co.jp/blog/2024/10/-contagious-interview.html