보안정보

전문화된 보안 관련 자료, 보안 트렌드를 엿볼 수 있는
차세대 통합보안관리 기업 이글루코퍼레이션 보안정보입니다.

가상자산을 노리는 북한의 맥OS 악성코드

2024.04.03

510

01. 가상자산의 패러다임과 위협

2008년 글로벌 경제 위기 이후 기존 금융 시스템에 대한 불신과 반감이 심화되었다. 이로 인해 사토시 나카모토가 2008년 발표한 ‘Bitcoin: A Peer-to-Peer Electronic Cash System’이라는 논문을 토대로 2009년 1월 탈중앙화(Decentralization) 기반 익명성과 투명성을 제공하는 최초의 암호화폐 ‘비트코인(Bitcoin)’이 탄생하였다. 이후 이더리움, 리플, 솔라나, 체인링크 등 다양한 코인들이 등장하면서 암호화 기반의 통화라는 의미의 ‘암호화폐(Cryptocurrency)’나 가상화된 통화라는 의미의 ‘가상화폐(Virtual Currency)’로 명명되었다.

국내에서도 2018년까지는 ‘가상통화’라는 용어를 사용하였으나, 국제자금세탁방지기구(FATF)의 용어를 반영하여 2021년 특정금융정보법 개정안을 통해 ‘가상자산(Virtual Assets)’이라고 명명하였다. 본 문서에서도 가치나 권리를 전자적으로 표현한 것으로 분산 원장 등 암호화 기술을 사용하여 전자적으로 이전 및 저장될 수 있는 증표라는 의미로 사용되기 때문에 가상자산이라는 용어를 사용하고자 한다.

맥OS 기반의 악성코드를 분석하기에 앞서 가상자산의 용어에 대해 살펴본 것은 바로 가상자산이라는 용어로 명명되기까지의 환경적인 변화와 특징에 대해서 설명하고자 함이다. 가상자산은 법적화폐도 아니고 가치 변동성이 높아서 디지털 환경에서만 한정될 줄 알았던 종전의 암호화폐의 한계를 넘어서면서 새로운 생태계를 생성하고 있다. 이에 따라 2023년 12월 기준으로 가상자산 시장의 시가총액이 1조 6천억 달러에 육박하고 있으며, 가상화폐를 활용한 생태계 확산을 고려하면 2024년 시장가치 예측치는 2023년에 비해 3배가량 높은 4조 5천억 달러의 가치가 예상되고 있다.

이와 같은 가상자산의 성장세는 가상자산의 거래가 블록체인을 기반한 기술 안전성과 익명성을 제공하고 있어 새로운 시장 창출에 기여했기 때문이다. 문제는 이러한 생태계 변화가 비단 긍정적인 효과가 가지고 온 것은 아니라는 점이다. 화폐로서의 새로운 가치 발견으로 인해 가상화폐거래소 해킹, 마이너 악성코드 유포, 랜섬웨어 생태계 확산 등 가상자산이나 가상자산 플랫폼이 새로운 공격 대상으로 주목받기 시작했기 때문이다.

가상자산의 불법적인 활용을 저지하고자 블록체인의 원장에 저장된 거래 기록을 이용해 사용자를 역추적할 수 있는 기술 연구가 진행되면서 익명성이 깨졌고 공격자들을 식별해내기 시작했다. 하지만 공격자들 역시 탈취한 가상자산을 지키고자 다양한 대응기술을 연구하기 시작했다. 탈취한 가상자산을 해커의 지갑에 바로 보내지 않고 서비스 제공자인 텀블러에게 전송하여 그들이 보유한 다른 코인들과 섞는 과정을 거쳐 해커의 지갑으로 코인을 전송하는 믹싱&텀블러(Mixing & Tumbler)나 기존에 보유한 가상자산을 다른 종류의 가상자산으로 변환하는 체인 호핑(Chain hopping)을 통해 거래 흐름 추적기술을 저지하고 있다.

가상자산을 위협하는 공격은 [표 1]과 같이 이중지불위협(Double-Spending Threats), 마이닝/풀 위협(Mining/Pool Threats), 월렛 위협(Wallet Threats), 네트워크 위협(Network Threats), 스마트 컨트랙트 위협(Smart Contracts Threats)으로 분류할 수 있다. 분류된 위협들은 가상자산 자체의 보안 위협이나 가상자산 플랫폼, 기반 기술을 공격한다고 볼 수 있다. 이 외에도 가상자산을 소유하려는 사용자를 대상으로 공격하는 경우의 스캠 위협(Scam Threats)도 존재한다.

분류된 위협 중 블록체인 기술 ·시스템을 대상으로 한 위협을 활용한 대표적인 공격사례로는 2016년 다오(The DAO : Decentralized Autonomous Organization) 스마트 컨트랙트 시스템의 취약점을 이용해 다오 토큰이 이더리움으로 환전 될 때 무한 반복 루프를 삽입하여 이중지불 공격을 발생시켜, 당시 한화 약 640억 원에 달하는 360만 개의 이더리움이 탈취된 사례가 있다.

사람을 대상으로 한 위협을 활용한 대표적인 공격사례로는 2023년 북한 APT 그룹 김수키(Kimsuky)가 정부기관, 기자 등을 사칭해 보낸 악성 이메일을 통해 내국인 1,400여 명에 접근해 가상자산 탈취를 시도했던 사례를 들 수 있겠다.

[표 1] 가상자산 보안 위협 분류 (출처 : Mosakheil, J. (2018). Security Threats Classification in Blockchains, Norton, 재구성 : 이글루코퍼레이션)

02. 북한의 가상자산 공격 현황

북한은 정권유지와 군사 전략 확보를 목적으로 2006년 1차 핵실험을 시작으로 신형 핵미사일과 수중 핵무기 체계 등 자체적인 핵 독트린을 기반하여 군사역량을 강화하고 있다. 북한은 물리적 군비증강 이외에도 사이버 전력 증강을 통해 정보전 전력을 보강하여 비대칭적인 전력의 열세를 만회하려는 수단으로 활용하고 있다. 2009년 대외 · 대남 공작부서인 정찰총국(RGB: Reconnaissance General Bureau)을 필두로 김수키, APT37, APT38, Andariel, TEMP.Hermit 등 세계 각국의 정부, 국방, 금융, 통신, 제조 등 다양한 산업분야에 따라 공격그룹을 운영해 왔다.

북한은 2016년 4차 핵실험 이후 심화된 미국과 UN의 대북제재로 인한 외환위기를 극복하고자 사이버 공격을 적극적으로 활용하였으며 이로 인해 시스템 파괴 및 정보탈취 등의 활동에서 은행 및 가상자산 등 금전적 목적을 위한 사이버 공격으로 외화벌이에 일조하는 형태를 보이고 있다.

미국의 블록체인 데이터 분석 기업 체이널리시스(Chainalysis)의 보고서에 따르면 지난 몇 년 동안 북한의 해킹 공격의 양상은 공급망 공격, 간첩활동, 정보탈취 등 다양한 형태로 다양화되고 공격 시도 역시 증가하였다. 특히 2016년부터 2023년까지 외환확보를 위한 방안으로 8년 동안 약 42억 달러에 달하는 가상자산을 탈취한 것으로 확인된다. 지난해인 2023년에는 20건의 가산자산 플랫폼을 해킹하여 10억 달러에 달하는 자산을 탈취한 것으로 알려졌다.

[그림 1] 북한 관련 해킹 그룹에 의해 탈취된 가상자산 추정 가치, 2016 - 2023 (출처 : Chainalysis)

03. 북한발 맥OS 악성코드 분석

사이버 공격의 상당수는 높은 점유율을 보이고 있는 윈도우 환경의 악성코드가 주를 이루고 있으나, 최근에는 맥OS 환경이 증가하면서 악성코드의 점유율에도 조금씩 변화가 발생되고 있다. APT 공격 그룹에서도 맥OS 환경의 악성코드 활용에 적극적으로 개입하면서 [표 2]와 같이 다수의 맥OS 악성코드들이 활동하고 있다.

중국, 이란, 러시아, 북한 등 국가 지원의 사이버 공격 양상을 보이고 있는 APT 그룹에서 맥OS 악성코드를 사용하고 있으며, 그 중에서도 북한의 맥OS 악성코드 활용비율이 눈에 띄게 많은 것을 알 수 있다.

