오퍼레이션 김수키(Kimsuky)의 은밀한 활동, 한국 맞춤형 APT 공격은 현재 진행형
안녕하세요? 이스트시큐리티 시큐리티대응센터(ESRC)입니다.
지난 2013년 러시아 보안업체 카스퍼스키 랩(Kaspersky Lab)을 통해 처음 명명된 이른바 김수키(Kimsuky) 오퍼레이션은 2014년 한국의 보안업체 안랩(AhnLab) 등을 통해서도 널리 알려진 바 있습니다.
그런데 이들이 2018년 현재까지도 꾸준한 활동을 유지하고 있는 것으로 확인되고 있습니다.
약 5년이 지난 현재 김수키 계열의 보안위협은 새로운 방식으로 진화를 거듭하고 있습니다.
■ 오퍼레이션 김수키(Operation Kimsuky) 공격의 은밀한 공격
공격자는 주로 HWP 문서파일의 취약점을 활용한 스피어 피싱(Spear Phishing)을 사용하지만, 상황에 따라 특정 대상의 이메일 계정정보 획득을 위한 고전적 피싱 공격을 복합적으로 사용합니다.
최근까지 한국을 상대로 진행된 맞춤형 APT 공격에 식별된 대표적인 악성 문서 파일은 다음과 같습니다. 물론 이것 외에도 다수의 변종들이 존재합니다.
● 2016년 11월 30일 : '제46차 원내대책회의 모두발언.hwp'
● 2017년 12월 01일 : '한반도 안보환경과 국방개혁 과제.hwp'
● 2018년 01월 30일 : '남북 사회문화협력의 비전과 과제.hwp'
3개의 각 문서 파일에는 보안 취약점을 이용한 쉘코드(Shellcode)가 포함되어 있습니다. 그런데 해당 문서 파일의 'HwpSummaryInformation' 코드를 비교해 보면 3개 모두 100% 일치된 내용이 존재하는 것을 알 수 있습니다.
특히, 문서 지은이의 계정은 대한민국의 행정기관인 외교부를 의미하는 mofa(Ministry of Foreign Affairs)가 다년 간 사용되고 있는 것을 알 수 있습니다.
[그림 1] APT 공격 문서 내부에 포함되어 있는 'HwpSummaryInformation' 코드 화면
문서 지은이는 'mofa', 마지막 저장한 사람은 'TEST'이며, 3개 문서 모두 동일하게 설정되어 있습니다. 공격자는 최소 1년 이상 동일한 메타데이터를 활용했습니다.
가장 최근 공격에 이용된 '남북 사회문화협력의 비전과 과제.hwp' 문서 파일의 내부 스트림(Stream) 중에 'Section1', 'Section2' 코드 내부에는 동일한 쉘코드가 포함되어 있습니다.
[그림 2] 악성 문서 파일 내부에 포함되어 있는 쉘코드 화면
쉘코드가 작동되면 다음과 같은 루틴을 통해 1차 디코딩이 진행됩니다. 쉘코드의 루틴을 통해 내부에 암호화된 코드가 복호화 과정을 거치게 됩니다.
[그림 3] 첫 번째 쉘코드 디코딩 화면
쉘코드는 특정 문자열('JOYBERTM')을 확인해 디코딩을 진행하고, 윈도우 정상 시스템 프로세스인 'userinit.exe' 모듈에 프로세스 할로잉('Process Hollowing') 기법으로 악성 코드를 작동시킵니다.
'Process Hollowing' 기법이란 신뢰할 수 있는 시스템 프로세스를 Suspended 모드로 로드한 후 해당 프로세스에 악성 Payload 코드를 은밀히 삽입해 실행시키는 방법입니다.
이러한 방식은 정상 프로세스에 악성 코드를 은밀히 숨기는데 활용되고 있습니다.
[그림 4] JOYBERTM 문자열 조건 체크 화면
윈도우 정상 시스템 프로세스인 'userinit.exe' 모듈에 악성 코드가 삽입되어 메모리 상에 다음과 같이 특정 호스트 서버로 접속을 시도하는 화면을 볼 수 있습니다.
[그림 5] 'userinit.exe' 프로세스 메모리에 악성 코드가 삽입된 화면
악성 코드가 실행되면 해외의 특정 호스트 서버(maii-daum-net.atwebpages.com)로 접속을 시도해 추가적인 명령을 받게 됩니다.
공격자는 마치 한국의 Daum 이메일 서비스 처럼 도메인을 위장하고 있습니다.
[그림 6] 해외 무료 웹 호스팅 서버에 구축한 명령제어 서버와 통신하는 화면
이 공격자는 2017년에 한국의 특정 대학과 기관들을 상대로 다수의 공격을 수행했고, 변종이 매우 다양하게 존재하고 있습니다.
■ 유사 공격 사례 분석
변종에 따라 공격 명령 제어서버(C2)는 다양하게 변화를 하고 있습니다. 이전에 발견됐던 악성 파일은 한국의 특정 웹 사이트(ink.inkboom.co.kr)와 이메일 서비스(mail.daum.net)를 이용하기도 했습니다.
또한 코드 내부에는 특정 도메인의 문자열이 포함되어 있는 특징도 존재합니다.
- www.GoldDragon.com
- www.braveprince.com
[그림 7] 유사 시리즈의 변종 악성 코드 내부 화면
공격자는 명령제어서버(C2)와 통신을 시도할 때 다음과 같은 매개 변수를 사용합니다. 이 매개변수는 과거 김수키(Kimsuky) 계열의 시리즈에서 발견된 사례가 다수 존재합니다.
[그림 8] 유사 변종 시리즈가 사용하는 HTTP 데이터 매개변수
Host: maii-daum-net.atwebpages.com
Content-Type: multipart/form-data; boundary=----WebKitFormBoundarywhpFxMBe19cSjFnG
2015년 2월에 제작된 변종 중에는 명령제어 서버를 'nate-on.bugs3.com' 호스팅 서비스를 이용했고, 마치 한국의 네이트 온 서비스 도메인처럼 위장한 특징이 있었습니다.
Host: www.nate-on.bugs3.com
Content-Type: multipart/form-data; boundary=----WebKitFormBoundarywhpFxMBe19cSjFnG
그런데 여기에 이용된 매개변수가 동일하게 사용된 것을 알 수 있습니다.
[그림 9] 2015년 Kimsuky 초기 시리즈와 동일한 매개 변수를 사용하는 패킷 화면
동일한 매개 변수를 사용하는 일부 변종의 경우는 'followgho.byethost7.com' 도메인을 사용하기도 합니다. 해당 작전에는 'GHOST419' 이름의 키워드를 사용하게 되며, 공격자는 실제 특정 명령제어 암호에도 유사한 문자를 사용하게 됩니다.
[그림 10] GHOST419 명령을 사용하는 코드 및 명령제어 서버 화면
또한, 공격 서버에는 'GHOST419.down' 이름의 파일이 존재하는데, 이 파일은 XOR 0xFF 변환으로 암호화된 EXE 악성 파일이며, 명령에 따라 공격 대상자에게 추가로 유입되는 파일입니다.
암호화된 파일을 복호화하면 아래 그림과 같이 추가 악성 파일의 내용을 확인할 수 있습니다.
[그림 11] 암호화된 상태로 공격자 서버에 은밀히 숨겨져 있는 추가 악성 파일
■ 공격 코드에 남겨진 고유한 흔적
이번 공격에 사용된 악성 파일 시리즈는 매우 다양하게 제작되어 사용되었습니다. 그 중 일부에는 다음과 같은 영문과 한국어가 동시에 포함된 문장이 존재합니다.
'thread wait 오유' 이 부분은 스레드 대기 오류라는 표현으로 쓰일 것으로 예상되는데, 단순 오타일 수도 있지만 '오류'라는 단어가 '오유'라고 표기되어 있는 것이 특징입니다.
[그림 12] 악성코드 내부에 영문과 국문이 함께 포함된 화면
지금까지 살펴본 바와 같이 과거 김수키 계열의 사이버 침투 활동은 현재까지도 계속 이어져 오고 있습니다. 의심스러운 이메일을 수신할 경우 가급적 열람을 자제하고, 의심스러운 경우 발신자에게 사실 여부를 확인하고 실행하는 습관이 필요합니다.
이스트시큐리티 시큐리티대응센터(ESRC)에서는 이와 관련된 유사 보안위협을 지속적으로 대응하고 있습니다.
마지막으로 공격자는 국내 주요 인사들을 상대로 은밀하게 정보탈취 및 염탐활동을 유지하고 있으므로, 사용 중인 이메일이나 컴퓨터 암호들은 복잡한 방식으로 수시로 변경하는 것이 매우 중요합니다.