CN116910768A - 一种防御攻击方法、系统、装置及介质 - Google Patents

一种防御攻击方法、系统、装置及介质 Download PDF

Info

Publication number
CN116910768A
CN116910768A CN202311154622.5A CN202311154622A CN116910768A CN 116910768 A CN116910768 A CN 116910768A CN 202311154622 A CN202311154622 A CN 202311154622A CN 116910768 A CN116910768 A CN 116910768A
Authority
CN
China
Prior art keywords
kernel module
target
module
target object
program
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.)
Granted
Application number
CN202311154622.5A
Other languages
English (en)
Other versions
CN116910768B (zh
Inventor
许鑫
吴保锡
韩春超
徐国振
戴纯兴
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Suzhou Inspur Intelligent Technology Co Ltd
Original Assignee
Suzhou Inspur Intelligent Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Suzhou Inspur Intelligent Technology Co Ltd filed Critical Suzhou Inspur Intelligent Technology Co Ltd
Priority to CN202311154622.5A priority Critical patent/CN116910768B/zh
Publication of CN116910768A publication Critical patent/CN116910768A/zh
Application granted granted Critical
Publication of CN116910768B publication Critical patent/CN116910768B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements

Abstract

本申请公开了一种防御攻击方法、系统、装置及介质,涉及计算机领域,解决只能查找到已经开始运行的恶意程序的问题。该方案在初始化内核模块的过程中进行检测,能够更早地发现是否存在隐藏程序的行为,这样做可以在RootKit开始运行之前进行检测和预防,从而减少RootKit对操作系统安全性的影响,保护系统免受潜在的RootKit攻击,并增强了操作系统的整体安全性。通过监测和限制内核模块的目标接口调用,确保主体和目标客体符合预设要求,并在满足要求时允许执行目标操作,不符合要求时禁止执行的防御机制,有助于保护系统免受恶意或非法操作的威胁。

Description

一种防御攻击方法、系统、装置及介质
技术领域
本申请涉及计算机领域,特别涉及一种防御攻击方法、系统、装置及介质。
背景技术
算力是信息社会的基石,在数字经济时代扮演核心生产力角色。应用程序依赖计算能力处理信息数据并输出目标结果,而操作系统作为应用程序的承载,其安全性直接影响应用程序的稳定和安全。恶意攻击者可通过RootKit这种常见手段劫持或破坏操作系统,获取最高权限并在系统中执行恶意操作,如记录键盘事件、窃取密码、监视用户程序以及修改文件等。RootKit可以绕过安全软件和操作系统的防御机制,长期存在于被攻击的系统中,并对其进行持续的恶意操作。RootKit还能隐藏其他恶意软件,使得传统安全软件难以检测。此外,它还能损坏文件系统、破坏其正常运行,并通过修改操作系统的网络功能对其他计算机发起网络攻击,从而破坏其他计算机的安全性。因此RootKit对业务系统带来安全威胁,可能导致严重的安全问题和数据泄露。
目前,针对RootKit的检测方法主要采用动态分析方式,即通过内存分析、文件系统分析和系统调用分析等方法,来发现RootKit的存在。但动态分析方法只能查找已经存在的RootKit,此时RootKit已经开始运行并已影响了操作系统整体的安全性。因此,提出了一种防御攻击方法,以检测LKM运行前是否存在可能攻击的行为,以进行提前预防是十分必要的。
发明内容
本申请的目的是提供一种防御攻击方法、系统、装置及介质,在初始化内核模块的过程中进行检测,能够更早地发现是否存在隐藏程序的行为,这样做可以在RootKit开始运行之前进行检测和预防,从而减少RootKit对操作系统安全性的影响,保护系统免受潜在的RootKit攻击,并增强了操作系统的整体安全性。
为解决上述技术问题,第一方面,本申请提供了一种防御攻击方法,包括:
在初始化内核模块的过程中,判断是否存在隐藏程序的行为;
若存在,则判定所述内核模块中存在恶意程序,并卸载所述恶意程序;
在所述内核模块初始化完成后,对所述内核模块的目标接口进行监测,在所述目标接口被调用时,确定调用所述目标接口的主体及目标客体;
判断所述主体和/或所述目标客体是否符合预设要求;
若符合,则允许所述主体通过所述目标接口对所述目标客体执行目标操作;
若不符合,则禁止所述主体通过所述目标接口对所述目标客体执行所述目标操作。
在一种实施例中,在初始化内核模块的过程中,判断是否存在隐藏程序的行为,包括:
在初始化所述内核模块之前,记录与所述内核模块对应的第一状态数据;
在初始化所述内核模块之后,记录与所述内核模块对应的第二状态数据;
判断所述第一状态数据和所述第二状态数据是否符合期望状态数据;
若符合,则判定所述内核模块中不存在所述恶意程序;
若不符合,则判定所述内核模块中存在所述恶意程序。
在一种实施例中,在初始化所述内核模块之前,还包括:
加载所述内核模块;
在初始化所述内核模块之前,记录与所述内核模块对应的第一状态数据,包括:
在完成对所述内核模块的加载后,记录与所述内核模块对应的第一状态数据。
在一种实施例中,加载所述内核模块之后,还包括:
输出模块已加载的信号;
在完成对所述内核模块的加载后,记录与所述内核模块对应的第一状态数据,包括:
在监听到所述模块已加载的信号后,记录与所述内核模块对应的第一状态数据;
初始化所述内核模块之后,还包括:输出模块已初始化的信号;
在初始化所述内核模块之后,记录与所述内核模块对应的第二状态数据,包括:
在监听到所述模块已初始化的信号之后,记录与所述内核模块对应的第二状态数据。
在一种实施例中,初始化所述内核模块的过程包括:
在监听到所述模块已加载的信号之后,调用所述内核模块的初始化函数;
执行所述初始化函数以对所述内核模块进行初始化。
在一种实施例中,在初始化所述内核模块之前,记录与所述内核模块对应的第一状态数据,包括:
在初始化所述内核模块之前,获取内核模块链表中所记录的模块信息,得到第一模块链表信息;
在初始化所述内核模块之后,记录与所述内核模块对应的第二状态数据,包括:
在初始化所述内核模块之后,获取内核模块链表中所记录的模块信息,得到第二模块链表信息;
判断所述第一状态数据和所述第二状态数据是否符合期望状态数据,包括:
判断所述第一模块链表信息与所述第二模块链表信息是否相同;
若相同,则判定符合所述期望状态数据;否则判定不符合所述期望状态数据。
在一种实施例中,卸载所述恶意程序,包括:
通过预设方式确定所述恶意程序,并卸载所述恶意程序。
在一种实施例中,所述内核模块的个数为多个,所述内核模块的初始化过程包括:
依次对各个所述内核模块进行初始化;
通过预设方式确定所述恶意程序,包括:
在各个所述内核模块初始化过程中,判断是否存在隐藏程序的行为;
若存在,则将存在所述隐藏程序的行为所在的初始化过程对应的内核模块确定为所述恶意程序。
在一种实施例中,将存在所述隐藏程序的行为所在的初始化过程对应的内核模块确定为所述恶意程序之后,还包括:
判断所述恶意程序和隐藏的程序是否相同;
若相同,则判定所述恶意程序隐藏自身,并卸载所述恶意程序。
在一种实施例中,在判定所述恶意程序和隐藏的程序不相同时,还包括:
卸载所述恶意程序,并重新对所述隐藏的程序进行初始化。
在一种实施例中,在所述目标接口被调用时,确定调用所述目标接口的主体及目标客体,包括:
在所述目标接口被调用时,根据所述目标接口的函数调用确定所述主体;
根据所述函数调用的过程中产生的过程参数确定目标客体以及目标客体与所述主体的匹配关系;
判断所述主体和/或所述目标客体是否符合预设要求,包括:
根据所述匹配关系确定所述主体和/或所述目标客体是否符合所述预设要求。
在一种实施例中,判断所述主体和/或所述目标客体是否符合预设要求,包括:
判断所述主体是否在所述目标客体的授权范围内;
若所述主体不在所述目标客体的授权范围内,则判定不符合所述预设要求。
在一种实施例中,判断所述主体和/或所述目标客体是否符合预设要求,包括:
判断所述目标客体是否在允许操作的客体范围内;
若所述目标客体不在所述允许操作的客体范围内,则判定不符合所述预设要求。
在一种实施例中,还包括:
在所述目标接口被调用时,确定所述主体通过所述目标接口对所述目标客体执行的目标操作;
判断所述主体与所述目标客体是否符合预设要求,包括:
判断所述目标操作是否在所述目标客体允许执行的操作范围内;
若不在所述操作范围内,则判定不满足所述预设要求。
在一种实施例中,所述目标接口为虚拟内存接口,则在所述目标接口被调用时,确定调用所述目标接口的主体及目标客体,包括:
在所述虚拟内存接口被调用时,确定调用所述虚拟内存接口的主体、目标内存和目标权限;
判断所述主体和/或所述目标客体是否符合预设要求,包括:
判断是否允许所述主体将所述目标内存的权限修改为所述目标权限;
若允许,则判定满足所述预设要求,否则判定不满足所述预设要求。
在一种实施例中,所述目标权限为读取权限、写入权限、修改权限、删除权限中一种或多种的组合。
在一种实施例中,在判定不满足所述预设要求时,还包括:
卸载所述主体对应的程序。
在一种实施例中,在判定不满足所述预设要求时,还包括:输出攻击日志,所述攻击日志中至少包括所述目标接口被调用的时间、调用所述目标接口的所述主体、目标客体、目标操作以及所述主体对应的程序的卸载时间。
第二方面,本申请还提供了一种防御攻击系统,包括:
第一判断单元,用于在初始化内核模块的过程中,判断是否存在隐藏程序的行为;
卸载单元,用于在存在隐藏程序的行为时,判定所述内核模块中存在恶意程序,并卸载所述恶意程序;
监测单元,用于在所述内核模块初始化完成后,对所述内核模块的目标接口进行监测,在所述目标接口被调用时,确定调用所述目标接口的主体及目标客体;
第五判断单元,用于判断所述主体和/或所述目标客体是否符合预设要求;
允许执行单元,用于在符合所述预设要求时,允许所述主体通过所述目标接口对所述目标客体执行目标操作;
禁止执行单元,用于若不符合所述预设要求时,禁止所述主体通过所述目标接口对所述目标客体执行所述目标操作。
第三方面,本申请还提供了一种防御攻击装置,包括:
存储器,用于存储计算机程序;
处理器,用于在存储计算机程序时,实现如上述所述的防御攻击方法的步骤。
第四方面,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述所述的防御攻击方法的步骤。
本申请提供了一种防御攻击方法、系统、装置及介质,涉及计算机领域。该方案中,在初始化内核模块的过程中,判断是否存在隐藏程序的行为;若存在,则判定内核模块中存在恶意程序,并卸载恶意程序。可见,本申请中在初始化内核模块的过程中进行检测,能够更早地发现是否存在隐藏程序的行为,这样做可以在RootKit开始运行之前进行检测和预防,从而减少RootKit对操作系统安全性的影响,保护系统免受潜在的RootKit攻击,并增强了操作系统的整体安全性。通过监测和限制内核模块的目标接口调用,确保主体和目标客体符合预设要求,并在满足要求时允许执行目标操作,不符合要求时禁止执行的防御机制,有助于保护系统免受恶意或非法操作的威胁。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对现有技术和实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请提供的一种防御攻击方法的流程示意图;
图2为本申请提供的一种防御攻击方法对应的模块结构框图;
图3为本申请提供的一种LKM事件监听时序图;
图4为本申请提供的一种虚拟内存接口监听模块的结构框图;
图5为本申请提供的一种虚拟内存接口调用验证逻辑示意图;
图6为本申请提供的一种防御攻击系统的结构框图;
图7为本申请提供的一种防御攻击装置的结构框图;
图8为本申请提供的一种计算机可读存储介质的结构框图。
具体实施方式
本申请的核心是提供一种防御攻击方法、系统、装置及介质,在初始化内核模块的过程中进行检测,能够更早地发现是否存在隐藏程序的行为,这样做可以在RootKit开始运行之前进行检测和预防,从而减少RootKit对操作系统安全性的影响,保护系统免受潜在的RootKit攻击,并增强了操作系统的整体安全性。通过监测和限制内核模块的目标接口调用,确保主体和目标客体符合预设要求,并在满足要求时允许执行目标操作,不符合要求时禁止执行的防御机制,有助于保护系统免受恶意或非法操作的威胁。
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
为解决上述技术问题,第一方面,本申请提供了一种防御攻击方法,如图1所示,该方法包括:
S1:在初始化内核模块的过程中,判断是否存在隐藏程序的行为;
本步骤中是在初始化内核模块的过程中,判断是否存在隐藏程序的行为。内核模块是指在操作系统内核中运行的模块,它们可以扩展操作系统的功能和性能。隐藏程序是指由RootKit等恶意软件创建的可以隐藏自身存在的程序或代码。
在这种防御攻击方法中本步骤的目的是通过检测隐藏程序,即已经存在的、但是通过各种手段隐藏自身的恶意程序,来预测和预防可能的攻击行为。如果发现了隐藏程序的存在,就会将这些恶意程序标记出来,同时采取相应的措施将其卸载,以保证操作系统的安全性。
S2:若存在,则判定内核模块中存在恶意程序,并卸载恶意程序。
本步骤中,如果在初始化内核模块的过程中判断到存在隐藏程序的行为,即发现了可能存在恶意程序,那么就会对这些恶意程序进行卸载操作。具体来说,卸载恶意程序是指通过特定的方法和技术将恶意程序从内核中移除或停止其运行。这样做的目的是为了阻止恶意程序对操作系统的攻击和破坏。
卸载恶意程序的步骤可以是通过操作系统提供的相关命令或接口,停止恶意程序的运行,使其不再对系统进行攻击。然后通过操作系统提供的相关命令或接口,将恶意程序从内核的模块列表中移除,使其不再被加载和运行。在卸载恶意程序之后,可能还需要清除恶意程序占用的相关资源,如内存空间、文件系统等,以确保系统的完整性和安全性。
通过对恶意程序进行卸载操作,可以有效地防止恶意程序的继续攻击和对系统的影响。这种防御攻击方法的目的是在恶意程序开始运行之前,就能够检测到可能的攻击行为,并采取措施进行提前预防和保护操作系统的安全性。
S3:在内核模块初始化完成后,对内核模块的目标接口进行监测,在目标接口被调用时,确定调用目标接口的主体及目标客体;
S4:判断主体和/或目标客体是否符合预设要求;
S5:若符合,则允许主体通过目标接口对目标客体执行目标操作;
S6:若不符合,则禁止主体通过目标接口对目标客体执行目标操作。
本实施例描述了一种在内核模块初始化完成后的防御机制。该机制涉及对内核模块的目标接口进行监测,并在目标接口被调用时确定调用主体和目标客体。主体可以理解为调用目标接口的代码或进程,目标客体指的是主体要执行操作的对象。
在这种实施例中,该防御机制会判断主体和/或目标客体是否符合预设要求。这些预设要求可能是安全策略、权限设置或其他可配置的规则。如果主体和目标客体符合预设要求,则该防御机制会允许主体通过目标接口对目标客体执行目标操作。换句话说,目标操作是指对目标客体执行的合法操作或函数调用。
然而,如果主体和目标客体不符合预设要求,则该防御机制会禁止主体通过目标接口对目标客体执行目标操作。这意味着该防御机制可以阻止不符合要求或被认为是恶意的主体对目标客体执行非法或危险的操作。
总之,本实施例提供了一种通过监测和限制内核模块的目标接口调用,确保主体和目标客体符合预设要求,并在满足要求时允许执行目标操作,不符合要求时禁止执行的防御机制。这种机制有助于保护系统免受恶意或非法操作的威胁。
在上述实施例的基础上:
在一种实施例中,在判定不满足预设要求时,还包括:
卸载主体对应的程序。
本实施例中,在判断主体和/或目标客体不符合预设要求时,该实施例还进一步包括卸载与该主体相关的程序。具体地说,当判断主体和/或目标客体不符合预设要求时,意味着该主体对目标接口的访问或操作不被允许。为了保护系统的安全性,需要禁止该主体对目标接口的进一步访问或操作。在该实施例中,通过卸载与该主体相关的程序来实现禁止该主体对目标接口的访问或操作。卸载所述主体对应的程序可以采取多种方式。一种可能的方式是在发现不符合预设要求的主体时,使用特定的卸载程序或方法解除该主体对应程序在操作系统中的安装或加载。这样,该主体的相关程序将被移除或失效,从而禁止该主体对目标接口的进一步访问或操作。
本实施例的方式可以增强防御攻击方法的效果,通过卸载与不符合预设要求主体相关的程序,进一步限制了恶意行为的发生和影响。这有助于提高系统的安全性和可靠性。
在一种实施例中,在初始化内核模块的过程中,判断是否存在隐藏程序的行为,包括:
在初始化内核模块之前,记录与内核模块对应的第一状态数据;
在初始化内核模块之后,记录与内核模块对应的第二状态数据;
判断第一状态数据和第二状态数据是否符合期望状态数据;
若符合,则判定内核模块中不存在恶意程序;
若不符合,则判定内核模块中存在恶意程序。
本实施例描述了在初始化内核模块的过程中,判断是否存在隐藏程序的行为的具体步骤。首先,在初始化内核模块之前,记录与内核模块对应的第一状态数据。这意味着在加载内核模块但未对内核模块进行初始化时,记录下整个系统的状态,包括各个模块/程序的状态、配置信息等。接下来,在初始化内核模块之后,记录与内核模块对应的第二状态数据。在内核模块初始化完成后,再次记录系统的状态。然后,将第一状态数据和第二状态数据与期望状态数据进行比较。期望状态数据是预先设定的合规状态,用于判定系统的正常运行。比较两个状态数据可以通过比较模块/程序的数量、版本、配置信息等方面来判断是否存在隐藏程序。如果两个状态数据一致,即符合期望状态数据,那么可以认定内核模块中不存在恶意程序。否则,如果两个状态数据不一致,即不符合期望状态数据,就可以判断内核模块中存在恶意程序。
通过这种方法,可以在初始化内核模块的过程中进行防御,及时发现并卸载恶意程序,保护系统的安全性。
在一种实施例中,在初始化内核模块之前,还包括:
加载内核模块;
在初始化内核模块之前,记录与内核模块对应的第一状态数据,包括:
在完成对内核模块的加载后,记录与内核模块对应的第一状态数据。
在这个实施例中,首先,加载内核模块,即将内核模块加载到系统中。接下来,在完成对内核模块的加载后,记录与内核模块对应的第一状态数据。这意味着在初始化内核模块之前,对内核模块的状态进行了记录,并保存为第一状态数据。这个记录的内容可能包括内核模块的各种关键信息,例如模块/程序的文件路径、文件大小、版本信息等。然后,在完成第一状态数据的记录后,继续进行内核模块的初始化过程。在初始化内核模块之后,记录与内核模块对应的第二状态数据。这个记录的内容与第一状态数据相似,但是记录的是初始化后的状态信息。最后,判断第一状态数据和第二状态数据是否符合期望状态数据。如果第一状态数据和第二状态数据符合期望状态数据,即两者没有发生变化或变化在可接受范围内,那么可以判定内核模块中不存在恶意程序。反之,如果第一状态数据和第二状态数据不符合期望状态数据,即发生了不符合预期的变化,那么可以判定内核模块中存在恶意程序。
总之,本实施例通过在内核模块加载完成前记录第一状态数据并在初始化后记录第二状态数据,然后比较这两个状态数据的差异来判断内核模块是否存在恶意程序。这种方法可以提高对内核模块安全性的检测和保护能力。
在一种实施例中,加载内核模块之后,还包括:
输出模块已加载的信号;
在完成对内核模块的加载后,记录与内核模块对应的第一状态数据,包括:
在监听到模块已加载的信号后,记录与内核模块对应的第一状态数据;
初始化内核模块之后,还包括:输出模块已初始化的信号;
在初始化内核模块之后,记录与内核模块对应的第二状态数据,包括:
在监听到模块已初始化的信号之后,记录与内核模块对应的第二状态数据。
本实施例中,在加载内核模块之后,系统会发出一个模块已加载的信号。这个信号表明特定的内核模块已成功加载到系统中。一旦监听到模块已加载的信号,方法会记录与该内核模块对应的第一状态数据。这个记录用来存储加载该模块前的状态信息,以便后续的对比判断。在初始化内核模块完成后,系统会发出一个模块已初始化的信号。这个信号表明特定的内核模块已经成功地进行了初始化操作。紧接着,一旦监听到模块已初始化的信号,方法会记录与该内核模块对应的第二状态数据。这个记录用来存储初始化完毕后的状态信息,同样是为了后续的对比判断。
综上所述,本实施例中,在加载内核模块后,通过监听信号并记录相应的状态数据,以确保内核模块的加载和初始化过程能够被准确地追踪和记录下来,为后续判定是否存在恶意程序提供必要的依据。
在一种实施例中,初始化内核模块的过程包括:
在监听到模块已加载的信号之后,调用内核模块的初始化函数;
执行初始化函数以对内核模块进行初始化。
本实施例中描述了一种初始化内核模块的过程。具体来说,该过程包括以下几个步骤:首先监听模块加载信号:在该过程开始之前,系统会监听模块加载的信号,即系统会感知到内核模块是否已经加载。其次调用内核模块的初始化函数:一旦系统监听到内核模块已加载的信号,系统会自动调用该内核模块的初始化函数。初始化函数是一段特定的代码,用于对内核模块进行初始化。它会执行一系列操作,以确保内核模块的正常运行。最后执行初始化函数:初始化函数会按照预先设定的流程和步骤,对内核模块进行初始化。具体的初始化内容和步骤会根据具体的内核模块而有所不同。例如,初始化函数可能会为内核模块分配内存空间、设置必要的数据结构、初始化全局变量等。
通过本实施例,可以保证在初始化内核模块的过程中能够正确调用初始化函数,并进行必要的初始化操作,以确保内核模块的正确运行。这种方法的优点是可以在加载内核模块时自动进行初始化,无需手动干预,提高了系统的安全性和可靠性。
在一种实施例中,在初始化内核模块之前,记录与内核模块对应的第一状态数据,包括:
在初始化内核模块之前,获取内核模块链表中所记录的模块信息,得到第一模块链表信息;
在初始化内核模块之后,记录与内核模块对应的第二状态数据,包括:
在初始化内核模块之后,获取内核模块链表中所记录的模块信息,得到第二模块链表信息;
判断第一状态数据和第二状态数据是否符合期望状态数据,包括:
判断第一模块链表信息与第二模块链表信息是否相同;
若相同,则判定符合期望状态数据;否则判定不符合期望状态数据。
本实施例提供了一种初始化内核模块之前和之后记录与内核模块对应的状态数据的方法。具体而言,在初始化内核模块之前,获取内核模块链表中所记录的模块信息,得到第一模块链表信息。内核模块链表中记录了当前系统中加载的所有内核模块的信息,包括模块的名称、地址等关键信息。在初始化内核模块之后,记录与内核模块对应的第二状态数据。同样地,需要获取内核模块链表中所记录的模块信息,得到第二模块链表信息。这两个状态数据分别对应内核模块初始化之前和之后的状态。判断第一状态数据和第二状态数据是否符合期望状态数据。具体而言,就是判断第一模块链表信息与第二模块链表信息是否相同。如果两个状态数据相同,就可以判定符合期望状态数据,即没有发现隐藏程序的行为。反之,如果两个状态数据不相同,就可以判定不符合期望状态数据,即存在隐藏程序的行为。
通过这种方法,可以在初始化内核模块过程中对隐藏程序进行防御攻击。如果发现第一状态数据和第二状态数据不符合期望状态数据,就可以进一步判定内核模块中存在恶意程序,并进行卸载操作,以保护系统的安全和完整性。
在一种实施例中,卸载恶意程序,包括:
通过预设方式确定恶意程序,并卸载恶意程序。
本实施例中在设计防御攻击方法时,需要事先设定一些规则或标准用于判断模块是否为恶意程序,并且能够利用这些规则或标准自动地卸载这些恶意程序。具体而言,可以设计一些检测规则或算法,用于识别内核模块中的恶意行为。这些规则或算法可以包括检查模块的行为模式、审查模块的代码及其调用关系、监控模块的系统调用等等。如果在初始化内核模块的过程中发现了符合这些规则或算法的隐藏程序,就可以判定该内核模块中存在恶意程序。
针对已确定为恶意程序的情况,可以通过操作系统的特权控制或其他相关技术手段,将恶意程序从系统中移除。这个预设方式可以使防御攻击方法具备自动化、实时性等特点,能够快速、准确地响应并对抗恶意程序的侵害。
综上所述,本实施例要求在防御攻击方法中以预设方式确定并卸载恶意程序,通过设定检测规则或算法并设计相应的卸载机制来实现这一目标。这可以提高对恶意程序的防范和应对能力,并保护系统的安全性。
在一种实施例中,内核模块的个数为多个,内核模块的初始化过程包括:
依次对各个内核模块进行初始化;
通过预设方式确定恶意程序,包括:
在各个内核模块初始化过程中,判断是否存在隐藏程序的行为;
若存在,则将存在隐藏程序的行为所在的初始化过程对应的内核模块确定为恶意程序。
本实施例中,内核模块的个数为多个,且限定内核模块的初始化过程为:在初始化过程中依次对它们进行初始化。此时,判断是否存在隐藏程序的行为的具体方式为:在每个内核模块的初始化过程中判断是否存在隐藏程序的行为。如果存在隐藏程序的行为,那么该隐藏程序所在的初始化过程对应的内核模块将被确定为恶意程序。
在这个实施例中,可以将内核模块的初始化过程分为多个步骤,每个步骤对应一个内核模块。在每个步骤中,可以通过一些预设方式来判断是否存在隐藏程序的行为。具体来说,检测内核模块的加载和初始化过程中是否存在隐藏程序的行为。例如,可以通过监视系统调用,检查是否有未授权的模块加载操作;可以分析内存映像,查找不应存在的模块代码;可以检查模块的元数据,判断是否存在异常或恶意的行为等。当在某个步骤中检测到存在隐藏程序的行为时,可以确定该步骤对应的内核模块为恶意程序,并进行相应的处理,例如将其卸载。
通过这种方式,可以在多个内核模块的初始化过程中及时监测和鉴别隐藏程序的存在,并将恶意程序加以处理,从而增强系统的安全性和可靠性。
在一种实施例中,将存在隐藏程序的行为所在的初始化过程对应的内核模块确定为恶意程序之后,还包括:
判断恶意程序和隐藏的程序是否相同;
若相同,则判定恶意程序隐藏自身,并卸载恶意程序。
本实施例中进一步说明了当存在隐藏程序的行为被确定为恶意程序之后,进一步对恶意程序进行判断和处理的步骤。首先,需要判断恶意程序和隐藏的程序是否相同。这可以通过分析隐藏程序的行为和恶意程序的特征来实现。如果两者具有相同的行为和特征,那么可以推断出恶意程序正在试图隐藏自身。
若恶意程序和隐藏的程序相同,则判定恶意程序隐藏自身,并进行卸载操作。卸载操作可以通过操作系统提供的相应接口或功能来实现。卸载恶意程序的过程包括从内核中移除该恶意程序,并清除其相关的资源和数据。
通过此种方法,系统能够发现并处理恶意程序的隐藏行为,确保系统的安全和稳定性。
在一种实施例中,在判定恶意程序和隐藏的程序不相同时,还包括:
卸载恶意程序,并重新对隐藏的程序进行初始化。
本实施例中,当判定恶意程序和隐藏的程序不相同时,首先卸载恶意程序:通过该步骤,将已鉴定为恶意程序的内核模块从系统中移除。这可以通过向操作系统发送卸载指令或通过调用相应的内核函数来实现。然后重新对隐藏的程序进行初始化:在卸载恶意程序后,需要重新对隐藏的程序进行初始化。这可以通过将相应的初始化代码重新执行,或者通过重新加载程序的方式来实现。
重新初始化隐藏的程序的目的是确保系统中恶意程序被完全清除,并且隐藏的程序在被篡改的情况下重新恢复到正常状态。
总之,本实施例确保在判定恶意程序和隐藏的程序不相同时,将恶意程序卸载,并重新对隐藏的程序进行初始化,从而恢复系统的安全性和完整性。
在一种实施例中,在目标接口被调用时,确定调用目标接口的主体及目标客体,包括:
在目标接口被调用时,根据目标接口的函数调用确定主体;
根据函数调用的过程中产生的过程参数确定目标客体以及目标客体与主体的匹配关系;
判断主体和/或目标客体是否符合预设要求,包括:
根据匹配关系确定主体和/或目标客体是否符合预设要求。
本实施例进一步细化了在目标接口被调用时的操作和判断步骤。首先,在目标接口被调用时,可以根据目标接口的函数调用过程确定调用该接口的主体。这意味着可以确定发起调用操作的主体身份。其次,在函数调用的过程中,会产生一些过程参数,这些参数可以帮助确定目标客体以及目标客体与主体之间的匹配关系。过程参数可能是在发起调用操作时传递给目标接口的参数,或者是在调用过程中新生成的参数。接下来,根据匹配关系,可以判断调用操作的主体和/或目标客体是否符合预设要求。这个预设要求可能是特定的规则或条件,可以根据系统的需求进行定义和配置。
总结来说,本实施例提供了一种在目标接口被调用时进行权限控制的方法。通过确定调用主体,识别目标客体和主体之间的匹配关系,并根据预设要求判断是否允许主体对目标客体执行操作,这种方法可以有效地保护系统安全。
在一种实施例中,判断主体和/或目标客体是否符合预设要求,包括:
判断主体是否在目标客体的授权范围内;
若主体不在目标客体的授权范围内,则判定不符合预设要求。
本实施例描述了一种在目标接口被调用时,对主体和/或目标客体的授权范围进行判断的方法。授权范围指的是主体对目标客体执行目标操作的权限或许可。
在该实施例中,主体是指调用目标接口的实体,目标客体是指接收目标操作的实体。为了确保安全性和完整性,需要对主体和目标客体的关系进行验证。判断流程如下:获取主体和目标客体的信息。确定主体是否在目标客体的授权范围内。如果主体不在目标客体的授权范围内,意味着主体没有权限执行目标操作。如果主体在目标客体的授权范围内,继续执行下一步。
通过对主体和目标客体的授权范围进行检查,可以确保只有具备相应权限的实体能够执行目标操作,防止非法的访问或操作。这种方法能够提高系统的安全性,确保只有授权的实体能够操作目标接口。
在一种实施例中,判断主体和/或目标客体是否符合预设要求,包括:
判断目标客体是否在允许操作的客体范围内;
若目标客体不在允许操作的客体范围内,则判定不符合预设要求。
本实施例提供了一种判断主体和/或目标客体是否符合预设要求的具体实现方式。具体而言,考虑到对于一些重要程度较高的客体可能被设置为不允许任何主体对其进行操作,那么在这种情况下判断是否符合预设要求的实现方式为:判断目标客体是否在允许操作的客体范围内。
在这种实施例中,首先确定了允许操作的客体范围,可能是通过事先设置的规则或配置来确定的。然后,在目标接口被调用时,系统会检查所涉及的目标客体是否在这个允许操作的客体范围内。如果目标客体在允许操作的客体范围内,那么会判定主体和目标客体符合预设要求,允许主体通过目标接口对目标客体执行目标操作。然而,如果目标客体不在允许操作的客体范围内,那么会判定主体和目标客体不符合预设要求,禁止主体通过目标接口对目标客体执行目标操作。
通过这种方法,系统可以对目标接口的调用进行严格的限制和监控,以确保主体和目标客体的行为符合预设要求。这有助于防范潜在的恶意操作或滥用权限,从而提高系统的安全性和可靠性。
在一种实施例中,还包括:
在目标接口被调用时,确定主体通过目标接口对目标客体执行的目标操作;
判断主体与目标客体是否符合预设要求,包括:
判断目标操作是否在目标客体允许执行的操作范围内;
若不在操作范围内,则判定不满足预设要求。
本实施例中,在目标接口被调用时,会确定主体通过目标接口对目标客体执行的目标操作。这就意味着该方法需要监测接口调用,并记录主体和目标客体之间的操作。接下来,会判断目标操作是否在目标客体允许执行的操作范围内。这意味着目标客体有一组允许执行的操作,如果目标操作不在该范围内,则判定不满足预设要求。当目标操作不在操作范围内时,表示该操作不被允许。因此,会禁止主体通过目标接口对目标客体执行目标操作。这意味着目标客体将不被执行该操作。
本实施例可以确保主体和目标客体满足预设要求,并只允许符合要求的操作执行。这样能够提高系统的安全性和可靠性,防止未经授权的操作对目标客体产生不良影响。
在一种实施例中,目标接口为虚拟内存接口,则在目标接口被调用时,确定调用目标接口的主体及目标客体,包括:
在虚拟内存接口被调用时,确定调用虚拟内存接口的主体、目标内存和目标权限;
判断主体和/或目标客体是否符合预设要求,包括:
判断是否允许主体将目标内存的权限修改为目标权限;
若允许,则判定满足预设要求,否则判定不满足预设要求。
本实施例提供了一种具体的应用场景,具体而言,针对目标接口为虚拟内存接口的情况,对目标接口的调用过程进行监测和控制具体包括以下步骤:在虚拟内存接口被调用时,确定调用虚拟内存接口的主体、目标内存和目标权限。这意味着将追踪每个虚拟内存接口的调用,记录调用者的身份以及涉及的内存和权限信息。判断主体和/或目标客体是否符合预设要求。这意味着系统将根据预先设定的条件和规则,对调用者身份、目标内存和目标权限进行检查。判断是否允许主体将目标内存的权限修改为目标权限。这意味着系统会检查主体是否具备足够的权限,以修改目标内存的权限。如果允许主体执行此操作,则认为符合预设要求;如果不允许,则认为不符合预设要求。根据判断结果,系统会采取相应措施。如果符合预设要求,系统将允许主体通过目标接口对目标客体执行目标操作;如果不符合预设要求,系统将禁止主体通过目标接口对目标客体执行目标操作。
例如,内核模块在初始化一些对象完(如初始化系统调用表、文件系统接口等)后,会将这些对象所在虚拟内存访问权限设置为只读权限,防止其中的内容发生变化。为使用便利,也设置了修改虚拟内存访问权限的虚拟内存接口(如Linux中update_mapping_prot函数可以改变指定虚拟内存空间的访问权限)方便后续修改一些对象的内容。而对于一些恶意软件(如RootKit)运行在内核态,可以调用内核提供的虚拟内存接口修改特定对象的访问权限,如将系统调用表的访问权限由只读权限修改为读写权限,RootKit修改系统调用表中的内容,应用程序调用系统调用便陷入到了被劫持的逻辑中执行。
而本实施例中通过这类虚拟内存接口中插入判断逻辑,当函数调用主体或被修改的目标内存客体不在允许范围内,则不再执行后续修改权限逻辑,以此达到防止RootKit修改内核关键数据的目的。
综上,该实施例中的主要目的是通过监测和控制虚拟内存接口的调用,确保系统中对虚拟内存的访问权限得到有效管理和控制。从而防止恶意主体或非法操作对系统的安全造成威胁,并提高系统的安全性和稳定性。
在一种实施例中,目标权限为读取权限、写入权限、修改权限、删除权限中一种或多种的组合。
本实施例描述了一种实施例中的目标权限。目标权限是指在使用虚拟内存接口时,对目标内存执行的操作所具有的权限。具体而言,目标权限可以是读取权限、写入权限、修改权限和删除权限中的一种或多种的组合。换句话说,使用该虚拟内存接口时,主体可以被授予读取目标内存的权限、写入目标内存的权限、修改目标内存的权限、删除目标内存的权限,或这些权限的任意组合。
具体而言,当虚拟内存接口被调用时,该要求需要判断调用虚拟内存接口的主体、目标内存和目标权限是否符合预设要求。判断的过程包括确定是否允许主体将目标内存的权限修改为目标权限。
例如,如果预设要求允许主体具有读取和写入权限,而调用虚拟内存接口的主体请求修改目标内存的删除权限,那么判定不满足预设要求,因为删除权限不在允许范围内。
这样的限制和判断机制可以帮助确保虚拟内存接口的安全性和合规性,防止未授权的访问和修改操作对目标内存造成损害。
在一种实施例中,在判定不满足预设要求时,还包括:
输出攻击日志,以提醒工作人员。
进一步的,本实施例中在判定内核模块中存在恶意程序且不满足预设要求时,需要输出攻击日志以提醒工作人员。具体地,在判定内核模块中存在恶意程序且不满足预设要求时,系统应该记录相应的日志信息。这些日志信息可以包括攻击类型、攻击来源、攻击时间、攻击模块的具体信息等。输出攻击日志的目的是为了提醒工作人员系统存在潜在的安全风险,并为后续的调查和分析提供必要的数据支持。输出的攻击日志能够及时通知系统管理员或安全团队的工作人员。这样可以立即采取相应的措施,例如进一步的调查、修复漏洞、加强监控等,以防止进一步的攻击和损失。提醒工作人员的目的是保障系统的安全性和稳定性。
本实施例提供了一种自动化的方式来提醒工作人员系统可能受到攻击。通过记录和输出日志信息,可以实时监测系统的安全状态,及时检测和应对潜在的攻击威胁。这有助于提高系统的整体安全性,并为进一步的安全防护措施提供参考和依据。
在一种实施例中,攻击日志中至少包括目标接口被调用的时间、调用目标接口的主体、目标客体、目标操作以及主体对应的程序的卸载时间。
在该实施例中,输出的攻击日志应该包括一些特定信息。首先,攻击日志中应该包括目标接口被调用的时间,这是为了记录攻击发生的时间,方便后续的分析和调查。其次,攻击日志中应该包括调用目标接口的主体,即发起攻击的主体身份信息。这可以帮助安全团队追踪攻击的源头,了解攻击的发起者。第三,攻击日志中应该包括目标客体,即被攻击的对象信息。这可以帮助安全团队了解攻击的目标是哪个系统或者哪些系统。第四,攻击日志中应该包括目标操作,即攻击者试图执行的操作。这可以帮助安全团队了解攻击者的意图和行为,并对系统进行相应的防御和修复措施。最后,攻击日志中应该包括主体对应的程序的对应卸载时间,便于了解主体卸载的时间。
综上所述,本实施例对于输出的攻击日志中的信息有详细的要求,这些信息对于分析和调查恶意攻击以及保护系统安全非常重要。
本申请还提供了一种具体的实施例,以Linux系统为例,该实施例中内核防御模块的框图如图2所示,其中LKM(Loadable Kernel Modules,可加载内核模块程序),主要用于扩展Linux的内核功能,可以动态地加载到内核空间中,无须重新编译内核,常被用于一些设备的驱动程序。
图2中的LKM事件监听模块:内核在加载并运行LKM的不同阶段,会在发出不同的通知信号,LKM事件监听模块用于监听内核发出的通知信号,对比LKM逻辑执行前和执行后内核模块链表中的数据,判断LKM是否存在隐藏自身或其他模块的行为。
图2中的虚拟内存接口监听模块:通过监听虚拟内存接口,获取调用者所在对象,确定调用主体;通过分析被修改虚拟内存的数据,获取所有可能被修改的客体,根据主客体关系,判断本次虚拟地址权限修改操作能否正常执行。
图2中的LKM管理模块:根据LKM事件监听模块和虚拟内存接口监听模块的执行结果,恢复被篡改的LKM,卸载具有恶意行为的LKM。其中,虚拟内存接口监听模块需要嵌入到虚拟内存接口中,可通过修改内核代码实现,也可以通过内核动态插桩或动态追踪方式实现,具体实现方式本申请在此不再限定。此外,图2中的各个模块为抽象出来的虚拟模块。
如图3所示,对于LKM事件监听时序说明如下:
1)内核处理LKM数据:LKM初始化函数执行前,内核要为LKM准备内存数据(也即内核开始执行加载操作)。LKM数据加载、模块数据检测以及将模块信息加入模块链表的操作都由内核完成,当所有准备操作完成后,内核发出模块已加载的信号,此后内核才调用LKM的初始化函数,进入LKM的初始化执行逻辑。从内核加载LKM数据到LKM初始化函数开始执行前的这段过程,是内核逻辑执行的过程,LKM内的逻辑尚未运行,可以认定此时未遭受RootKit篡改,因此当LKM事件监听模块捕获该模块已加载的信号时,采集此时的模块链表信息作为验证基准(也即上述第一模块链表信息)。
2)LKM加载信号处理:当捕获LKM加载信号后,LKM事件监听模块遍历并记录当前的内核模块链表中所有的模块信息,生成第一模块链表信息;
3)LKM初始化函数执行:内核发出模块已加载的信号后,便调用LKM的初始化函数,该函数执行成功后,内核发出模块已初始化的信号,此时,LKM可正常运行;
4)LKM已初始化信号处理:当捕获LKM已初始化的信号后,LKM事件监听模块遍历并记录当前的模块信息,并再次获取内核模块链表中的所有模块信息,生成第二模块链表信息,通过对比第一模块链表信息和第二模块链表信息,判断在此次LKM初始化函数运行期间,是否出现恶意隐藏的行为。如有,将对应模块交由LKM管理模块卸载清除。
其中,隐藏行为的执行者与被隐藏者可能不是同一对象。也即恶意程序可能隐藏自身,也可能隐藏其他模块。具体地,在恶意程序隐藏自身时,则执行者与被隐藏者为同一对象,此时,LKM管理模块将该恶意程序卸载清除即可;当隐藏行为的执行者与被隐藏者不是同一对象时,LKM管理模块需要卸载清除隐藏行为的执行者(恶意程序),并恢复被隐藏者(恢复的过程具体为重新执行被隐藏程序的初始化步骤即可)。
进一步的,如图4和图5所示,对于虚拟内存接口调用验证流程说明如下:
1)通过调用函数地址获取调用主体:通过读取堆栈中缓存的函数返回地址,可以获取调用虚拟内存地址管理接口的函数,再根据内核维护的符号表,获取调用虚拟内存地址管理接口的主体;以X86架构为例,函数调用前,会将函数的返回地址写入堆栈中保存,而堆栈的信息有esp和ebp寄存器保存,因此,可以通过分析esp和ebp寄存器获取堆栈信息,进而获取调用的函数地址信息。
2)获取被修改虚拟内存地址内数据符号:根据内核维护的符号表,可以获取被修改权限的虚拟内存中的数据符号,而这些数据符号构成被修改客体。
3)判断主客体关系(判断主体是否有修改所有符号客体的权限):当主客体关系不一致(主体不具备修改权限)时,返回执行失败的错误,阻止修改虚拟内存权限的操作,并卸载LKM;否则继续执行虚拟内存地址管理接口逻辑。例如,当主体为某LKM,而客体中包含系统调用表时时,则本次权限修改存在系统调用表被篡改的风险,应当拒绝该操作的执行,并将该模块交由LKM管理模块卸载清除。
综上,本申请提供的防御攻击方法,检测LKM运行前的行为。当检测到加载的模块存在恶意隐藏自身信息或隐藏其他模块信息时,删除执行隐藏操作的模块,并根据实际情况恢复被隐藏的程序信息,确保操作系统内核可以管控所有模块。同时,监控修改虚拟内存权限的接口,当接口调用主体与被修改的虚拟内存客体不一致时,则拒绝执行修改权限的操作,RootKit无法改写内核关键数据的权限,也就无法植入恶意逻辑到内核空间中。提供本申请可以保护操作系统内核不被植入恶意的逻辑,保证操作系统的安全稳定,进而确保操作系统上层业务及数据安全。
第二方面,本申请还提供了一种防御攻击系统,如图6所示,该系统包括:
第一判断单元61,用于在初始化内核模块的过程中,判断是否存在隐藏程序的行为;
卸载单元62,用于在存在隐藏程序的行为时,判定内核模块中存在恶意程序,并卸载恶意程序;
监测单元63,用于在内核模块初始化完成后,对内核模块的目标接口进行监测,在目标接口被调用时,确定调用目标接口的主体及目标客体;
第五判断单元64,用于判断主体和/或目标客体是否符合预设要求;
允许执行单元65,用于在符合预设要求时,允许主体通过目标接口对目标客体执行目标操作;
禁止执行单元66,用于若不符合预设要求时,禁止主体通过目标接口对目标客体执行目标操作。
在一种实施例中,第一判断单元61包括:
第一数据记录单元,用于在初始化内核模块之前,记录与内核模块对应的第一状态数据;
第二数据记录单元,用于在初始化内核模块之后,记录与内核模块对应的第二状态数据;
第二判断单元,用于判断第一状态数据和第二状态数据是否符合期望状态数据;若符合,则判定内核模块中不存在恶意程序;若不符合,则判定内核模块中存在恶意程序。
在一种实施例中,还包括:
加载单元,在初始化内核模块之前,用于加载内核模块;
第一数据记录单元,具体用于在完成对内核模块的加载后,记录与内核模块对应的第一状态数据。
在一种实施例中,还包括:
加载信号输出单元,用于加载内核模块之后,输出模块已加载的信号;
初始化信号输出单元,用于初始化内核模块之后,输出模块已初始化的信号;
第一数据记录单元,具体用于在监听到模块已加载的信号后,记录与内核模块对应的第一状态数据;
第二数据记录单元,具体用于在监听到模块已初始化的信号之后,记录与内核模块对应的第二状态数据。
在一种实施例中,还包括:
初始化函数调用单元,用于在监听到模块已加载的信号之后,调用内核模块的初始化函数;
初始化单元,用于执行初始化函数以对内核模块进行初始化。
在一种实施例中,第一数据记录单元,具体用于在初始化内核模块之前,获取内核模块链表中所记录的模块信息,得到第一模块链表信息;
第二数据记录单元,具体用于在初始化内核模块之后,获取内核模块链表中所记录的模块信息,得到第二模块链表信息;
第二判断单元,具体用于判断第一模块链表信息与第二模块链表信息是否相同;若相同,则判定符合期望状态数据;否则判定不符合期望状态数据。
在一种实施例中,卸载单元62,包括:
确定单元,用于通过预设方式确定恶意程序;
执行单元,用于卸载恶意程序。
在一种实施例中,内核模块的个数为多个,内核模块的初始化过程为依次对各个内核模块进行初始化;
确定单元,包括:
第三判断单元,用于在各个内核模块初始化过程中,判断是否存在隐藏程序的行为;
判定单元,用于在存在所述隐藏程序的行为时,将存在隐藏程序的行为所在的初始化过程对应的内核模块确定为恶意程序。
在一种实施例中,还包括:
第四判断单元,用于在将存在隐藏程序的行为所在的初始化过程对应的内核模块确定为恶意程序之后,判断恶意程序和隐藏的程序是否相同;若相同,则判定恶意程序隐藏自身,并卸载恶意程序。
在一种实施例中,还包括:
恢复单元,用于在判定恶意程序和隐藏的程序不相同时,卸载恶意程序,并重新对隐藏的程序进行初始化。
在一种实施例中,监测单元,具体用于在目标接口被调用时,根据目标接口的函数调用确定主体;根据函数调用的过程中产生的过程参数确定目标客体以及目标客体与主体的匹配关系;
第五判断单元64,具体用于根据匹配关系确定主体和/或目标客体是否符合预设要求。
在一种实施例中,第五判断单元64,具体用于判断主体是否在目标客体的授权范围内;若主体不在目标客体的授权范围内,则判定不符合预设要求。
在一种实施例中,第五判断单元64,具体用于判断目标客体是否在允许操作的客体范围内;若目标客体不在允许操作的客体范围内,则判定不符合预设要求。
在一种实施例中,还包括:
确定操作单元,用于在目标接口被调用时,确定主体通过目标接口对目标客体执行的目标操作;
第五判断单元64,具体用于判断目标操作是否在目标客体允许执行的操作范围内;若不在操作范围内,则判定不满足预设要求。
在一种实施例中,目标接口为虚拟内存接口,监测单元,具体用于在虚拟内存接口被调用时,确定调用虚拟内存接口的主体、目标内存和目标权限;
第五判断单元64,具体用于判断是否允许主体将目标内存的权限修改为目标权限;若允许,则判定满足预设要求,否则判定不满足预设要求。
在一种实施例中,目标操作为读取权限、写入权限、修改权限、删除权限中一种或多种的组合。
在一种实施例中,还包括:
日志输出单元,用于在判定不满足预设要求时,输出攻击日志,以提醒工作人员。在一种实施例中,攻击日志中至少包括目标接口被调用的时间、调用目标接口的主体、目标客体、目标操作及主体对应的程序的卸载时间。
对于防御攻击系统的介绍请参照上述实施例,本申请在此不再赘述。
第三方面,本申请还提供了一种防御攻击装置,如图7所示,该装置包括:
存储器71,用于存储计算机程序82;
处理器72,用于在存储计算机程序82时,实现如上述的防御攻击方法的步骤。
对于防御攻击装置的介绍请参照上述实施例,本申请在此不再赘述。
第四方面,本申请还提供了一种计算机可读存储介质81,如图8所示,计算机可读存储介质81上存储有计算机程序82,计算机程序82被处理器72执行时实现如上述的防御攻击方法的步骤。对于计算机可读存储介质81的介绍请参照上述实施例,本申请在此不再赘述。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的状况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其他实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (21)