[표 2]에서 정리된 18건의 악성코드 중 14건의 악성코드가 북한 해킹그룹과 연계되어 있었으며 그 중 10건이 가상자산을 목적으로 하는 악성코드로 확인되었다. 본 문서에서는 가상자산을 목적으로 한 맥OS 악성코드 중 가상자산을 사용하는 이해관계자 타깃으로 공격한 3건의 악성코드인 △ RustBucket, △ Operation In(ter)ception, △ KandyKorn를 보다 자세히 분석해보고자 한다.

[표 2] APT 그룹이 사용한 것으로 알려진 맥OS 악성코드

1) RustBucket

가장 먼저 살펴볼 맥OS 악성코드인 러스트버킷(RustBucket)은 2023년 4월 애플(Apple) 소프트웨어 전문 업체 잼프(Jamf)에 의해 발견됐다. 해당 캠페인은 북한 APT 그룹 중 하나인 블루노로프(BlueNoroff)에서 ‘가상자산’, ‘금융’ 등에 관심이 있는 사용자를 대상으로 수행된 공격이다.
악성코드의 최종 단계에서 Rust 언어로 만들어진 트로이 목마를 가져와 실행되는 것으로 추정되어 ‘RustBucket’이라는 이름으로 명명되었다.

RustBucket공격은 [그림 2]와 같이 총 3단계로 이루어진다. 최초 접근은 가상자산·금융 관련 회사 내용이 담긴 문서를 관심 있는 사람들을 대상으로 스피어피싱 등을 통해 유포한 것으로 추정된다. 첨부된 문서를 열람하기 위해서 특정 뷰어를 사용하도록 유도하는데 뷰어 실행 시 내부의 스크립트 파일이 실행되어 새로운 악성 뷰어를 다운로드하여 실행한다.

새로 받은 악성 뷰어를 이용해 악성 PDF 문서를 읽으면 정상적인 문서 내용을 보여주는 것과 동시에 C2에 접근해 추가 페이로드를 다운로드한다. 추가 페이로드 Rust 언어로 만들어진 트로이목마나 원격 셸 등을 사용하여 정보 탈취 목적의 명령을 수행한 것으로 추정된다.

[그림 2] RustBucket 악성코드 공격 흐름도

[Stage 1]
사용자가 처음 실행하는 Internal PDF Viewer.app 파일 내부의 info.plist 파일을 확인하면 실행 패키지에 관한 설정 정보를 확인할 수 있다. [그림 3]에서 CFBundlePackageType으로 ‘APPL’, CFBundleSignature로 ‘aplt’가 작성된 것을 통해, 해당 앱이 스크립트 애플리케이션임을 알 수 있다.

[그림 3] Internal PDF Viewer (Stage1).app info.plist 정보

Internal PDF Viewer.app 파일을 실행하면 app 파일 내 macOS 위치에 있는 applet 파일이 실행되고, [그림 4]의 동작을 통해 main.scpt 파일이 실행된다. 분석 시점에는 C2에 접근할 수 없어 오류가 난 것을 확인할 수 있었다.

[그림 4] applet 동작 과정
[그림 5] Internal PDF Viewer.app 실행 오류

main.scpt 파일은 AppleScript로 작성된 파일로 [그림 6]처럼 작성됐다. 스크립트는 C2에 접근해 /users/shared 폴더에 1.zip 파일을 내려받은 뒤 /users/shared 폴더에 압축을 풀어 생성된 Internal PDF Viewer.app 파일을 실행한다.

[그림 6] main.scpt 스크립트 내용

[Stage 2]
[Stage 1]에서 파일 다운로드가 성공적으로 이루어질 경우 새로운 Internal PDF Viewer.app 파일이 실행되고 [그림 7]과 같은 뷰어 창을 볼 수 있다. 뷰어를 실행한 것 단독으로는 악성 행위가 일어나지 않으며 악성 PDF 파일을 불러와 읽을 때 악성 행위가 일어난다. 이를 유도하기 위해 악성 뷰어로 PDF를 열람하도록 안내하는 문서도 확인할 수 있었다.

[그림 7] Internal PDF Viewer.app 실행 화면
[그림 8] Readme.pdf

