一、前言
11月份时,FortiGuard实验室发现了一个邮件攻击活动,其中仿冒了针对日本民众的海啸警报。攻击邮件中包含指向假冒的日本气象厅(JMA)的一个链接,当用户点击该链接时就会下载Smoke Loader木马。监控这个伪造网站后,我们发现11月底时攻击者已经将Smoke Loader的下载链接替换成另一个链接,用来下载另一款高效木马:AZORult,这款木马可以用来收集被入侵系统的数据。
这两款恶意软件都只在俄罗斯地下论坛销售。目前,假冒的JMA网站仍然作为AZORult的C&C服务器在运行,并且会将用户重定向至合法的JMA网站。进一步调查假冒网站的域名信息后,我们发现了与同一攻击者有关的另一次攻击活动。
在本文中,我们分析了从假冒JMA网站上下载的恶意软件,也分析了同一攻击组织发动的其他攻击活动。
二、虚假海啸警报
2018年11月份,JMA两次发布安全公告,警告日本东北地区用户注意虚假海啸警报攻击活动。官方文档参考以下两处链接:
https://www.jma.go.jp/jma/press/1811/08c/WARNmail_20181108.pdf
https://twitter.com/JMA_kishou/status/1063345647653281794
这些垃圾邮件内容并没有使用标准日语,存在语法错误,因此很有可能由外国人编写,或者采用机器翻译。这两次攻击活动都会诱导用户下载恶意文件,文件下载链接如下所示:
hxxp://www.jma-go[.]jp/jma/tsunami/tsunami_regions.scr
图1. 虚假海啸警告邮件
攻击者将攻击域名伪装成合法的JMA域名(即https://www.jma.go.jp
),但jma
和go
之间使用的是-
符号。日本气象厅已经通过推特警告用户这两个域名有所不同。
图2. 官方JMA域名于伪造域名之间的区别
三、Payload变化历史
我们花了一个月时间监控恶意软件下载链接,发现攻击者对该链接做了多次修改,如下所示:
表1. hxxp://www.jma-go[.]jp/jma/tsunami/tsunami_regions.scr
页面中恶意软件下载链接改动历史
表2. hxxp://jma-go[.]jp/jma/tsunami/1.exe
中恶意软件下载链接改动历史
在十一月下半旬,该页面中已经删除了1.exe
。
在11月25日后,网页上下载的恶意软件已经从Smoke Loader变成AZORult。这两款恶意软件都使用jma-go[.]jp
域名作为C&C服务器地址。
其中,Smoke Loader C&C服务器地址为:
hxxp://jma-go[.]jp/js/metrology/jma.php
AZORult C&C服务器地址为:
hxxp://www.jma-go[.]jp/java/java9356/index.php
四、Smoke Loader
我们发现的所有4个样本均属于Smoke Loader家族,使用了相同的shellcode加载器(loader)和最终payload。一旦下载完毕,样本会尝试下载其他DLL插件或者下一阶段恶意软件。不幸的是,我们没有观察到攻击活动的下一阶段行为。CERT.PL之前发表过报告详细分析过Smoke Loader,大家可以参考此处链接阅读该报告。下文中我们会介绍样本的部分功能。
反分析功能
Smoke Loader在运行最终payload之前使用了多个反分析技术.
我们发现此次攻击活动中使用了各种技术,包括PEB标志检查和多重跳转等基本反调试技术。
恶意软件会检查程序是否使用了sbiedll
,判断自身是否运行在沙箱环境中。
图3. 检查是否存在sbiedll
模块句柄的反沙箱技术
恶意软件也会检查如下注册表项,判断其中是否包含某些知名的虚拟机名,检查虚拟环境:
HKLM\System\CurrentControlSet\Services\Disk\Enum
HKLM\System\ControlControlSet\Enum\IDE
HKLM\System\ControlControlSet\Enum\SCSI
图4. 检查注册表中特定字符串的反虚拟机技术
检查键盘布局
恶意软件也会检查目标系统的键盘语言信息,确保不会感染俄罗斯和乌克兰的用户。
图5. 检查键盘布局
PROPagate代码注入
这种注入技术最早于2017年发现,我们注意到Smoke Loader从2018年7月份就开始使用这种技术,大家可以参考此处阅读相关技术报告。
我们发现样本尾部存在如下代码。代码首先使用一个回调函数配合UxSubclassInfo
结构来运行explorer.exe
,触发注入的代码,然后将某个消息发送至窗口。触发回调代码后,恶意软件接着运行已注入的、解密后的AZORult payload。
图6. PROPagate代码注入
进程监控
在连接至C&C服务器之前,恶意软件会创建两个线程用来监控进程及窗口情况,这是另一个反分析功能。在线程中,恶意软件会计算进程名及窗口名的哈希值,然后将哈希值与payload中硬编码的名称哈希值进行对比。如果找到匹配的进程或者窗口,则会立即终止该进程或者窗口。
图7. 创建线程监听进程及窗口
C&C服务器
此次攻击活动中使用的所有Smoke Loader样本都使用如下URL作为C&C服务器地址:
hxxp://jma-go[.]jp/js/metrology/jma.php
恶意软件从某个结构体中解密出该URL,如图8所示。解密字符串的算法非常简单,如下所示:
decrypted_byte = not (encrypted_byte xor 0x36 xor 0x04 xor 0xAE xor 0xB8)
图8. Smoke Loader中用于加密URL的结构体
执行第二阶段恶意软件
Smoke Loader可以使用3种方法来下载第二阶段恶意软件或者插件:
1、无文件(fileless)方法:将下载的payload映射到内存中然后立即运行;
2、下载DLL并立即加载;
3、下载DLL或者EXE文件,然后使用regsvr32
将其注册为服务。
五、AZORult
此次攻击活动中使用的AZORult为3.3版。该版本于2018年10月份首次发现。与3.3版相比,此次攻击活动中使用的AZORult功能一样,并没有任何修改。下文介绍了该样本的部分功能。
信息窃取功能
AZORult可以收集受害系统中的应用信息,具体目标如下:
1、浏览器历史记录
2、加密钱包
3、Skype
4、Telegram
5、Steam
C&C服务器
此次攻击活动中,恶意软件使用jma-go[.]jp
作为C&C服务器地址:
hxxp://www.jma-go[.]jp/java/java9356/index.php
在3.3版的AZORult中,恶意软件使用Key-Weight(键值-权重)方式处理经过加密的URL:
表3. Key缓冲区以及对应的权重值数组(十六进制格式)
比如,解密目标域名首字母的过程如图9所示:
图9. AZORult中经过加密的URL以及首字母解密过程
执行第二阶段恶意软件
随后样本会连接到C&C服务器,尝试下载第二阶段恶意软件。恶意软件使用了2种执行方法:CreateProcessW
以及ShellExecuteExW
。恶意软件会根据URI扩展名(是否为.exe
)来选择所使用的方法。
图10. AZORult执行第二阶段恶意软件
传播方式
此次攻击活动使用了多种方式来传播AZORult
1、hxxp://thunderbolt-price[.]com/Art-and-Jakes/Coupon.scr
该网站实际上是日本境内用于广告服务的一个推广项目,网站上我们可以找到下载Coupon.scr
的地址,而该文件是与AZORult有关的恶意软件,其哈希值(748c94bfdb94b322c876114fcf55a6043f1cd612766e8af1635218a747f45fb9
)与我们之前分析的一样。
2、hxxp://bite-me.wz.cz/1.exe
这是我们前面分析过的文件,哈希值为:70900b5777ea48f4c635f78b597605e9bdbbee469b3052f1bd0088a1d18f85d3
。
六、发现其他攻击活动
我们决定进一步分析,看能不能找到躲在恶意攻击活动幕后的攻击者。
首先我们分析了恶意域名jma-go[.]jp
。当用户直接访问该网站时,网站会将用户重定向至合法的JMA网站。
检查网站的重定向代码,我们找到了使用西里尔语(Cyrillic)写的一些注释:
图11. 恶意网站上的重定向脚本
有趣的是竟然会有人在实际攻击活动中留下这些线索,因此我们决定在网上搜一下这些注释,然后我们很快就找到了一些结果:昵称为“vladvo”的一个用户在俄罗斯某个论坛上发了一个帖子,咨询与重定向和iframe
相关问题。该用户自己提供的代码与恶意网站所使用的重定向代码完全匹配,即便是注释和空格位置都保持一致。
图12. “vladvo”用户公布的脚本
这里攻击者唯一修改的地方就是window.location
参数。不幸的是,我们无法确定“vladvo”用户是否与此次攻击活动有关。该用户公布的代码时间为2012年10月20日,因此这篇帖子距今已经过去6年,很有可能别人在攻击活动中复用了这段代码。
分析脚本后,我们决定查询恶意域名的WHOIS信息。这里我们找到了一些有趣的信息,可以帮助我们进一步找到可能由同一个攻击组织发起的其他攻击活动。
图13. jma-go[.].jp
的WHOIS信息
首先,我们在WHOIS信息中找到了使用同一个邮箱(lixiaomraz[@]gmail.com
)注册的其他网站:
hxxp://www.montepaschi-decreto-gdpr[.]net
hxxp://www.posteweb-sicurezza[.]com
然后我们发现之前的MPS银行钓鱼攻击活动中已经用过第一个网站:
图14. VT图显示的MPS银行钓鱼攻击活动
可以认为攻击者在当前或者新的攻击活动中再次使用了hxxp://www.posteweb-sicurezza[.]com
网站。
接下来,搜索WHOIS历史,我们找到了其他5个域名,这些域名都由同一个用户在2018年2月9日注册:
hxxp://www.3djks92lsd[.]biz
hxxp://www.38djkf92lsd[.]biz
hxxp://www.38djks92lsd[.]biz
hxxp://www.348djks92lsd[.]biz
hxxp://www.38djks921lsd[.]biz
WHOIS信息中的其他字段都与jma-go[.]jp
的注册信息匹配:
图15. 域名的WHOIS历史信息
所有网站都伪装成音乐、视频流或者torrent网站,然而实际的行为非常不同:
图16. lixiaomraz[@]gmail.com
所注册的网站截图
一旦用户尝试从这些网站上下载任意文件,都会被重定向到其他网站,然后会下载一个合法的7zip 16.02软件安装程序(1f662cf64a83651238b92d62e23144fd
)。看上去网站仍然没有托管攻击payload,或者已不再托管payload。很有可能攻击者使用7zip安装包来测试网站功能是否正常。
图17. 帮助用户下载并启动payload
我们在攻击活动中找到了几个跳转节点:
hxxp://writingspiders[.]xyz
hxxp://catsamusement[.]xyz
hxxp://oatmealtheory[.]xyz
hxxp://canvasporter[.]pw
这些域名在注册时间上都比.biz
域名更晚。这意味着攻击者仍在拓展新的攻击活动,不久我们就可以观察到与这5个网站有关的其他攻击活动。不幸的是,重定向域名的WHOIS信息并没有给我们提供任何线索,无法澄清这些是攻击者拥有的域名,还是其他小伙伴用来测试恶意软件传播技术所使用的域名。
除了潜在的恶意软件传播功能之外,我们还在网站上找到其他有趣的一些行为。检查页面源代码后,我们找到了一个隐蔽的iframe
对象。这个对象的大小为1x1
,隐藏在浏览器左下角。
图18. hxxp://www.38djks92lsd[.]biz
上的隐藏iframe
这个iframe
对象包含指向YouTube视频播放器的一个链接,除此之外还启用了自动播放功能。这意味着视频会在后台隐蔽播放,这通常是用来推广视频或者增加视频浏览量的一种“黑科技”。除了指向YouTube的链接之外,我们还找到了指向Twitter和Facebook的一些iframe
。
我们发现的这5个网站显然并没有给用户造成太大破坏,因此攻击者在这里使用推广技术就显得非常奇怪。这有几种可能性,要么攻击者才刚开始发起攻击活动,要么只是将这些域名当成测试环境加以使用。
以这些域名为起点,我们又找到了由“Kupriushin Anton”注册的其他网站:
hxxp://Craigslist[.]business
hxxp://Craiglist[.]news
目前这些网站处于离线状态,但显然攻击者在这里想仿冒的是Craigslist这个网站。
总结一下,我们认为攻击者正在快速拓展攻击活动,也在修改攻击工具,尝试通过不同的恶意活动方法谋取利益。
七、总结
从11月起,FortiGuard实验室就在监控伪造海啸警报的这个攻击活动,也分析了隐藏在背后的可能攻击者或攻击组织。
我们发现攻击活动中用来感染受害者和窃取信息的恶意软件已经有所变化,攻击者将原始的Smoke Loader换成更加高效的AZORult。
与此同时,我们还探测到注册这个JMA仿冒网站的用户也创建了其他网站,用于其他钓鱼攻击或者恶意攻击活动。
FortiGuard实验室会继续跟踪这些域名,进一步调查幕后黑手。
八、IOC
恶意样本:
27aa9cdf60f1fbff84ede0d77bd49677ec346af050ffd90a43b8dcd528c9633b - W32/Kryptik.GMMP!tr
42fdaffdbacfdf85945bd0e8bfaadb765dde622a0a7268f8aa70cd18c91a0e85 - W32/Kryptik.GMOP!tr
fb3def9c23ba81f85aae0f563f4156ba9453c2e928728283de4abdfb5b5f426f - W32/Kryptik.GMVI!tr
70900b5777ea48f4c635f78b597605e9bdbbee469b3052f1bd0088a1d18f85d3 - W32/GenKryptik.CSCS!tr
a1ce72ec2f2fe6139eb6bb35b8a4fb40aca2d90bc19872d6517a6ebb66b6b139 - W32/Generik.CMTJTLW!tr
7337143e5fb7ecbdf1911e248d73c930a81100206e8813ad3a90d4dd69ee53c7 - W32/GenKryptik.CSIZ!tr
748c94bfdb94b322c876114fcf55a6043f1cd612766e8af1635218a747f45fb9 - W32/Generik.JKNHTRB!tr
文件下载URL:
hxxp://www.jma-go[.]jp/jma/tsunami/tsunami_regions.scr - Malware
hxxp://jma-go[.]jp/jma/tsunami/1.exe – Malware
hxxp://thunderbolt-price[.]com/Art-and-Jakes/Coupon.scr – Malware
hxxp://bite-me.wz[.]cz/1.exe – Malware
C&C服务器URL:
hxxp://jma-go[.]jp/js/metrology/jma.php - Malicious
hxxp://www.jma-go[.]jp/java/java9356/index.php - Malicious
其他URL:
hxxp://montepaschi-decreto-gdpr[.]net/ - Phishing
hxxp://montepaschi-decreto-gdpr[.]net/procedura-per-sblocco-temporaneo-decreto/conferma_dati.html – Phishing
hxxp://certificazione.portalemps[.]com/ - Phishing
hxxp://certificazione.portalemps[.]com/verifica-conto/ - Phishing
hxxp://Craigslist[.]business - Phishing
hxxp://Craiglist[.]news – Phishing
hxxp://www.3djks92lsd[.]biz - Phishing
hxxp://www.38djkf92lsd[.]biz - Phishing
hxxp://www.38djks92lsd[.]biz - Phishing
hxxp://www.348djks92lsd[.]biz - Phishing
hxxp://www.38djks921lsd[.]biz - Phishing
hxxp://writingspiders[.]xyz - Malicious
hxxp://catsamusement[.]xyz - Malicious
hxxp://oatmealtheory[.]xyz - Malicious
hxxp://canvasporter[.]pw - Malicious