상세 컨텐츠

본문 제목

판문점 선언 관련 내용의 문서로 수행된 '작전명 원제로(Operation Onezero)' APT 공격 분석

악성코드 분석 리포트

by 알약(Alyac) 2018. 5. 28. 21:24

본문



■ 오퍼레이션 김수키의 최신 APT 공격, '작전명 원제로(Operation Onezero)' 배경



안녕하세요? 이스트시큐리티 사이버 위협 인텔리전스(CTI) 전문조직인 시큐리티대응센터 (이하 ESRC)입니다.


저희는 지난 02월, 작전명 김수키(Operation Kimsuky)의 활동이 은밀하게 계속되고 있으며, 한국을 대상으로 한 APT(지능형지속위협) 공격이 활성화되어 있음을 알려드린 바 있습니다.


ESRC에서는 정부차원의 후원을 받는 공격자(State-sponsored Actor)가 2018년 05월에 수행한 최신 표적형 APT 사례를 확보해 분석하였고, 흥미롭게도 김수키 작전에 사용된 '위협 벡터'(공격자가 침해대상에 사용한 접근수단)와 오버랩된다는 점을 발견했습니다.


해당 위협그룹과 개발코드가 남긴 종합적 단서를 기반으로 일명 '작전명 원제로(Operation Onezero)'로 명명하였으며, TTPs(Tactics/Tools, Techniques and Procedures) 기반으로 과거 유사 위협과의 관계 연결 포인트를 관찰하고 있습니다.


아울러 일부 김수키 작전에서 사용된 공격 데이터가 '금성121(Geumseong121)' 위협그룹 사용한 작전에서도 동일하게 사용된 경우가 복수로 식별되어, ESRC에서는 직·간접적으로 연계된 APT 조직이 수행 중인 것으로 강력하게 판단하고 있습니다.



[그림 1] Kimsuky 작전 계열의 악성파일과 금성121 그룹이 사용한 동일한 HWP 화면



[그림 2] Kimsuky 시리즈의 악성파일과 금성121 그룹이 사용한 문서의 동일한 속성



초기 Kimsuky 조직이 스피어피싱(Spear Phishing) 공격을 수행할 때 발신지는 주로 중국 선양지점이었으며, 동일한 공격 데이터가 최근에는 일본 발신지에서 목격되었습니다.



■ 판문점 선언 문서 내용을 인용한 HWP 취약점 등장



그런 와중에 2018년 05월 18일에 제작된 HWP 포맷의 악성파일이 새롭게 발견되었고, 4.27 남북 정상회담 관련 내용이 포함되어 있는 특징이 있습니다.


해당 문서의 파일명은 '종전선언'이고, 배포용 문서설정 기능으로 암호가 설정되어 있습니다. Root 경로의 날짜는 2017년 05월 20일로 설정되어 있지만, 실제 문서의 HwpSummaryInformation Properly Set 코드를 확인해 보면 생성된 시점은 2018년 05월 14일이며, 마지막 저장된 날짜는 2018년 05월 18일입니다.


악성 문서는 보안기능이 설정되어 있어, 암호를 알기 전까진 문서의 정보와 편집이 불가능하지만, ESRC에서는 해당 문서의 암호를 해독해 내부 코드를 분석하였습니다.



[그림 3] 악성 문서 Root 스트림의 생성 및 수정 날짜 화면



스피어피싱(Spear Phishing) 표적공격에 사용된 것으로 추정되는 악성 문서는 한국의 특정 대학원 특강 자료로 표기되어 있으며, '제2강 가야할 길 : 통일을 지향하는 평화체제 구축'이라는 한국어 제목으로 시작이 됩니다.


또한, '북한의 핵개발과 전쟁위기 고조', '역사적인 판문점 남북정상회담(4.27)' 등의 내용도 포함되어 있어, 판문점 선언 이후에 작성된 내용이라는 점을 알 수 있습니다.



[그림 4] 악성 문서 파일이 실행된 후 보여지는 내용



문서 파일에는 총 9개의 'ViewText/Section' 스트림이 포함되어 있고, 'Section2'~'Section8' 스트림까지 Shellcode 영역이 존재합니다.



[그림 5] HWP 스트림 내부에 포함되어 있는 쉘코드 영역



'Section2' 부터 'Section8' 스트림은 압축된 상태의 코드 사이즈가 '20,228' 크기로 모두 동일한 것을 알 수 있습니다. 7개의 섹션은 모두 동일한 Shellcode 영역을 가지고 있습니다.



[그림 6] 동일한 Shellcode 영역을 보유하고 있는 스트림 화면