악성 PDF 파일을 일반 뷰어나 브라우저를 이용해 열람 시, 내용을 보려면 지정된 앱을 사용해서 열라는 내용이 표시되고 원하는 내용을 읽을 수 없다. 지시대로 악성 PDF 뷰어를 사용해 열람할 경우 제대로 된 문서 내용을 확인할 수 있으며 동시에 [Stage 3]으로 이어지는 악성 행위도 수행한다.

[그림 9] 정상 뷰어로 확인한 악성 PDF 문서
[그림 10] 악성 뷰어로 확인한 악성 PDF 문서

맥OS 환경에서 앱을 배포할 때는 보안 목적으로 코드 서명(Code Signature)이 필요하다. Internal PDF Viewer.app 파일은 테스트 목적으로 등록된 기기에 배포할 때 사용하는 임시 서명(Ad Hoc)이 작성된 것을 확인할 수 있었다.

[그림 11] 임시 서명된 Internal PDF Viewer

Internal PDF Viewer 프로그램에서 viewPDF라는 함수를 발견할 수 있었다. viewPDF 함수는 불러온 PDF 파일이 뷰어에서 요구하는 악성 PDF 파일이 맞는지 확인하여 맞을 경우 암호화된 PDF 내용을 복호화 해 보여주고 암호화된 C2주소를 복호화 한 뒤 추가 페이로드를 다운로드 하는 기능을 수행한다.

[그림 12] ViewPDF 함수 일부

악성 PDF를 확인하는 원리는 다음과 같다. PDF 문서의 끝에서 5바이트 위치로 이동해 4바이트, 1바이트를 따로 가져온다. 마지막 1바이트가 0x2A 일 경우에 악성 PDF 문서로 판단하고, 읽어온 4바이트와 0x184ADB34를 xor 연산한 값이 가리키는 위치로 이동해 이후 동작에 사용할 각각 4바이트로 된 총 16바이트의 데이터를 읽어온다. [그림 13] 샘플의 경우 0x1D50D2 위치에 데이터가 존재했다.

[그림 13] 악성 PDF 문서 내 데이터

읽어온 각 4바이트는 각각 [그림 13]에 표시한 하드코딩된 키 값과 xor 연산하여 [표 3] 처럼 사용한다.

[그림 14] 악성 PDF 문서 내 암호화된 정상 PDF 문서

앞서 말했듯 정상 PDF 문서와 C2 주소는 암호화가 되어 있어 이를 복호화 하는 작업(encrypt_data)이 필요하다. 복호화는 PDF Viewer 내 메모리 0x100007E50 ~ 0x100007EB3에 하드코딩된 값과 암호화된 내용을 순서에 맞게 1바이트씩 xor 연산하는 방식을 사용한다.

[그림 15] 복호화 키 값, 알고리즘

암호화된 문서의 복호화 성공 시 [그림 10]과 같이 정상 PDF 문서를 표시하고, 이어서 암호화된 C2 주소 또한 복호화 해 [Stage 3]에서 사용할 추가 페이로드를 다운로드 및 실행하는 작업(_downAndExecute)을 수행한다.

[그림 16] 복호화 한 C2 주소

앞서 해독한 C2 주소를 URL로 설정하고 HTTP body는 “pw”, 전송 방식은 POST, User-Agent 헤더로 “Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)” 설정하여 C2와 통신한다. 통신 성공 시 추가 페이로드를 임시 디렉토리에 다운로드해 실행한다. 맥OS 환경이지만 User-Agent 값으로 “Windows NT 5.1” 값을 설정한 것으로 보아, 윈도우용 악성코드에서 사용하던 값을 실수로 그대로 사용한 것으로 추정되며 공격자의 멀티플랫폼 공격 의지를 엿볼 수 있다.

[그림 17] _downAndExecute 함수

분석 시점에는 C2와 통신할 수 없어 이후 페이로드를 확인할 수 없었지만, 해당 악성코드를 최초 발견한 Jamf에서 [Stage 3]에서 사용될 것으로 보이는 샘플을 공개하여 확인할 수 있었다.

[그림 18] C2 통신 불가