1.一种防御攻击方法,其特征在于,包括:
在初始化内核模块的过程中,判断是否存在隐藏程序的行为;
若存在,则判定所述内核模块中存在恶意程序,并卸载所述恶意程序;
在所述内核模块初始化完成后,对所述内核模块的目标接口进行监测,在所述目标接口被调用时,确定调用所述目标接口的主体及目标客体;
判断所述主体和/或所述目标客体是否符合预设要求;
若符合,则允许所述主体通过所述目标接口对所述目标客体执行目标操作;
若不符合,则禁止所述主体通过所述目标接口对所述目标客体执行所述目标操作。
2.如权利要求1所述的防御攻击方法,其特征在于,在初始化内核模块的过程中,判断是否存在隐藏程序的行为,包括:
在初始化所述内核模块之前,记录与所述内核模块对应的第一状态数据;
在初始化所述内核模块之后,记录与所述内核模块对应的第二状态数据;
判断所述第一状态数据和所述第二状态数据是否符合期望状态数据;
若符合,则判定所述内核模块中不存在所述恶意程序;
若不符合,则判定所述内核模块中存在所述恶意程序。
3.如权利要求2所述的防御攻击方法,其特征在于,在初始化所述内核模块之前,还包括:
加载所述内核模块;
在初始化所述内核模块之前,记录与所述内核模块对应的第一状态数据,包括:
在完成对所述内核模块的加载后,记录与所述内核模块对应的第一状态数据。
4.如权利要求3所述的防御攻击方法,其特征在于,加载所述内核模块之后,还包括:
输出模块已加载的信号;
在完成对所述内核模块的加载后,记录与所述内核模块对应的第一状态数据,包括:
在监听到所述模块已加载的信号后,记录与所述内核模块对应的第一状态数据;
初始化所述内核模块之后,还包括:输出模块已初始化的信号;
在初始化所述内核模块之后,记录与所述内核模块对应的第二状态数据,包括:
在监听到所述模块已初始化的信号之后,记录与所述内核模块对应的第二状态数据。
5.如权利要求4所述的防御攻击方法,其特征在于,初始化所述内核模块的过程包括:
在监听到所述模块已加载的信号之后,调用所述内核模块的初始化函数;
执行所述初始化函数以对所述内核模块进行初始化。
6.如权利要求4所述的防御攻击方法,其特征在于,在初始化所述内核模块之前,记录与所述内核模块对应的第一状态数据,包括:
在初始化所述内核模块之前,获取内核模块链表中所记录的模块信息,得到第一模块链表信息;
在初始化所述内核模块之后,记录与所述内核模块对应的第二状态数据,包括:
在初始化所述内核模块之后,获取内核模块链表中所记录的模块信息,得到第二模块链表信息;
判断所述第一状态数据和所述第二状态数据是否符合期望状态数据,包括:
判断所述第一模块链表信息与所述第二模块链表信息是否相同;
若相同,则判定符合所述期望状态数据;否则判定不符合所述期望状态数据。
7.如权利要求1所述的防御攻击方法,其特征在于,卸载所述恶意程序,包括:
通过预设方式确定所述恶意程序,并卸载所述恶意程序。
8.如权利要求7所述的防御攻击方法,其特征在于,所述内核模块的个数为多个,所述内核模块的初始化过程包括:
依次对各个所述内核模块进行初始化;
通过预设方式确定所述恶意程序,包括:
在各个所述内核模块初始化过程中,判断是否存在隐藏程序的行为;
若存在,则将存在所述隐藏程序的行为所在的初始化过程对应的内核模块确定为所述恶意程序。
9.如权利要求8所述的防御攻击方法,其特征在于,将存在所述隐藏程序的行为所在的初始化过程对应的内核模块确定为所述恶意程序之后,还包括:
判断所述恶意程序和隐藏的程序是否相同;
若相同,则判定所述恶意程序隐藏自身,并卸载所述恶意程序。
10.如权利要求9所述的防御攻击方法,其特征在于,在判定所述恶意程序和隐藏的程序不相同时,还包括:
卸载所述恶意程序,并重新对所述隐藏的程序进行初始化。
11.如权利要求1所述的防御攻击方法,其特征在于,在所述目标接口被调用时,确定调用所述目标接口的主体及目标客体,包括:
在所述目标接口被调用时,根据所述目标接口的函数调用确定所述主体;
根据所述函数调用的过程中产生的过程参数确定目标客体以及目标客体与所述主体的匹配关系;
判断所述主体和/或所述目标客体是否符合预设要求,包括:
根据所述匹配关系确定所述主体和/或所述目标客体是否符合所述预设要求。
12.如权利要求1所述的防御攻击方法,其特征在于,判断所述主体和/或所述目标客体是否符合预设要求,包括:
判断所述主体是否在所述目标客体的授权范围内;
若所述主体不在所述目标客体的授权范围内,则判定不符合所述预设要求。
13.如权利要求1所述的防御攻击方法,其特征在于,判断所述主体和/或所述目标客体是否符合预设要求,包括:
判断所述目标客体是否在允许操作的客体范围内;
若所述目标客体不在所述允许操作的客体范围内,则判定不符合所述预设要求。
14.如权利要求1所述的防御攻击方法,其特征在于,还包括:
在所述目标接口被调用时,确定所述主体通过所述目标接口对所述目标客体执行的目标操作;
判断所述主体与所述目标客体是否符合预设要求,包括:
判断所述目标操作是否在所述目标客体允许执行的操作范围内;
若不在所述操作范围内,则判定不满足所述预设要求。
15.如权利要求1所述的防御攻击方法,其特征在于,所述目标接口为虚拟内存接口,则在所述目标接口被调用时,确定调用所述目标接口的主体及目标客体,包括:
在所述虚拟内存接口被调用时,确定调用所述虚拟内存接口的主体、目标内存和目标权限;
判断所述主体和/或所述目标客体是否符合预设要求,包括:
判断是否允许所述主体将所述目标内存的权限修改为所述目标权限;
若允许,则判定满足所述预设要求,否则判定不满足所述预设要求。
16.如权利要求15所述的防御攻击方法,其特征在于,所述目标权限为读取权限、写入权限、修改权限、删除权限中一种或多种的组合。
17.如权利要求1所述的防御攻击方法,其特征在于,在判定不满足所述预设要求时,还包括:
卸载所述主体对应的程序。
18.如权利要求1所述的防御攻击方法,其特征在于,在判定不满足所述预设要求时,还包括:
输出攻击日志,所述攻击日志中至少包括所述目标接口被调用的时间、调用所述目标接口的所述主体、目标客体、目标操作以及所述主体对应的程序的卸载时间。
19.一种防御攻击系统,其特征在于,包括:
第一判断单元,用于在初始化内核模块的过程中,判断是否存在隐藏程序的行为;
卸载单元,用于在存在隐藏程序的行为时,判定所述内核模块中存在恶意程序,并卸载所述恶意程序;
监测单元,用于在所述内核模块初始化完成后,对所述内核模块的目标接口进行监测,在所述目标接口被调用时,确定调用所述目标接口的主体及目标客体;
第五判断单元,用于判断所述主体和/或所述目标客体是否符合预设要求;
允许执行单元,用于在符合所述预设要求时,允许所述主体通过所述目标接口对所述目标客体执行目标操作;
禁止执行单元,用于若不符合所述预设要求时,禁止所述主体通过所述目标接口对所述目标客体执行所述目标操作。
20.一种防御攻击装置,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于在存储计算机程序时,实现如权利要求1-18任一项所述的防御攻击方法的步骤。
21.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1-18任一项所述的防御攻击方法的步骤。
CN202311154622.5A 2023-09-08 2023-09-08 一种防御攻击方法、系统、装置及介质 Active CN116910768B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311154622.5A CN116910768B (zh) 2023-09-08 2023-09-08 一种防御攻击方法、系统、装置及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311154622.5A CN116910768B (zh) 2023-09-08 2023-09-08 一种防御攻击方法、系统、装置及介质