해당 스트림 영역에 포함되어 있는 쉘코드는 디코딩 루틴을 통해 메모리에서 작동하게 됩니다.



[그림 7] 쉘코드 디코딩 화면



디코딩된 쉘코드를 확인해 보면 윈도우즈 운영체제에 정상적으로 존재하는 메모장(notepad.exe) 프로세스에 악의적인 모듈을 로드해 사용하는 것을 알 수 있습니다.



[그림 8] 디코딩된 쉘코드가 메모장 모듈을 로드하는 화면



쉘코드가 정상적으로 작동하게 되면, HWP 내부에 포함되어 있는 커스텀 인코딩 루틴에 의해 임시폴더(Temp) 경로에 'core.dll' 파일을 생성하고, 메모장을 통해 로드를 하게 됩니다.



[그림 9] 커스텀 디코딩 코드 화면



'core.dll' 모듈이 정상적으로 작동하게 되면 'fontchk.jse' 파일을 시작메뉴의 시작프로그램에 등록하고, 'wscript.exe' 명령을 통해 실행하게 됩니다. 참고로 'core.dll' 파일명은 이전의 김수키 작전에서 다수 사용된 파일명이기도 합니다.



 Hwp.exe

 ㄴHimTrayIcon.exe

   ㄴnotepad.exe

     ㄴregsvr32.exe /s "%TEMP%\core.dll"

       ㄴwscript.exe "%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\fontchk.jse"



첫 번째 로드에 이용되는 악성 라이브러리 파일은 내부에 'OneDll.dll' 이름의 Export 함수를 가지고 있는 특징이 있으며, 0xC8 값으로 XOR 인코딩된 'fontchk.jse' 이름의 악성 스크립트 코드를 포함하고 있습니다.



[그림 10] 인코딩된 'fontchk.jse' 파일을 디코딩하고 실행하는 코드



인코딩된 상태와 디코딩된 상태를 비교해 보면 다음과 같이 악성 스크립트 코드가 은밀하게 포함되어 있는 것을 알 수 있습니다. 또한, 공격에는 구글 드라이브가 명령제어(C2) 서버로 사용되었습니다.


2017년 중순 경 발견된 유사한 변종 DLL 파일도 이번과 동일하게 구글 드라이브를 명령제어(C2) 서버로 사용한 바 있습니다. 하지만 이번에는 DLL 내부에 포함하지 않고, 악성 스크립트를 이용한 방식으로 공격 벡터가 변경되었습니다.



[그림 11] 악성 스크립트 인코딩, 디코딩 비교 화면



'fontchk.jse' 파일은 다음과 같이 특정 구글 드라이브 URL 주소 2개로 접속하고 각각 'brid.mki', '7za.exe' 파일을 'ProgramData' 폴더에 다운로드합니다.


구글 드라이브 링크를 사용할 경우 일부 보안관제에서 화이트리스트로 분류되어 위협 요소로 탐지되지 않기 때문에 공격자가 이 부분을 적절히 활용한 것으로 추정됩니다.


'brid.mki' 파일은 암호화 압축된 ZIP 파일이며, 내부에 'brid.ige' 파일이 포함되어 있습니다.


압축 암호는 'fontchk.jse' 악성 스크립트 코드에 '201805' 값으로 선언되어 있으며, 함께 다운로드되는 7-Zip Standalone Console 프로그램인 '7za.exe' 파일을 이용해 압축해제를 수행합니다.


더불어 스크립트 추가 명령에 의해 네덜란드의 특정 호스트로 접속을 시도해 2차 명령을 주고 받는데, 이 사이트를 통해 또 다른 악성 파일이 설치되도록 구성되어 있습니다.



[그림 12] 'fontchk.jse' 악성 스크립트 화면



암호화 압축되어 있던 'brid.mki' 파일은 압축해제 후 'brid.ige' 파일명으로 생성되고 로딩됩니다. 실제 이 파일은 DLL 형식을 가진 실행코드입니다.


이 파일의 Export 함수는 첫 번째 로드되는 악성 DLL 라이브러리의 'OneDll.dll' 이름과 유사하지만 'zerodll.dll' 이름으로 함수명이 선언되어 있습니다.



※ Operation Onezero


- core.dllOneDll.dll (DllRegisterServer) - 2018-05-20 09:47:58

- brid.ige : zerodll.dll (DllRegisterServer) - 2018-02-19 10:56:46



ESRC는 공격자가 사용한 네덜란드의 호스트를 조사하는 과정에서 몇개의 암호화된 파일을 발견했고, 악성 스크립트에서 사용한 'fontchk' 파일명과 유사한 'fontcheck.php' 파일이 존재하는 것도 발견했습니다.


