对于各类恶意软件,钓鱼邮件传播仍是攻击者们的主要传播手段,通过伪装成通知、发票、采购方案等恶意附件,引诱用户点击打开,进而被植入恶意软件。
而近期越来越多的钓鱼邮件攻击载荷舍弃了传统的Word、Excel文档,转而使用了不常见OneNote文档也引起笔者的关注。下面笔者将对该现象及具体的样本案例进行分析。
Microsoft OneNote是Windows旗下的一款数字笔记记录软件,在Windows系统中默认随Office套件安装。随着微软对Office套件的保护手段愈发严密,传统使用恶意Word、Excel作为邮件附件的攻击大多难以奏效,从而使攻击者们转向以OneNote为攻击载荷的新型方式。
与Word、Excel使用VBA编程语言实现恶意宏代码不同,OneNote并不支持宏,但OneNote可以嵌入脚本程序到文档中。即使用户从未使用和配置过OneNote应用,双击.noe后缀的恶意附件仍然可以打开,再经过伪装的图形、文字等,迷惑用户点击后执行嵌入的恶意脚本,实现植入过程。
至于OneNote为何会成为近期钓鱼邮件的重要传播载荷,原因可能有以下几点:
目前已发现大量恶意软件采用OneNote作为恶意载荷进行传播,例如Emotet、AsyncRAT、Redline、AgentTesla和DOUBLEBACK、Qbot等著名活跃的恶意家族。下面将针对窃密木马Emotet通过OneNote进行传播的实际案例进行详细分析。
通过钓鱼邮件传播的OneNote文档,双击后无需登录也可以正常打开.one文件。
图2-1无需配置
伪装为提示诱导用户双击。
图2-2伪装诱导点击
实际该提示是一张图片,该图片“View”符号对应的底层有一个vbs脚本。为加强隐藏效果,使用了两层图片。
图2-3实际脚本隐藏
分析vbs脚本文件,该脚本虽已经过一些简单混淆,但仍大致可以看出输出数据到文件。
图2-4生成文件
最后调用wscript对象执行。
图2-5脚本调用
解混淆后,发现释放的文件路径为用户临时目录,内容为vbscript。
图2-6执行内容
释放的脚本文件同样经过混淆,但可以看到最终会调用execute函数去执行解析到的字符串。
图2-7执行脚本2
对其执行的字符串进行分析,很明显是从下面几个链接中下载文件到本地,然后执行。
图2-8载荷下载
循环访问上诉URL后,将下载的文件复制到临时目录下,使用随机文件名,最后使用regsvr32.exe对该文件进行注册执行。
图2-9载荷执行
下载的文件是一个动态链接库文件,通过注册DLL的方式进行加载。攻击者添加大量0x00使文件膨胀到500M左右大小,依据防病毒产品不会静态查杀大文件的特性进行免杀。
图2-10膨胀绕过安防
DLL执行后,首先会从自身资源读取加密数据,使用B^%R5$$?t*dR0R_)r对资源加密数据进行论循环异或解密,得到一份shellcode和一份PE数据,通过异步过程调用(APC注入)执行shellcode。
图2-11 APC注入
在shellcode中,通过对模块名称以及函数名称的位移运算函数hash,获取指定hash的函数。
图2-12函数获取
在内存中对资源解密出的DLL进行反射加载,执行入口点。
图2-13反射加载
资源解密的DLL的入口函数无具体操作,入口函数返回到执行主体DLL。获取到资源解密DLL的指定导出函数后,调用执行。
图2-14加载执行DLL
经过脚本、DLL注册、Shellcode、资源DLL解密执行等加载阶段,程序进入核心载荷。首先加载所需动态链接库。
图2-15加载所需库
其中加密字符串的获取是对硬编码数据进行一系列计算得到。
图2-16硬编码计算
再对该加密数据进行解密得到所需字符串。
图2-17字符串解密算法
创建定时器,周期为0.25秒,执行Emotet加载组件。
图2-18定时器执行
在每个周期中,根据一个全局变量的标志号进行指定操作的执行。随后赋值下一次的标志号,等待下一次定时器执行。类似控制流平坦化混淆。
图2-19定时器-平坦化
首先会检查功能载荷DLL是否被移动隐藏,若没有,则根据当前执行权限决定将载荷DLL文件移动到系统目录或是临时目录,并将载荷DLL改名为随机字符名,再次调用执行。
图2-20文件移动隐藏
二次执行后,开始窃密操作。首先会使用下图算法解密硬编码的公钥,用于后续数据传输和校验。
图2-21 ECC公钥解密
将其中一份CEE公钥使用CEDH协商、Hash散列派生得到公用的AES密钥,用于加密传输数据。
图2-22协商AES密钥
获取64个硬编码的Ip地址与对应端口号。
图2-23 C&C地址硬编码获取
图2-24地址+端口
对64个IP地址轮询访问,发送上线包,获取当前可用的C&C地址。
图2-25上线包发送
找到可用目标C&C地址后,对数据解密。
图2-26传输数据解密
在对解密数据进行校验。
图2-27传输数据校验
首次上线后,会实现持久化,即在自启动注册表项中写入的恶意程序执行命令。
图2-28持久化
从有效C&C获取到的后续模块数据后,根据指定方式进行加载执行,其中有如下四种方式。
图2-29子模块加载方式
后续功能模块包括Bot注册,窃取邮箱账密、浏览器账密、邮件内容、发送垃圾邮件等。
目前发现的OneNote恶意文档中,都是嵌入脚本文件,迷惑用户点击。也就是说,即便打开了OneNote恶意文档,只要我们及时发现问题,没有被诱导点击,也就不会被植入攻击载荷。而微软也宣布会在OneNote中添加改进保护措施,具体内容还未公布。
目前,我们建议用户通过以下几点增强对OneNote文档的防范:
-
禁止OneNote附件执行,这会限制OneNote的使用,但能有效避免恶意攻击。可通过下列注册表项设置。
[HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\office\16.0\onenote\options\embeddedfileopenoptions]
“blockedextensions”=”.bat;.cmd;.vbs;.ps1;.js;.chm;.exe;.scr “
-
当邮件中包含的OneNote附件,确定发送方是否可信。
-
打开OneNote文件后,将鼠标悬停到需要点击的地方,静止2秒后查看有无插入文件提示。
图3-1将鼠标悬停到需要点击的地方
尝试移动内容中的插入内容或将插入内容设置为“置于底层”,例如查看插入的图片下面是否隐藏插入的脚本文件。
图3-2检查图片下面是否隐藏插入的脚本文件
希望通过以上的分析能让每个Microsoft OneNote用户了解恶意软件通过OneNote进行传播的具体步骤,并能在日常的工作生活中警惕并预防相关钓鱼事件的发生。