admin管理员组

文章数量:1565370

1. 问题描述

用户的SQLServer数据库遭到"LockBit"勒索病毒攻击,数据库宕机无法访问。

SQLServer数据库数据文件被加密且扩展了文件后缀名:“.lockbit”。
如:
数据文件原有文件名为:“testdb1.mdf”
加密后的文件名则被修改为:“testdb1.mdf.lockbit

同时在被加密的文件目录下留了一封勒索信:“Restore-My-Files.txt”

2. "LockBit"病毒加密分析

知道了文件名被篡改,第一想法是把文件名改回原来的名字,看看是否能拉起数据库,但是尝试失败(想想也是,病毒没那么傻~~)。

那么就只有深入研究下被加密的数据文件,看看到底病毒做了哪些手脚。
通过十六进制编辑器工具打开被加密的文件, 发现文件确实被加密了。
左图是被加密的文件,右图是正常的数据文件。加密后的文件显示为乱码形式。

看到这一幕,有点绝望,在不知道加密算法和密钥的情况下,解密的可能性为0…

好吧,再往下看看,果然有惊喜!
勒索病毒只加密了文件头部256KB字节的内容,之后的数据没有被加密!

为什么只加密文件头的一部分数据?
想想是因为勒索病毒采用的加密算法加密强度太高了,加密时所需时间很长。而对于动不动就上百GB的数据库文件而言,加密时间就更长了。

对于对称加密算法而言,加密时间长,解密时间也长,黑客也不想给自己找麻烦。


3.数据恢复思路

SQLServe数据文件MDF格式,8KB是一个页面。
病毒加密了前256KB数据,也就是 32 个页面。
而对于SQLServe来说,前32个页面基本是数据库创建时就填充的数据库系统信息,很少有用户表数据存储于前32页面中。

那么数据恢复的方法也就明确了:跳过前32个页面,扫描32页之后的有效数据,将其恢复到新的数据库中!


4.恢复实战

根据SQLServer MDF 数据文件的组织格式,层层剖析,恢复页面中的有效数据。

具体实施起来挺复杂,不光要考虑普通表数据,还要考虑LOB大对象数据、视图/函数/存储过程 等对象的恢复,总之力求完美,SQLServer有的对象,都要考虑进去。

最终将加密的数据库成功恢复出来,数据验证使用正常!

5.友情提示

1)做好局域网防护
局域网内的主机密码不要使用相同的密码,一台攻陷,全网瘫痪!同时关闭不必要的网络端口。

2) 此方法只能恢复被加密的SQLServer数据库数据文件,其它类型的文件,如 word、图片等无法恢复出来。

本文标签: 数据库中病毒数据sqlserver