CN116501550A - 加密型勒索软件的数据恢复方法 - Google Patents
加密型勒索软件的数据恢复方法 Download PDFInfo
- Publication number
- CN116501550A CN116501550A CN202310664504.2A CN202310664504A CN116501550A CN 116501550 A CN116501550 A CN 116501550A CN 202310664504 A CN202310664504 A CN 202310664504A CN 116501550 A CN116501550 A CN 116501550A
- Authority
- CN
- China
- Prior art keywords
- data
- request
- file
- module
- recovery
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 81
- 238000011084 recovery Methods 0.000 title claims abstract description 73
- 238000001514 detection method Methods 0.000 claims abstract description 48
- 239000007787 solid Substances 0.000 claims abstract description 47
- 239000000284 extract Substances 0.000 claims abstract description 5
- 230000008569 process Effects 0.000 claims description 53
- 238000013507 mapping Methods 0.000 claims description 17
- 230000014759 maintenance of location Effects 0.000 claims description 15
- 230000006399 behavior Effects 0.000 claims description 11
- 238000000605 extraction Methods 0.000 claims description 9
- 230000006870 function Effects 0.000 claims description 9
- 239000004744 fabric Substances 0.000 claims description 8
- 238000012544 monitoring process Methods 0.000 claims description 6
- 230000008859 change Effects 0.000 claims description 5
- 230000000977 initiatory effect Effects 0.000 claims description 2
- 230000000694 effects Effects 0.000 abstract description 6
- 230000007123 defense Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000007667 floating Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 238000002474 experimental method Methods 0.000 description 3
- 238000013403 standard screening design Methods 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 241000700605 Viruses Species 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- ZXQYGBMAQZUVMI-GCMPRSNUSA-N gamma-cyhalothrin Chemical compound CC1(C)[C@@H](\C=C(/Cl)C(F)(F)F)[C@H]1C(=O)O[C@H](C#N)C1=CC=CC(OC=2C=CC=CC=2)=C1 ZXQYGBMAQZUVMI-GCMPRSNUSA-N 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000011897 real-time detection Methods 0.000 description 1
- 238000007789 sealing Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1469—Backup restoration techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Retry When Errors Occur (AREA)
Abstract
本发明公开了一种加密型勒索软件的数据恢复方法,主要解决了现有技术不能在操作系统外对加密型勒索软件进行基于文件活动的高精度检测,且无法对数据进行硬件级细粒度备份与恢复的问题。其实现方案是:将检测子系统及数据备份与恢复子系统分别整合入虚拟机管理程序和固态硬盘固件中;检测子系统拦截I/O请求,并根据获取的上下文信息检测加密型勒索软件;根据检测结果标记每个I/O请求;数据备份与恢复子系统提取I/O请求的标记信息,利用固态硬盘异地更新的特性实现硬件级数据备份;数据恢复程序解析所备份的文件系统元数据,实现对指定文件的恢复。本发明能有效检测加密型勒索软件,完整恢复出所有指定文件,可用于对加密型勒索软件的防御。
Description
技术领域
本发明属于网络空间安全技术领域,具体是一种数据恢复方法,可用于Windows和Linux系统对加密型勒索软件的防御。
背景技术
加密型勒索软件,又称加密型勒索病毒,是一种特殊的恶意软件,主要以邮件、程序木马、网页挂马的形式进行传播。加密型勒索软件利用各种加密算法对用户文件进行加密,并要求受害者缴纳赎金以获取解密密钥。检测加密型勒索软件,最有效的手段是对进程的行为进行动态监控和分析,特别是进程对文件的操作行为。因此,基于文件活动的动态检测技术,被广泛应用于加密型勒索软件的检测。但这种动态行为检测技术存在滞后性,即只有当某个进程确切加密用户文件后,该进程才能被识别为勒索软件,从而造成在识别之前部分文件已经被加密。为此,研究者试图捕获加密密钥,或部署蜜罐文件来诱导勒索软件优先加密蜜罐文件,来避免勒索软件被检出前丢失用户文件。还有学者提出了映射文件操作的方法,将进程对用户文件的读写操作映射到文件的一个副本上,从而保护原始文件不被改变。然而以上方法都基于操作系统内核,因此难以抵御具有管理员特权的勒索软件发起的内核级攻击,即位于操作系统内核的防御系统可能会被勒索软件破坏或绕过,或者已映射或备份的原始数据遭到破坏。为了防止内核级攻击,研究者利用固态硬盘SSD的硬件特性,实现了硬件级的数据备份。具体而言,固态硬盘以闪存Flash作为存储介质,而闪存的基本存储单元是浮栅晶体管,其写操作是在控制极加正电压,使电子通过绝缘层进入浮栅极。因此写操作无法将电子从浮栅极吸出,所以覆盖写入前必须擦除,即在衬底加正电压,把电子从浮栅极中吸出来。由于写入的数据越多,需要擦除的时间也越长,固态硬盘的写入性能就会严重下降。为此,固态硬盘会将新数据写入新的空闲存储页面,即“异地更新”,并将需要“覆盖”的原始数据所在的物理页面标记为无效,由垃圾回收机制,Garbage Collection,GC,在空闲时进行擦除。因此,在固态硬盘下,加密数据并不会直接覆盖原始数据,而是写入了新的空闲物理页面中,被加密的原始数据所在的物理页面被标记为无效,等待垃圾回收机制将其擦除。利用这一硬件特性,学者们通过修改垃圾回收机制,将需要保留的原始数据所在的物理页面从垃圾回收候选队列中删除,即防止这些页面被擦除,从而“天然地”备份了原始数据。这种方法的优点在于,数据的备份过程没有产生额外的数据拷贝开销,且固态硬盘的固件与操作系统隔离,操作系统内的进程无法访问固态硬盘内已经被标记无效的物理页面,因此被保留的原始数据不会被恶意进程破坏。然而,由于固态硬盘固件内无法直接获取操作系统内的上下文信息,即进程对文件的操作行为等信息,且固态硬盘的算力有限,因此在固态硬盘的固件内无法实现更加复杂精确的勒索软件检测。
Kharraz等人在USENIX上发表了UNVEIL:A Large-Scale,Automated Approach toDetecting Ransomware。其在Windows内核驱动中,通过对加密型勒索软件样本进行建模,总结了加密型勒索软件的文件操作行为模式,并在Windows内核中实现了对进程行为的监控以检测加密型勒索软件。但该技术由于位于操作系统内核,且没有提供数据备份和恢复功能,因此有可能被勒索软件绕过或检测滞后造成文件丢失。
汤飞等人在Computers&Security发表了RansomSpector:An Introspection-Based Approach to Detect Crypto Ransomware。其将检测模块整合到Ⅰ型虚拟机管理程序中,利用虚拟机自省技术,即VMI技术,获取操作系统内进程的行为信息,以实现在操作系统外检测勒索软件。该技术虽说能够防御内核级攻击,但由于没有提供数据备份和恢复功能,因此同样有可能因检测滞后造成文件丢失。
Kolodenker等人在ASIA CCS上发表了PayBreak:Defense AgainstCryptographic Ransomware,Bailey等人在RAID上发表了RWGuard:A Real-TimeDetection System Against Cryptographic Ransomware。这两种方法都是通过监控操作系统提供的加密库函数,来捕获对称密钥,从而解密被加密的用户文件。但这两种方法由于无法监控并捕获使用第三方加密库函数进行加密的对称密钥,因此对于使用第三方加密库函数的勒索软件,则无法恢复被加密文件。
Continella等人在ACSAC上发表了ShieldFS:a Self-Healing,Ransomware-AwareFilesystem,以及Dacier等人在RAID上发表了Redemption:Real-Time ProtectionAgainst Ransomware at End-Hosts。这两种方法都是通过映射文件或重定向文件访问请求来避免原始文件被篡改,当勒索软件进程加密用户文件并被检测到后,防御系统可以立即丢弃被加密的映射文件,并恢复原始文件。但由于其位于操作系统内核内,容易遭受勒索软件的提权攻击,即被映射的原始文件有可能会遭到破坏,从而无法被恢复。
Huang等人在CCS上发表了FlashGuard:Leveraging Intrinsic FlashProperties to Defend Against Encryption Ransomware,SungHa等人在ICDCS上发表了SSD-Insider:Internal Defense of Solid-State Drive against Ransomware withPerfect Data Recovery。这两种方法都是利用固态硬盘的“异地更新”硬件特性,实现硬件级的数据备份。但由于其检测模块位于固态硬盘固件内,不仅无法获取操作系统内的进程、文件对象这些上下文信息,且受限于算力限制,因此无法实现高精度的检测,从而会造成因误报产生过多的冗余备份,或因漏报导致原始数据丢失。同时由于这两种方法缺乏原始文件在文件系统中的元数据信息,因此仅能恢复全盘数据,而不能根据用户需要,恢复用户指定的文件。
发明内容
本发明的目的在于针对上述现有技术的不足,提供一种加密型勒索软件的数据恢复方法,以在操作系统外实现基于文件活动的高精度勒索软件检测,利用固态硬盘的硬件特性实现硬件级的数据备份和细粒度的全盘数据及对用户指定文件的数据恢复。
为实现上述目的,本发明的技术方案包括如下:
(1)在虚拟机管理程序Hypervisor的存储驱动中加载I/O拦截模块、虚拟机自省VMI模块、检测器、文件系统监视器和标记模块,组成检测子系统;
(2)在固态硬盘的固件中加载标记提取模块、数据保留模块和数据恢复模块,并在操作系统中运行数据恢复程序,组成数据备份与恢复子系统;
(3)检测子系统检测加密型勒索软件,并监控文件系统的状态变化:
(3a)利用检测子系统中的I/O拦截模块拦截I/O请求;
(3b)利用检测子系统中的虚拟机自省VMI模块,获取Windows或Linux操作系统中,与所拦截I/O请求相关的进程名、文件对象、文件操作类型、数据缓冲区地址的上下文信息,根据这些上下文信息,判断本次I/O请求的目标数据是否为文件系统的元数据:
如果是,则将I/O请求发往文件系统监视器,执行(4);
如果不是,则将I/O请求发往检测器,执行(5);
(4)文件系统监视器解析本次I/O请求:
对于读请求,根据所读出的数据,记录文件系统的当前状态;
对于写请求,从要写入的数据中解析并记录需要更新的文件系统元数据,并通知标记模块为本次I/O请求添加“保留”标记,以备份要覆盖的原始数据;
(5)检测器利用所获取的上下文信息执行检测算法,判断本次I/O请求所属进程:
如果I/O请求来自加密型勒索软件进程,则通知标记模块为本次I/O添加“保留”标记;
如果I/O请求来自数据恢复进程,则通知标记模块为本次I/O添加“恢复”标记;
如果I/O请求来自其他常规进程,则通知标记模块本次I/O不添加标记;
(6)标记模块根据检测器或文件系统监视器发来的信息,利用I/O请求中的保留字段,对本次I/O请求进行标记,即设置I/O请求中的保留字段相应的比特位,并将I/O请求发往固态硬盘;
(7)固态硬盘固件中的数据备份与恢复子系统,对其所接收到的I/O请求进行处理:
(7a)标记提取模块从I/O请求中提取标记信息:
如果标记信息为“保留”,则将I/O请求发往数据保留模块,执行(7b)进行数据备份;
如果标记信息为“恢复”,则将I/O请求发往数据恢复模块,执行(7c)进行数据恢复;
如果没有标记信息,则执行正常读写操作;
(7b)数据保留模块根据I/O请求的目标逻辑地址和写入长度,将所要覆盖的原始数据进行保留,实现数据备份。
(7c)数据恢复:
(7c1)数据恢复模块根据I/O请求的目标逻辑地址和读取长度,读取所备份的原始数据;
(7c2)操作系统中的数据恢复程序,根据所读取的原始数据重构用户文件,完成用户文件的恢复。
本发明与现有技术相比具有如下优点:
第一,本发明相比已有的加密型勒索软件防御系统,将检测模块从固态硬盘固件中移入虚拟机管理层,不仅避免了固件内算力不足的限制,而且能获取操作系统内丰富的上下文信息以进行高精度的基于文件活动的勒索软件检测。
第二,本发明利用固态硬盘“异地更新”的硬件特性实现原始数据的备份,并通过标记机制,在固件内精确处理每个I/O请求,既减少了冗余备份和漏报,又实现了文件级的细粒度数据恢复。
第三,本发明由于没有修改或扩展操作系统内核,且不依赖任何固态硬盘制造商的特定技术,因此可部署移植到各种操作系统及文件系统中,并支持引入多种检测算法,具有广泛的兼容性和良好的可扩展性。
附图说明
图1为本发明中的实现总流程图;
图2为本发明中构建的检测子系统和数据备份与恢复子系统的结构框图;
图3为本发明中获取Windows操作系上下文信息的子流程图;
图4为本发明中获取Linux操作系上下文信息的子流程图;
图5为本发明中数据恢复的子流程图。
具体实施方式
以下结合附图对本发明的实施例做进一步详细描述。
参照图1,本实例的实现步骤如下:
步骤1,构建检测子系统和数据备份与恢复子系统。
参照图2,本步骤的具体实现如下:
1.1)修改虚拟机管理程序Hypervisor的存储驱动,在存储驱动中加载I/O拦截模块、虚拟机自省VMI模块、检测器、文件系统监视器和标记模块,组成检测子系统,用于检测加密型勒索软件,并监控文件系统的状态变化,其中:
所述I/O拦截模块,用于拦截操作系统发往固态硬盘的I/O请求;
所述虚拟机自省VMI模块,用于获取与所拦截的I/O请求相关的上下文信息,包括发起请求的进程、操作的文件对象、操作类型、所请求的数据长度及其逻辑地址;
所述检测器,用于根据所获取的上下文信息,判断本次I/O请求所属进程,并根据检测算法,判断进程的行为是否匹配加密型勒索软件的行为特征;
所述文件系统监视器,用于监控和记录文件系统的状态变化;
所述标记模块,用于对I/O请求进行标记。
1.2)在固态硬盘的固件中加载标记提取模块、数据保留模块和数据恢复模块,并在操作系统中运行数据恢复程序,组成数据备份与恢复子系统,用于备份被勒索软件加密的文件原始数据,并向用户提供细粒度的文件恢复服务,其中:
所述标记提取模块,用于从I/O请求中提取标记;
所述数据保留模块,用于利用固态硬盘“异地更新”的硬件特性,保留用户文件的原始数据所在的物理页面,实现硬件级数据备份;
所述数据恢复模块,用于从所保留的物理页面中读取用户文件的原始数据;
所述数据恢复程序,用于向用户提供数据恢复服务,并根据用户选择,利用所读取的文件原始数据重构用户文件,实现用户文件的恢复。
步骤2,利用检测子系统中的I/O拦截模块拦截I/O请求。
2.1)检测子系统中的I/O拦截模块通过设置一个影子页表,修改固态硬盘的寄存器映射到系统内存的地址,即MMIO地址,使该地址不能被操作系统直接访问;
2.2)操作系统通过访问固态硬盘的寄存器向固态硬盘发送I/O请求,因寄存器的地址不可访问,故将CPU的控制权转移到虚拟机管理程序Hypervisor;
2.3)虚拟机管理程序Hypervisor的存储驱动中的I/O拦截模块完成对本次I/O请求的截获。
步骤3,利用检测子系统中的虚拟机自省VMI模块,获取操作系统中与所拦截I/O请求相关的进程名、文件对象、文件操作类型、数据缓冲区地址的上下文信息。
由于进程和线程这两个对象在Windows和Linux操作系统内核中的表示方式不同,因此虚拟机自省VMI模块根据用户所使用的操作系统类型分别采用两种不同的方法来获取这两个操作系统中的上下文信息:
对于Windows操作系统,I/O命令被Hypervisor拦截时,与其相关的上下文信息可以通过CPU的GS寄存器和系统内存来获取。参照图3,其具体实现如下:
3.1)从CPU的GS寄存器中获取处理器控制区Processor Control Region结构体指针,即KPCR结构体指针;
3.2)从KPCR结构体中获取内核处理器控制块Kernel Processor Control Block结构体指针,即KPRCB结构体指针;
3.3)从KPRCB结构体中获取线程结构体指针,即ETHREAD结构体指针;
3.4)从ETHREAD结构体中分别获取进程结构体和输入输出请求包I/O RequestPackage结构体指针,即EPROCESS和IRP结构体指针;
3.5)从EPROCESS结构体中获取进程信息,并从IRP结构体中获取文件名、文件操作类型、数据缓冲区地址。
对于Linux操作系统,I/O命令被Hypervisor拦截时,与其相关的上下文信息需要通过拦截系统调用来获取。参照图4,其具体实现如下:
3a)清除CPU的扩展功能使能寄存器EFER的系统调用扩展标志位,即SCE标志位。待操作系统发起系统调用时引发未定义指令异常UD,使CPU的控制权转移到Hypervisor中,实现对系统调用的捕获;
3b)从CPU的GS寄存器中获取进程描述符task_struct结构体指针,并从CPU的RDI、RSI、RDX、R10、R8、R9寄存器中获取所捕获的系统调用的参数信息;
3c)从task_struct结构体中获取进程信息,并从系统调用的参数信息中获取文件名、文件操作类型、数据缓冲区地址。
步骤4,根据上下文信息发送本次I/O请求。
检测子系统中的虚拟机自省VMI模块根据获取的上下文信息,判断本次I/O请求的目标数据类型:
如果I/O请求的目标数据是文件系统的元数据,则将I/O请求发往文件系统监视器;
如果I/O请求的目标数据不是文件系统的元数据,则将I/O请求发往检测器。
步骤5,检测子系统中的文件系统监视器解析本次I/O请求。
文件系统监视器一方面通过解析操作系统向固态硬盘发出的读请求,来获取固态硬盘中文件系统的当前信息。另一方面,文件系统监视器通过解析操作系统向固态硬盘发出的写请求,来持续监控操作系统对固态硬盘的文件系统元数据信息的修改。其具体实现是:
对于读请求,文件系统监视器根据所读出的数据,获取文件系统的当前信息;
对于写请求,从要写入的数据中解析并记录需要更新的文件系统元数据,并通知标记模块为本次I/O请求添加“保留”标记,以备份要覆盖的原始数据。
步骤6,根据上下文信息对本次I/O请求进行不同标记。
检测子系统中的检测器利用所获取的上下文信息执行检测算法,判断本次I/O请求所属进程:
如果I/O请求来自加密型勒索软件进程,则通知标记模块为本次I/O添加“保留”标记;
如果I/O请求来自数据恢复进程,则通知标记模块为本次I/O添加“恢复”标记;
如果I/O请求来自其他常规进程,则通知标记模块本次I/O不添加标记。
步骤7,检测子系统中的标记模块根据检测器或文件系统监视器发来的信息,利用I/O请求中的保留字段,对本次I/O请求进行标记,即设置I/O请求中的保留字段相应的比特位,并将I/O请求发往固态硬盘。
步骤8,固态硬盘在接收到I/O请求后,根据标记信息发送I/O请求。
数据备份与恢复子系统中的标记提取模块从I/O请求中提取标记信息,根据I/O请求中的标记信息发送I/O请求:
如果标记信息为“保留”,则将I/O请求发往数据保留模块以备份用户文件的原始数据;
如果标记信息为“恢复”,则将I/O请求发往数据恢复模块以恢复所备份的原始数据;
如果没有标记信息,则执行正常读写操作。
步骤9,数据备份与恢复子系统根据I/O请求备份用户文件的原始数据。
数据备份与恢复子系统的数据保留模块根据I/O请求的目标逻辑地址和写入长度,将所要覆盖的原始数据进行保留,实现数据备份。其具体实现是:
9.1)数据保留模块从地址映射表中查找本次目标逻辑地址当前的映射关系,找到对应的物理地址,即原始数据所在的物理页面地址,并记录该地址;
9.2)数据保留模块将本次I/O请求所要写入的新数据写入空白物理页面,并将原始数据物理页面的地址写入该空白物理页面的保留区域,即spare区域;
9.3)更新地址映射表中的映射关系,将目标逻辑地址映射到新数据所在的物理页面,将原始数据所在物理页面标记为有效,并将该原始数据所在物理页面从垃圾回收队列中剔除。
步骤10,数据备份与恢复子系统根据I/O请求恢复用户文件。
参照图5,本步骤的具体实现如下:
10.1)数据备份与恢复子系统中的数据恢复模块根据I/O请求的目标逻辑地址和读取长度,读取所备份的原始数据:
10.1a)数据恢复模块从地址映射表中查找本次目标逻辑地址当前的映射关系,找到对应的物理地址,即加密数据所在的物理页面地址;
10.1b)数据恢复模块从加密数据所在物理页面的保留区域,即spare区域,读出所保存的原始数据所在的物理页面地址;
10.1c)数据恢复模块从原始数据物理页面地址中读出原始数据;
10.2)数据备份与恢复子系统中的数据恢复程序,根据所读取的原始数据重构用户文件,完成用户文件的恢复:
10.2a)数据恢复程序从所读取的原始数据中解析出文件系统元数据,即NTFS文件系统中的MFT记录或ext4文件系统中的inode记录,列出待恢复文件列表;
10.2b)用户根据待恢复文件列表选择需要恢复的文件;
10.2c)数据恢复程序根据用户选择,利用所读取的文件原始数据及其元数据,重构文件,完成用户文件的恢复。
术语说明
Hypervisor:即虚拟机管理程序,是一种运行在计算机硬件设备和操作系统之间的中间软件层,为操作系统提供虚拟化硬件服务。
VMI:即虚拟机自省Virtual Machine Introspection,是指将客户虚拟机的状态转移到底层的虚拟机管理器上,并对客户虚拟机实施一种外部的状态监控,具有高隔离性及高权限的特点。
SSD:即固态硬盘Solid State Drive,简称SSD,又称固态驱动器,是用固态电子存储芯片阵列制成的硬盘。
I/O:即输入/输出Input/Output,通常指数据在存储器(内部和外部)或其他周边设备之间的输入和输出,是信息处理系统(例如计算机)与外部世界(可能是人类或另一信息处理系统)之间的通信。输入是系统接收的信号或数据,输出则是从其发送的信号或数据。
MMIO:即内存映射I/O,Memory mapping I/O,它是PCI规范的一部分,I/O设备被放置在内存空间而不是I/O空间。从处理器的角度看,内存映射I/O后系统设备访问起来和内存一样。
GS寄存器:CPU的全局段寄存器Global Segment。
KPCR:Processor Control Region,描述了当前CPU的各种状态,包括当前CPU正在运行的线程的部分经常使用的信息,每一个CPU都有一个对应的结构体。
KPRCB:Kernel Processor Control Block,是KPCR的扩展结构体。
ETHREAD:每一个线程在内核层都有一个对应的结构体,该结构体保存了与线程相关的所有信息。
EPROCESS:是Windows系统中的每一个进程在内核层描述进程信息的结构体,这个结构体包含了进程所有的重要的信息。
IRP:即输入输出请求包I/O Request Package,它是Windows内核中的一种非常重要的数据结构。上层应用程序与底层驱动程序通信时,应用程序会发出I/O请求,操作系统将相应的I/O请求转换成相应的IRP,不同的IRP会根据类型被分派到不同的派遣例程中进行处理。
EFER:Extended Feature Enable Register,AMD引入的MSR用来启用SYSCALL/SYSRET指令,后来也被用来进入和退出64位模式(long mode)。
SCE:System Call Extensions,用于启用或禁用系统调用指令。
UD异常:即未定义指令异常。当CPU执行未定义的机器指令时将触发“未定义指令异常”。
RDI、RSI、RDX、R10、R8、R9寄存器:64位CPU的通用寄存器。
task_struct:是Linux内核的一种数据结构,即进程描述符结构体,它会被装载到RAM中并且包含着进程的信息。每个进程都把它的信息放在task_struct结构体中。
本发明的效果可通过以下实验进一步验证:
一、实验条件
x64处理器的个人计算机一台;
可编程固态硬盘开发板一块,型号为LPC-H3131;
Windows勒索软件样本3061个,以及Linux勒索软件样本62个;
待测试用户文件300个。
二、实验设置
在计算机中分别安装Windows和Linux操作系统;
将本发明已经整合检测子系统的虚拟机管理程序Hypervisor设置为计算机的默认启动项;
将本发明已经整合数据备份与恢复子系统的固态硬盘固件导入开发板,并连接至计算机。
三、实验过程
首先,启动计算机,确认本发明的检测子系统及数据备份与恢复子系统已启动,且各模块状态正常,向固态硬盘中导入300个用户文件;
其次,向操作系统中导入一个勒索软件样本,运行样本,观察本发明的检测子系统输出信息,确认是否检测到加密型勒索软件,并确认加密型勒索软件的进程所发起的I/O请求是否已被本发明的标记模块所标记;
然后,观察本发明的数据备份与恢复子系统的输出信息,确认标记提取模块是否正确提取I/O请求中的标记,并确认数据备份模块是否完整保留被加密的原始数据所在的物理页面;
接着,在操作系统中运行本发明的数据恢复程序,读取所备份的文件系统元数据,待生成待恢复文件列表后,指定要恢复的文件;
最后,待数据恢复程序读取所备份的原始数据并完成文件恢复后,验证所恢复文件的完整性;
完成以上实验过程后,重置操作系统和固态硬盘,重新开始下一轮实验,直到完成全部3061个Windows样本测试,以及62个Linux样本测试,得到本发明分别在Windows和Linux操作系统下的实验结果如表1所示:
表1实验结果
实验环境 | Windows | Linux |
总样本数量 | 3061 | 62 |
非有效加密型勒索软件样本数量 | 1729 | 38 |
有效加密型勒索软件样本数量 | 1332 | 24 |
检出数量 | 1332 | 24 |
用户文件数量 | 300 | 300 |
成功恢复文件数量 | 300 | 300 |
从表1可见,本发明能够有效检测Windows和Linux的加密型勒索软件样本,且没有误报和漏报。同时,本发明能够在勒索软件攻击后,成功恢复所有被加密的用户文件,且文件的完整性没有被破坏。
实验结果表明,本发明能够有效在操作系统外实现基于文件活动的高精度勒索软件检测,并利用固态硬盘的硬件特性实现硬件级的数据备份和细粒度的数据恢复。
Claims (9)
1.一种加密型勒索软件的数据恢复方法,其特征在于,包括如下步骤:
(1)在虚拟机管理程序Hypervisor的存储驱动中加载I/O拦截模块、虚拟机自省VMI模块、检测器、文件系统监视器和标记模块,组成检测子系统;
(2)在固态硬盘的固件中加载标记提取模块、数据保留模块和数据恢复模块,并在操作系统中运行数据恢复程序,组成数据备份与恢复子系统;
(3)检测子系统检测加密型勒索软件,并监控文件系统的状态变化:
(3a)利用检测子系统中的I/O拦截模块拦截I/O请求;
(3b)利用检测子系统中的虚拟机自省VMI模块,获取Windows或Linux操作系统中,与所拦截I/O请求相关的进程名、文件对象、文件操作类型、数据缓冲区地址的上下文信息,根据这些上下文信息,判断本次I/O请求的目标数据是否为文件系统的元数据:
如果是,则将I/O请求发往文件系统监视器,执行(4);
如果不是,则将I/O请求发往检测器,执行(5);
(4)文件系统监视器解析本次I/O请求:
对于读请求,文件系统监视器根据所读出的数据,获取文件系统的当前信息;
对于写请求,从要写入的数据中解析并记录需要更新的文件系统元数据,并通知标记模块为本次I/O请求添加“保留”标记,以备份要覆盖的原始数据;
(5)检测器利用所获取的上下文信息执行检测算法,判断本次I/O请求所属进程:
如果I/O请求来自加密型勒索软件进程,则通知标记模块为本次I/O添加“保留”标记;
如果I/O请求来自数据恢复进程,则通知标记模块为本次I/O添加“恢复”标记;
如果I/O请求来自其他常规进程,则通知标记模块本次I/O不添加标记;
(6)标记模块根据检测器或文件系统监视器发来的信息,利用I/O请求中的保留字段,对本次I/O请求进行标记,即设置I/O请求中的保留字段相应的比特位,并将I/O请求发往固态硬盘;
(7)数据备份与恢复子系统,对其所接收到的I/O请求进行处理:
(7a)标记提取模块从I/O请求中提取标记信息:
如果标记信息为“保留”,则将I/O请求发往数据保留模块,执行(7b)进行数据备份;
如果标记信息为“恢复”,则将I/O请求发往数据恢复模块,执行(7c)进行数据恢复;
如果没有标记信息,则执行正常读写操作;
(7b)数据保留模块根据I/O请求的目标逻辑地址和写入长度,将所要覆盖的原始数据进行保留,实现数据备份。
(7c)数据恢复:
(7c1)数据恢复模块根据I/O请求的目标逻辑地址和读取长度,读取所备份的原始数据;
(7c2)操作系统中的数据恢复程序,根据所读取的原始数据重构用户文件,完成用户文件的恢复。
2.根据权利要求1所述的方法,其特征在于,步骤(1)组成检测子系统的各模块,其实现功能分别如下:
所述I/O拦截模块,用于拦截操作系统发往固态硬盘的I/O请求;
所述虚拟机自省VMI模块,用于获取与所拦截的I/O请求相关的上下文信息,包括发起请求的进程、操作的文件对象、操作类型、所请求的数据长度及其逻辑地址;
所述检测器,用于根据所获取的上下文信息,判断本次I/O请求所属进程,并根据检测算法,判断进程的行为是否匹配加密型勒索软件的行为特征;
所述文件系统监视器,用于监控和记录文件系统的状态变化;
所述标记模块,用于对I/O请求进行标记。
3.根据权利要求1所述的方法,其特征在于,步骤(2)组成数据备份与恢复子系统的各模块,其实现功能分别如下:
所述标记提取模块,用于从I/O请求中提取标记;
所述数据保留模块,用于利用固态硬盘“异地更新”的硬件特性,保留用户文件的原始数据所在的物理页面,实现硬件级数据备份;
所述数据恢复模块,用于从所保留的物理页面中读取用户文件的原始数据;
所述数据恢复程序,用于向用户提供数据恢复服务,并根据用户选择,利用所读取的文件原始数据重构用户文件,实现用户文件的恢复。
4.根据权利要求1所述的方法,其特征在于,步骤(3a)中利用检测子系统中的I/O拦截模块拦截I/O请求,实现如下:
(3a1)检测子系统中的I/O拦截模块通过设置影子页表,使固态硬盘的寄存器映射到系统内存的地址,即MMIO地址,不能被操作系统直接访问;
(3a2)操作系统通过访问固态硬盘的寄存器向其发送I/O请求,因寄存器的地址不可访问,CPU的控制权转移到虚拟机管理程序Hypervisor;
(3a3)虚拟机管理程序Hypervisor的存储驱动中的I/O拦截模块完成对本次I/O请求的截获。
5.根据权利要求1所述的方法,其特征在于,步骤(3b)中利用检测子系统中的虚拟机自省VMI模块,获取Windows操作系统中与所拦截I/O请求相关的进程名、文件对象、文件操作类型、数据缓冲区地址的上下文信息,实现如下:
(3b1)从CPU的GS寄存器中获取处理器控制区Processor Control Region结构体指针,即KPCR结构体指针;
(3b2)从KPCR结构体中获取内核处理器控制块Kernel Processor Control Block结构体指针,即KPRCB结构体指针;
(3b3)从KPRCB结构体中获取线程结构体指针,即ETHREAD结构体指针;
(3b4)从ETHREAD结构体中分别获取进程结构体和输入输出请求包I/O RequestPackage结构体指针,即EPROCESS和IRP结构体指针;
(3b5)从EPROCESS结构体中获取进程信息,并从IRP结构体中获取文件名、文件操作类型、数据缓冲区地址。
6.根据权利要求1所述的方法,其特征在于,步骤(3b)中利用检测子系统中的虚拟机自省VMI模块,获取Linux操作系统中与所拦截I/O请求相关的进程名、文件对象、文件操作类型、数据缓冲区地址的上下文信息,实现如下:
3b1)清除CPU的扩展功能使能寄存器EFER的系统调用扩展标志位,即SCE标志位。待操作系统发起系统调用时引发未定义指令异常UD,使CPU的控制权转移到Hypervisor中,实现对系统调用的捕获;
3b2)从CPU的GS寄存器中获取进程描述符task_struct结构体指针,并从CPU的RDI、RSI、RDX、R10、R8、R9寄存器中获取所捕获的系统调用的参数信息;
3b3)从task_struct结构体中获取进程信息,并从系统调用的参数信息中获取文件名、文件操作类型、数据缓冲区地址。
7.根据权利要求1所述的方法,其特征在于,步骤(7b)中数据保留模块根据I/O请求的目标逻辑地址和写入长度,将所要覆盖的原始数据进行保留,实现如下:
(7b1)数据保留模块从地址映射表中查找本次目标逻辑地址当前的映射关系,找到对应的物理地址,即原始数据所在的物理页面地址,并记录该地址;
(7b2)数据保留模块将本次I/O请求所要写入的新数据写入空白物理页面,并将原始数据物理页面的地址写入该空白物理页面的保留区域,即spare区域;
(7b3)更新地址映射表中的映射关系,将目标逻辑地址映射到新数据所在的物理页面,将原始数据所在物理页面标记为有效,并将该原始数据所在物理页面从垃圾回收队列中剔除。
8.根据权利要求1所述的方法,其特征在于,步骤(7c1)中数据恢复模块根据I/O请求的目标逻辑地址和读取长度,读取所备份的原始数据,实现如下:
(7c1.1)数据恢复模块从地址映射表中查找本次目标逻辑地址当前的映射关系,找到对应的物理地址,即加密数据所在的物理页面地址;
(7c1.2)数据恢复模块从加密数据所在物理页面的保留区域,即spare区域,读出所保存的原始数据所在的物理页面地址;
(7c1.3)数据恢复模块从原始数据物理页面地址中读出原始数据。
9.根据权利要求1所述的方法,其特征在于,步骤(7c2)中操作系统中的数据恢复程序,根据所读取的原始数据重构用户文件,完成用户文件的恢复,实现如下:
(7c2.1)数据恢复程序从所读取的原始数据中解析出文件系统元数据,即NTFS文件系统中的MFT记录或ext4文件系统中的inode记录,列出待恢复文件列表;
(7c2.2)用户根据待恢复文件列表选择需要恢复的文件;
(7c2.3)数据恢复程序根据用户选择,利用所读取的文件原始数据及其元数据,重构文件,完成用户文件的恢复。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310664504.2A CN116501550A (zh) | 2023-06-06 | 2023-06-06 | 加密型勒索软件的数据恢复方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310664504.2A CN116501550A (zh) | 2023-06-06 | 2023-06-06 | 加密型勒索软件的数据恢复方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116501550A true CN116501550A (zh) | 2023-07-28 |
Family
ID=87318509
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310664504.2A Pending CN116501550A (zh) | 2023-06-06 | 2023-06-06 | 加密型勒索软件的数据恢复方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116501550A (zh) |
-
2023
- 2023-06-06 CN CN202310664504.2A patent/CN116501550A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Baek et al. | SSD-insider: Internal defense of solid-state drive against ransomware with perfect data recovery | |
Min et al. | Amoeba: An autonomous backup and recovery SSD for ransomware attack defense | |
Baek et al. | SSD-assisted ransomware detection and data recovery techniques | |
Qi et al. | ForenVisor: A tool for acquiring and preserving reliable data in cloud live forensics | |
US10121004B2 (en) | Apparatus and method for monitoring virtual machine based on hypervisor | |
US11327886B2 (en) | Capturing time-varying storage of data in memory device for data recovery purposes | |
CN109388945B (zh) | 一种基于固态存储设备防范勒索软件攻击的方法和系统 | |
US10783041B2 (en) | Backup and recovery of data files using hard links | |
US20080222215A1 (en) | Method for Deleting Virus Program and Method to Get Back the Data Destroyed by the Virus | |
CN108920253B (zh) | 一种无代理的虚拟机监控系统和监控方法 | |
US9881154B2 (en) | Hardware-assisted log protection devices and systems | |
CN109214204B (zh) | 数据处理方法和存储设备 | |
KR20170041618A (ko) | 하이퍼바이저 기반의 가상머신 모니터링 장치 및 방법 | |
Freiling et al. | Advances in forensic data acquisition | |
Wang et al. | Mimosaftl: adding secure and practical ransomware defense strategy to flash translation layer | |
US8107337B2 (en) | Image processing apparatus and data erasing method | |
CN103425563A (zh) | 基于虚拟化技术的在线i/o电子取证系统及其取证方法 | |
Huber et al. | A flexible framework for mobile device forensics based on cold boot attacks | |
US20230315855A1 (en) | Exact restoration of a computing system to the state prior to infection | |
CN116501550A (zh) | 加密型勒索软件的数据恢复方法 | |
Mankin et al. | Dione: a flexible disk monitoring and analysis framework | |
CN112463287A (zh) | 基于插桩的访问请求处理方法及系统 | |
US11200175B2 (en) | Memory accessor invailidation | |
Ma et al. | Travelling the hypervisor and ssd: A tag-based approach against crypto ransomware with fine-grained data recovery | |
CN114186222A (zh) | 一种勒索病毒的防护方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |