近日,深信服终端安全团队捕获到一款
使用Go语言编写的勒索病毒
。此次捕获的样本有
勒索及后门
两个功能,并且能
指定目录和文件进行加密,
其加密模
块改写于开源的加密项目代码,并将加密模块重命名为awesomeProject_world,因此
深信服终端安全团队
将其命名为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. 深信服为广大用户免费提供查杀工具,可下载如下工具,进行检测查杀。
64位系统下载链接:
http://edr.sangfor.com.cn/tool/SfabAntiBot_X64.7z
32位系统下载链接:
http://edr.sangfor.com.cn/tool/SfabAntiBot_X86.7z
2. 深信服安全感知平台、下一代防火墙、EDR用户,建议及时升级最新版本,并接入安全云脑,使用云查服务以及时检测防御新威胁: