2017年5月12日,勒索英国一位外科医生正准备给病人做手术,病毒屏幕忽然弹出一扇红框窗口,源代写着“你的勒索文件已被加密”,要求支付300美元等值的病毒比特币。同一时刻,源代全球超过150个国家的勒索20多万台电脑遭遇了同样的画面。这不是病毒电影情节,是源代WannaCry勒索病毒的真实开场。
很多人以为勒索病毒是勒索某个天才黑客的即兴创作。实际情况要枯燥得多——它更像一份流水线产品,病毒代码模块化,源代分工明确。勒索我翻过几个泄露的病毒勒索病毒源码包,结构出奇地相似:一个加密模块、源代一个通信模块、一个持久化模块,外加一个定时任务。写这种代码不需要多高的编程天赋,网上甚至有开源的勒索软件生成器,花几十美元就能买到定制版本。
加密模块是整个病毒的心脏。早期版本用AES对称加密,速度快但密钥存在本地,安全研究人员能逆向出来。后来的样本学聪明了,改用RSA-2048非对称加密,公钥硬编码在病毒体内,私钥留在攻击者服务器上。这意味着即便你把硬盘拆下来做数据恢复,没有私钥也解不开。有个细节挺讽刺:部分勒索病毒在加密文件时会把原文件删掉再写入加密版本,但Windows的文件系统特性导致数据块可能残留在磁盘上,专业取证团队偶尔能捞回一部分。攻击者显然没料到这一层。
通信模块负责跟命令控制服务器打交道。早期病毒用固定的IP地址,安全厂商一封就完事。后来演变成域名生成算法,每天自动生成上千个随机域名,攻击者只需注册其中几个就能维持控制。这种猫鼠游戏持续了好几年。2018年有个叫GandCrab的家族,作者甚至提供“客服支持”,你付了钱没拿到解密工具,可以发邮件投诉。他们还真回复。这行当已经卷到拼售后服务了。
持久化模块是病毒能不能活过重启的关键。常见手法是写注册表启动项、创建计划任务、或者伪装成系统服务。有些样本会把自己复制到AppData目录下,文件名改成svchost.exe之类的系统进程名,普通用户在任务管理器里根本分辨不出来。我见过一个特别粗暴的样本,直接替换了用户桌面上的快捷方式,你点任何图标都等于再运行一次病毒。
传播方式才是决定勒索病毒破坏力的变量。WannaCry利用了NSA泄露的永恒之蓝漏洞,在局域网内自动扫描445端口,一台中招全公司遭殃。另一种常见路径是钓鱼邮件,附件伪装成发票或简历,诱导你启用宏。还有通过远程桌面弱口令爆破的,攻击者用字典跑一遍常见密码,进去之后手动投毒。最后这种效率最低,但针对性强,赎金往往开得更高。
写勒索病毒的人未必都是技术极客。暗网上有完整的产业链:有人负责开发病毒本体,有人专门做传播渠道,有人洗钱,有人提供解密谈判服务。各环节按比例分成。2021年有个被捕的团伙成员供述,他连Python都不太熟,只负责在Excel里整理受害者名单和赎金到账情况。技术门槛低到这个程度,才是真正让人后背发凉的地方。
防御手段其实不复杂。定期离线备份、及时打补丁、关闭不必要的端口、别乱点邮件附件。但人性弱点摆在那里——备份嫌麻烦,补丁怕影响业务,端口懒得关。攻击者赌的就是这个。他们不需要攻破最强的防火墙,只需要找到最懒的那个员工。