[Stage 3]
Jamf에서 발견한 [Stage 3] 페이로드는 Rust 언어로 만들어진 트로이목마로 정보 탈취 기능이 확인됐다. 프로그램 내 함수에서 webT::getinfo라는 이름의 정보 탈취 기능이 있는 모듈이 확인된다. 모듈에는 컴퓨터 이름, 운영체제 정보, 설치 시간, 부팅 시간, 현재 시간, 가상머신, 프로세스 리스트 등을 확인하는 함수가 있다. 해당 함수들을 이용해 정보 수집 후 send_request 함수를 사용해 [Stage 2]에서 인자로 사용했던 C2에 정보를 전송하여 탈취한다.

[그림 19] Rust 트로이목마 webT:: 모듈

[Stage 3] 혹은 이후 단계에서, 위에서 소개한 Rust 언어의 트로이목마 외에도 Jamf에서 발견한 Objective-C 언어 기반의 악성코드인 ‘ObjCShellZ’가 사용될 수 있다. ObjCShellZ는 C2와 통신하여 명령을 수행하는 간단한 원격 셸 기능을 수행하는 것으로 확인된다.

[그림 20] ObjCShellZ 구조

2) Operation In(ter)ception

두 번째로 살펴볼 오퍼레이션 인(터)셉션(Operation In(ter)ception) 캠페인의 악성코드는 2022년 8월에 슬로바키아 보안 기업인 이셋(ESET)에 의해 발견됐다. 2019년부터 북한 관련 APT 그룹 중 하나인 라자루스(Lazarus)는 항공 우주 및 방위 산업체에 관심을 가진 사람들을 대상으로 일자리 제공을 미끼로 공격하는 오퍼레이션 드림 잡(Operation Dream Job) 캠페인을 수행했다. Operation In(ter)ception 캠페인은 Operation Dream Job 캠페인과 유사한 전술을 사용하여 암호화폐 거래소 플랫폼에 관심을 가진 사람을 상대로 일자리 제공을 미끼로 공격한 캠페인이다.

Operation In(ter)ception공격은 [그림 21]과 같이 최소 3단계로 이루어진다. 암호화폐 거래소 취직에 관심 있는 구직자가 링크드인 등을 통해 일자리 제공 문서를 받고 문서파일로 위장한 악성 실행 파일을 실행하면 정상 PDF 및 다음 단계를 위한 파일이 드롭 및 실행된다. 드롭되어 실행된 2단계 파일은 C2에 접근해 추가 페이로드를 다운로드 및 실행한다. 다운로드한 추가 페이로드가 악성 행위를 수행하는 구간이 3단계로, 페이로드는 발견하지 못했으나 정보 탈취 등의 행위가 일어날 것으로 추정된다.

[그림 21] Operation In(ter)ception 공격흐름도

[Stage 1]
암호화폐 거래소 플랫폼 ‘Crypto.com’으로 위장하여 구직에 관심 있는 사람들을 대상으로 링크드인(LinkedIn) 등을 통해 유포한 것으로 추정된다. 최초 파일은 압축파일로 보이며 압축 해제 시 생성되는 파일 이름에 “.pdf”가 있어 pdf 문서로 보이지만 속성을 보면 실행파일인 것을 확인할 수 있다.

[그림 22] PDF 문서로 위장한 Stage1 실행파일

파일 실행 시 파일의 이름과 동일한 이름으로 된 정상 PDF 문서를 볼 수 있다. 이 때문에 사용자는 당연히 PDF 문서를 열었다고 인식하지만 이는 악성 실행 파일의 동작으로 생성된 문서로, 동시에 사용자 몰래 악성 행위가 수행된다.

[그림 23] 일자리 제공 위장 문서 내용

실행파일 분석 시 [그림 24] 처럼 정적 분석이 힘들도록 문자열을 저장한 것을 볼 수 있었다. 문자열을 해독 후 분석을 진행한 결과 [표 4]의 동작을 차례로 수행하는 것을 확인할 수 있었다.

[그림 24] PDF 위장 실행파일 main 함수
[표 4] Stage 1 실행파일 동작 흐름
[그림 25] WifiAnalytics_, wifianlyticsagent 압축 파일 정보
[그림 26] 압축 해제 후 WifiPreference 디렉토리 상태

com.wifianalyticsagent.plist 파일에 작성되는 내용은 [표 5]와 같고, 분석 환경에서는 /Users/(UserName)/LaunchAgents/ 디렉토리의 접근 권한 문제로 인해 파일이 생성되지 않았다.

