Write Ransomware in Rust——用Rust写勒索软件: (零)起因篇

免责声明

本文仅作为计算机/网络安全相关专业学生学习了解勒索软件的性质特点使用,作者不会使用其进行任何违法行为。任何人不应将之应用于教学目的以外的任何用途。学习者需严格遵守中华人民共和国大陆地区和香港特别行政区的法律法规,以及学习者本人所属/所在的国家/地区的法律法规。

为什么要研究勒索软件?

勒索软件的趋势

自比特币(BTC)、以太坊(ETH)等数字加密货币兴起,价格暴涨以来,它们凭借自身难追踪、易交易、高价值、低监管的特点成为了黑客的首选。随着他们的兴起,以收取勒索加密数字货币赎金为目的勒索软件也逐步兴起。知名的WannaCry勒索软件利用美国国家安全局(NSA)泄露的“永恒之蓝”漏洞展开攻击,要求用户支付300美元的比特币来解密被加密的文件。总体来讲,勒索软件近些年频繁出现,而且勒索金额、勒索形式、技术手段也愈加丰富,危害性越来越大。因而研究勒索软件是一种必要的探索,以掌握其规律和手段。

2018-2021年每起勒索事件平均赎金
2018-2021年每起勒索事件平均赎金

为什么要使用Rust?

勒索软件的技术选型

在个人用户广泛使用的Windows平台当中,勒索软件往往选择的是Java、C#或者C++以及他们的组合。前两者具有丰富的语法糖和简单易用的开发组件,开发效率高;缺点则是,运行效率相对较低,易于被反编译和脱壳,容易被杀毒软件识别,也易于为计算机安全人员分析。后者的优点是各种开发组件也相对完善,但同时也有开发效率相对较低,而且容易开发出具有各种内存问题的软件,易于被研究人员找到远低于理论复杂度的破解方式。

Rust的优势

相比他们,rust语言在如今的2018版本中,具备相对完善的标准库和相对易用的语法糖,完整符合语义化版本的第三方包管理器,极大降低了开发成本。Cargo和rustc的存在使得对于完整理解rust逻辑的开发者而言,开发大型项目的心智负担实际上在语言的规约下减小了。此外,所有权机制和生命周期机制的引入使得用rust可以更轻松地写出内存错误较少的代码,在密码学当中,这是至关重要的。此外,rust在支持增量编译的同时具备C/C++的性能水平,能够达到在部署性能无差别的情况下加快开发编译。

对于黑客而言,rust的开发成本相对低、漏洞率相对小、性能相对好的优点,正恰恰满足了他们的需求。他们希望勒索软件在性能好的同时具有丰富的功能和完整的轮子,不想自己造轮子,也希望软件不要被安全人员找到轻易破解的漏洞。可见,在不远的将来,rust写的勒索软件很可能会成为黑客在网络攻击中的一把利器。笔者在此尝试用rust制作了一个功能齐全的勒索软件,以备各位研究。

发表评论