2008 R2修复光盘_中了后缀.「mr.hacker@tutanota.com」勒索病毒的SQL数据库修复技术

用达思SQL数据库修复软件怎么修复中了后缀.[mr.hacker@tutanota.com]的勒索病毒加密的数据库?(一卡通综合管理平台)

0da8f305baf5e4d2561600cfbe5e2242.png

2.33GB的sql数据库被后缀.[mr.hacker@tutanota.com]加密

最近几天有一个一卡通综合管理平台的数据库被勒索病毒加密了,因为整个服务器只有sql数据库是重要的,而且客户拒绝向勒索病毒的黑客缴纳赎金,客户联系达思科技,希望达思科技能够帮助修复数据库。

由于中了勒索病毒的客户越来越多,达思科技数据库修复团队也希望用这个案例,把整个勒索病毒加密的sql数据库修复的过程展示出来,以便帮助更多的受到勒索病毒威胁的公司降低随时。

一、SQL数据库修复前的准备工作

1.1 环境准备:

1、操作系统:推荐使用windows server2016或2019

2、SQL数据库环境:从2000开始安装(如何安装,网上有相应的教程),按照版本依次安装,可以安装SQL Server2000、2005、2008、2008R2、2012、2014、2016、2017、2019等;

3、硬盘:修SQL数据库对硬盘读写要求较高,推荐使用m.2接口(NVMe协议)的SSD固态硬盘。

内存:建议64GB以上

1.2判断SQL Server数据库的版本?

如果客户可以准确提供SQL数据库版本,就不需要自己检测版本了,如果客户不确定,我们也可以自己判断,用winhex打开sql数据库的mdf文件,跳转到第144扇区,看看00012060X4和00012060X5两个字节,看看16BIT对应的数值,就可以准确判断SQL数据库的版本,准确判断SQL版本来确定我们修复数据库时需要选择的输出环境的版本。

请看下图,本案例库数值是661,说明版本是SQL SERVER 2008R2

e62d2514e1596655f3458123760ab8ec.png

图一:判断数据库版本

不同SQL数据库版本对应的内部数据库版本数字如下:

SQL Server数据库版本对应的内部数据库版本(数字)

SQL Server 2017 869

SQL Server 2016 852

SQL Server 2014 782

SQL Server 2012 706

SQL Server2012 CTP1 684

SQL Server 2008 R2 665

SQL Server 2008 661

SQL Server 2005 with vardecimal enabled 612

SQL Server 2005 611

SQL Server 2000 539

SQL Server 7.0 515

注意:如果前512扇区或2048或4096扇区被病毒破坏,就需要客户提供具体的数据库版本了。

1.3检测SQL数据库文件,判断修复成功率

1、打开达思SQL数据库修复软件,点击“检查文件”,测试数据库损坏程度。

bd5b35d0b5585c39d693d05d7b4ff49b.png

图二:检测数据库文件的损坏率

打开检测文件对话框后,点击“选择文件”选取相应目录后再点击“开始检测”。

c31a153a3cdfc3b9178d616ddcf761b5.png

图三:检测数据库文件的损坏率

扫描结束后,重点看一下错误页和空页的数量和比例,如果空页和坏页比例小于5%以下,则数据库修复成功率更高。

6758b8c901e77b303a107c8098d7df6b.png

图四:检测数据库文件的损坏率

请看图,本案例的空页为4720,占比为1.5%,错误页(损坏的页)为142,占比几乎为零,因此可以判断,数据库修复的成功率很高!

二、SQL数据库修复过程

1、关于参考库(为什么需要参考库?):

由于SQL数据库的损坏的不确定性,很有可能系统表结构、存储过程等重要参数受损的情况下,我们如果有同结构的好的老备份,达思软件可以把好的表结构提取出来,再把数据库填进去。

2、关于内置的表结构(达思软件打开数据库文件时对话框可选):

达思软件内置了金蝶、用友、管家婆、浪潮、思迅等品牌的数十个版本的表结构,在没有同结构的参考库的情况下,可以选择内置表结构作为参考库,以提高数据库修复的准确率和成功率。

3、达思软件修复SQL数据库的过程

在达思软件界面中选择“打开文件”,选择需要修复的损坏的sql数据库以及和坏库同结构的好数据库作为参照库,开始修复损坏的SQL数据库。

0ef60c0e12e284c4f54d55704a436961.png

图五:打开需要修复的数据库文件

a22bf569312a1b80227872f2d24d2e17.png

图六:打开需要修复的数据库文件

选择好需要修复的损坏的SQL数据库文件后,再选择事先准备好的相同表结构的好库做参照。

0dae7199a02f8e874cb863a259a652d4.png

图七:数据库修复的必要选项

如果客户可以提供老的备份作为参考,就优先选择老的备份作为参考。

如果客户无法提供老的备份作为参考,则可以选择达思软件内置的版本作为参考。

如果达思软件内置也没有,这可以在客户的数据库环境下新建同结构的空库作为参考。

因此,参考库的优先级为:同一个数据库的好的老备份>同结构的的好库>达思软件内置的相同版本>相同环境下新建的表结构一样的空库