[표 5] com.wifianalyticsagent.plist 파일 내용

[Stage 2]

[Stage 1]에서 실행되는 WifiAnalyticsServ.app 파일은 /Users/(UserName)/Library/WifiPreference/wifianalyticsagent를 실행하는 명령을 수행한다.

[그림 27] WifiAnalyticsServ.app 파일 내 실행 파일 main 함수

wifianalyticsagent는 C2 도메인 주소 + (UserId) + “.png” 주소에 접근해 추가 페이로드를 /Users/(UserName)/Library/WifiPreference/ 디렉토리에 WifiCloudWidget 이라는 이름의 파일로 내려 받은 뒤 실행한다.

[그림 28] wifianalyticsagent 파일 main 함수

분석 시점에는 C2에 접근할 수 없어 WifiCloudWidget 파일을 실행하는 [Stage 3] 이후 동작은 확인할 수 없었다.

[그림 29] wifianalyticsagent C2 접근 실패

3) KandyKorn

마지막으로 살펴볼 캔디콘(KandyKorn) 악성코드는 2023년 11월, 보안 기업 엘라스틱 시큐리티 랩스(Elastic Security Labs)에 의해 발견됐다. 라자루스로 추정되는 공격자는 블록체인 엔지니어링 공개 디스코드(Discord) 커뮤니티에 구성원을 가장해 침입하여, 블록체인 엔지니어를 대상으로 ‘차익 거래 봇’으로 위장한 파이썬(Python) 악성코드가 담긴 zip 아카이브 파일을 유포한 것으로 확인된다.

공격은 [Stage 0]에서 [Stage 4]까지 총 5단계로 이루어졌다. 사용자가 차익 거래 봇으로 인지하고 다운받은 파일을 실행하면 사용자 몰래 여러 단계의 드로퍼·로더를 걸쳐 최종적으로 정보 탈취 목적의 명령을 수행하는 KandyKorn 악성코드가 실행된다.

[그림 30] KandyKorn 공격흐름도 (출처 : elastic security labs)

[Stage 0]
최초 파일은 ‘Cross-Platform Bridges’라는 이름의 압축파일로, main.py를 실행하면 프로그램이 동작한다. order_book_recorder 폴더 내 많은 모듈 중 watcher.py 에서 악성 행위가 일어난다. watcher.py가 실행되면 order_book_recorder 디렉토리에 _log 디렉토리가 생성되고, 실행한 현재 시간이 기록된 running.log 파일이 생성된다.

[그림 31] main.py 실행 후 Cross-Platform Bridges 폴더 구조

이후 구글 드라이브로 보이는 C2에 요청을 보내서 [Stage 1]에서 사용할 testSpeed.py 파일을 _log 디렉토리에 다운로드 및 실행한다.

[그림 32] watcher.py 스크립트 일부

분석 시점에서는 C2에 접근할 수 없어, 동작 시에 통신이 꼭 필요한 [Stage 1] ~ [Stage 3] 파일의 동작을 직접 확인할 수 없었다. 대신 해당 악성코드를 최초로 발견한 elastic security labs의 분석 보고서(“Elastic catches DPRK passing out KANDYKORN”)에서 동작을 확인할 수 있었다.

[Stage 1]
[Stage 0]에서 통신 성공 시 실행하는 testSpeed.py는 또 다른 구글 드라이브 C2 주소에 연결해 FinderTools라는 이름의 파이썬 파일을 /Users/Shared/ 디렉토리에 다운로드한다. 다운로드가 끝나면 FinderTools 파일에 다른 C2 주소를 인자로 넘겨 .sld라는 파일을 /Users/Shared/ 디렉토리에 다운로드 및 실행한다.

[Stage 2]
.sld(.log) 파일은 SUGARLOADER라고 불리는 일종의 로더 악성코드로 난독화되어 있어 정적 분석이 어렵다. [그림 33]을 보면 프로그램 시작 시 특정 메모리로 이동(jmp)하는 것을 볼 수 있지만, 해당 메모리 위치로 가보면 메모리 공간을 확인할 수 없어 프로그램 실행 전에는 분석이 불가능하다.

[그림 33] SugarLoader 시작 지점 확인 불가

