一、前言
在10月9日的几个小时内,我们的客户陆续向我们反馈了同样的攻击事件。此次攻击活动似乎与银行木马Ursnif有关,这是一款长期活跃的恶意软件,与ZeuS及SpyEye一样,其根源可以追溯到2017年,如今在每次攻击活动中仍具备非常强大的感染能力。攻击者在攻击活动中使用了带有Word文档的恶意邮件。
收到最初报告后,我们的威胁情报团队开始进行更深入的调查,以分析此次攻击活动与我们从今年第二季度开始一直在监控的攻击活动之间的关系。
二、初步分析
虽然我们无法肯定此次攻击活动针对的是某个特定的地理区域,但我们注意到所分析的样本基本上都以意大利语人员作为攻击目标,这表明攻击者对意大利比较感兴趣。除此之外,通过ReaQta我们还发现有俄罗斯、乌克兰、荷兰和美国的用户下载了恶意软件。在本文中,我们重点关注的是意大利客户所接触的威胁样本。
图1 附件文档采用意大利语诱导用户启用宏来查看文档内容
三、Ursnif感染策略
此次攻击活动中的DOC文件样本会要求用户启用宏,理由是“该文档由先前版本的Microsoft Office Word所创建”。如果已启用宏,那么当用户打开该文档时就会执行宏,否则只有当用户点击“启用内容”按钮时才会执行恶意代码。
图2 DOC文件中经过混淆的宏代码
这个MS Word宏会运行命令提示符,使用-ec参数来调用powershell,解码攻击指令,开始下载攻击载荷(wync6.xap)。执行MS Word文档宏后生成的相关进程如下图所示:
图3 混淆代码、base64编码后的代码以及解码后的代码
图4. 执行MS Word文档宏后的进程关联信息
在我们分析的Ursnif攻击活动中,攻击者所使用的攻击载荷文件扩展名为.xap,序号从1到7递增(如wync1、wync5、wync7)。
图5. Ursnif载荷结构
当Ursnif执行cmd.exe后,我们可以借助ReaQta-Hive的行为树来观察其活动轨迹:
图6. ReaQta-Hive行为树
Cmd.exe会生成powershell.exe(1号分析窗口),该进程随后释放并运行另一个可执行文件(2号及3号分析窗口),这个可执行文件就是最终的载荷:Ursnif。当最终载荷被执行后,会创建一个注册表键值,存储下一个感染阶段数据。
图7. Ursnif创建的注册表键值
创建注册表键值后,Ursnif会使用dhcpport键中存放的命令来启动一个进程:
C:\Windows\system32\wbem\wmic.exe /output:clipboard process call create "powershell -w hidden iex([System.Text.Encoding]::ASCII.GetString((get-itemproperty 'HKCU:\Software\AppDataLow\Software\Microsoft\B53CC69F-9026-AF48-42B9-C45396FD3837').bthppast))
我们完整重构了整个感染过程,如下图所示:
图8. 使用ReaQta-Hive重构Ursnif感染过程
该命令会运行powershell,后者通过invoke-expression读取并运行bthppast的内容(如N#1分析窗口所示)。
图9. bthppast键的内容
该内容实际上是一个PowerShell脚本,直接在内存中运行。这种无文件攻击方法会根据当前的系统架构选择匹配的.dll文件(Client32或者Client64),将代码注入Explorer中(如N#2分析窗口所示)。
图10. 无文件攻击
注入完成后,explorer.exe中的恶意代码会尝试回连C2服务器(如N#7分析窗口所示)。
四、C2架构
在我们分析的所有服务器上,我们注意到攻击者采用了相同的模式及文件结构。同一个攻击活动中使用了相同的基础目录,还使用3个子目录文件来收集统计信息,统计信息包括:
- 潜在受害者所下载的恶意软件
- 受害者IP地址
- 受害者国别信息
- 被阻止的IP地址
- Bot HID信息
- Bot版本信息
- 运行时间
恶意软件中可以设置所使用的具体根目录,在过去中我们发现各类Ursnif攻击活动虽然使用相同的文件结构,但使用了不同的根目录名,如TOL、TYJ、YUY、MXE等。看起来不同攻击活动并没有重复使用根目录名称,并且每个根目录名只会使用一段时间。
服务器上的根目录名称似乎与每个攻击活动紧密关联。从2018年8月以来至今,我们收集了攻击者使用的各种根目录名称,我们可以根据这些名称来跟踪不同的攻击活动。
根目录名称与使用时长如下所示:
- WES:11月5日到现在
- TJY:10月29日到11月5日
- RUI:10月16日到10月28日
- TNT:8月22日到10月11日
- TOL:10月1日至10月6日
- MXE:9月24日到10月1日
- VRE:9月20日到9月21日
- DAB:9月17日到9月21日
- XOE:9月13日到9月14日
- RTT:9月6日至9月12日
- YUY:8月24日到9月6日
- TST:8月20日到8月22日
- FLUX:8月13日到8月15日
Ursnif可执行文件的配置信息如下所示,从中我们能够提取出各种信息,如:bot版本、botnet ID、DGA(Domain Generation Algorithm,域名生成算法)数据、C2等。
图11. Ursnif配置信息
一旦连接到硬编码的C&C服务器地址后,恶意软件会下载并自动执行攻击载荷。在数据窃取过程中,恶意软件会从某个硬编码的地址下载.avi文件(采用随机文件名),具体URL地址中包含与目标有关的、经过编码的信息。
图12. 数据窃取过程
这个C&C服务器地址由最早的Ursnif犯罪组织所使用的恶意软件来管理,其登录地址为wifilhonle.com/auth/login:
图13. Ursnif C2登录面板
Ursnif会在面板的Clients页面中记录被成功感染的目标。该页面会显示与受害者计算机有关的一些统计信息,包括:IP地址、国别信息、木马版本及其他信息。
图14. Ursnif感染情况跟踪页面
五、Ursnif分布情况
在本文开头我们提到过,C2设施主要集中在乌克兰、俄罗斯、荷兰、美国及意大利境内。
图15. 下载恶意软件的地理区域
从托管服务器上每个小时下载的样本数如下图所示,统计时间为2018年11月7日到11月12日,样本集中包含162,493个样本。需要注意一个有趣的现象:每次样本在下载前都会经过自动化修改,这样每个文件都会对应不同的哈希值,这可能是攻击者采用的一种策略,用来绕过基于哈希IOC特征的简单防护策略。
六、总结
毋庸置疑,Ursnif木马仍是今天最为活跃的安全威胁之一。结合lolbin(目标环境内置应用)以及无文件攻击技术后,我们更难检测这个威胁,使得Ursnif能够更加容易绕过AV软件的检测机制。
Ursnif是个非常好的例子,我们可以从中了解到人工智能驱动的行为分析在主动检测这类场景中所发挥的核心作用。在这类场景中,耽误一分钟则意味着丢失许多重要信息。
借助ReaQta-Hive,我们可以帮助客户检测最新威胁以及各种变种,重构恶意行为及相关风险因素,使客户能在受到伤害前快速检测、告警并阻止这类威胁。
七、IOC
SHA1 DOC: 8d9c9a8d24ff4e41c19c8583e3c5c48db52f147e > Logisticaservicesrl.doc 963CD36B2FBDC70F9B3AF4ED401A28BEB6F969F9 > GRobotica.doc EDF48AC80E2505241BB4A0378363A3C79FD864B8 > Indalgo.doc F31155687987ACE4D9F547E069789645680D7272 > Network_Connections.doc ae4e6c49d120fa07c1112e5b70cd078654a1b009 > Logisticaservicesrl.doc b902ccbb81c300da92c7428fc30cdc252233249e > Conform.doc cc42e4b4a0d1a851367eb5265b4408c64aa56dab > Ligoratti.doc e6934b62bab58efcd64db4c9774b0f9d908715a1 > MetroBlu.doc SHA1 EXE: 05450C90E23CFBDFC5122D0004A6CA1A51E769C5 > praf3.xap 2600D8F9301DB916949E0D46872768022F808A7C > ledo5.xap 28B78C0B4C52222D3F6BDB9583D7EEF82EBFCEC4 > crypt_2_3105.exe 3AB9EE0B9B8E3098E1252293FC7D03E43CC69590 > hereye.exe 4E36269327981F417D59AFDED3DDE2D11BA99149 > ledo6.xap 6119095DFC0B80C6948B50E13EACAFF8929B56E3 > ledo2.xap 6502563541E8830D418A3877324F42DF0B510CE5 > ledo3.xap 7F704D1CC07575854E98783AF059371E2FCCC4E8 > ledo1.xap 99405F84372E8CBDF8B85D6C5F749FF3FFEA2764 > praf1.xap A1C13D9922C58C38E713D3EAFCA70A2A2589C7CC > ledo4.xap A1DEC1D4523E2E6670F6E45A3924DC4C0121CFFE > ledo7.xap AC4B5DD954EFCC11FB2AFAB0FDE27476CB0615CF > praf5.xap AEB75D73E802A7AF08400CED4252CA4455C0DA82 > praf6.xap C9D09E8767344EC32FD6732173D9557F9C74A802 > praf7.xap CBD009F09109B38C4BEC3C55E827C8FCED057D2E > praf2.xap DEE85E063B55D8CF829950E61285078E1BD35164 > crypt_3100.exe E5C48455F03C18F04D581AE1F95C41C81F653EF2 > praf4.xap EB3100700F3D95B21892B045A5FF32EBAD38A831 > wync1.xap PAYLOAD SERVER & C2: hxxp://46.17.47.99/ hxxp://cythromatt.com hxxp://djecalciar.com hxxp://hutedredea.com hxxp://mnesenesse.com hxxp://nosenessel.com hxxp://ostrolista.com hxxp://pilewitene.com hxxp://podylostol.com hxxp://roidlandev.com hxxp://scopoledod.com hxxp://shumbildac.com hxxp://suggenesse.com hxxp://tifyiskeri.com hxxp://uvurinestl.com hxxp://wifilhonle.com IPs: 185.159.128[.]78 (Russia Federation) 185.180.198[.]222 (Netherlands) 185.180.198[.]228 (Netherlands) 185.180.198[.]229 (Netherlands) 185.180.198[.]230 (Netherlands) 192.162.244[.]12 (Russian Federation) 192.162.244[.]169 (Russian Federation) 192.162.244[.]171 (Russian Federation) 204.79.197[.]200 (United States) 204.79.197[.]200 (United States) 217.147.170[.]91 (Ukraine) 217.147.170[.]94 (Ukraine) 46.17.47[.]4 (Russian Federation) 46.17.47[.]99 (Russian Federation) 46.29.160[.]132 (Russia Federation) 62.149.140[.]59 (Italy) 92.242.63[.]202 (Russian Federation) 93.184.220[.]29 (United States) 94.103.81[.]168 (Russian Federation) 94.103.82[.]216 (Russian Federation) 95.181.198[.]115 (Russian Federation) 95.181.198[.]116 (Russia Federation) 95.181.198[.]72 (Russian Federation)