比特币勒索卷土重来 5ss5c勒索软件样本深度分析
星期三, 三月 18, 2020
近期,某客户现场发现主机中存在大量被加密为5ss5c后缀的文件,从获取到的样本来看,有证据显示它与开发勒索软件Satan的组织相关,并仍在积极开发中。该恶意软件通过一个下载器从远程服务器下载了勒索模块和传播模块。勒索软件加密大量的用户文件并向用户勒索比特币,同时利用永恒之蓝、mimikatz窃取用户凭据等方式向其他机器进行扩散。
本文主要关注加密模块cpt.exe的代码逻辑,分析勒索模块的的密钥生成方式,加密算法,远程C&C主机地址等信息,帮助大家进一步了解该勒索软件。
加密模块cpt.exe被释放在C:\Program Files\Common Files\System目录下,获取到的样本加了MPRESS压缩壳,需要先对其进行脱壳处理。
2.1 非加密一般行为
cpt.exe样本为了保障自身能够持续运行,会向windows注册表的自启动目录HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run目录下写入键名为5ss5cStart、键值指向当前运行样本绝对路径的记录。
在注册表中查看该目录,该键值对已经被写入,样本会在下次开机时再次运行:
另外,样本会枚举运行中的进程,查询是否存在运行中cpt.exe进程,并且创建名称为5ss5c_CRYPT的互斥锁,防止重复运行。
2.2 用户token和密钥生成
在该样本中,加密文件所使用的密钥由三个部分组成,固定字符串+随机字符+用户token。样本列举了80个可显字符(大小写字符、数字、符号),并从中随机出0xC8(即200)个字符,当作密钥的一部分, 样本使用梅森旋转算法作为随机数生成器。梅森旋转算法作为一个经典的随机数生成器,能够在取值范围内均匀的生成随机数,被很多语言和运算库采用,样本直接在代码内实现了这一算法。
同时,样本还为每一个主机生成一个长达40个字节的随机token作为主机唯一标识,用以在网络流量中标识该主机。token从0-9A-Z中生成,并被写入C:\\ProgramData\\5ss5c_token文件,如果5ss5c_toekn文件已经存在,则直接读取该文件作为token。
样本还在PE中硬编码了一段16个字节的密码片段:qobt<r#XC6Rm4H&A,该字符串会被填入加密密钥的前16个字节当中,成为加密密钥的一部分。
最终的文件加密密码由:16个字节的固定字”qobt<r#XC6Rm4H&A”、200个字节的随机字符和40个字节的token拼接而成,密钥共256个字节,被应用于AES 256bit加密算法中加密用户文件。
2.3 密钥和文件加密算法
AES属于对称加密算法,加密能力较强,在不知道的密钥的情况下,破解难度较高;另外AES相对于RSA等非对称加密方式,加解密效率很高,适用于对大量文件进行加解密的勒索场景。样本为了保证AES密钥不被泄露,采用RSA加密算法加密并保存AES密钥,样本中自带了加密用的RSA公钥。
该密钥最终被拼接标准公钥格式,并将AES密钥加密得到加密结果,写入勒索信中并上报远程服务器。
加密用户文件前,样本会首先将文件名修改为[[email protected]]原始文件名.token.5ss5c的形式。
随后创建两个文件句柄,分别对文件进行读取和写入,每读取16个字节进行一次AES加密,再将加密后的16字节密文写回文件,如果读取的数据长度不足16个字节,则不加密直接写回。
最后,样本还会在每个文件后追加AES密钥后240个字节的RSA加密结果。
2.4 加密主要流程和网络交互流量
该勒索样本对文件的加密分阶段进行,在不同的阶段,样本会持续与远程主机进行交互,上报受害机器加密阶段和加密相关信息。样本会首先访问ifconfig.me获取本机公网IP。
在完成密钥生成、持久化等一般操作后,样本会连接远程web服务器60.191.46.122的8082端口。
从网络流量上来看,上报信息主要包括本机IP、token、加密阶段和被加密的AES密钥等信息:
该包status为start,即样本已经准备好开始对系统文件进行加密。实际上,在每个阶段结束后,样本都会对远程主机上报一次当前加密阶段的信息,直到完成加密,上报status为done。
从start报文开始,该样本正式进入加密流程,样本查询相关数据库服务并进行关闭,为加密数据库相关文件做准备,样本扫描了常见数据库mysql和sqlserver相关服务等,并进行关闭。
关闭完服务后,会继续枚举运行中的数据库进程,发现相关进程后,也进行关闭。
加密分三个阶段进行,样本会扫描存在的磁盘信息,对存在的磁盘中重要程度越高的文件优先加密,第一阶段优先加密bak、sql、zip等文件;
第二阶段加密其他重要文件、如xlsx、ppt、docx、txt等一般文件,最后一阶段加密其他文件。样本中存在一个加密文件排除列表,列表中主要包括一些可执行文件和系统文件。在Satan的历史版本中,也有类似关闭数据库相关进程和分段加密的操作。
加密完成后。会给用户弹出勒索信,向受害者勒索一个比特币的赎金,然而在勒索信中并未指出钱包地址:
值得关注的是,样本中只包含中文格式的勒索信,怀疑此次勒索软件的攻击目标具有针对性,请国内用户注意防护。
由于样本密码采用RSA+AES加密,暂时无法解密。
新华三攻防团队提醒大家:
如果您已经发现主机磁盘出现被加密的.5ss5c文件:
URL
hxxp://58.221.158.90:88/car/down.txt
hxxp://58.221.158.90:88/car/c.dat
hxxp://58.221.158.90:88/car/cpt.dat
hxxp://60.191.46.122:8082/api/data.php
MD5
53089ada4f5e416afef2fd98aeb612ad
新华三集团(简称新华三)是业界领先的数字化解决方案领导者,致力于成为客户业务创新、产业升级最可信赖的合作伙伴。新华三拥有计算、存储、网络、安全等完整的数字化基础设施提供能力,提供云计算、大数据、大互联、大安全、大安防、边缘计算、人工智能、区块链在内的一站式、全方位数字化平台解决方案。同时,新华三也是HPE®品牌的服务器、存储和技术服务的中国独家提供商。