main 함수 외에 __mod_init_func라는 함수를 확인할 수 있다. 해당 함수에는 생성자가 들어가 있는데, 생성자는 객체가 호출되기 전에 실행된다는 점을 이용해 메인 함수가 실행되기 전에 초기화를 수행해 이후 원활한 동작을 수행한다.

SUGARLOADER은 C2와 연결해 최종 페이로드인 KANDYKORN을 다운로드 및 실행하는 것이 주요 목적이다. C2에 연결하기 위해 /Library/Caches/com.apple.safari.ck 구성 파일을 확인해 정보를 가져오는데, 해당 파일이 없을 경우에는 SUGARLOADER 실행 시 인자로 넘어온 C2 주소를 통해 구성 파일을 다운로드한다.

com.apple.safari.ck 파일은 RC4 방식으로 암·복호화 하여 사용하며, C2 통신에 필요한 URL, IP 주소, 포트 등의 정보가 담겨있다. 암호화 키는 SUGARLOADER 파일에 하드코딩 되어있고 KANDYKORN에서도 하드코딩 되어 사용된다.

[그림 34] SugarLoader, KandyKorn에서 사용하는 RC4키

C2와 통신 성공 시 SUGARLOADER는 Reflective Code Loading* 기법을 이용해 KANDYKORN 페이로드를 자신의 프로세스 메모리에 가져와 실행한다. 또한 지속성 유지를 목적으로 HLOADER를 디스코드 앱에 생성 및 실행한다.

[그림 35] HLoader가 삽입된 Discord 앱

사용자가 디스코드 앱을 실행하면 Discord로 위장한 HLOADER가 실행된다. HLOADER는 자신의 파일명을 Discord에서 MacOS.tmp로, .lock 파일명을 Discord로 잠시 수정한다. 이후 정상 디스코드 파일인 Discord 파일과 .log 파일을 실행시키고, Discord 파일과 MacOS.tmp 파일의 이름을 다시 .lock, Discord로 되돌린다. HLOADER는 이렇게 실행 흐름 하이재킹(execution flow hijacking) 기술을 이용해 Discord 앱이 실행될 때마다 SUGARLOADER를 실행하도록 지속성을 유지한다.

[그림 36] HLoader 동작 흐름도 (출처 : elastic security labs)

[Stage 4]
SUGARLOADER에 의해 실행되는 KANDYKORN은 /Library/Caches/com.apple.safari.ck 구성 파일을 읽은 후 RC4 키로 복호화 한 정보로 C2와 통신 설정을 하고 서버의 명령을 기다린다. 이후 전달받은 명령에 따라 [표 6]의 16가지 동작을 수행한다.

[표 6] KANDYKORN에서 수행하는 명령

04. 북한발 맥OS 악성코드를 통한 향후 대응방안

지금까지 북한 APT 공격그룹에서 가상자산 이해관계자를 대상으로 활용하는 맥OS 악성코드 3종에 대해서 살펴보았다. 최근에 북한은 높은 기술 성숙도를 요구하는 공급망 공격을 다수 수행하고 있으나, 금전적 목적을 위해서는 일반 사용자를 대상으로도 사회공학적 기법을 지속해서 수행하고 있는 것을 알 수 있다.

사회공학적 기법은 신규 취약점이나 고도화된 공격기법이 아니더라도 공격 대상의 심리를 이용하기 때문에 다양한 분야에서 활용되고 있다. 물론 기존의 윈도우 환경에서 다수의 악성코드들이 사용하고 있었으나 금번 악성코드 분석 사례와 같이 맥OS환경에서도 유의미한 공격사례들이 다수 발견되고 있다.

특히 눈여겨볼 특징 중 하나는 악성코드들이 모두 정보탈취 기능을 가지고 있다는 점이다. 전자 지갑이나 브라우저 계정 정보 등 가상자산 탈취에 필요한 직간접적인 정보를 모두 수집하고 있으며, 피해자가 가상자산 거래 프로그램 정보를 사용하는지 모니터링 하고 있다가 사용 정황이 확인되면 공격대상으로 활용하는 사례도 있었다.