8b516abf82d9014f39654ff674703a44.png

图八:自动解析数据库文件

选择完成后,点击“开始恢复”!

达思软件将会自动修复,根据不同大小以及损坏程度的不同,一般在几分钟内就可以完成展开。

SQL数据库展开后,就可以在达思软件界面中查看数据库的修复结果和数据。如下图:左侧红框中显示的是所有表,右侧蓝框中是修复后的数据库文件的解析结果报告。

c81ae21cdd57a1a6f96a94489acaff41.png

图九:数据库文件解析结果报告

从左侧栏中双击某个表,可以在右侧看到修复后该表里的数据,这个时候可以检查一下重要的表数据是否正确。

534412cbfe4f3740dc7c4a9e648c1291.png

图十:核对表数据是否正确

打开SQL Server2008R2,登陆SQL SERVER,附加好的参照库(提前复制出一份),然后,清空参考库里面的表数据作为接收库。

cce99490fa8dce0563ccbb327de2fb0e.png

图十一:在sql server里打开参考数据库

372c9f4411998830daec586eb6d37976.png

图十二:附加好的参考库(清空表数据作为接收库)

d1f0260f68ad26e35ac3c0e99504eec3.png

图十三:附加好的参考库(清空表数据作为接收库)

32c0f6d37bfdd0a139296ed5ec0b5672.png

图十四:附加好的参考库(清空表数据作为接收库)

附加完成后,右键选择该库,选择“新建查询”输入指令完成清除表数据

022a21999e78764ca7d2c40727b88513.png

图十五:新建查询(清空表数据作为接收库)

清空表数据:

清空表数据,保留视图,存储过程,函数,以及保留表约束、触发器等等,可以给故障数据库预留一个好的躯壳,把坏库数据导入此躯壳。对用友、金蝶等数据库恢复有时候能达到好的效果。

清除表数据有两种方法:

一种用delete from [表名] ,这种方法对于大数据库,速度慢,会产生很大的日志信息,对于小库,速度可以忽略;

另一种是truncate table [表名] ,这种方法速度快,但清除不了具有外键的表数据。

在清除表数据时,可以采用两种方法结合。

清除表数据时先禁用一切约束,清除完成以后再次启用约束就行了。

1、 采用truncate table [表名] 清除表数据,排除具有外键属性的表,清除语句获取如下:

Use [要操作的库名字]

-----------------------------------------------------------------------

select

'alter table [' +name+ '] nocheck constraint all; alter table [' +name + '] disable trigger all;

truncate table ['+name+'];'

+ ' alter table [' +name + '] enable trigger all; alter table [' +name + '] check constraint all;

go'

from sysobjects where id not in(select parent_object_id from sys.foreign_keys ) and id not in(select referenced_object_id from sys.foreign_keys ) and type='U'

-----------------------------------------------------------------------

上述SQL语句得到的结果,再次在SQL查询分析器里运行。

2、用 delete from [表名] 清除表数据语句获取如下

Use [要操作的库名字]

-----------------------------------------------------------------------

SELECT 'alter table [' +object_name (id) + '] nocheck constraint all; alter table [' +object_name (id) + '] disable trigger all;

delete from ['+object_name (id)+'];' + '

alter table [' +object_name (id) + '] enable trigger all; alter table [' +object_name (id) + '] check constraint all;

go'

TableName from sysobjects where type='U'

-----------------------------------------------------------------------

3、 有些MS SQL Server查询分析器,对于 上述语句后面的 go ,copy出来后不自动换行,可以把运行结果保存到文本文件中,查询分析器打开以后,会自动换行。如果不自动换行,sql语句执行报错。

4、 可能遇到清除不了的某些表,查看它和哪些表关联外键,先把两个表的约束同时禁用,再用delete from [表名],完了以后,两个表同时恢复约束使用。

5、 查看清除数据是否成功彻底,用下述语句查看记录数量:

Use [要操作的库名字]

-----------------------------------------------------------------------

SELECT object_name (i.id) TableName,

rows as RowCnt

FROM sysindexes i

INNER JOIN sysObjects o

ON (o.id = i.id AND o.xType = 'U ')

WHERE indid < 2 and RowCnt>0

ORDER BY RowCnt desc

d2a047dc95e0cafbd75dedf933157055.png

图十六:清空参考库的表数据

再从下面蓝框中,单机“TableName”,选择所有表后,右键单击复制

c40d83d1e18bad7ee28943e9c081eb15.png

图十七:清空参考库的表数据作为接收库

复制完后,在上面指令栏中粘贴所有复制内容

999249bc635ade4323983eb08a3303a3.png

图十八:清空参考库的表数据作为接收库

将光标点到最开始的位置,然后选择执行

6b9cc96af858c6feef590fc4d490a654.png

图十九:清空参考库的表数据作为接收库

等待指令执行完毕后,再用最上面的查询指令查询一下结果,一般执行2-3遍后,所有表数据都会被清空(个别清除不了的情况需要逐条去清除数据)

05d1e4a31a1a53f961b1d4b84986c555.png

图二十:清空参考库的表数据作为接收库

65e1c3f52e2b41049e645cb9887e2961.png