Publications (2)

Publication Number Publication Date
CN116910768A true CN116910768A (zh) 2023-10-20
CN116910768B CN116910768B (zh) 2024-01-23

Family

ID=88353380

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311154622.5A Active CN116910768B (zh) 2023-09-08 2023-09-08 一种防御攻击方法、系统、装置及介质

Country Status (1)

Country Link
CN (1) CN116910768B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101154258A (zh) * 2007-08-14 2008-04-02 电子科技大学 恶意程序动态行为自动化分析系统与方法
CN103699839A (zh) * 2013-12-09 2014-04-02 Tcl集团股份有限公司 一种内核级rootkit检测处理方法及系统
CN104598823A (zh) * 2015-01-21 2015-05-06 华东师范大学 一种安卓系统中内核级rootkit检测方法及其系统
CN107016283A (zh) * 2017-02-15 2017-08-04 中国科学院信息工程研究所 基于完整性验证的Android权限提升攻击安全防御方法和装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101154258A (zh) * 2007-08-14 2008-04-02 电子科技大学 恶意程序动态行为自动化分析系统与方法
CN103699839A (zh) * 2013-12-09 2014-04-02 Tcl集团股份有限公司 一种内核级rootkit检测处理方法及系统
CN104598823A (zh) * 2015-01-21 2015-05-06 华东师范大学 一种安卓系统中内核级rootkit检测方法及其系统
CN107016283A (zh) * 2017-02-15 2017-08-04 中国科学院信息工程研究所 基于完整性验证的Android权限提升攻击安全防御方法和装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
陈进;夏虞斌;臧斌宇;: "基于新型VMI技术的内核Rootkit检测方案", 计算机应用与软件, no. 07 *