2019년부터 2023년까지 최근 5년간의 데스크탑 운영체제 시장 점유율을 보면 아직까지 윈도우 점유율이 절대적인 수치를 보이고 있으나 하락세를 보이는 반면, 맥OS의 점유율이 상승세인 것을 볼 수 있다. 정치적인 목적과 금전적인 목적의 사이버 공격을 수행하는 북한은 다수의 공격 사례를 바탕으로 맥OS에 대한 환경의 이해도가 높아지고 있는 만큼 향후에는 멀티플랫폼 악성코드가 지금보다 성행할 것으로 예상됨에 따라 다양한 운영체제의 악성코드를 분석하고 대응하기 위한 준비가 필요하다.

[그림 37] 2019-2023 데스크탑 운영체제 시장 점유율 (출처 : statcounter)

2024년에는 국내 총선 이외에도 전세계적인 정치적 향방의 변화를 앞두고 있다. 북한은 공급망 공격 이외에도 국제 제재를 타개하기 위한 방안으로 가상자산을 통한 외화벌이를 지속할 것으로 예상됨에 따라 맥OS환경의 보안 업데이트 관리 및 사용자 보안인식 제고가 필요할 것으로 예상된다.

05. IoC 정보

1) MD5

2) C2

06.참고자료

1)코빗 리서치센터 2024년 가상자산 시장 전망 : https://portal-cdn.korbit.co.kr/athena/etc/research/81/korbit_Research_2023-12-15.pdf
2)What Are Crypto Mixers? A Beginner’s Guide to Coin Tumblers : https://unchainedcrypto.com/what-are-crypto-mixers/
Mosakheil, J. (2018). Security Threats Classification in Blockchains : https://www.semanticscholar.org/paper/Security-Threats-Classification-in-Blockchains-3)Mosakheil/91bbbb31101cbc2e803726d7210b4100f7b09ac5
4)정의란 무엇인가? 더 다오 해킹사건 Part.1 : https://contents.premium.naver.com/jwjung/villainfinance/contents/220327224925722zT
5)北해킹조직 ‘김수키’, 1400명 이메일 해킹…일반인 가상자산 노렸다[사건 Zoom In] : https://www.donga.com/news/Society/article/all/20231121/122282660/1
6)Cryptocurrency security guide + 9 crypto protection tips : https://us.norton.com/blog/privacy/cryptocurrency-security
7)북한의 암호화폐 공격과 미국의 대응 : https://www.inss.re.kr/publication/bbs/js_view.do?nttId=410585
8)김문환. (2019). 가상화폐 해킹에 대한 사례 연구. 한국산업보안연구, 9(2), 23-54.
9)이승열. (2023). 북한 사이버 공격 전략의 진화: 대북제재 회피를 위한 외화벌이 수단으로서 사이버 전략. 통일정책연구, 32(1), 323-353.
10)Funds Stolen from Crypto Platforms Fall More Than 50% in 2023, but Hacking Remains a Significant Threat as Number of Incidents Rises : https://www.chainalysis.com/blog/crypto-hacking-stolen-funds-2024/
11)The Mac Malware of 2023 : https://objective-see.org/blog/blog_0x77.html
12)BlueNoroff APT group targets macOS with 'RustBucket' Malware : https://www.jamf.com/blog/bluenoroff-apt-targets-macos-rustbucket-malware/
13)Bluenoroff's RustBucket campaign : https://blog.sekoia.io/bluenoroffs-rustbucket-campaign/
14)BlueNoroff strikes again with new macOS malware : https://www.jamf.com/blog/bluenoroff-strikes-again-with-new-macos-malware/
15)Lazarus ‘Operation In(ter)ception’ Targets macOS Users Dreaming of Jobs in Crypto : https://www.sentinelone.com/blog/lazarus-operation-interception-targets-macos-users-dreaming-of-jobs-in-crypto/
16)Revisiting Lazarus' Operation Intercept : https://alden.io/posts/revisiting-operation-intercept/
17)Elastic catches DPRK passing out KANDYKORN : https://www.elastic.co/security-labs/elastic-catches-dprk-passing-out-kandykorn
18)Reflective Code Loading : https://attack.mitre.org/techniques/T1620/
19)The BlueNoroff cryptocurrency hunt is stll on : https://securelist.com/the-bluenoroff-cryptocurrency-hunt-is-still-on/105488/
20)Desktop Operating System Market Share Worldwide 2019 – 2023 : https://gs.statcounter.com/os-market-share/desktop/worldwide/#yearly-2019-2023