背景介绍
勒索软件作为一种流行的木马,近年来已成为最为常见的安全威胁之一。与其他威胁不同,勒索软件先向受害者表明自己的身份,再通过加密的方式使用户数据资产或计算资源无法正常使用,而恢复数据资产的唯一方法通常是支付高昂的费用。
BlueSky作为近期发现的一种勒索软件变种,在3月份首次出现,在6月末开始爆发。它的一些勒索软件样本以“MarketShere.exe”和“SecurityUpdate.exe”的形式在线分发,在入侵目标之后,BlueSky会加密受感染机器上的文件,然后添加“.bluesky”文件扩展名。同时它还会生成两个文件,分别是:
#DECRYPT FILES BLUESKY#.txt
#DECRYPT FILES BLUESKY#.html
要求受害者访问BlueSky TOR的网站,并按照提供的说明进行操作。
病毒分析
BlueSky的执行流程如下:动态加载 API、混淆字符串、采用反调试技术、进行权限提升、生成受害者 ID、对文件进行加密、生成赎金通知书。
1. 动态加载 API
所有的API都通过动态加载的方式获取,首先通过遍历
PEB_LDR_DATA中的InLoadOrderModuleList链表
枚举其中包含的模块。
其中用到了许多反分析技术,包括字符串加密和反调试机制,使其能够混淆Windows API 函数名称并使用间接调用来解析API。此外,BlueSky使用DJB散列函数对API名称进行计算,并将它们与代码中的模糊哈希值进行比较,以便正确导入所需的模块。
2. 混淆字符串
所有的字符串都进行了混淆,使用时通过动态解密的方式获取字符串。
3. 反调试技术
除了以上提到的字符串加密、API 混淆等反调试机制外
程序还调用NtSetInformationThread并使用ThreadHideFromDebugger API隐藏线程,线程对调试器隐藏后,它将继续运行,但调试器不会收到与该线程相关的事件。该线程可以执行反调试检查,例如代码校验、调试标志验证等。但是,如果隐藏线程中有断点,或者对调试器隐藏了主线程,那么进程就会崩溃,调试器就会卡住。
用 nop 填充函数调用地址处来过反调试。
4. 权限提升
COM提升名称(COM Elevation Moniker)技术允许运行在用户账户控制(UAC)下的应用程序使用提升权限的方法来激活 COM 类,以此来提升 COM 接口权限。该方法的目标接口是 ICMLuaUtil,该接口存在于 CMSTPLUA 组件中,使用 OleViewDotNet 工具查看系统中的 COM 接口属性信息,找到 CMSTPLUA 组件:
BlueSky 使用了这种方法来绕过UAC。
此外,BlueSky 还会调用 RtlAdjustPrivilege 来获取每个文件和进程的权限。
5. 生成受害者 ID
BlueSky 通过计算机卷信息、机器GUID、数字产品ID和安装日期值的MD5哈希,来生成唯一的用户ID:
A11F9CA342F6AF8414D5516688381DD5
并且使用该ID来生成互斥锁:
GlobalA11F9CA342F6AF8414D5516688381DD5
解密字符串:
“x25519_public”
“RECOVERYBLOB”
“completed”
用来生成注册表项,保存BlueSky的加密操作数据。
BlueSky 将与加密相关的信息存储在注册表项:
HKCUSoftwareA11F9CA342F6AF8414D5516688381DD5
用来恢复信息RECOVERYBLOB
使用ChaCha20+Curve25519+RC4算法进行计算
通过ChaCha20+Curve25519算法对RECOVERYBLOB进行加密。
6. 文件加密过程
与其他勒索软件通常包含文件扩展名列表以识别符合条件的加密文件不同,BlueSky会创建一个在文件加密过程中排除文件的扩展名列表,具体的清单如下:
扩展名:ldf、scr、icl、386、cmd、ani、adv、theme、msi、rtp、diagcfg、msstyles、bin、hlp、shs、drv、wpx、bat、rom、msc、 lnk、cab、spl、ps1、msu、ics、key、msp、com、sys、diagpkg、nls、diagcab、ico、lock、ocx、mpa、cur、cpl、mod、hta、exe、ini、icns、prf、dll、bluesky、nomedia、idx
目录:$recycle.bin、$windows.~bt、$windows.~ws、boot、windows、windows.old、system volume information、perflogs、programdata、program files、program files (x86)、all users, appdata, tor browser
文件名:#decrypt files bluesky #.txt、#decrypt files bluesky #.html、ntuser.dat、iconcache.db、ntuser.dat.log、bootsect.bak、autorun.inf、bootmgr、ntldr、thumbs.db
如下图所示,BlueSky 使用多线程队列进行加密。启动的其中一个负责文件加密,另一个负责枚举本地文件系统上的文件,并将挂载的网络共享添加到队列中。这种多线程架构与 Conti (Ransomware) v3 的代码相似,特别是网络搜索模块是 Conti v3 的精确复制品。但是文件加密例程存在某些差异。例如,Conti v3 使用基于 RSA 和 AES 的文件加密,而BlueSky 使用基于 Curve25519 和 ChaCha20 的文件加密。
BlueSky 的文件加密与 Babuk Ransomware 类似——都使用Curve25519(非对称加密) 为主机生成公钥,并与攻击者的公钥生成共享密钥。生成椭圆曲线密钥对后,BlueSky 计算出共享密钥的哈希值,并使用它为 ChaCha20 算法生成文件加密密钥。最后,它读取文件缓冲区,使用 ChaCha20(对称加密) 对其进行加密并替换原始文件的内容,如下图所示。
7. 赎金通知书
加密完成之后会生成赎金通知的文档和网页,其中恢复 ID 就是保存在注册表项 RECOVERYBLOB 中的值。
六方云防范建议
针对勒索软件的防护六方云希望用户做到以下几点:
1、规范上网行为,不下载安装未知的软件,不点开来历不明的文档、图片、音频视频等;
2、定期更换域控、数据库、服务器上的管理员密码;
3、定期更新病毒库,定时组织内网进行全盘扫描;
4、定期更新补丁,修复漏洞;
5、定期检查防火墙及安全软件的防护日志,及时发现异常并解决;
6、定期离线备份或异地备份重要数据;
7、修改数据库默认端口,防止被扫描器爆破。
8、进行严格的隔离,有关系统、服务尽量不开放到互联网上,内网中的系统也要通过防火墙、VLAN或网闸等进行隔离。
必要的安全防护设备:
1、网络出口位置部署六方云防火墙,并及时更新特征库;
2、终端部署六方云安全卫士,及时扫描和查杀病毒;
3、部署六方云神探产品,及时发现未知威胁和高级威胁。
—【 THE END 】—
-
相关阅读
原文始发于微信公众号(六方云):Bluesky勒索软件深度技术分析