背景概述
最近,深信服安全团队捕获了一个使用Go用语言编写的勒索病毒。捕获的样本包括勒索和后门,并可以指定目录和文件进行加密。其加密模块改写为开源加密项目代码,并重新命名为加密模块awesomeProject_word,因此,深信服终端安全团队将其命名为Awesome勒索病毒。
Go语言作为一种非常年轻的语言,简单易用,支持多平台,受到攻击者的青睐。在编译过程中,全静态链接和独特的大提高了安全人员的研究、分析和测难度Go语言开发的恶意样本大多集中在后门和采矿两类,勒索病毒相当罕见。
上次发现的Go语言勒索病毒是19年初的好事Github上面发布的勒索病毒源代码被改编。即使出版商声称是为了研究勒索病毒的原理,攻击者显然不这么认为,简单的重写是用于勒索活动的。
技术分析
使用这种勒索病毒UPX3.96加壳,Go版本为1.13,已删除符号文件。
操作界面显示病毒可以加密或删除指定的目录文件;
修复符号表可以确认为使用GO1.13新勒索 后门病毒;
一、加密模块
输入参数分析argument需要注意的是,代表加密目录和正则匹配模式golang在函数调用中,结构体的每个参数都进入栈,而不是C/C 以指针形式进入栈。
如String类型在golang中以(Address,Length)结构形式的出现导致结构形式的出现IDA以_cdecl分析成多个输入变量的 *** 。
加密指定文件正则匹配:
执行加密函数main_Execute;
加密模块调用的awesomeProject_world发现它改写在开源GO项目SIO。
*SIO项目实现DARE2.0,支持确认密钥是否正确,密文是否被篡改。AES-256 GCM以及Chacha20-Poly1305两种加密模式。
攻击者重写了密钥生成部分:
(1)使用base64解密后,生成256位密钥A;
(2)使用CryptGenrandom生成256位盐B;
(3)使用硬编码密钥A和盐B最终加密256位密钥进行密钥衍生C,
将密钥写入文件头C再加密;
源码中Config数据结构如下图所示:
根据栈上的参数加密Version为20,CipherSuite为1(AES-256-GCM),Key为密钥C;
加密后,删除原文件,防止数据恢复软件恢复;
文件重写为勒索提示信息(左),加密后文件(右)。
二、后门模块
打开本机49500端口进行监控,循环接受远程控制指令;
等待C2执行发送指令;
基础加固
相信安全团队再次提醒大多数用户,勒索病毒主要是预防,大多数勒索病毒加密文件无法解密,注意日常预防措施:
1、及时对系统和应用进行补丁,修复常见的高危漏洞;
2、定期非本地备份重要数据文件;
3、不要点击来源不明的邮件附件,不要从未知网站下载软件;
4、尽量关闭不必要的文件共享权限;
5、更改主机账户和数据库密码,设置强密码,避免使用统一密码,因为统一密码会导致一个被打破,多个被打破;
6、假如不需要在业务上使用RDP建议关闭RDP尽量不要向外网映射功能RDP端口和数据库端口。
若转载,请注明原文地址。