Also Published As

Publication number Publication date
CN116910768B (zh) 2024-01-23

Similar Documents

Publication Publication Date Title
US11663323B2 (en) Process privilege escalation protection in a computing environment
EP3779745B1 (en) Code pointer authentication for hardware flow control
CN107066311B (zh) 一种内核数据访问控制方法与系统
US8413253B2 (en) Protecting persistent secondary platform storage against attack from malicious or unauthorized programs
US10783041B2 (en) Backup and recovery of data files using hard links
WO2011076464A1 (en) Method and system for protecting an operating system against unauthorized modification
TWI607338B (zh) 儲存裝置及其資料保護方法與資料保護系統
US11971986B2 (en) Self-protection of anti-malware tool and critical system resources protection
KR100745640B1 (ko) 커널 메모리를 보호하는 방법 및 그 장치
KR100745639B1 (ko) 파일 시스템 및 레지스트리를 보호하는 방법 및 그 장치
US7620983B1 (en) Behavior profiling
CN109583206B (zh) 监控应用程序的访问进程的方法、装置、设备及存储介质
CN116910768B (zh) 一种防御攻击方法、系统、装置及介质
WO2020007249A1 (zh) 一种操作系统安全主动防御方法及操作系统
WO2022105610A1 (zh) 一种数据保护的方法、装置、存储介质和计算机设备
US20240152610A1 (en) Methods and systems for detecting and blocking malicious actions in operating system
CN112784261A (zh) 用于程序运行的方法及相应的系统、计算机设备和介质
Korkin Protected Process Light is not Protected: MemoryRanger Fills the Gap Again
KR102298219B1 (ko) 악성 커널 모듈 탐지 장치 및 악성 커널 모듈 탐지 방법
US20240111860A1 (en) Systems and methods for preventing hollowing attack
KR102153048B1 (ko) Smram 변조 탐지 방법 및 장치
KR100959277B1 (ko) 커널계층에서 통제리스트를 이용한 mbr공격차단 시스템 및 그 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체
CN118013524A (zh) 一种可疑行为监测方法、装置、电子设备及存储介质
CN112784223A (zh) 应用程序的保护方法、装置、介质及用户行为控制方法
CN117786658A (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
GR01 Patent grant
GR01 Patent grant