DeadBolt勒索软件分析
关键词
勒索软件,样本分析
Group-IB事件响应小组调查了一起与DeadBolt攻击有关的事件,并分析了DeadBolt勒索软件样本。他们的调查是对DeadBolt的首次全面分析,包括对代码进行完整的逆向工程,以揭示该勒索软件样本的功能和能力。
2022年1月,一些NAS(网络附加存储)用户在他们的系统上发现了扩展名为.deadbolt的加密文件。大约在这个时候,Bleeping Computer发表了一则关于3600个设备也受到影响的新闻。从那时起,关于涉及DeadBolt系列勒索软件的NAS设备攻击的报告经常出现。DeadBolt勒索软件团伙声称其成员利用了NAS软件的零日漏洞,每一个新检测到的漏洞往往与一系列新的攻击有关。
2022年6月中旬,NAS设备制造商QNAP检测到一系列DeadBolt攻击,目标是运行QTS 4.2.x、4.3.x和4.4.x的企业NAS设备。 2022年2月,各种版本的DeadBolt勒索软件被用于攻击属于ASUSTOR的NAS设备。 2022年9月初,QNAP发布了另一个关于以DeadBolt勒索软件为特征的攻击的安全警报(CVE-2022-27593)。
目标:通过向受害者索要赎金以解锁存储在其NAS设备上的数据,以及向NAS制造商索要赎金以提供有关攻击期间操纵的漏洞的技术信息和加密客户数据的主密钥,从而获得经济利益。
受害者:中小型企业、学校、个人。威胁者的目标是全球的用户,缺乏特定的地理重点。 赎金数额:从受害者那里,威胁者要求获得0.03至0.05比特币(<1,000美元)。从NAS制造商那里,他们要求得到10到50个比特币(200,000美元到1,000,000美元之间) 活动时间:从2022年1月到现在。 最初的攻击向量:NAS软件的漏洞。 勒索软件:跨平台勒索软件家族使用反分析技术用Go编程语言编写。该恶意软件可用于加密或解密数据。为了与受害者沟通,DeadBolt使用目标NAS设备的网络界面。 鲜明的特征:威胁者不与受害者直接沟通;受害者在支付赎金后会在交易细节中收到一个解密密钥。
图2: 给NAS设备供应商QNAP的DeadBolt赎金信息
威胁者向NAS供应商QNAP承诺,只要支付10个比特币的赎金,他们将分享所有与他们操纵的零日漏洞有关的技术细节;如果支付50个比特币,他们将提供包括解密属于该供应商客户的文件的主密钥。与其他勒索软件团伙相比,威胁者在向QNAP的客户索要赎金方面相对温和。一般来说,金额从0.03到0.05比特币不等,在撰写本报告时,相当于600美元到1000美元之间。
图3: 接收解密密钥过程的描述
图4: DeadBolt勒索软件的函数main的代码
根据命令行参数,该软件要么加密要么解密文件。
- 加密文件。{RANSOM_APP} -e {config} {dir} {dir}
- 解密文件。{RANSOM_APP} -d {key} {dir} {dir}
其中:
RANSOM_APP是DeadBolt勒索软件的路径
dir是用于加密/解密文件的路径,用逗号分隔
config是配置文件的路径
key是文件解密密钥
图5: DeadBolt的核心结构
图6: DeadBolt加密模式功能的初始片段
字段 "client_id"、"master_key_hash "和 "key "包含十六进制字符串。client_id "和 "key "字段的长度为32个符号,而 "master_key_hash "的长度为64个符号。
key "字段的值是一个带有文件加密密钥的十六进制字符串。所有字段都在下面描述。
为了替换NAS设备的界面页面,软件创建了以下文件:
/home/httpd/index.html
/mnt/HDA_ROOT/update_pkg/SDDPd.bin
/mnt/HDA_ROOT/update_pkg/.SDDPd_required
图7: DeadBolt加密模式功能的最后片段
图8: 包含在DeadBolt正文中的shell脚本模板/home/httpd/index.html的片段
解密过程的开始取决于文件/tmp/deadbolt.pid的内容,解密过程的结束基于文件/tmp/deadbolt.finish的内容,而当前解密文件的数量则存储在文件/tmp/deadbolt.status。
对于其他HTTP请求方式,该脚本会显示一个gzip-archived的HTML页面,其正文中包含赎金要求和其他信息。该HTML页面的截图显示在上面,位于本文的开头。
图9: 包含在DeadBolt正文中的shell脚本模板/home/httpd/index.html的片段
包含在HTML页面中的JavaScript代码不时地通过发送请求POST /index.html?action=status来检查解密状态。
当用户在相应的字段中输入正确的解密密钥值并点击 "解密文件 "按钮时,页面会发送请求POST /index.html?action=decrypt&key={KEY},其中KEY是用户输入的密钥值。
图10: 提取函数 /mnt/HDA_ROOT/update_pkg/SDDPd.bin
图11: Shell脚本模板/mnt/HDA_ROOT/update_pkg/SDDPd.bin包含在DeadBolt的正文中
该勒索软件使用多线程,使用命令行中指定的路径加密文件。多线程是使用内置的Go工具实现的。
被该勒索软件加密的文件扩展名如下:
DeadBolt勒索软件不会加密以下目录中的文件:
/dev
/sys
/proc
/usr/share
/usr/bin
/usr/sbin
/sbin
该勒索软件还跳过了以下文件和目录:
.swap
.qpkg
.samba
.@root
.@sys
.ssh
.@system
.@zlog
.system
.@system
.@ezsync
.@iscsi
.@snapshots
.@thumbnail
.@tmp
.@uploads
.@trashcan
.@plugins
.@CNID
图12: !!! _IMPORTANT_README_WHERE_ARE_MY_FILES_!!.txt的内容
文件内容使用AES-128 CBC算法进行加密。为了实现该算法,威胁者使用标准的Go加密包 "crypto/aes "和 "crypto/cipher"。配置文件中指定的值作为加密密钥;16字节的初始化向量IV是为每个文件随机选择的。为了生成这个向量,使用Go加密包 "crypto/rand "中的标准函数rand.Read。
图13: 死锁文件的加密功能的片段
图14: 文件加密功能的结束片段
如上所述,DeadBolt勒索软件的配置数据包含在一个JSON文本文件中,事后将其删除,以防止数据恢复。
要在DeadBolt命令行中解密文件,必须指定密钥和解密路径。然而,用户不需要知道所有这些信息。当他们在支付赎金后获得密钥时,文件解密将使用NAS设备的网络界面启动。
用户只需在相应的字段中输入正确的密钥。用于文件加密的路径和其他参数在加密过程开始时创建的Shell脚本中被插入。
图15: 解密模式功能
在解密过程的早期,DeadBolt创建了文本文件/tmp/deadbolt.pid,其中包含勒索软件进程的标识符。在解密过程中,勒索软件更新文本文件/tmp/deadbolt.status中的解密文件数量,当解密完成后,它创建文件/tmp/deadbolt.finish,其中包含 "1"。如上所述,这些文件被DeadBolt Shell脚本用来与解密过程保持一致并显示其执行状态。
图16: 文件解密功能的片段
图17: 文件解密功能的片段
如果指定的加密密钥的哈希值与用于加密文件的密钥的哈希值相匹配,它将被用于解密。如果密钥与主密钥的哈希值相匹配,勒索软件会将此密钥与客户ID一起用来计算加密/解密密钥。它与取自主密钥和客户ID的SHA-256哈希值的前16字节相匹配。因此,为了进行一系列的攻击,威胁者必须生成一个主密钥,然后为每次攻击和每个受害者创建唯一的客户端ID,从而获得加密密钥。
图18: DeadBolt的自我删除功能
Group-IB创建的一个演示项目包含DeadBolt勒索软件的部分源代码,可在此获得。
作者对DeadBolt的分析没有发现任何复杂的元素,如涉及非对称加密的密码学方案。一切都很简单和有效,对受害者来说更是如此,因为该勒索软件的网络界面是用户友好的,相对容易理解。
威胁者不窃取客户数据,因此不会进行双重勒索,这是与其他RaaS(勒索软件即服务)团体的不同。该模式不涉及受害者和威胁者之间的任何沟通,受害者要么向指定的地址付款,并在交易细节中收到密钥,要么不付款。这可以部分地解释为什么DeadBolt不向受害者索要巨额赎金。
然而,该组织遵循相当不寻常的做法,向NAS设备的供应商要求赎金。DeadBolt已经活跃了相当长的时间,所以作者认为这种商业模式是有利可图的。
作者对DeadBolt集团勒索软件攻击的分析表明,威胁者如何使用书中的每一个技巧、以及如何利用受害者外部和内部基础设施的缺陷或漏洞来实现他们的犯罪目标。
END
参考链接:https://blog.group-ib.com/nas-under-threat
编辑|李昊
审校|何双泽、金矢
本文为CNTIC编译整理,不代表本公众号观点,转载请保留出处与链接。联系信息进入公众号后点击“关于我们”可见。