近日,FreeBuf上对于一类FireCrypt木马做了相关的报道:流氓会武功:这款勒索软件不仅能勒索,还能DDoS。哈勃分析系统拿到了相关样本,并对其进行了分析。
经分析,该类样本通过木马生成器自定义生成,运行该样本会对特定文件类型进行AES加密,同时伴随着持续但微弱的DDoS行为(请求特定网站下载文件)。以下是详细的样本分析结果。
一.样本运行效果
该样本运行后会加密系统所有盘符下的特定文件类型的文件,加密后会在文件名后加上firecrypt后缀,如下图所示:
图1.加密后的文件
在加密结束后,样本会在桌面生成两个文件分别为xxxx-READ_ME.html和xxxx-filesencrypted.html,xxxx-READ_ME.html是加密后提示给受害用户的解密提示,xxxx-filesencrypted.html是当前受害者电脑所有被加密文件的路径位置信息,如下图所示:
图2 xxxx-READ_ME.html
图3 xxxx-filesencrypted.html
该解密提示界面警告受害者AES密钥的销毁时间,用户需要在密钥销毁之前向特定比特币地址支付500美元赎金以获得AES密钥和解密程序。木马会在每台被加密的机器上生成一个唯一的USER ID用于识别受害机器。
此外,在文件加密完成后,该木马会创建数个后台线程去固定的某个网站上下载文件到%Temp%目录下,如下图所示:
图4 木马文件下载
二.样本运行流程:
此木马是基于.NET环境开发,依赖.NET Framework 4.0及以上。通过reflector工具可以对木马进行反编译,从而分析出该木马大致运行流程如下:
图5 firecrypt木马运行流程
三.文件加密分析:
1.样本首先查找受害电脑的所有盘符:
图6 查找盘符
然后递归遍历所有系统盘符下的所有文件,查找符合如下后缀名的文件,将这些文件的路径信息加入%AppData%SysWin32files.txt,加密文件类型如下:
图7 加密文件类型
2.样本会产生一个32个字符的随机字符串,该随机字符串用于后续AES256密钥的生成:
其中随机数产生的算法如下:
3. AES256加密流程如下,Encrypt_Fun方法中调用的AES256_Encrypt为加密的主要函数:
AES256_Encrypt方法传入带加密的数据和用于加密的密码,此密码再与一些其它的参数生成真正的密钥,具体流程如下:
至此,文件完整的加密流程已经完结了。该样本在加密每个文件的时候都会产生一个32个字符的随机字符串,然后通过该随机字符串去生成AES加密密钥。
这样每次加密的密钥都是不同的,但是在整个加密流程前后并未发现木马通过网络将密钥发送给远端的服务器,一旦用户的电脑被此类木马感染后,即使向作者给出的比特币地址支付赎金,仍然无法获取需要解密的AES密钥。
四.木马的DDoS行为:
当加密行为完成后,样本将在后台创建多个线程:
在DownloadThread函数中会持续对www[.]pta[.]gov[.]pk/index[.]php发出请求,并将该页面下载到%temp%目录并存储:
当样本感染的机器足够多的时候,这种正常的Url请求就会变成DDoS攻击。
五.结束任务管理器:
除了以上的文件加密和DDoS行为,样本还会创建一个Timer,每隔500ms将“taskmgr”进程杀掉:
以此防止用户通过任务管理器发现木马进程,进而结束该木马进程。
六.木马生成器与变种:
此类通过生成器生成的木马样本,每次生成的样本的哈希值都会发生变化,可以通过不停变种绕过一些仅凭哈希值进行判定的防护措施。
不过,此木马并未采取强烈的混淆手段,大多数情况下仍然可以通过静态特征或者动态行为,识别该类生成器产生的木马。
*本文作者:腾讯电脑管家,转载请注明来自Freebuf.COM