CN111191226B - 利用提权漏洞的程序的确定方法、装置、设备及存储介质 - Google Patents
利用提权漏洞的程序的确定方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN111191226B CN111191226B CN201910600936.0A CN201910600936A CN111191226B CN 111191226 B CN111191226 B CN 111191226B CN 201910600936 A CN201910600936 A CN 201910600936A CN 111191226 B CN111191226 B CN 111191226B
- Authority
- CN
- China
- Prior art keywords
- permission level
- level
- target process
- program
- target
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 898
- 238000012544 monitoring process Methods 0.000 claims abstract description 89
- 230000006870 function Effects 0.000 claims description 131
- 238000013475 authorization Methods 0.000 claims description 18
- 238000001514 detection method Methods 0.000 abstract description 59
- 230000006399 behavior Effects 0.000 abstract description 12
- 238000010586 diagram Methods 0.000 description 12
- 238000004891 communication Methods 0.000 description 11
- 238000012545 processing Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 238000009434 installation Methods 0.000 description 3
- 230000007547 defect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000000737 periodic effect Effects 0.000 description 2
- 244000035744 Hura crepitans Species 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000004984 smart glass Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- 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/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/552—Detecting local intrusion or implementing counter-measures involving long-term monitoring or reporting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请公开了一种利用提权漏洞的程序的确定方法,属于计算机技术领域。所述方法包括:从进程创建组件获取目标进程的进程标识;在对目标进程进行监控的过程中,通过目标进程的进程标识以及第一回调函数,从系统内核获取目标进程的第一权限等级;获取第二权限等级;当第一权限等级高于第二权限等级时,将目标进程对应的程序获取为利用提权漏洞的程序。本申请从进程创建组件获取目标进程的进程标识,根据进程标识从系统内核获取目标进程的权限等级,通过先后两次获取到的权限等级确定目标进程对应的程序是否利用了提权漏洞,该过程不需要监控系统中的各种提权行为,而是从进程的权限变化判断哪些进程利用了提权漏洞,提高检测的准确性和检测效率。
Description
技术领域
本申请涉及计算机技术领域,特别涉及一种利用提权漏洞的程序的确定方法、装置、设备及存储介质。
背景技术
随着计算机领域的发展,终端中的应用程序种类越来越多,伴随这些应用程序的使用,终端中存储的用户数据也越来越多,这些数据一旦被泄露,可能对用户带来极大损失,应用程序的安全问题一直被用户关注。
例如,在网络环境中,存在一种利用提权漏洞窃取用户应用权限的恶意程序,该类恶意程序可以将自身的应用权限提升至系统权限甚至更高,从而使得自身可以获取用户数据、删除系统文件、修改系统配置等。在相关技术中,对于这类程序的检测,是通过终端中的驱动程序监控当前操作系统的重要操作,如:删除系统文件、修改防火墙设置、添加系统账户等等,如果通过该驱动程序监控发现发起这些操作的进程不在操作系统的白名单中时,则认为是可疑程序进行的可疑操作,进而转给人工分析。
相关技术中,较为依赖驱动程序监控策略的完整性,驱动程序监控的重要操作并不能覆盖所有可能的重要操作,并且,当驱动程序监控的重要操作过多时,也会降低终端的系统性能,从而影响对利用提权漏洞的恶意程序进行检测的准确性和检测效率。
发明内容
本申请实施例提供了一种利用提权漏洞的程序的确定方法、装置、设备以及存储介质,可以提高对利用提权漏洞的程序进行检测的准确性和检测效率。所述技术方案如下:
一方面,本申请实施例提供了一种利用提权漏洞的程序的确定方法,所述方法包括:
从进程创建组件获取目标进程的进程标识,所述进程创建组件用于创建新进程;
在对所述目标进程进行监控的过程中,通过所述目标进程的进程标识以及第一回调函数,从操作系统内核获取所述目标进程的第一权限等级,所述第一权限等级是本次获取的所述目标进程的权限等级;
获取所述目标进程的第二权限等级,所述第二权限等级是上一次获取的所述目标进程的权限等级;
当所述第一权限等级高于所述第二权限等级时,将所述目标进程对应的程序确定为利用提权漏洞的程序。
另一方面,本申请实施例提供了一种利用提权漏洞的程序的确定装置,所述装置包括:
进程标识获取模块,用于从进程创建组件获取目标进程的进程标识,所述进程创建组件用于创建新进程;
第一权限等级获取模块,用于在对所述目标进程进行监控的过程中,通过所述目标进程的进程标识以及第一回调函数,从操作系统内核获取所述目标进程的第一权限等级,所述第一权限等级是本次获取的所述目标进程的权限等级;
第二权限等级获取模块,用于获取所述目标进程的第二权限等级,所述第二权限等级是上一次获取的所述目标进程的权限等级;
第一程序确定模块,用于当所述第一权限等级高于所述第二权限等级时,将所述目标进程对应的程序确定为利用提权漏洞的程序。
可选的,所述第一权限等级获取模块,包括:内核进程块获取单元,授权令牌获取单元,令牌等级值获取单元以及第一权限等级获取单元;
所述内核进程块获取单元,用于根据所述目标进程的进程标识,获取所述目标进程的内核进程块;
所述授权令牌获取单元,用于根据所述内核进程块,获取所述目标进程的授权令牌;
所述令牌等级值获取单元,用于根据所述目标进程的授权令牌和系统宏参数,获取所述目标进程的令牌等级值;所述系统宏参数是获取所述令牌等级值时,所述第一回调函数采用的令牌等级参数;
所述第一权限等级获取单元,用于将所述目标进程的令牌等级值对应的权限等级获取为所述目标进程的第一权限等级。
可选的,所述装置还包括:
回调函数注册模块,用于所述进程标识获取模块从进程创建组件获取目标进程的进程标识之前,向所述进程创建组件注册第二回调函数;
所述进程标识获取模块,用于接收所述进程创建组件创建所述目标进程时,通过所述第二回调函数返回的所述目标进程的进程标识。
可选的,所述装置还包括:
第三权限等级获取模块,用于在所述进程标识获取模块接收到所述进程创建组件返回的所述目标进程的进程标识时,若所述目标进程的父进程属于被监控的进程,则通过所述父进程的进程标识以及所述第一回调函数,从所述操作系统内核获取所述父进程的第三权限等级;所述第三权限等级是本次获取的所述父进程的权限等级;
第四权限等级获取模块,用于获取所述父进程的第四权限等级,所述第四权限等级是上一次获取的所述父进程的权限等级;
第二程序确定模块,用于当所述第三权限等级高于所述第四权限等级时,将所述父进程对应的程序确定为利用提权漏洞的程序。
可选的,所述装置还包括:
初始权限等级获取模块,用于在对所述目标进程进行监控之前,通过所述目标进程的进程标识以及所述第一回调函数,从所述操作系统内核获取所述目标进程的初始权限等级;
监控模块,用于当所述目标进程的初始权限等级低于预设权限等级时,执行所述对所述目标进程进行监控的步骤。
可选的,所述装置还包括:
第五权限等级获取模块,用于若所述目标进程的父进程属于被监控的进程,则获取第五权限等级,所述第五权限等级是所述父进程的权限等级;
第三程序确定模块,用于当所述第五权限等级低于所述目标进程的初始权限等级时,将所述父进程对应的程序确定为利用提权漏洞的程序。
可选的,所述预设权限等级是系统权限对应的权限等级。
又一方面,本申请实施例还提供了一种计算机设备,所述计算机设备包含处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上所述的利用提权漏洞的程序的确定方法。
又一方面,本申请实施例还提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上所述的利用提权漏洞的程序的确定方法。
本申请实施例提供的技术方案带来的有益效果至少包括:
从进程创建组件获取目标进程的进程标识,进程创建组件用于创建新进程;在对目标进程进行监控的过程中,通过目标进程的进程标识以及第一回调函数,从系统内核获取目标进程的第一权限等级;获取第二权限等级,第二权限等级是上一次获取的、目标进程的权限等级;当第一权限等级高于第二权限等级时,将目标进程对应的程序获取为利用提权漏洞的程序。本申请通过从进程创建组件获取目标进程的进程标识,根据进程标识从系统内核获取目标进程的权限等级,通过先后两次获取到的权限等级确定目标进程对应的程序是否利用了提权漏洞,该过程不需要监控系统中的各种提权行为,而是从进程的权限变化判断哪些进程利用了提权漏洞,提高了对利用提权漏洞的程序进行检测的准确性和检测效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种利用提权漏洞的程序的确定系统的结构示意图;
图2是本申请实施例涉及的一种利用提权漏洞的程序的确定方法的方法流程图;
图3是本申请实施例涉及的一种利用提权漏洞的程序的确定方法的方法流程图;
图4是本申请实施例涉及的一种检测结果的界面示意图;
图5是本申请实施例涉及的一种程序的检测结果的示意图;
图6是本申请实施例提供的一种利用提权漏洞的程序的确定方法的方法流程图;
图7是本申请一示例性实施例示出的一种利用提权漏洞的程序的确定装置的结构方框图;
图8是本申请个示例性实施例提供的计算机设备的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
本申请提供的方案,可以用于在人们日常生活中使用终端下载或者运行应用程序现实场景中。为了便于理解,下面首先对一些名词术语以及应用场景进行简单介绍。
1)程序动态行为
程序动态行为是指程序(包括系统程序以及应用程序等)在操作系统上运行后产生的行为,比如:创建文件、删除文件、加密文件、创建进程、结束进程、访问网络、下载其他应用程序、修改注册表、窃取文件等行为。
2)提权
在本申请中,提权又称特权提升(Privilege escalation),是指某程序在终端中利用操作系统或应用软件中的程序错误、设计缺陷或配置漏洞等来获取对自身或者其他应用程序的高级访问权限。提权造成的结果是,该程序可以获取到比该程序的开发者或系统管理员预期的更高的系统权限,从而可以执行更高系统权限授予的程序动态行为。
3)系统漏洞
系统漏洞是指一个操作系统自身存在的弱点或缺陷,操作系统中运行的程序可能利用这些弱点或缺陷对系统产生威胁攻击或危险事件。系统漏洞可能由于操作系统或者程序开发设计时,通过计算机语言的进行编码时产生的错误,也可能来自各种业务在交互处理过程设计时存在的缺陷或者逻辑上的不合理之处。
上述系统漏洞可能被某些程序有意或无意地利用,从而对一个操作系统的运行造成不利影响,如操作系统中的信息系统被攻击或控制,操作系统中的重要资料被窃取,操作系统中的用户数据被篡改,操作系统被作为入侵其他主机操作系统的跳板等等。
4)提权漏洞
提权漏洞是指用于实现提权功能的系统漏洞。即,当程序利用上述系统漏洞中的某个系统漏洞提升自身的系统权限时,该系统漏洞便可以称为是提权漏洞。例如,某一程序在某个操作系统中的系统权限为中等权限等级,如果该操作系统中存在某个系统漏洞,使得该程序利用该系统漏洞将自身的中等权限等级提升至系统权限等级,或者更高,则该系统漏洞可以称为是该操作系统中存在的一个提权漏洞。例如,常见的提权漏洞如:0day漏洞等。
5)动态检测系统
在本申请中,动态检测系统指一种基于虚拟机(VirtualBox)搭建的一套沙箱系统,是集程序运行、监控、计算为一体的感知系统。
6)进程(process)
进程是指计算机中的程序在某数据集合上的一次运行活动。进程是系统进行资源分配和调度的基本单位,也是操作系统结构的基础。在面向线程设计的计算机结构中,进程可以是线程的容器。
7)线程(thread)
线程是指操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。内核线程是指直接由操作系统内核本身启动的进程。
随着计算机领域的发展,人们在日常生活中,使用程序(比如各类应用程序)娱乐或者工作已经非常普遍,随着程序数量和种类越来越多,终端中存储的用户数据也越来越多,不同的程序均拥有终端系统为自己授予的权限,各个程序自己的这些权限可以对终端进行相应的操作。例如:地图类的程序可以拥有系统授予的获取终端当前位置的权限,终端在运行该地图类的程序时,该地图类的程序可以通过该权限获取到终端所在的当前位置等。可选的,用户可以在终端中安装一些安全类软件,对终端中安装的各个程序进行安全监控,防止终端中的各个程序出现不符合自身权限的程序动态行为。
请参考图1,其示出了本申请实施例提供的一种利用提权漏洞的程序的确定系统的结构示意图。该系统包括:若干个终端110以及服务器120。
可选的,终端110可以是具有运行安装安全管理程序的终端设备,比如,该终端可以是手机、平板电脑、电子书阅读器、智能眼镜、智能手表、MP3播放器(Moving PictureExperts Group Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(MovingPicture Experts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、笔记本电脑、膝上型便携计算机和台式计算机等等。
可选的,安装安全管理程序的终端中还可以包含程序收集模块,该程序收集模块可以用于收集终端中的可疑程序,并将收集到的可疑程序,推送至动态检测系统中,由该动态检测系统对该可疑程序进行检测,查看该可疑程序是否属于恶意程序。可选的,该可疑程序可以是终端中正在下载的程序,或者也可以是终端中长期未进行检测过的程序等等,可选的,该恶意程序可以是上述利用提权漏洞提升自身权限的程序。
可选的,该动态检测系统可以是设置在该安全管理程序的服务器中,终端直接将收集到的可疑程序上传至服务器中,由服务器的动态检测系统进行检测,或者,该动态检测系统也可以设置在某个计算机设备中,由服务器将接收到终端发送的可疑程序发送给该计算机设备,由该计算机设备的动态检测系统进行检测等。本申请以服务器中设置有该动态检测系统为例进行说明。
服务器120可以是一台服务器,或者由若干台服务器,或者是一个虚拟化平台,或者是一个云计算服务中心。
终端110与服务器120之间通过通信网络相连。可选的,该通信网络可以是有线网络或无线网络。
可选的,上述的无线网络或有线网络使用标准通信技术和/或协议。网络通常为因特网、但也可以是任何网络,包括但不限于局域网(Local Area Network,LAN)、城域网(Metropolitan Area Network,MAN)、广域网(Wide Area Network,WAN)、移动、有线或者无线网络、专用网络或者虚拟专用网络的任何组合)。在一些实施例中,使用包括超文本标记语言(Hyper Text Mark-up Language,HTML)、可扩展标记语言(Extensible MarkupLanguage,XML)等的技术和/或格式来代表通过网络交换的数据。此外还可以使用诸如安全套接字层(Secure Socket Layer,SSL)、传输层安全(Transport Layer Security,TLS)、虚拟专用网络(Virtual Private Network,VPN)、网际协议安全(Internet ProtocolSecurity,IPsec)等常规加密技术来加密所有或者一些链路。在另一些实施例中,还可以使用定制和/或专用数据通信技术取代或者补充上述数据通信技术。
可选的,上述利用提权漏洞的程序的确定系统中还可以包含网络资源平台130。
网络资源平台130可以是一个网站、应用程序平台等,终端110也可以与网络资源平台130通过通信网络相连。该网络资源平台130中可以存储有各种程序的安装包,终端110可以通过通信网络下载各种程序的安装包,并在终端110中安装该程序。例如,用户想要使用程序A时,用户可以控制终端110通过通信网络从网络资源平台130中下载程序A的安装包,从而将程序A的客户端安装在终端110中,进而使得终端110可以运行程序A。
可选的,当终端中运行有上述的安全管理程序,该安全管理程序可以在用户下载或者更新某个程序时,将用户准备下载或者更新的程序作为样本程序发送给自己的服务器,由服务器中的动态检测系统对该样本程序进行检测。可选的,该安全管理程序也可以周期性的检测终端中安装的程序,将每次检测的程序发送给服务器,服务器接收到终端中的安全管理程序发送的程序时,可以由服务器的动态检测系统进行检测等,本申请实施例对动态检测系统检测的程序的获得方式并不加以限定。可选的,服务器可以将通过动态检测系统检测的检测结果通过上述通信网络反馈给用户的终端,使得用户可以得知自己终端中的程序是否存在安全隐患。
可选的,上述利用提权漏洞的程序的确定系统中还可以包含若干个后台终端140。可选的,后台终端140的各种形式可以参照上述终端110,此处不再赘述。其中,该后台终端140也可以与服务器120之间通过有线网络或无线网络相连。可选的,该服务器120也可以将通过动态检测系统检测的检测结果通过通信网络发送给后台终端140,相应的,该后台终端140也可以接收服务器120发送的检测结果,安全运行人员可以对该检测结果进行查看、处理等。
本申请实施例提供了一种利用提权漏洞的程序的确定方法,可以避免相关技术中驱动程序需要监控点过多,导致检测效率较低,影响操作系统性能等问题。请参考图2,其示出了本申请实施例涉及的一种利用提权漏洞的程序的确定方法的方法流程图,该方法可以应用于上述图1所示的利用提权漏洞的程序的确定系统中,由该检测系统中运行有动态检测系统的服务器检测利用提权漏洞的程序。如图2所示,该利用提权漏洞的程序的确定方法可以包括如下几个步骤。
步骤201,从进程创建组件获取目标进程的进程标识。
其中,该进程创建组件用于创建新进程。比如,该进程创建组件是上述动态检测系统通过虚拟机模拟运行的操作系统中,用于创建新进程的系统组件。
可选的,当一个程序在上述动态检测系统中运行时,该程序可以通过该进程创建组件创建新进程。可选的,创建的新进程也可以是由其他进程创建的子进程。即,对于创建的各个进程,这些进程也可以通过该进程创建组件创建自己的子进程。其中,当一个进程通过该进程创建组件创建了子进程,则该进程也被称为该子进程的父进程。
可选的,该目标进程可以是动态检测系统中正在监控的各个进程中的任意一个进程。可选的,服务器可以将终端中的安全管理程序上报的各个程序在该动态检测系统中运行,获取到各个程序在运行时利用进程创建组件创建的各个进程的进程标识,并在各个进程运行的过程中,对各个进程进行监控。可选的,服务器中的动态检测系统可以提前创建有内核线程,通过该内核线程对监控列表中的各个进程进行监控。比如,服务器可以提前通过PsCreateSystemThread函数创建一个内核线程,从而对监控列表中的各个进程进行监控。
步骤202,在对目标进程进行监控的过程中,通过目标进程的进程标识以及第一回调函数,从操作系统内核获取目标进程的第一权限等级。
其中,该第一权限等级是本次获取的目标进程的权限等级。该操作系统内核是上述虚拟机操作系统的内核。
可选的,操作系统内核中可以维护有各个进程对应的权限等级,在内核线程对各个进程进行监控的过程中,对于上述目标进程,服务器可以通过获取到的目标进程的进程标识以及第一回调函数,从操作系统内核中获取目标进程的权限等级。
可选的,上述动态检测系统通过虚拟机运行的操作系统中还可以提前注册第一回调函数,服务器可以通过该目标进程的进程标识以及第一回调函数从系统内核获取目标进程的第一权限等级。可选的,该第一回调函数可以是通过应用程序编程接口函数(Application Programming Interface,API)中的PsSetCreateProcessNotifyRoutine或者PsSetCreateProcessNotifyRoutineEx函数进行注册的。可选的,该第一回调函数中可以包含PsLookupProcessByProcessId函数,PsReferencePrimaryToken函数以及SeQueryInformationToken函数。
可选的,服务器对监控列表中各个进程进行监控时,可以循环监控各个进程,当循环到目标进程时,服务器通过目标进程的进程标识以及第一回调函数从操作系统内核获取目标进程的第一权限等级。其中,对于该目标进程来说,本次获取到目标进程的权限等级即为目标进程的第一权限等级。
步骤203,获取目标进程的第二权限等级。
其中,该第二权限等级是上一次获取的目标进程的权限等级。
可选的,该第二权限等级可以是参照上述获取的第一权限等级时,上一次获取的、目标进程的权限等级。可选的,该第二权限等级也可以通过目标进程的进程标识以及上述第一回调函数获取的。例如,当在获取上述第一权限等级之前,在监控该目标进程的过程中还获取过几次该目标进程的权限等级,该第二权限等级是这几次获取的权限等级中在时间上距离上述获取第一权限等级的获取时间最近的一个。
步骤204,当第一权限等级高于第二权限等级时,将目标进程对应的程序确定为利用提权漏洞的程序。
可选的,服务器可以对获取的第一权限等级和第二权限等级进行比较,当第一权限等级高于第二权限等级时,则将该目标进程对应的程序确定为利用提权漏洞的程序。
需要说明的是,本申请实施例以服务器执行上述步骤为例进行说明,在其它的实现方式中,上述服务器可以是安全管理程序的服务器。可选的,上述步骤也可以由运行上述动态检测系统的其它计算机设备执行。
综上所述,从进程创建组件获取目标进程的进程标识,进程创建组件用于创建新进程;在对目标进程进行监控的过程中,通过目标进程的进程标识以及第一回调函数,从系统内核获取目标进程的第一权限等级;获取第二权限等级,第二权限等级是上一次获取的、目标进程的权限等级;当第一权限等级高于第二权限等级时,将目标进程对应的程序获取为利用提权漏洞的程序。本申请通过从进程创建组件获取目标进程的进程标识,根据进程标识从系统内核获取目标进程的权限等级,通过先后两次获取到的权限等级确定目标进程对应的程序是否利用了提权漏洞,该过程不需要监控系统中的各种提权行为,而是从进程的权限变化判断哪些进程利用了提权漏洞,提高了对利用提权漏洞的程序进行检测的准确性和检测效率。
请参考图3,其示出了本申请实施例涉及的一种利用提权漏洞的程序的确定方法的方法流程图,该方法可以应用于上述图1所示的利用提权漏洞的程序的确定系统中,由该系统中的服务器通过动态检测系统进行检测。如图3所示,该利用提权漏洞的程序的确定方法可以包括如下几个步骤。
步骤301,向进程创建组件注册第二回调函数。
在本申请实施例中,服务器运行动态检测系统时,可以在动态检测系统中构建一个监控线程。可选的,该监控线程可以操作系统的内核线程。
可选的,服务器中的监控线程可以向动态检测系统中的操作系统的进程创建组件注册一个第二回调函数,该第二回调函数可以用于当进程创建组件创建新进程时,反馈创建的新进程的进程标识。可选的,该第二回调函数可以采用API函数进行注册。
步骤302,接收进程创建组件创建目标进程时,通过第二回调函数返回的目标进程的进程标识。
可选的,该新进程可以是由服务器中已有的进程新创建的,也可以是由服务器中新添加运行的程序创建的。
例如,在服务器的动态检测系统中运行的程序,可以通过进程创建组件创建新进程,当有新进程创建时,上述进程创建组件中注册的第二回调函数可以获取到创建的新进程的进程标识,将该进程标识返回给监控线程,相应的,监控线程可以接收进程创建组件创建目标进程时,通过上述第二回调函数返回的目标进程的进程标识。
步骤303,通过目标进程的进程标识以及第一回调函数,从操作系统内核获取目标进程的初始权限等级。
可选的,第一回调函数可以按照上述图2实施例中的描述进行注册,当注册成功第一回调函数之后,服务器便可以通过监控线程,根据目标进程的标识以及第一回调函数,从操作系统内核中获取目标进程的权限等级。
在一种可能实现的方式中,服务器通过监控线程,根据目标进程的标识以及第一回调函数,从操作系统内核中获取目标进程的权限等级的步骤可以如下:
第一,监控线程可以先根据目标进程的进程标识,从操作系统内核获取目标进程的内核进程块PEPROCESS;例如,监控线程可以将目标进程的进程标识作为第一回调函数中包含的PsLookupProcessByProcessId函数的函数参数输入,从而使得监控线程先通过第一回调函数中的PsLookupProcessByProcessId函数从操作系统内核获取到目标进程的内核进程块。
第二,监控线程可以根据获取到的内核进程块获取目标进程的授权令牌;比如,监控线程可以将目标进程的内核进程块作为第一回调函数中包含的PsReferencePrimaryToken函数的函数参数输入,从而使得监控线程可以通过第一回调函数中的PsReferencePrimaryToken函数获取到目标进程的授权令牌。
第三,监控线程可以根据目标进程的授权令牌和系统宏参数,从操作系统内核获取目标进程的令牌等级值;其中,该系统宏参数是获取令牌等级值时,第一回调函数采用的令牌等级参数;该系统宏参数可以是预先设定的一个参数数值。比如,监控线程可以将目标进程的授权令牌和系统宏参数一起作为第一回调函数中包含的SeQueryInformationToken函数的函数参数输入,从而使得监控线程可以通过第一回调函数中的SeQueryInformationToken函数从操作系统内核获取到目标进程的令牌等级值,在一种可能的实现方式中,上述系统宏参数可以是SeQueryInformationToken函数采用的TokenIntegrityLevel参数。
第四,监控线程可以将目标进程的令牌等级值对应的权限等级获取为目标进程的初始权限等级。即,目标进程的初始权限等级是目标进程被创建时,监控线程根据目标进程的进程标识和第一回调函数,获取到的目标进程的权限等级。
可选的,请参考表1,其示出了本申请实施例涉及的一种权限等级与令牌等级值之间的对应关系表。
权限等级 | 令牌等级值 |
不可信权限等级 | 0x00000000L |
低等权限等级 | 0x00001000L |
中等权限等级 | 0x00002000L |
高等权限等级 | 0x00003000L |
系统权限等级 | 0x00004000L |
保护权限等级 | 0x00005000L |
…… | …… |
表1
如表1所示,其中每个权限等级对应有自己的令牌等级值(其中,从上到下权限等级依次升高),服务器通过监控线程在上述步骤中得到目标进程的令牌等级值之后,可以通过查询上述表1,得到该令牌等级值对应的权限等级。可选的,监控线程还可以将获取到的目标进程的权限等级进行存储。
步骤304,当目标进程的初始权限等级低于预设权限等级时,执行对目标进程进行监控的步骤。
可选的,服务器可以通过监控线程对目标进程的初始权限等级进行判断,当目标进程的初始权限等级低于预设权限等级时,将目标进程添加至上述的监控列表中,以对该目标进程进行监控。可选的,该预设权限等级可以是系统权限对应的权限等级(即系统权限等级),或者,该预设权限等级也可以是高于系统权限等级的权限等级,例如,上述表1中的保护权限等级。
可选的,服务器通过监控线程监控操作系统中运行的各个进程时,可以是按照监控列表进行监控的。例如,请参考表2,其示出了本申请实施例涉及的一种监控列表的示意图。如表2所示,其中包含了进程创建组件创建的各个进程中,初始权限等级低于预设权限等级的各个进程。
表2
可选的,上述监控列表中的多个进程可以是由同一个程序运行时产生的,也可以是由不同程序运行时产生的。可选的,本申请实施例中的目标进程可以是上述表2中的任意一个进程。
当一个新创建的进程的初始权限等级低于预设权限等级时,服务器可以通过监控线程将该新进程添加至上述表2中,可选的,向监控列表中添加新进程的方式可以是按照新进程的标识进行添加,也可以按照新进程创建的时间进行添加,本申请实施例对此并不加以限定。
步骤305,在对目标进程进行监控的过程中,通过目标进程的进程标识以及第一回调函数,从操作系统内核获取目标进程的第一权限等级。
其中,第一权限等级是本次获取的所述目标进程的权限等级。
可选的,服务器可以通过监控线程,周期性地根据进程标识以及第一回调函数,从操作系统内核中获取对应进程的第一权限等级。例如,服务器可以按照监控列表中各个进程的顺序进行获取,从第一个进程至最后一个进程,然后进行下一次获取。或者,服务器也可以根据监控列表中各个进程的优先级顺序,循环获取监控列表中的每个进程的权限等级,例如,对于监控列表中的每个进程,服务器中存储有各个进程对应的优先级顺序,服务器按照该优先级顺序,循环获取监控列表中的每个进程的权限等级。或者,服务器还可以按照预设周期,获取监控列表中每个进程的第一权限等级,例如,在内核线程对监控列表中各个进程进行监控的过程中,每隔10分钟,获取一次目标进程的第一权限等级。当循环到目标进程时,服务器通过目标进程的进程标识以及第一回调函数从操作系统内核获取目标进程的第一权限等级,对于该目标进程来说,本次获取到目标进程的权限等级即为目标进程的第一权限等级。其中,该预设周期可以由开发人员或者运维人员可以提前设定。本申请实施例对于服务器如何通过监控线程循环遍历获取监控列表中的各个进程的方式并不加以限定。
在一种可能实现的方式中,在内核线程对监控列表中各个进程进行监控的过程中,服务器也可以在随机的时间点上通过目标进程的进程标识以及第一回调函数获取目标进程的第一权限等级,并不按照上述周期性的方式进行获取。
其中,通过目标进程的进程标识以及第一回调函数,从操作系统内核获取目标进程的第一权限等级的具体步骤,可以参照上述目标进程的初始权限等级获取,此处不再赘述。需要说明的是,此处获取第一权限等级与上述获取初始权限等级的不同之处在于,此时,服务器可以直接获取到监控列表中的目标进程的进程标识,不需要通过上述第二回调函数返回。
步骤306,获取目标进程的第二权限等级。
其中,该第二权限等级是上一次获取的目标进程的权限等级。
可选的,以上述按照周期性的获取目标进程的第一权限等级为例,服务器可以多次获取到目标进程的第一权限等级,第二权限等级可以是服务器在上述获取的目标进程的第一权限等级之前一次获取到的该目标进程的权限等级。例如,在按照上述监控列表进行循环监控各个进程的过程中,对目标进程可能已经多次获取到权限等级,比如,对监控列表循环监控了3次,服务器可能已经记录了3次目标进程的权限等级,在第四次循环监控过程中,当获取到第4次目标进程的权限等级时,此时第二权限等级可以是上述记录3次的目标进程的权限等级中,第三次循环时记录的目标进程的权限等级。
可选的,如果上述第一权限等级是上述监控列表进行循环监控各个进程的过程中,第一次获取到的目标进程的权限等级时,此处的第二权限等级还可以是目标进程创建时,服务器获取的目标进程的初始权限等级。
在一种可能实现的方式中,上述周期为2分钟时,服务器在监控目标进程的过程中,在第4分钟时刻,获取到了一次该目标进程的第一权限等级,则此处获取第二权限等级,可以是服务器可以在第2分钟时获取到的目标进程的第一权限等级。
步骤307,当第一权限等级高于第二权限等级时,将目标进程对应的程序确定为利用提权漏洞的程序。
可选的,服务器可以对获取到的第一权限等级和第二权限等级进行比较,当第一权限等级高于第二权限等级时,将目标进程对应的程序确定为利用提权漏洞的程序。即,服务器在监控目标进程的过程中,判断出目标进程的权限等级有提升,则可以将该目标进程对应的程序确定为利用了提权漏洞的提升了自身权限等级的程序。在一种可能实现的方式中,当一些程序自身可以根据自身运行需求,依次获取不同权限等级的权限时,为了防止误判断,服务器还可以判断获取到的第一权限等级是否高于系统权限等级。例如,该判断步骤中可以增加第一权限等级的条件限制,即,当第一权限等级高于第二权限等级,且第一权限等级高于上述表1中的系统权限等级时,服务器将目标进程对应的程序确定为利用提权漏洞的程序。也就是说,如果第一权限等级高于第二权限等级时,也高于系统权限等级,则可以将该目标进程对应的程序确定为利用了提权漏洞的提升了自身权限等级的程序。
在一种可能实现的方式中,服务器也可以根据第一权限等级高于第二权限等级的范围,确定目标进程对应的程序是否为利用提权漏洞的程序。例如,当第一权限等级高于第二权限等级的范围超过两个等级时,服务器可以确定目标进程对应的程序是利用了提权漏洞的程序。在上述表1中,当第一权限等级是中等权限等级,第二权限等级是不可信权限等级时,此时服务器可以得到第一权限等级与第二权限等级之间相差的范围为3个等级时,此时可以将目标进程对应的程序确定为利用提权漏洞的程序。
步骤308,在接收到进程创建组件返回的目标进程的进程标识时,若目标进程的父进程属于被监控的进程,则通过父进程的进程标识以及第一回调函数,从操作系统内核获取父进程的第三权限等级。
其中,第三权限等级是本次获取的父进程的权限等级。
在上述步骤302之后,在接收目标进程的进程标识时,服务器还可以确定该目标进程的创建者,当目标进程由另一进程(即目标进程的父进程)创建时,服务器可以判断目标进程的父进程是否处于监控列表中,如果目标进程的父进程处于监控列表中,则通过监控列表中的父进程的进程标识以及第一回调函数,从操作系统内核获取父进程的第三权限等级。其中,父进程的第三权限等级也是指本次获取到的父进程的权限等级。
例如,当监控列表中包含目标进程的父进程时,即该目标进程的创建是由该监控列表中的某个进程创建的子进程,服务器可以在获取目标进程的初始权限等级时,获取目标进程的父进程的第三权限等级。可选的,目标进程的父进程的第三权限等级也可以根据上述第一回调函数获得。例如,在目标进程的父进程创建目标进程时,服务器发现目标进程的父进程是在监控列表中的,者可以获取目标进程的父进程的进程标识,并结合第一回调函数从系统内核获取目标进程的父进程的权限等级,此时获取的权限等级便是第三权限等级。
步骤309,获取父进程的第四权限等级。
其中,该第四权限等级是上一次获取的父进程的权限等级。
当监控列表中存在目标进程的父进程时,说明服务器已经正在监控该父进程了,并且通过上述步骤,可以周期性的得到多次父进程的权限等级。
步骤310,当第三权限等级高于第四权限等级时,将父进程对应的程序确定为利用提权漏洞的程序。
可选的,服务器也可以对上述获取的第三权限等级以及第四权限等级进行比较,当第三权限等级高于第四权限等级时,将目标进程的父进程对应的程序确定为利用提权漏洞的程序。即,当目标进程创建时,如果此时目标进程的父进程的第三权限等级高于第四权限等级,为了防止该目标进程的创建是由于父进程利用提权漏洞已经提升自身权限等级至预设权限等级后,创建的与自身拥有相同权限等级的进程,因此,可以通过获取父进程的第三权限等级与之前获取父进程的权限等级(第四权限等级)进行比较,从而确定目标进程的创建是不是由于父进程利用提权漏洞提升了自身等级权限后,创建的拥有等于或者高于预设权限等级的进程。
例如,服务器获取的目标进程的父进程的第三权限等级是上述表1中的系统权限等级,此时,服务器获取到的目标进程的父进程的第四权限等级是表1中低权限等级,那么,此时服务器可以得知目标进程的父进程的第四权限等级低于目标进程的父进程的第三权限等级,可以将该目标进程的父进程对应的程序确定为利用提权漏洞的程序。可选的,服务器确定第三权限等级高于第四权限等级时,还可以仿照步骤307中描述的,通过两者之间的等级相差范围来确定,此处不再赘述。
步骤311,若目标进程的父进程属于被监控的进程,则获取第五权限等级。
其中,第五权限等级是父进程的权限等级。
在上述步骤302之后,接收目标进程的进程标识时,服务器还可以确定该目标进程的创建者,当目标进程是由其父进程创建的子进程时,服务器可以判断目标进程的父进程是否处于监控列表中,如果目标进程的父进程处于监控列表中,则可以获取目标进程的父进程的权限等级。
可选的,本步骤中的第五权限等级也可以是上述步骤308中的第三权限等级。
步骤312,当父进程的第五权限等级低于目标进程的初始权限等级时,将父进程对应的程序确定为利用提权漏洞的程序。
在一种可能实现的方式中,服务器也可以对上述获取目标进程的初始权限等级与第五权限等级进行比较,当第五权限等级低于初始权限等级时,将父进程对应的程序确定为利用提权漏洞的程序。
在本申请实施例中,如果一个低权限等级的进程(即父进程)利用提权漏洞,通过进程创建组件创建了一个高权限等级的进程(即子进程),则通过上述步骤301至步骤308无法准确检测出这种提权漏洞的利用行为。为了避免这种利用提权漏洞的行为的漏检测,在本申请实施例中,当一个子进程被新创建时,除了获取该子进程的初始权限等级,以判断是否对该子进程进行监控之外,还获取该子进程对应的父进程的权限等级,如果父进程的权限等级低于子进程的权限等级,则说明父进程在创建子进程的过程中利用了提权漏洞,此时,服务器可以将父进程对应的程序确定为利用提权漏洞的程序。
例如,服务器获取的目标进程的初始权限等级是上述表1中的系统权限等级,此时,服务器获取到的目标进程的父进程的第五权限等级是表1中低权限等级,那么,此时服务器可以得知目标进程的父进程的第五权限等级低于目标进程的初始权限等级,可以将该目标进程的父进程对应的程序确定为利用提权漏洞的程序。可选的,服务器确定初始权限等级高于第五权限等级时,还可以仿照步骤307中描述的,通过两者之间的等级相差范围来确定,此处不再赘述。
可选的,当服务器通过动态检测系统检测出某程序为利用了提权漏洞的程序时,此时该动态检测系统还可以生成检测结果,服务器将检测结果发送给后台终端,使得安全运营人员可以得知该信息,进一步对该程序进行处理等。可选的,服务器还可以将检测结果发送给用户的终端,也使得用户得知该程序拥有利用提权漏洞的风险。请参考图4,其示出了本申请实施例涉及的一种检测结果的界面示意图。如图4所示,其中包含了程序名401,详细信息402,检测结果403。图4指示,本次对程序名为965F***31AB的程序进行检测的结果为提权漏洞利用,安全管理人员可以点击详细信息402查看检测过程以及提权漏洞利用的结果,从而可以针对该程序设计防护措施。
请参考图5,其示出了本申请实施例涉及的一种程序的检测结果的示意图。如图5所示,其示出了服务器中运行为965F***31AB的程序之后的检测结果。对比图4,我们可以发现,本申请实施例提供的利用提权漏洞的程序的确定方法,预先通过虚拟的沙箱系统对该程序进行检测,从而避免直接使用该程序后,出现利用提权漏洞的结果,即可以预测程序是否利用了提权漏洞。
需要说明的是,在本申请实施例中,服务器也可以直接采用获取到的令牌等级值确定第一进程对应的程序是否为利用提权漏洞的程序,从而省略上述通过表1获取令牌等级值对应的权限等级的步骤。
综上所述,从进程创建组件获取目标进程的进程标识,进程创建组件用于创建新进程;在对目标进程进行监控的过程中,通过目标进程的进程标识以及第一回调函数,从系统内核获取目标进程的第一权限等级;获取第二权限等级,第二权限等级是上一次获取的、目标进程的权限等级;当第一权限等级高于第二权限等级时,将目标进程对应的程序获取为利用提权漏洞的程序。本申请通过从进程创建组件获取目标进程的进程标识,根据进程标识从系统内核获取目标进程的权限等级,通过先后两次获取到的权限等级确定目标进程对应的程序是否利用了提权漏洞,该过程不需要监控系统中的各种提权行为,而是从进程的权限变化判断哪些进程利用了提权漏洞,提高了对利用提权漏洞的程序进行检测的准确性和检测效率。
可选的,上述步骤中通过目标进程的进程标识以及第一回调函数从系统内核获取目标进程的第一权限等级,可以替换为,通过目标进程的进程标识以及第一回调函数从操作系统内核获取第一进程的用户名信息以及用户安全标识符(Security Identifier,SID)信息。此时,该第一回调函数中还可以包含GetSecurityUserInfo函数。可选的,服务器通过第一回调函数从操作系统内核获取第一进程的用户名信息以及用户SID信息步骤可以如下:
服务器可以将目标进程的进程标识作为第一回调函数中包含的PsLookupProcessByProcessId函数的函数参数输入,从而使得服务器先通过第一回调函数中的PsLookupProcessByProcessId函数获取到目标进程的内核进程块。之后,服务器可以将目标进程的内核进程块作为第一回调函数中包含的PsReferencePrimaryToken函数的函数参数输入,从而使得服务器可以通过第一回调函数中的PsReferencePrimaryToken函数获取到目标进程的授权令牌。服务器可以将目标进程的授权令牌和又一个系统宏参数一起作为第一回调函数中包含的SeQueryInformationToken函数的函数参数输入,从而使得服务器可以通过第一回调函数中的SeQueryInformationToken函数获取到目标进程当前的进程权限值。服务器可以将目标进程的进程权限值作为第一回调函数中包含的GetSecurityUserInfo函数的函数参数输入,从而使得服务器可以通过第一回调函数中的GetSecurityUserInfo函数获取到目标进程的用户信息(包含用户名信息以及用户SID信息)。其中,该又一个系统宏参数是获取用户信息时,第一回调函数采用的参数;例如,此处的系统宏参数可以是SeQueryInformationToken函数采用的TokenStatistics参数。
用户信息结构体如下:
服务器可以通过判断得到的用户名信息以及用户SID信息,确定目标进程对应的程序是否为利用提权漏洞的程序。在一种可能是实现的方式中,当服务器获取到的用户名信息是系统(SYSTEM)、网络服务(NETWORK SERVICE)、本地服务(LOCAL SERVICE)等,且与之前获取到的用户名信息不同时,服务器可以确定目标进程对应的程序为利用了提权漏洞的程序。在一种可能实现的方式中,服务器获取到的用户SID信息是以字符串“S-1-5-18”开头的,且与之前获取到的用户名信息不同时,服务器也可以确定目标进程对应的程序为利用了提权漏洞的程序。在一种可能实现的方式中,服务器也可以通过获取的用户名信息以及用户SID信息一起判断,本申请实施例对此并不加以限定。可选的,上述步骤301至步骤312中,服务器采用的获取进程权限等级的方式,也可以适用于此处提供的两种方式,例如,上述的周期性获取、父进程的权限等级获取等方式,此处不再赘述。
在一种可能实现的方式中,以在服务器中将用户终端侧发送过来的样本程序,在该动态检测系统中运行,创建生成第一进程,且第一进程后续还创建了一个第二进程为例,请参考图6,其示出了本申请实施例提供的一种利用提权漏洞的程序的确定方法的方法流程图。如图6所示,该利用提权漏洞的程序的确定方法可以包括如下几个步骤。
步骤601,创建内核线程。
在运行动态检测系统的服务器的内核层中,可以通过PsCreateSystemThread函数在该动态检测系统中创建一个内核线程(即上述图3所示实施例中的监控线程),从而对后续在该动态检测系统中运行程序所产生的各个进程进行监控。
步骤602,在进程创建组件中,通过PsSetCreateProcessNotifyRoutine函数注册第二回调函数。
其中,第二回调函数可以将进程创建组件中创建的新进程的进程标识返回给服务器。
步骤603,样本程序通过进程创建组件创建进程。
即,该动态检测系统中运行样本程序时,该样本程序可以调用进程创建组件在运行过程中可以创建进程。可选的,创建的进程还可以创建子进程。
步骤604,进程创建组件通过第二回调函数向服务器返回进程的进程标识。
进程创建组件中注册的第二回调函数,可以将样本程序创建的进程的进程标识返回给服务器。例如,当样本程序创建第一进程时,第二回调函数可以返回第一进程的进程标识。
步骤605,根据进程的进程标识以及第一回调函数,从操作系统内核获取进程的初始权限等级。
其中,该第一回调函数也可以是根据系统API函数,注册在内核层中的。服务器可以根据接收到的进程标识以及第一回调函数计算该进程的初始权限等级。此处可以参照上述实施例中步骤302中,初始权限等级的获取。
步骤606,判断进程的初始权限等级是否低于系统权限等级,若是,进入步骤607,否则结束。
服务器可以判断进程的初始权限等级是否低于系统权限等级,当该进程的初始权限等级低于系统权限等级时,对该进程执行步骤607。以样本程序创建的第一进程为例,当第一进程的初始权限等级低于系统权限等级时,则对第一进程执行步骤607,当第一进程的初始权限等级不低于系统权限等级时,则忽略第一进程,即,并不对第一进程是否利用提权漏洞进行检测。
步骤607,将进程添加至监控列表中。
当判断出进程的初始权限等级低于系统权限等级时,服务器可以将该进程的进程标识添加至监控列表中。例如,若上述第一进程的权限等级低于系统权限等级,则服务器将第一进程的进程标识添加至监控列表中。
步骤608,通过内核线程监控上述监控列表中的各个进程。
服务器可以通过上述内核线程监控上述监控列表中的各个进程。例如,当监控列表中有上述第一进程时,内核线程可以持续监控该第一进程。
步骤609,获取进程的权限等级。
服务器可以按照监控列表中的各个进程的顺序,依次获取各个进程的权限等级,可选的,此处权限等级的获取,也可以采用类似于上述初始权限等级的获取方式,根据各个进程的进程标识以及第一回调函数,从系统内核中获取该进程的权限等级。
步骤610,获取上一次获取到的该进程的权限等级。
服务器还可以获取上一次获取到的该进程的权限等级,此处可以参照上述实施例中步骤306的相关描述,此处不再赘述。
步骤611,判断进程的权限等级是否提升到系统权限及以上。
服务器可以将获取的进程的权限等级,与上一次获取到的进程的权限等级进行比较。即,将步骤609中获取的进程的权限等级与步骤610中获取的进程的权限等级进行比较,得到两者之间的大小关系。如果步骤610中获取的进程的权限等级大于步骤609中获取的进程的权限等级,且提升到系统权限及以上时,说明第一进程的对应的样本程序利了用提权漏洞提升了自身的等级权限,此时执行步骤612,否则,继续返回步骤608。仍以监控列表中的第一进程为例,如果服务器判断第一进程的权限等级提升到系统权限及以上时,则执行步骤612,否则,返回步骤608,以继续监控上述监控列表中的下一个进程。
步骤612,将进程的对应的样本程序确定为利用提权漏洞的程序,上报信息。
服务器可以将上述进程的权限等级提升到系统权限及以上的判断结果进行上报,发送给安全管理人员,或者发送给用户,告知该样本程序存在提权漏洞的隐患等。
可选的,步骤613,在进程被创建后,获取该进程的父进程的进程标识。
如果一个进程是由其他进程(即父进程)创建的,服务器还可以获取该进程的父进程的进程标识。
步骤614,判断父进程的进程标识是否在监控列表中。
当服务器获取到该进程的父进程的进程标识时,可以判断父进程的进程标识是否在监控列表中。当父进程的进程标识在监控列表中时,执行步骤615,否则,并不对父进程执行后续步骤,结束流程。
步骤615,获取父进程的权限等级。
步骤616,获取上一次获取到的父进程的权限等级。
由于步骤615至步骤616的执行细节,与上述步骤609至步骤610的类似,此处不再赘述。
步骤617,判断父进程的权限等级是否提升到系统权限及以上。
服务器可以将步骤615中获取的父进程的权限等级与步骤616中获取的父进程的权限等级进行比较,得到两者之间的大小关系。如果步骤615中获取的父进程的权限等级大于步骤616中获取的父进程的权限等级,且提升到系统权限及以上时,说明父进程的对应的样本程序利了用提权漏洞提升了自身的等级权限,此时执行步骤618,否则,不执行操作,结束流程。
步骤618,将父进程的对应的样本程序确定为利用提权漏洞的程序,上报信息。
综上所述,本申请通过从进程创建组件获取进程的进程标识,根据进程标识从系统内核获取进程的权限等级,通过先后两次获取到的权限等级确定进程对应的程序是否利用了提权漏洞,该过程不需要监控系统中的各种提权行为,而是从进程的权限变化判断哪些进程利用了提权漏洞,提高了对利用提权漏洞的程序进行检测的准确性和检测效率。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
图7是本申请一示例性实施例示出的一种利用提权漏洞的程序的确定装置的结构方框图。该利用提权漏洞的程序的确定装置可以用于图1所示的服务器中,以执行图2或图3对应实施例所示的方法中的全部或者部分步骤。该利用提权漏洞的程序的确定装置可以包括如下模块:
进程标识获取模块701,用于从进程创建组件获取目标进程的进程标识,所述进程创建组件用于创建新进程。
第一权限等级获取模块702,用于在对所述目标进程进行监控的过程中,通过所述目标进程的进程标识以及第一回调函数,从操作系统内核获取所述目标进程的第一权限等级,所述第一权限等级是本次获取的所述目标进程的权限等级;
第二权限等级获取模块703,用于获取所述目标进程的第二权限等级,所述第二权限等级是上一次获取的所述目标进程的权限等级;
第一程序确定模块704,用于当所述第一权限等级高于所述第二权限等级时,将所述目标进程对应的程序确定为利用提权漏洞的程序。
可选的,所述第一权限等级获取模块702,包括:内核进程块获取单元,授权令牌获取单元,令牌等级值获取单元以及第一权限等级获取单元;
所述内核进程块获取单元,用于根据所述目标进程的进程标识,获取所述目标进程的内核进程块;
所述授权令牌获取单元,用于根据所述内核进程块,获取所述目标进程的授权令牌;
所述令牌等级值获取单元,用于根据所述目标进程的授权令牌和系统宏参数,获取所述目标进程的令牌等级值;所述系统宏参数是获取所述令牌等级值时,所述第一回调函数采用的令牌等级参数;
所述第一权限等级获取单元,用于将所述目标进程的令牌等级值对应的权限等级获取为所述目标进程的第一权限等级。
可选的,所述装置还包括:
回调函数注册模块,用于所述进程标识获取模块从进程创建组件获取目标进程的进程标识之前,向所述进程创建组件注册第二回调函数;
所述进程标识获取模块701,用于接收所述进程创建组件创建所述目标进程时,通过所述第二回调函数返回的所述目标进程的进程标识。
可选的,所述装置还包括:第三权限等级获取模块,第四权限等级获取模块以及第二程序确定模块;
所述第三权限等级获取模块,用于在所述进程标识获取模块接收到所述进程创建组件返回的所述目标进程的进程标识时,若所述目标进程的父进程属于被监控的进程,则通过所述父进程的进程标识以及所述第一回调函数,从所述操作系统内核获取所述父进程的第三权限等级;所述第三权限等级是本次获取的所述父进程的权限等级;
所述第四权限等级获取模块,用于获取所述父进程的第四权限等级,所述第四权限等级是上一次获取的所述父进程的权限等级;
所述第二程序确定模块,用于当所述第三权限等级高于所述第四权限等级时,将所述父进程对应的程序确定为利用提权漏洞的程序。
可选的,所述装置还包括:初始权限等级获取模块以及监控模块;
所述初始权限等级获取模块,用于在对所述目标进程进行监控之前,通过所述目标进程的进程标识以及所述第一回调函数,从所述操作系统内核获取所述目标进程的初始权限等级;
所述监控模块,用于当所述目标进程的初始权限等级低于预设权限等级时,执行所述对所述目标进程进行监控的步骤。
可选的,所述装置还包括:第五权限等级获取模块以及第三程序确定模块;
所述第五权限等级获取模块,用于若所述目标进程的父进程属于被监控的进程,则获取第五权限等级,所述第五权限等级是所述父进程的权限等级;
所述第三程序确定模块,用于当所述第五权限等级低于所述目标进程的初始权限等级时,将所述父进程对应的程序确定为利用提权漏洞的程序。
可选的,所述预设权限等级是系统权限对应的权限等级。
综上所述,从进程创建组件获取目标进程的进程标识,进程创建组件用于创建新进程;在对目标进程进行监控的过程中,通过目标进程的进程标识以及第一回调函数,从系统内核获取目标进程的第一权限等级;获取第二权限等级,第二权限等级是上一次获取的、目标进程的权限等级;当第一权限等级高于第二权限等级时,将目标进程对应的程序获取为利用提权漏洞的程序。本申请通过从进程创建组件获取目标进程的进程标识,根据进程标识从系统内核获取目标进程的权限等级,通过先后两次获取到的权限等级确定目标进程对应的程序是否利用了提权漏洞,该过程不需要监控系统中的各种提权行为,而是从进程的权限变化判断哪些进程利用了提权漏洞,提高了对利用提权漏洞的程序进行检测的准确性和检测效率。
需要说明的是:上述实施例提供的装置在执行上述步骤时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与上述利用提权漏洞的程序的确定方法的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图8是本申请一个示例性实施例提供的一种计算机设备的结构示意图。所述计算机设备800包括中央处理单元(CPU)801、包括随机存取存储器(RAM)802和只读存储器(ROM)803的系统存储器804,以及连接系统存储器804和中央处理单元801的系统总线805。所述计算机设备800还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(I/O系统)806,和用于存储操作系统812、应用程序813和其他程序模块814的大容量存储设备807。
所述基本输入/输出系统806包括有用于显示信息的显示器808和用于用户输入信息的诸如鼠标、键盘之类的输入设备809。其中所述显示器808和输入设备809都通过连接到系统总线805的输入输出控制器810连接到中央处理单元801。所述基本输入/输出系统806还可以包括输入输出控制器810以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器810还提供输出到显示屏、打印机或其他类型的输出设备。
所述大容量存储设备807通过连接到系统总线805的大容量存储控制器(未示出)连接到中央处理单元801。所述大容量存储设备807及其相关联的计算机可读介质为计算机设备800提供非易失性存储。也就是说,所述大容量存储设备807可以包括诸如硬盘或者CD-ROM驱动器之类的计算机可读介质(未示出)。
所述计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EPROM、EEPROM、闪存或其他固态存储其技术,CD-ROM、DVD或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知所述计算机存储介质不局限于上述几种。上述的系统存储器804和大容量存储设备807可以统称为存储器。
计算机设备800可以通过连接在所述系统总线805上的网络接口单元811连接到互联网或者其它网络设备。
所述存储器还包括一个或者一个以上的程序,所述一个或者一个以上程序存储于存储器中,中央处理器801通过执行该一个或一个以上程序来实现本申请上述各个实施例提供的方法中,由服务器执行的全部或者部分步骤。
在一个示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括计算机程序(指令)的存储器,上述程序(指令)可由计算机设备的处理器执行以完成本申请各个实施例所示的方法的全部或者部分步骤。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。
Claims (13)
1.一种利用提权漏洞的程序的确定方法,其特征在于,所述方法包括:
从进程创建组件获取目标进程的进程标识,所述进程创建组件用于创建新进程;
在对所述目标进程进行监控的过程中,根据所述目标进程的进程标识,从操作系统内核获取所述目标进程的内核进程块;
根据所述内核进程块获取所述目标进程的授权令牌;
根据所述目标进程的授权令牌和系统宏参数,通过第一回调函数从所述操作系统内核获取所述目标进程的令牌等级值;所述系统宏参数是获取所述令牌等级值时,所述第一回调函数采用的令牌等级参数;
将所述目标进程的令牌等级值对应的权限等级获取为所述目标进程的第一权限等级,所述第一权限等级是本次获取的所述目标进程的权限等级;
获取所述目标进程的第二权限等级,所述第二权限等级是已通过所述目标进程的进程标识以及第一回调函数获取到的所述目标进程的权限等级中,获取时间距离所述第一权限等级的获取时间最近的一个;
当所述第一权限等级高于所述第二权限等级时,将所述目标进程对应的程序确定为利用提权漏洞的程序。
2.根据权利要求1所述的方法,其特征在于,所述从进程创建组件获取目标进程的进程标识之前,还包括:
向所述进程创建组件注册第二回调函数;
所述从进程创建组件获取目标进程的进程标识,包括:
接收所述进程创建组件创建所述目标进程时,通过所述第二回调函数返回的所述目标进程的进程标识。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在接收到所述进程创建组件返回的所述目标进程的进程标识时,若所述目标进程的父进程属于被监控的进程,则通过所述父进程的进程标识以及所述第一回调函数,从所述操作系统内核获取所述父进程的第三权限等级;所述第三权限等级是本次获取的所述父进程的权限等级;
获取所述父进程的第四权限等级,所述第四权限等级是上一次获取的所述父进程的权限等级;
当所述第三权限等级高于所述第四权限等级时,将所述父进程对应的程序确定为所述利用提权漏洞的程序。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在对所述目标进程进行监控之前,通过所述目标进程的进程标识以及所述第一回调函数,从所述操作系统内核获取所述目标进程的初始权限等级;
当所述目标进程的初始权限等级低于预设权限等级时,执行所述对所述目标进程进行监控的步骤。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
若所述目标进程的父进程属于被监控的进程,则获取第五权限等级,所述第五权限等级是所述父进程的权限等级;
当所述第五权限等级低于所述目标进程的初始权限等级时,将所述父进程对应的程序确定为所述利用提权漏洞的程序。
6.根据权利要求4或5所述的方法,其特征在于,所述预设权限等级是系统权限对应的权限等级。
7.一种利用提权漏洞的程序的确定装置,其特征在于,所述装置包括:
进程标识获取模块,用于从进程创建组件获取目标进程的进程标识,所述进程创建组件用于创建新进程;
第一权限等级获取模块,包括:第一获取子模块,第二获取子模块,第三获取子模块以及第四获取子模块;
所述第一获取子模块,用于在对所述目标进程进行监控的过程中,根据所述目标进程的进程标识,从操作系统内核获取所述目标进程的内核进程块;
所述第二获取子模块,用于根据所述内核进程块获取所述目标进程的授权令牌;
所述第三获取子模块,用于根据所述目标进程的授权令牌和系统宏参数,通过第一回调函数从所述操作系统内核获取所述目标进程的令牌等级值;所述系统宏参数是获取所述令牌等级值时,所述第一回调函数采用的令牌等级参数;
所述第四获取子模块,用于将所述目标进程的令牌等级值对应的权限等级获取为所述目标进程的第一权限等级,所述第一权限等级是本次获取的所述目标进程的权限等级;
第二权限等级获取模块,用于获取所述目标进程的第二权限等级,所述第二权限等级是已通过所述目标进程的进程标识以及第一回调函数获取到的所述目标进程的权限等级中,获取时间距离所述第一权限等级的获取时间最近的一个;
第一程序确定模块,用于当所述第一权限等级高于所述第二权限等级时,将所述目标进程对应的程序确定为利用提权漏洞的程序。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:回调函数注册模块;
所述回调函数注册模块,用于在所述进程标识获取模块从进程创建组件获取目标进程的进程标识之前,向所述进程创建组件注册第二回调函数;
所述进程标识获取模块,用于,
接收所述进程创建组件创建所述目标进程时,通过所述第二回调函数返回的所述目标进程的进程标识。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括:第三权限等级获取模块,第四权限等级获取模块以及第二程序确定模块;
所述第三权限等级获取模块,用于在接收到所述进程创建组件返回的所述目标进程的进程标识时,若所述目标进程的父进程属于被监控的进程,则通过所述父进程的进程标识以及所述第一回调函数,从所述操作系统内核获取所述父进程的第三权限等级;所述第三权限等级是本次获取的所述父进程的权限等级;
所示第四权限等级获取模块,用于获取所述父进程的第四权限等级,所述第四权限等级是上一次获取的所述父进程的权限等级;
所述第二程序确定模块,用于当所述第三权限等级高于所述第四权限等级时,将所述父进程对应的程序确定为所述利用提权漏洞的程序。
10.根据权利要求7所述的装置,其特征在于,所述装置还包括:初始权限等级获取模块以及监控模块;
所述初始权限等级获取模块,用于在对所述目标进程进行监控之前,通过所述目标进程的进程标识以及所述第一回调函数,从所述操作系统内核获取所述目标进程的初始权限等级;
所述监控模块,用于当所述目标进程的初始权限等级低于预设权限等级时,执行所述对所述目标进程进行监控的步骤。
11.根据权利要求10所述的装置,其特征在于,所述装置还包括:第五权限等级获取模块以及第三程序确定模块;
所述第五权限等级获取模块,用于若所述目标进程的父进程属于被监控的进程,则获取第五权限等级,所述第五权限等级是所述父进程的权限等级;
所述第三程序确定模块,用于当所述第五权限等级低于所述目标进程的初始权限等级时,将所述父进程对应的程序确定为所述利用提权漏洞的程序。
12.一种计算机设备,其特征在于,所述计算机设备包含处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如权利要求1至6任一所述的利用提权漏洞的程序的确定方法。
13.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如权利要求1至6任一所述的利用提权漏洞的程序的确定方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910600936.0A CN111191226B (zh) | 2019-07-04 | 2019-07-04 | 利用提权漏洞的程序的确定方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910600936.0A CN111191226B (zh) | 2019-07-04 | 2019-07-04 | 利用提权漏洞的程序的确定方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111191226A CN111191226A (zh) | 2020-05-22 |
CN111191226B true CN111191226B (zh) | 2023-12-01 |
Family
ID=70710709
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910600936.0A Active CN111191226B (zh) | 2019-07-04 | 2019-07-04 | 利用提权漏洞的程序的确定方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111191226B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111783082A (zh) * | 2020-06-08 | 2020-10-16 | Oppo广东移动通信有限公司 | 进程的追溯方法、装置、终端和计算机可读存储介质 |
CN113221103B (zh) * | 2021-05-08 | 2022-09-20 | 山东英信计算机技术有限公司 | 一种容器安全防护方法、系统及介质 |
CN113556336B (zh) * | 2021-07-19 | 2022-02-11 | 北京丁牛科技有限公司 | 提权漏洞攻击的检测方法及装置、电子设备 |
CN113918955A (zh) * | 2021-09-29 | 2022-01-11 | 杭州默安科技有限公司 | 一种linux内核漏洞权限提升检测阻断方法和系统 |
CN115033889B (zh) * | 2022-06-22 | 2023-10-31 | 中国电信股份有限公司 | 非法提权检测方法和装置、存储介质、计算机设备 |
CN116956310B (zh) * | 2023-09-21 | 2023-12-29 | 腾讯科技(深圳)有限公司 | 漏洞防护方法、装置、设备和可读存储介质 |
CN117271269A (zh) * | 2023-11-20 | 2023-12-22 | 北京微步在线科技有限公司 | 一种进程权限检测方法、装置、电子设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105593870A (zh) * | 2013-10-04 | 2016-05-18 | 比特梵德知识产权管理有限公司 | 用于恶意软件检测的复杂评分 |
CN106650438A (zh) * | 2015-11-04 | 2017-05-10 | 阿里巴巴集团控股有限公司 | 一种恶意程序检测的方法及装置 |
GB201806289D0 (en) * | 2018-04-18 | 2018-05-30 | Avecto Ltd | Protecting a computer device from escalation of privilege attacks |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8006088B2 (en) * | 2005-08-18 | 2011-08-23 | Beyondtrust Corporation | Methods and systems for network-based management of application security |
US20090271863A1 (en) * | 2006-01-30 | 2009-10-29 | Sudhakar Govindavajhala | Identifying unauthorized privilege escalations |
US8918884B2 (en) * | 2011-01-11 | 2014-12-23 | The United States Of America, As Represented By The Secretary Of Commerce | K-zero day safety |
US9197660B2 (en) * | 2013-03-15 | 2015-11-24 | Mcafee, Inc. | Generic privilege escalation prevention |
US10824725B2 (en) * | 2017-03-21 | 2020-11-03 | Mcafee, Llc | Automatic detection of software that performs unauthorized privilege escalation |
-
2019
- 2019-07-04 CN CN201910600936.0A patent/CN111191226B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105593870A (zh) * | 2013-10-04 | 2016-05-18 | 比特梵德知识产权管理有限公司 | 用于恶意软件检测的复杂评分 |
CN106650438A (zh) * | 2015-11-04 | 2017-05-10 | 阿里巴巴集团控股有限公司 | 一种恶意程序检测的方法及装置 |
GB201806289D0 (en) * | 2018-04-18 | 2018-05-30 | Avecto Ltd | Protecting a computer device from escalation of privilege attacks |
Also Published As
Publication number | Publication date |
---|---|
CN111191226A (zh) | 2020-05-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111191226B (zh) | 利用提权漏洞的程序的确定方法、装置、设备及存储介质 | |
CN109831420B (zh) | 内核进程权限的确定方法及装置 | |
US10235524B2 (en) | Methods and apparatus for identifying and removing malicious applications | |
US10375101B2 (en) | Computer implemented techniques for detecting, investigating and remediating security violations to IT infrastructure | |
US10419499B2 (en) | Method and system for application security evaluation | |
JP6326497B2 (ja) | 動的アプリケーションセキュリティ検証 | |
EP3511824A1 (en) | Method and system of providing artifacts in a cloud computing environment | |
JP5802848B2 (ja) | モバイル環境用のトロイの木馬化されたアプリケーション(アプリ)を特定するためのコンピュータ実装方法、非一時コンピュータ読み取り可能な媒体およびコンピュータシステム | |
US8806639B2 (en) | Contextual virtual machines for application quarantine and assessment method and system | |
US11962601B1 (en) | Automatically prioritizing computing resource configurations for remediation | |
CN102037472B (zh) | 软件信誉的建立和监控系统及方法 | |
US10963583B1 (en) | Automatic detection and protection against file system privilege escalation and manipulation vulnerabilities | |
CN110049028B (zh) | 监控域控管理员的方法、装置、计算机设备及存储介质 | |
CN112995236B (zh) | 一种物联网设备安全管控方法、装置和系统 | |
WO2021121382A1 (en) | Security management of an autonomous vehicle | |
CN109818972B (zh) | 一种工业控制系统信息安全管理方法、装置及电子设备 | |
KR102382889B1 (ko) | 프로세스 정보를 사용하여 웹쉘을 탐지하는 방법 및 시스템 | |
CN115906184B (zh) | 一种控制进程访问文件的方法、装置、介质及电子设备 | |
CN117032894A (zh) | 容器安全状态检测方法、装置、电子设备及存储介质 | |
US20170171224A1 (en) | Method and System for Determining Initial Execution of an Attack | |
CN111953633A (zh) | 基于终端环境的访问控制方法及访问控制装置 | |
CN115544509A (zh) | 进程安全检测方法、装置、电子设备及存储介质 | |
CN115455414A (zh) | 一种安全检测方法和装置 | |
CN112528286B (zh) | 终端设备安全检测方法、关联设备以及计算机程序产品 | |
CN109714371B (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 |