상세 컨텐츠

본문 제목

2010년 해외 대상 APT 공격자, 오퍼레이션 베이비 코인(Operation Baby Coin)으로 한국 귀환

악성코드 분석 리포트

by 알약(Alyac) 2018. 4. 19. 23:16

본문





안녕하세요? 이스트시큐리티 시큐리티대응센터(이하 ESRC) 입니다.


2018년 04월 16일 경, 특정 국가지원을 받는 것으로 예상되는 공격자(State-sponsored Actor)가 MS Office 문서 파일 취약점 (CVE-2017-11882)을 활용해 한국인 대상의 스피어 피싱(Spear Phishing) 공격시도 정황을 포착했습니다.


ESRC에서는 이 공격자가 '▣오퍼레이션 김수키(Kimsuky)' 캠페인과 연계된 위협 조직으로 판단하고 있습니다. 또한, 유사 변종 악성코드에서는 "전혁진", "김송철" 이라는 한글식 이름이 발견된 바 있습니다.


해당 위협그룹은 대략 2010년부터 2014년 전후로 왕성한 활동을 했습니다. 공격자는 주로 해외 등지에서 외교 및 안보기구 소속으로 활동하는 현지의 고위급 인사들을 주요 공격대상으로 삼았습니다.


ESRC는 며칠 전 한국에서 식별된 국내 대상의 위협사례를 분석하던 중, 과거 수년 전 해외에서 사용된 공격코드와 강력하게 연결되는 흔적들을 다수 발견하였습니다.


이에따라 고유한 침해지표(IoC)를 기반으로 이번 공격을 '작전명 베이비 코인(Operation Baby Coin)'으로 명명하고 인텔리전스 위협분석 및 그룹간 연관성 조사를 수행하였습니다.



■ 중국어 작성자와 한국어 기반의 교란전술 배경 이해 (False Flag)



공격자는 한국의 특정인을 대상으로 악성 DOC 문서파일이 첨부된 한국 맞춤형 이메일을 발송했습니다. 해당 파일은 '서식있는 텍스트 포맷인 RTF(Rich Text Format)' 헤더를 가지고 있고, '코인정보.DOC' 이름의 파일명을 사용했습니다.


문서파일은 2018년 04월 15일 오후 09시 23분에 작성되었고, 문서 속성상 만든 이는 'Windows 用户'로 지정되어 있습니다. 또한, 회사 정보에는 'Sky123.Org'라는 중국의 웹 사이트 주소가 포함되어 있는 특징이 존재합니다.



[그림 1] 문서 파일의 속성 정보



얼핏 육안상 속성 정보는 중국어 기반의 문서입니다. 하지만, 내부의 디폴트 ANSI 코드를 분석해 보면 '한국어(Code Page 949)'로 설정되어 있고, 실제 문서 작성에 사용된 언어 역시 '한국어(deflangfe1042)'로 지정되어 있는 것을 알 수 있습니다. 


이처럼 공격에 사용된 악성 문서 파일은 겉으로 보기에 마치 중국인이 제작한 것으로 쉽게 의심해 볼 수 있지만, 코드 및 관점에 따른 다양한 증거수집과 'Attribution' 데이터를 종합분석해 보다 강력하고 결정적인 단서들을 확보해야 합니. 


국가기반의 고도화된 APT 공격 그룹들은 의도적으로 분석방해 및 추적혼선을 위해 정교하게 꾸며진 거짓 단서를 이곳저곳 남겨둔다는 점을 명심해야 합니다.


이러한 조작수법은 실제 전쟁에서 적군의 깃발을 설치해 마치 아군처럼 보이도록 위장, 교란시키는 전술을 의미하며 군사 전문용어로 '거짓 깃발(False Flag)'이라 표현합니다.



[그림 2] 문서파일 내부에 설정된 언어설정 코드 화면



'CVE-2017-11882' 취약점은 MS Office 프로그램에서 OLE 수식 오브젝트를 삽입하고 편집하는 'EQNEDT32.EXE' 파일에 의해 작동하게 됩니다.


알약 공식 블로그에서는 2017년 11월 20일 '▶해커들이 사용자와의 상호작용 없이도 악성코드를 설치하도록 허용하는 17년 된 MS 오피스의 취약점(CVE-2017-11882) 발견' 내용을 소개한 바 있습니다.

 

사전에 미리 설치한 경우 실제 '수식 편집기 파일(EQNEDT32.EXE)'은 아래의 경로에 존재하며, 독립적으로 실행이 가능합니다.