图二十一:清空参考库的表数据作为接收库

表数据清空后,用软件把数据导入到目标库里,在软件界面选择“导出数据”

1f6b350d2df5394ae6b8538a5549e2b8.png

图二十二:导出数据库

弹出连接设置界面,服务器名默认为:127.0.0.1(若该机器SQL SERVER版本有很多,后面需要加上“SQL版本号”,如127.0.0.1SQL2000或127.0.0.1SQL2008R2来指定输出环境),

数据库名则输入清除完表数据的目标库名称。

a2860c7cec082733bd39e8aaf300753e.png

图二十三:数据库连接设置

点击确定,继续弹出选择界面,一般情况选择全部数据类型即可,数据开始导出

328c8c51f30e3b943d2bac2365a6135e.png

图二十四:导出数据库

导出过程中,先生成所有表,目标库中这些表已经存在

8a5725df04e14c25975a6908e9535fac.png

图二十五:自动创建表,导出数据库

创建完所有表后,开始自动导出数据。

642b204c5320aad6035d99bb7ccb04dc.png

图二十六:导出数据库

导出的时间根表的数量以及数据库大小有关,为了提升导出的效率,推荐您使用高速的SSD固态硬盘以及大容量内存。

导出完成后,会生成导出结果报告

a78aba6e6ecf48dfe840beeaeb8e2273.png

图二十七:导出数据库完成后生成结果报告

自此,数据库修复导出完成

最后,我们来验证一下修复的数据库是否完整?经过验证,这个客户的一卡通综合管理系统完美恢复成功!

3a556aa2380a78d2f6796a9b511bb2ac.png

图二十八:在一卡通综合管理平台的应用系统里验证修复后的数据库是否成功

数据库修复完成后,会自动生成MDF文件和LDF文件,把数据库导入到应用中既可以完成验证工作。


http://www.niftyadmin.cn/n/1214778.html

相关文章

Android方向传感器

在应用程序中使用SensorManager.getOrientation()来获得原始数据。 public static float[] getOrientation (float[] R, float[] values) 第一个参数是R用来保存磁场和加速度的数据&#xff0c;通过该函数获取方位角。第二个参数是函数输出&#xff0c;数据自动填充。values[0]…

Stale branches 设置_N卡和A卡怎么设置高性能模式|独立显卡怎么设置最佳

显卡默认情况下是不开启高性能模式的&#xff0c;因为除了游戏发烧户&#xff0c;应该很少有用户能用得上这样的一个功能&#xff0c;不过如果大家在运行大型游戏、程序上有点吃力的时候&#xff0c;可以尝试开启显卡的高性能模式&#xff0c;提升体验。这篇文章是系统部落根据…

linux技术咨询,Linux技术咨询委员会已完成对UMN内核漏洞植入事件的调查

此前为了一个处心积虑的 Linux 安全研究项目&#xff0c;两名 UMN 研究人员故意向 Linux 内核插入了有后门漏洞的补丁。事件曝光后&#xff0c;其立即遭到了 Linux 及安全社区的炮轰。最新消息是&#xff0c;由顶级 Linux 内核开发人员组成的 Linux 基金会技术咨询委员会&#…

CF896C Willem, Chtholly and Seniorious(珂朵莉树)

中文题面 珂朵莉树的板子……这篇文章很不错 据说还有奈芙莲树和瑟尼欧里斯树…… 等联赛考完去学一下&#xff08;逃 1 //minamoto2 #include<bits/stdc.h>3 #define IT set<node>::iterator4 #define ll long long5 using namespace std;6 const int mod71e97,mo…

电脑能上网手机连上wifi不能上网_如何通过 iPhone 手机流量给 Windows 电脑上网(不需要 WiFi 接收器、不需要蓝牙)...

很简单&#xff0c;就三个步骤&#xff1a;找一台有网的电脑先下载好 itunes把 itunes 安装到需要上网的 windows 电脑上跟着下面几张图一起操作就好啦~

c语言中srand的作用,C++随机数(rand和srand)函数用法详解

C 提供了一组函数以生成和使用随机数字。随机数字就是从一组可能的值中进行随机选择而获得的一个值。该组中的值都有相同的被选中的几率。随机数字常用于许多不同类型的程序中&#xff0c;以下是一些示例&#xff1a;计算机游戏通常要使用随机数字来模拟一些随机过程&#xff0…

常用的shell脚本

1.启动脚本 start.sh #!/bin/bash nohup java -Xmx512m -Xms128m -jar /home/apps/SzjjServices/SzjjServices-1.0.0.jar >/dev/null 2>&1 &2.关闭脚本 stop.sh #!/bin/bash pidps -ef | grep "Szjj" | grep -v grep | awk {print $2} if [ -n "…

C语言 参数检查,C语言isatty()函数:检查给定的设备类型

函数名&#xff1a;isatty头文件&#xff1a;函数原型&#xff1a; int isatty(int handle);功能&#xff1a; 检查给定的设备类型参数&#xff1a;int handle 为要检查的设备文件句柄返回值&#xff1a; 普通文件 返回0 &#xff0c;设备 返回-1补充&#xff1a;常用设备名…