长沙某肛肠医院Makop勒索病毒家族(fireee后缀勒索病毒)数据库修复成功
客户信息:长沙某肛肠医院
故障描述:医院his数据库(SQL SERVER 2017 1.14GB)遭勒索病毒加密(fireee后缀)
修复结果:结合客户实际情况,给出最佳解决方案,客户接受后开始数据库修复工作,经过5个小时的紧张工作,成功修复出数据,客户满意验收。
Makop勒索病毒家族样本分析:
一、样本信息
文件名:makop.exe
MD5:8946520970ac0d53437e0600b6ae4574
SHA1:90e0babf5ce77be1769fe055a5b17abf75c851ce
二、代码分析
Makop在启动后,根据执行参数的不同,运行方式也有所不同。分3种情况,各自含义如下:
n:加密网络资源和网络磁盘;
e:提升至管理员权限;
无参数:若程序为普通权限,以管理员身份新起进程,参数为e;失败则继续后续流程。
如上图,在自身进程的执行参数不为n时,makop会创建一个可视化窗口,并通过向该窗口发送不同消息控制加密流程。
窗口中各个按钮作用:
Start:全盘开始加密,包括本地、网络资源;
Stop:关闭窗口,停止加密,但不关闭窗口;
Start folder:加密makop病毒的执行目录及其子目录下的文件;
Copy:复制文本框内容;
Hide:隐藏窗口,向窗口发送消息WM_HOTKEY恢复。
Makop后续进行的则是勒索病毒常见的操作:
1.删除卷影
删除卷影时,解密出下列命令执行,删除卷影备份、禁用开机自动修复,防止文件被加密后管理员通过相关备份进行恢复。
2.结束指定进程
首先解密出需要结束的进程字符串,接着遍历进程,匹配目标进程名,从而调用TerminateProcess进行关闭,防止后续进行数据文件加密时出现文件被占用导致加密失败。
目标主要包括数据库服务、office编辑工具、游戏平台、作图工具等相关进程:
msftesql.exe
sqlagent.exe
sqlbrowser.exe
sqlservr.exe
sqlwriter.exe
oracle.exe
ocssd.exe
dbsnmp.exe
synctime.exe
agntsvc.exe
mydesktopqos.exe
isqlplussvc.exe
xfssvccon.exe
mydesktopservice.exe
ocautoupds.exe
agntsvc.exe
agntsvc.exe
agntsvc.exe
encsvc.exe
firefoxconfig.exe
tbirdconfig.exe
ocomm.exe
mysqld.exe
mysqld-nt.exe
mysqld-opt.exe
dbeng50.exe
sqbcoreservice.exe
excel.exe
infopath.exe
msaccess.exe
mspub.exe
onenote.exe
outlook.exe
powerpnt.exe
steam.exe
thebat.exe
thebat64.exe
thunderbird.exe
visio.exe
winword.exe
wordpad.exe
3.搜索文件进行加密
搜索加密文件时,避开下列路径和文件名,主要是系统目录、系统运行相关文件以及勒索提示文件名,防止破坏系统而导致用户无法支付赎金。
<systemDrive>:\\ProgramData\\microsoft\\windows\\caches
<WinDir>
boot.ini
bootfont.bin
ntldr
ntdetect.com
io.sys
readme-warning.txt
对于经过上面过滤后的文件,如果文件扩展名在下列解密出的字符串中,makop将对该文件进行标记,以对其进行文件内容的全部加密。可以看到,目标主要是数据存储文件。
4dd
4dl
abs
abx
accdb
accdc
accde
adb
adf
ckp
db
db-journal
db-shm
db-wal
db2
db3
dbc
dbf
dbs
dbt
dbv
dcb
doc
docx
dp1
eco
edb
epim
fcd
gdb
mdb
mdf
ldf
myd
ndf
nwdb
nyf
sqlitedb
sqlite3
sqlite
xls
xlsx
xlsm
makop(加密文件后缀)
4.文件加密方式
病毒进程首先生成两个AES256密钥,分别用于需要被全部加密的标记文件和需要被部分加密的其他文件。
其中,被全部加密的标记条件为:匹配上目标扩展名或文件大小≤1.5MB。
Makop通过标记值选择加密使用的对称密钥Key。并为每个被加密文件生成16字节随机值,作为AES对称加密算法的IV参数,加密模式采用CBC。
两种加密方式不同之处主要在于加密区域的不同。
1)全部加密方式
从待加密文件首部开始,每次读取1MB数据到内存进行加密,尾部不足1MB则按实际大小进行加密,加密前按16字节对齐,填充字节’\x00’。
2)部分加密方式
按顺序分别读取待加密文件的首部256KB、文件1/3偏移处的256KB、尾部256KB共3片区域的数据进行加密,加密结果写回原偏移处。
在通过对应的加密方式加密结束文件内容后,makop将在文件尾部添加一些数据,攻击者可利用这些数据恢复文件:
攻击者将手中的RSA-1024公钥部分加密后内置于ndata段中,makop运行时将pk_attacker解密出并导入CSP容器。
pk_attacker加密包含文件加密密钥在内的以下数据:
+0x00:常量”\xad\xad\xa1\xa0”
+0x04:ID(ProductId_crc32)
+0x08:被加密文件所在磁盘的序列号
+0x0C:所在磁盘的类型(如DRIVE_FIXED=3)
+0x10:AES256 Key
+0x30:CRC32(以上数据)
加密结果128字节,写入文件尾部,设置EOF于当前偏移,结束该文件的加密,并为加密后的文件添加扩展名[ID].[makop@airmail.cc].makop。
以部分加密方式为例,文件的加密流程和加密后的文件结构如下图:
5.勒索信息提示文件
makop每加密完一个目录,都将在该目录下创建一个勒索信息提示文件readme-warning.txt。