"C:\Program Files\Common Files\microsoft shared\EQUATION\EQNEDT32.EXE"



[그림 3] 마이크로소프트 수식 편집기(EQNEDT32.EXE) 실행 화면



■ TTPs : 전술/도구(Tactics or Tools) + 기술(Techniques) + 절차(Procedures)



스피어 피싱에 사용된 문서 파일을 상세히 분석해 보면, 포맷 내부 오브젝트 코드에 'Equation.3' 클래스명이 포함되어 있고, 이는 MS Office 에서 사용하는 수식 컴포넌트 기능이라는 점을 알 수 있습니다.


해당 보안 취약점이 작동되면, 하드코딩된 1차 명령제어(Stage1 C2) 서버로 접속하고, '2.dll' 악성파일을 불러오게 됩니다.


1차 명령제어 서버는 다양한 악성파일과 위협도구가 여러 번 업로드된 바 있고, 초기 교두보 확보를 위한 전술적 거점으로 활용했습니다.



[그림 4] 악성 문서 파일 내부에 포함된 오브젝트와 C2 코드



1차 명령제어(Stage1 C2) 서버는 한국의 특정 보안 모듈 아이콘으로 사칭한 변종을 몰래 숨겨두기도 했습니다.


이 모듈의 경우 DLL 파일이 아닌 EXE 형태로 제작되었으며, 수행 기능은 전반적으로 기존 DLL 파일과 거의 흡사하지만, 내부 다이얼로그 리소스에 다음과 같은 속성 정보가 포함되어 있는 특징이 있습니다.



About baby

baby, Version 1.0

Copyright (C) 2017



실제 공격에 사용된 1차 다운로더(Downloader) 기능의 모듈은 시간차에 따라 변종을 유포하는 공격 거점으로 활용되었습니다.



- 2018년 4월 17일 기준 : 2018-03-05 17:27:33 (KST) 제작한 악성파일 유포

- 2018년 4월 19일 기준 : 2018-04-19 01:05:25 (KST) 제작한 악성파일 유포



[그림 5] 취약점 작동시 다운로드되는 1차 다운로드 악성파일 서버 화면



위협그룹은 2018년 4월 19일 '2.dll' 변종을 제작해 기존 파일을 새로운 변종으로 교체했습니다. 해당 악성파일이 제작된 빌드타임을 확인해 보면, 한국시간(KST) 기준으로 새벽 01시 05분이라는 점이 매우 특이합니다.


당시 시계열 모니터링 기준으로 봤을 때 이 시간대는 치밀한 조작보다 실제 새벽에 제작됐을 현실 가능성에 무게가 실리고 있습니다.


만약 절차에 따라 공격이 순조롭게 진행되면, 1차 다운로더는 'C:\Users\[계정]\AppData\Roaming' 경로에 'winword.tmp' 파일이 생성되고 실행됩니다. 


그 다음으로 URL 주소가 다른 2차 명령제어(Stage2 C2) 서버로 접속해 암호화된 'update.ca' 파일을 다운로드하고, 동일 경로에 'update.tmp' 파일명으로 복호화한 후 실행하게 됩니다.


이처럼 공격은 복수의 명령제어 서버를 활용하고, 2단계 과정을 거쳐 진행이 됩니다.



[그림 6] 암호화된 상태로 다운로드되는 'update.ca' 패킷 화면



복호화되어 실행되는 'update.tmp'  파일은 감염된 시스템에서 다양한 웹 브라우저, 이메일 계정 등의 개인정보를 수집하게 됩니다.



[그림 7] 감염된 컴퓨터의 웹 브라우저 정보 수집 기능



이어서 동일한 2차 명령제어(Stage2 C2) 서버는 윈도우즈 시스템 프로세서에 따라 각각 32비트와 64비트용으로 암호화된 악성파일을 선택적으로 다운로드하고 복호화시켜 실행을 지속합니다.



[그림 8] 프로세서에 따라 다운로드되고 실행되는 코드 화면



종합적으로 설치되는 파일명을 정리해 보면 다음과 같고, 시작프로그램에 'Acrobat Accelerator.lnk', 'Anti Virus Option.lnk', 'IPSec Service Launch.lnk', 'Acrobat Speed Update.lnk', 'Network Acrobat Update.lnk', 'Adobe Acrobat Speeding Launch.lnk' 등의 바로가기 파일을 만들어 추후 숙주가 실행되도록 만들기도 합니다. 



- 2.dll -> winword.tmp

- update.ca -> update.tmp