더불어 '7za.exe' 압축해제 프로그램의 콘솔 파일도 동일하게 숨겨져 있는 것을 확인하였습니다.



[그림 13] 공격자가 사용한 명령제어(C2) 호스트에 숨겨져 있는 파일



호스트에 숨겨져 있는 'boot', 'query' 파일은 DLL 라이브러리 파일이며, 2단계로 코드가 암호화되어 있습니다. 공격자는 추가 공격에 사용할 목적으로 암호화된 모듈을 은밀하게 서버에 보관 중이었던 것으로 추정됩니다.


'query' 파일은 2018년 05월 16일 오후 10시 59분, 'boot' 파일은 2018년 05월 17일 오전 10시 54분에 제작되었습니다.


암호화되어 있던 'query' 파일을 복호화해 내부 코드를 분석해 보면, 정보수집 과정 중에 해외의 특정 음란물 사이트의 도메인 조건을 체크하는 기능이 존재합니다.



[그림 14] 음란물 사이트 조건 체크 화면 일부 (모자이크 처리)



■ 작전명 김수키(Kimsuky) 쉘코드 유사도 및 연관성 분석



2014년 12월 한국의 전력기관에 시도된 HWP 취약점 악성파일의 쉘코드(Shellcode)와 2018년 05월 발견된 HWP 취약점 파일의 쉘코드를 비교해 보면 다음과 같이 100% 동일한 것을 알 수 있습니다.


2014년 전력기관 위협에 사용된 취약점은 김수키 계열로 이미 널리 알려져 있습니다.



[그림 15] HWP 취약점으로 사용된 Shellcode 비교 화면



앞서 살펴본 바와 같이 이번 공격에 사용된 라이브러리 파일은 regsvr32.exe /s "%TEMP%\core.dll" 명령을 통해 실행이 됩니다. 


2013년 08월에 제작된 Kimsuky 시리즈의 악성 파일도 우연하게도 'core.dll' 파일명으로 발견된 바 있습니다.



[그림 16] 2013년 제작된 Kimsuky 초기 시리즈에서 사용된 'core.dll'



2018년 05월 18일 '작전명 원제로(Operation Onezero)' APT 공격에 이용된 HWP 문서파일의 속성정보를 보면 마지막 저장한 사람의 이름은 'burari' 입니다.


 

[그림 17] HWP 문서의 마지막 저장한 사람 화면



2017년 06월에 제작된 변종 중에 'Trigger.dll' Export 함수를 사용하는 것이 발견된 바 있습니다. 이 악성파일 역시 내부에 구글 드라이브 URL주소 2개를 이용해 명령제어(C2)를 수행합니다.


그리고 한국의 특정 법무법인 사이트를 2차 명령제어(C2)서버로 사용하는데, 흥미롭게도 여기서도 core 파일명으로 다운로드가 수행됩니다.



[그림 18] 구글 드라이브 명령제어와 core 파일로 다운로드하는 화면



다운로드되는 'core' 파일은 암호화되어 있으며, 복호화가 된후 실행이 되면 한국의 특정 압축프로그램 모듈로 위장해 실행됩니다. 이 변종들은 다수가 존재하는데 Export 함수명이 'Engine.dll' 입니다.


그 중 변종에는 'burari001@gmail.com' 이메일 등으로 통신을 시도하는데, 현재부터 약 12개월 전쯤 암호가 변경되어 현재는 정상적으로 명령을 수행할 수 없습니다.



[그림 19] 구글 지메일 암호 변경 화면



참고로 'burari' 단어는 인도의 특정 도시지명이기도 한데, 과거 김수키 작전에 활용된 악성 이메일 중 인도의 무료 웹 메일인 '@india.com' 서비스를 이용한 사례도 다수 존재합니다.



[참고] 인도의 부라리(Burari)


https://en.m.wikipedia.org/wiki/Burari



[그림 20] 인도 Burari 도시 지도 화면



2018년 05월 제작된 HWP 문서의 마지막 저장 계정명인 'burari' 문자와 유사한 형태의 이메일 'burari001@gmail.com' 형태가 동일한 위협 시리즈에서 사용되었다는 점도 흥미롭습니다.





이처럼 국가 차원의 지원을 받는 것으로 추정되는 공격자(state-sponsored actor)의 활동이 현재도 계속 진행되고 있습니다.

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

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

참고로 국가기반 위협그룹에 대한 침해지표(IoC) 등은 사이버보안 협력을 통해 공유가 가능하며, 관련 문의는 'esrc@estsecurity.com' 주소로 연락해 주시기 바랍니다.





관련글 더보기

댓글 영역