- sys32.tmp -> micr.tmp -> 랜덤.dll

- sys64.tmp -> micr.tmp64 -> 랜덤.dll



최종적으로 작동되는 DLL 모듈은 한국어로 작성된 'ENC' 리소스 영역에 특정 시그니처로 인코딩된 데이터를 디코딩해 사용하며,  키로깅 및 다양한 파일 확장자의 정보들을 수집해 탈취하는 기능을 수행합니다.


특히, 수집대상 파일 확장명 중에는 한국에서 주로 이용하는 문서파일과 압축파일 형식이 포함되어 있습니다.



"cmd.exe /c dir %s*.hwp %s*.pdf %s*.doc %s*.docx %s*.xls %s*.xlsx %s*.ppt %s*.pptx %s*.zip %s*.rar %s*.alz /s >> \"%s\""



[그림 9] 키보드 입력 정보를 탈취하는 키로깅 기능



ENC 리소스의 2006 영역에는 암호화된 PE 코드가 포함되어 있으며, 한국어 기반으로 작성된 것을 알 수 있습니다. 또한, 버전 정보에는 원본 파일명이 'sysninit - exe.dll' 이름으로 지정된 것을 확인할 수 있습니다.



[그림 10] 리소스에 포함된 한국어 언어설정과 내부 파일의 속성 정보



리소스에 숨겨져 있는 코드는 디코딩 과정을 거친 후 'rundll32.exe' 명령과 'ChildStart' 인자를 통해 실행이 됩니다.



[그림 11] 디코딩된 데이터의 실행 명령 코드 화면



'ChildStart' 함수는 'SetWindowsHookExA' API를 이용해 복사(Ctrl+V) 단축키가 입력되면 클립보드에 저장된 내용을 수집시도 합니다.



[그림 12] 'ChildStart' 함수를 통한 클립보드 데이터 수집 기능



일부 물리적 드라이브의 정보를 수집 시도하기도 하는데, 어떤 활용 목적으로 접근하는지 계속 예의 주시 중에 있습니다.



[그림 13] 물리적 영역의 정보에 접근하는 화면



공격자는 이외에도 다양한 컴퓨터 정보를 수집하며, 해당 데이터들은 공격자의 명령제어 서버로 은밀하게 유출이 시도됩니다.



[그림 14] 공격자의 명령제어 서버로 정보를 전송하는 기능



■ 후속 공격에 사용된 변종 악성코드 연속 분석



위협 그룹은 한국시간 기준으로 2018년 4월 19일 새롭게 만든 악성파일로 교체해 추가 명령을 내렸습니다. 추가 변종은 2018-04-19 01:05:25 (KST) 시간에 제작하였습니다.


추가 변종은 기존과 동일한 2차 명령제어 서버를 사용하였지만, 파일명을 일부 변경해 유포에 사용하였습니다.



- store.sys -> store.tmp

- sys32.msi -> sys32.tmp

- sys64.msi -> sys64.tmp



공격자는 변종을 제작해 유포하면서 코드 분석과 보안솔루션 탐지를 회피하기 위해 코드를 'VMProtect' 프로그램으로 실행압축 하였습니다. 그러나 내부적으로 사용하던 Export 함수는 기존과 동일합니다.



sysninit - exe.dll

- ChildStart

- PDFShow

- ShellExploit



[그림 15] 실행압축으로 섹션명이 변경된 화면과 익스포트 함수명



추가 공격에 사용된 DLL 악성파일의 경우 익스포트 함수가 'baby.dll' 이라는 특징이 있고, 이 이름은 이전 공격에서 식별된 변종 중의 다이얼로그 키워드인 'baby' 코드와 일치합니다.



[그림 16] 'baby.dll' 익스포트 함수 테이블 화면



■ 과거 해외 사례들과 코드 유사도 및 연관성 분석



2010년 10월 9일 미국에서 PDF 취약점 (CVE-2010-2883)을 이용한 스피어 피싱 공격사례가 보고되었습니다.


해당 공격은 당시 '외교안보연구소(ifans.go.kr)'에서 공식적으로 발송된 것처럼 위장되어 있었지만,  실제 발신자 아이피 주소(221.9.247.17)는 중국 지린성의 장춘시 입니다.



[그림 17] CVE-2010-2883 취약점을 이용한 스피어 피싱 사례



스피어 피싱 공격에 사용된 'Conference Information_2010 IFANS Conference on Global Affairs (1001).pdf' 문서 파일은 PDF 취약점을 통해 추가 악성 코드를 설치하게 됩니다.


생성되는 파일은 2010년 10월 9일에 제작되었으며, 내부 익스포트 함수는 'syschk.dll' 입니다. 그리고 'CheckDrive', 'SystemCheck' 등의 명령을 사용합니다.


'syschk.dll' 파일은 다양한 시스템 정보를 수집해 특정 구글메일(Gmail)로 발송을 시도하며, 다음과 같은 'HttpAddRequestHeadersA' 컨텐츠를 사용합니다.



[그림 18] 정보 탈취 시 사용되는 컨텐츠 타입



흥미롭게도 2018년 4월 공격에 사용된 코드와 2010년 사용된 코드가 정확히 일치하고 있습니다.



"Content-Type: multipart/form-data; boundary=---------------------------7dab371b0124\r\n"



2013년에는 'Draft response letter Slovenia.pdf' 이름의 PDF 취약점 기반 악성 문서파일이 해외에서 보고되었습니다. 이 문서파일의 취약점에 의해 생성된 파일은 'sysninit.ocx' 이름이며, 2013년 04월 06일에 제작되었습니다.


2013년에 발견된 'sysninit.ocx' 파일명이 이번 '오퍼레이션 베이비 코인'에서 식별된 악성파일의 원본 파일명 'sysninit - exe.dll' 이름과 매우 유사하다는 것도 알 수 있습니다.


더불어 사용된 리소스에 한국어가 사용된 점, 암호화된 모듈의 고유 시그니처 코드(~!@#$%^&) 등이 동일합니다.



[그림 19] 한국어 리소스와 인코딩 시그니처 코드 비교



또한, 'rundll32.exe' 명령을 통해 'PDFShow' 인자를 사용하는 방식은 2018년 코드에서도 동일하게 식별은 되었지만, 한국 대상 공격에서는 사용하지 않은 것으로 보여집니다.



[그림 20] PDFShow 인자를 통한 명령 실행 화면



이와 관련된 공격은 2010년 이후부터 2013년까지 PDF 문서 취약점이 발견되었고, 그 이후에는 PDF 문서나 DOC 문서로 위장한 EXE 파일이 다수 보고되었습니다.


해당 사례에서는 다음과 같은 PDB(Program Data Base) 경로가 발견된 바 있고, 일부에서는 한글식 표현(새 폴더)도 발견되었습니다. 이는 공격자가 한글 기반 운영체제에서 악성 파일을 개발했다는 근거가 될 수 있습니다.



- L:\Attack Programs\Backdoor 2.0(x86-x64)\sysninit - exe\Release\sysninit - exe.pdb

- N:\Attack Programs\Backdoor 2.1(x86-x64)\새 폴더\vcbxcbcb\Release\vcbxcbcb.pdb

- N:\Attack Programs\Backdoor 2.1(x86-x64)\sysninit - exe\Release\sysninit - exe.pdb



더불어, 2014년 09월 22일에 제작된 악서 파일은 이번 '오퍼레이션 베이비 코인'에서 식별된 동일한 Mutex 코드(__START_DLL_MARK__)와 익스포트 함수가 존재하기도 합니다.



[그림 21] 동일한 뮤텍스와 익스포트 함수명



수 년간 확보한 주요 침해사고 인텔리전스 데이터 기반으로 다양한 코드 부분에서 과거와 현재의 공격 코드가 오버랩되고 있다는 것을 비교해 볼 수 있고, 공개되지 않은 부분도 존재합니다.


또한, 일부 코드에서는 제작자로 추정되는 한글표기식의 이름과 서버 이니셜이 발견된 바 있습니다.





이처럼 국가 차원의 지원을 받는 것으로 추정되는 공격자(state-sponsored actor)의 활동이 현재도 계속 진행되고 있다는 점과, 새벽시간에도 매우 활발한 움직임이 있다는 것을 알 수 있습니다.

ESRC에서는 그동안 널리 알려져 있지 않았지만, 금성121(Geumseong121) 그룹과 김수키(Kimsuky) 계열의 오퍼레이션에서 IoC간 오버랩된 부분을 다수 발견했고, 동일한 그룹에서 다양한 인력이 개별 작전을 수행하고 있다는 점을 추정해 볼 수 있습니다.

이스트시큐리티 대응센터(ESRC)에서는 국가기반 위협그룹에 대한 체계적인 인텔리전스 연구와 추적을 통해, 유사한 보안위협으로 인한 피해가 최소화될 수 있도록 관련 모니터링을 강화하고 있습니다.




관련글 더보기

댓글 영역