CN109271781B - 一种基于内核的应用程序获取超级权限行为检测方法与*** - Google Patents
一种基于内核的应用程序获取超级权限行为检测方法与*** Download PDFInfo
- Publication number
- CN109271781B CN109271781B CN201811066101.3A CN201811066101A CN109271781B CN 109271781 B CN109271781 B CN 109271781B CN 201811066101 A CN201811066101 A CN 201811066101A CN 109271781 B CN109271781 B CN 109271781B
- Authority
- CN
- China
- Prior art keywords
- kernel
- log
- system call
- cve
- super
- 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
Images
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
- 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/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- 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)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供一种基于内核的应用程序获取超级权限行为检测方法,其步骤为:1)采集待检测安卓应用运行中产生的内核***调用日志;2)通过日志,判断待检测安卓应用是否已获取超级权限,如果成立则继续执行,否则结束分析;3)通过日志,分析***调用呈现的顺序关系、频度关系以及参数的特殊赋值情况,与4个CVE特征比对,分析出待检测安卓应用使用的获取超级权限方法。
Description
技术领域
本发明属于信息安全技术领域,涉及获取超级权限的行动识别,特别涉及一种基于内核的应用程序获取超级权限行为检测方法与***。
背景技术
随着移动通信技术的迅速发展,智能手机的使用用户越来越多,且人均每天花费在智能终端设备上的时间也与日俱增。据不完全统计,人均每天使用智能终端设备时间超过两小时,而其中安卓操作***占有全球移动智能终端设备***86.2%的份额。因此,安卓操作***的使用群体的规模极其巨大,而且越来越多的用户开始在智能终端设备上完成支付、自拍等涉及经济利益和个人隐私的行为,其蕴含的信息量和价值也是众所周知,操作***安全一直是智能终端设备使用者最关注的事情,手机支付漏洞、手机远程定位、手机信息泄露等问题屡见不鲜。安卓操作***成为最易受到攻击的操作***,近年仅曝光出的可以进行信息泄露的漏洞都超过百个,近三百个可以提升权限的漏洞。受影响群体之广难以估计,但就目前为止,能够较好检测和防御操作***攻击的方法,是基于内核漏洞的识别以及补丁修复的方法。同时,操作***漏洞的挖掘和防御一般是基于黑客的人工挖掘和漏洞发掘***的暴力发掘以及操作***的提供者的补丁修复。
综上所述,对于当前诸多基于安卓操作***漏洞攻击的问题,一种解决方法是基于内核日志对内核进行监控,一旦有非法操作便进行报警和防护。目前已经有一些方法来对安卓操作***的攻击行动进行识别的方法了。其中一类是人工判断根据攻击者所采用的漏洞。因为安卓操作***的漏洞的复杂性,以及攻击者采用的攻击手段的复杂和迷惑性,难以自动的判断。这种人工识别标定的方法有很大的局限性:基于人工经验标定攻击者采用的操作***漏洞方法:依赖标定者的经验,需要耗费大量的人力才能从海量的内核变化中找到特征,需要耗费大量的时间难以广泛的。
发明内容
为了克服上述现有技术的缺点,本发明的目的在于提供一种基于内核的应用程序获取超级权限行为检测方法与***,使用的主要方法是UID的判断和/system/目录的监控,可以自动分析内核日志,省去了大量的人力成本,有较高的分析速度;同时提出了根据内核日志对攻击者使用的漏洞进行判断的方法,具有准确率高、分析速度快等优势。
为了实现上述目的,本发明采用的技术方案是:
一种基于内核的应用程序获取超级权限行为检测方法,包括如下步骤:
1)采集待检测安卓应用程序运行中产生的内核***调用日志;
2)通过内核***调用日志,判断***是否已被获取超级权限,如果是则继续执行,否则结束分析;
3)将内核***调用日志与CVE漏洞的特征比对,分析出该安卓应用使用的获取超级权限方法。
所述内核***调用日志是由经过特定修改的安卓***产生的,该待检测应用程序使用的***调用记录包括:***调用时间戳、***调用的进程UID、***调用名、***调用参数、***调用返回值。
所述的“特定修改的安卓***”指的是修改安卓***的内核,使其能够监控所有***调用,并输出所述的内核***调用日志。
所述判断***是否已被获取超级权限是通过UID检测或***目录检测实现的:
所述UID检测指,遍历日志,若发现存在UID为0的记录,则判断***已被获取超级权限;
所述***目录检测指,遍历日志,若发现存在对/system目录进行写入操作的记录,则判断***已被获取超级权限。
所述步骤3)中,收集公开的CVE漏洞的POC,提取POC特征点,与内核***调用日志做匹配,如果匹配成功,说明待检测应用程序使用了相应CVE作为获取超级权限的方法,其中,所述POC特征点指,POC中重复出现的***调用的顺序、POC中重复出现的***调用的数量以及POC中***调用使用的特殊参数中的任意一种或者多种组合。
本发明还提供了一种基于内核的应用程序获取超级权限行为检测装置,包括:
交互接口,用于用户输入需要分析的内核***调用日志;
超级权限判断单元,用于判断输入的内核***调用日志是否存在获取超级权限行为;
CVE检测单元,用于将内核***调用日志与从CVE漏洞的POC中提取到的POC特征点比对,输出日志中使用的CVE方法。
所述超级权限判断单元包括:
UID检测模块,用于检测安卓***中待测程序的UID,具体用于检测日志中是否存在UID为0的记录,如果为0则表明安卓***已经被获取超级权限了。其原因是,安卓***是按UID来区分进程的权限的,UID为0的进程拥有最高的权限,可以对安卓操作***及其他程序的内容进行任意的修改;
***目录检测模块,用于对/system/目录进行监控,具体地,用于检测日志中是否存在写***目录行为的记录:遍历待测应用产生的内核日志,查询是否有对/system/目录的写入操作,如果有写入操作则表明的安卓操作***已经被获取超级权限了。其原因是,安卓操作***在正常运行的情况下/system/目录是只对用户进程开放读权限,只有拥有最高权限(即uid为0)的进程才有写权限。如果有写入操作,则表明测试应用进行了获取超级权限操作,虽然没有使自己的UID变为0,但利用其他最高权限的进程修改了/system/的内容。
所述CVE检测单元对内核日志进行分析,依据***调用呈现的顺序关系和频度关系以及参数的特殊赋值情况,对应用采用的CVE漏洞进行判断,具体包括:
***调用顺序检测模块,用于检测日志中***调用的顺序,是否包含CVE特征的顺序;
***调用数量统计模块,用于统计日志中每种***调用的数量,是否与CVE特征中的***调用数量在一个数量级;
***调用参数检测模块,用于检测日志中***调用的参数,是否使用了CVE特征中的特殊参数。
通过对待测应用产生的内核日志分析,依据***调用呈现的顺序关系和频度关系以及参数的特殊赋值情况,来表征待测应用所使用的***漏洞的特征。这样做的原因是当利用某种漏洞来对***进行入侵时,需要较为严格的条件,攻击者通过有规律地不断地调用多个***调用并赋予它们特定的参数,来构造这个条件。这也给了我们依据去识别获取超级权限应用具体采用哪种漏洞,从而对漏洞的CVE编号进行识别。
与现有技术相比,本发明的有益效果是:
1、突破了现有方法只能基于UID来判断安卓***是否被获取超级权限的限制。
本发明创新性地的采用对/system/目录的监控,将存在写操作,作为***被获取超级权限的判断依据。本发明采用的方式比传统的方式准确率更高,因为考虑到了某些漏洞可以不修改uid就能在/system/目录写入su程序的情况。且监控/system/目录能够更有指向性地判断***是否已经被获取超级权限。
2、突破了现有方法只能依据人工对获取超级权限利用的漏洞进行标定的限制。
本发明创新性地使用***调用呈现的顺序关系和频度关系以及参数的特殊赋值情况,来表征获取超级权限所使用的***漏洞的特征。我们所使用的特征,不仅能准确判断每个漏洞,而且特征区分明显、误报率低。并设计了相应的***可以用电脑进行自动化分析和处理,解决了现有方法依赖人工经验和大量时间的问题。
附图说明
图1为本发明的整体流程图。
图2为本发明获取超级权限判断子***流程图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面结合附图和实施例详细说明本发明的实施方式。
本***的核心部分主要由两个单元组成,分别是获取超级权限判断单元和CVE检测单元。***的输入数据是安装在安卓***上的待测应用运行时产生的内核日志。值得说明是,此处的内核日志主要是***调用的使用情况。
首先,将上述数据输入获取超级权限判断单元,该子***包括UID检测模块,通过遍历日志中调用***调用进程的uid,来对***是否已经被获取超级权限进行判断;该子***还包括***目录检测模块,用于对UID检测模块的补充,根据/system/目录是否有写入操作来对***是否已经被获取超级权限进行判断。
接着,如果获取超级权限判断子***判断该***已经被获取超级权限,则将日志送入CVE检测单元,***调用呈现的顺序关系和频度关系以及参数的特殊赋值情况,来表征获取超级权限所使用的***漏洞的特征。最后依据特征对这次获取超级权限行动利用的***漏洞进行判断给出分析结果。该方法使用电脑进行分析,打破了传统基于人工经验和人工识别进行判断的模式。因此,本发明方法,不仅具有很高的准确率,还大大的减少了分析所用的时间,同时也降低了分析这种行动所消耗的人力成本。因此,本发明提出的方法相比于现有方法依赖人工经验和大量时间进行识别,能够更准确地更快地识别获取超级权限行动所利用的漏洞。
本发明中各个单元的详细介绍如下:
1、获取超级权限判断单元
主要实现输入内核日志的预判断,通过处理输入的内核日志,判断安卓操作***是否已经被获取超级权限了,这将对下一阶段的判断提供重要的信息,如果***没有被获取超级权限,那么获取超级权限所利用的漏洞的识别将失去意义。
获取超级权限判断单元包括UID检测模块和***目录检测模块。
其中,UID检测模块需要得到待检测的应用的UID,判断其是否为0,如果为0则表明安卓***已经被获取超级权限,则将这次输入的日志判定为操作***已经被获取超级权限的内核日志。
获取超级权限判断子***还包括***目录检测模块,用于监控是否有对/system/目录的写入操作,如果有写入操作则表明的安卓操作***已经被获取超级权限了。如果该目录下进行过写入操作则将这次输入的日志判定为操作***已经被获取超级权限的内核日志。
值得注意的是,UID检测模块与***目录检测模块是功能并行但是架构串行的形式。在功能上都起到了判断日志是否为***已经被获取超级权限的日志,但是在架构上由于检测UID为0的速度高于检测***目录是否有写入的速度。但是检测***目录是否有写操作的策略的准确率和鲁棒性高于检测UID为0的策略
2、CVE检测单元
主要功能是对已判断为操作***已经被获取超级权限的内核日志进行分析,依据***调用呈现的顺序关系和频度关系以及函数的特殊赋值情况,对采用的漏洞的CVE编号进行判断。本***主要对:CVE-2014-3153、CVE-2015-1805、CVE-2015-3636、CVE-2016-5195,四个最有可能使用的CVE漏洞进行识别。
对于CVE-2014-3153漏洞识别方法如下:
FUTEX_WAIT_REQUEUE_PI和FUTEX_CMP_REQUEUE_PI存在漏洞:
●futex_requeue_pi(&A,&B,A)将A上的等待进程链表转移到B上
●futex_requeue_pi(&B,&B,B)将B上的等待进程链表转移到B上。
●Linux内核实现时没有考虑第一个和第二个参数相等的情况,使转移等待进程链表的过程中出现了UAF漏洞
正常编程时,futex的两个uaddr参数是不相同的地址;如果相同了,则说明正在利用该漏洞。
在内核监控***中对该***调用的两个参数监控,如果相同则判定为CVE-2014-3153。
对于CVE-2015-1805漏洞识别方法如下:
该漏洞的核心思路就是想办法触发redo的逻辑。
第一次要保证失败,也就是说需要把iov_base的地址设置成不可写,第二次要成功,就要保证iov_base的地址有效.
所以这里可以通过创建竞争关系的线程,调用mmap/munmap函数来实现.
因此日志中必定会出现大量成对的对同一地址的mmap和munmap操作,以此作为特征筛选日志即可。
对于CVE-2015-3636漏洞识别方法如下:
内核监控子***对sys_connect***调用监控,检查sockaddr参数的sa_famliy成员的值,如果值为AF_UNSPEC,则判定为cve-2015-3636,输出到日志中。
对于CVE-2016-5195漏洞识别方法如下:
利用该漏洞来实现获取超级权限,本质是修改只读文件,加入自己的代码逻辑。通过漏洞机制不断对指定内存区域写入预先准备好的内容。
在日志中必定会记录到大量成对的lseek和write向/proc/xxxx/mem写入数据,以此作为特征筛选日志即可。
最后,对潜在的获取超级权限行为做了如下判别方法筛选带有可疑关键字的进程名、可执行文件的日志,可疑关键字如获取超级权限、exploit等,还有已经分析出来的常用的获取超级权限进行名,如krmain(kingroot的root工具包生成的进程名,被多款获取超级权限应用使用),n14pwfvaq8(github上cve3636的POC使用的进程名)。
在实际的情况中,当利用某种漏洞来对***进行入侵时,需要较为严格的条件,攻击者通过不断的调用某个函数或者某几个函数或者对某个函数赋可能暴露***漏洞的值来构造***漏洞暴露所需要的条件。而实际情况中能做到获取超级权限安卓操作***的漏洞又是屈指可数的。
本发明就是考虑到了上述情况,因此依据内核日志中记录的***调用呈现的顺序关系和频度关系以及函数的特殊赋值情况,对采用的漏洞的CVE编号进行判断。
首先,利用UID检测和***目录检测,检测的安卓***中安装的程序是否有UID为0的程序,然后检测是否有对/system/目录的写入操作。进行输入的日志是否为操作***已经被获取超级权限的内核日志的判断。
然后,对判断为输入的日志为操作***已经被获取超级权限的内核日志进行CVE识别,依据内核日志中记录的***调用呈现的顺序关系和频度关系以及函数的特殊赋值情况,对采用的漏洞的CVE编号进行判断。
最后,输出内核日志记录的获取超级权限行为所利用的cve漏洞,以及判断获取超级权限成功记录前后本进程、父进程和子进程中的重要操作。还可以对潜在的获取超级权限行为进行报警。
综上,本发明提供的一种基于内核日志的安卓获取超级权限行为分析***,过对内核函数调用记录,以调用行为特征作为依据,分析安卓获取超级权限行为所利用的CVE漏洞。本发明可来对安卓操作***的攻击行动进行识别;也可用于判断操作***是否安全和漏洞分析领域内。
Claims (4)
1.一种基于内核的应用程序获取超级权限行为检测方法,其特征在于,包括如下步骤:
1)采集待检测安卓应用程序运行中产生的内核***调用日志,所述内核***调用日志是由经过特定修改的安卓***产生的,该待检测应用程序使用的***调用记录包括:***调用时间戳、***调用的进程UID、***调用名、***调用参数、***调用返回值,所述特定修改的安卓***是指修改安卓***的内核,使其能够监控所有***调用,并输出所述的内核***调用日志;
2)通过内核***调用日志,判断***是否已被获取超级权限,如果是则继续执行,否则结束分析,所述判断***是否已被获取超级权限是通过UID检测或***目录检测实现的:
所述UID检测指,遍历日志,若发现存在UID为0的记录,则判断***已被获取超级权限;
所述***目录检测指,遍历日志,若发现存在对/system目录进行写入操作的记录,则判断***已被获取超级权限;
3)将内核***调用日志与CVE漏洞的特征比对,分析出该安卓应用使用的获取超级权限方法。
2.根据权利要求1所述基于内核的应用程序获取超级权限行为检测方法,其特征在于,所述步骤3)中,收集公开的CVE漏洞的POC,提取POC特征点,与内核***调用日志做匹配,如果匹配成功,说明待检测应用程序使用了相应CVE作为获取超级权限的方法,其中,所述POC特征点指,POC中重复出现的***调用的顺序、POC中重复出现的***调用的数量以及POC中***调用使用的特殊参数中的任意一种或者多种组合。
3.一种基于内核的应用程序获取超级权限行为检测装置,其特征在于,包括:
交互接口,用于用户输入需要分析的内核***调用日志,所述内核***调用日志是由经过特定修改的安卓***产生的,该待检测应用程序使用的***调用记录包括:***调用时间戳、***调用的进程UID、***调用名、***调用参数、***调用返回值,所述特定修改的安卓***是指修改安卓***的内核,使其能够监控所有***调用,并输出所述的内核***调用日志;
超级权限判断单元,用于判断输入的内核***调用日志是否存在获取超级权限行为;
CVE检测单元,用于将内核***调用日志与从CVE漏洞的POC中提取到的POC特征点比对,输出日志中使用的CVE方法;
其中所述超级权限判断单元包括:
UID检测模块,用于检测日志中是否存在UID为0的记录;
***目录检测模块,用于检测日志中是否存在写***目录行为的记录
4.根据权利要求3所述基于内核的应用程序获取超级权限行为检测装置,其特征在于,所述CVE检测单元包括:
***调用顺序检测模块,用于检测日志中***调用的顺序,是否包含CVE特征的顺序;
***调用数量统计模块,用于统计日志中每种***调用的数量,是否与CVE特征中的***调用数量在一个数量级;
***调用参数检测模块,用于检测日志中***调用的参数,是否使用了CVE特征中的特殊参数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811066101.3A CN109271781B (zh) | 2018-09-13 | 2018-09-13 | 一种基于内核的应用程序获取超级权限行为检测方法与*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811066101.3A CN109271781B (zh) | 2018-09-13 | 2018-09-13 | 一种基于内核的应用程序获取超级权限行为检测方法与*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109271781A CN109271781A (zh) | 2019-01-25 |
CN109271781B true CN109271781B (zh) | 2020-11-17 |
Family
ID=65188910
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811066101.3A Active CN109271781B (zh) | 2018-09-13 | 2018-09-13 | 一种基于内核的应用程序获取超级权限行为检测方法与*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109271781B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112199672A (zh) * | 2020-10-10 | 2021-01-08 | 北京微步在线科技有限公司 | 账号权限提升行为的检测方法、装置及可读存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102981835B (zh) * | 2012-11-02 | 2015-06-10 | 福州博远无线网络科技有限公司 | 安卓应用程序永久获取Root权限的方法 |
US9197670B2 (en) * | 2013-10-08 | 2015-11-24 | Centrify Corporation | Method and apparatus for creating conditional windows process tokens |
CN103593605B (zh) * | 2013-10-24 | 2016-11-09 | 复旦大学 | 一种基于权限使用行为的安卓平台应用程序动态分析*** |
CN103996007A (zh) * | 2014-05-29 | 2014-08-20 | 诸葛建伟 | Android应用权限泄露漏洞的测试方法及*** |
CN105184166B (zh) * | 2015-10-21 | 2018-02-13 | 南京大学 | 基于内核的安卓程序实时行为分析方法及*** |
-
2018
- 2018-09-13 CN CN201811066101.3A patent/CN109271781B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN109271781A (zh) | 2019-01-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109933984B (zh) | 一种最佳聚类结果筛选方法、装置和电子设备 | |
CN106572117B (zh) | 一种WebShell文件的检测方法和装置 | |
CN111931166B (zh) | 基于代码注入和行为分析的应用程序防攻击方法和*** | |
CN110417778B (zh) | 访问请求的处理方法和装置 | |
CN112685737A (zh) | 一种app的检测方法、装置、设备及存储介质 | |
US20200193031A1 (en) | System and Method for an Automated Analysis of Operating System Samples, Crashes and Vulnerability Reproduction | |
CN104182688A (zh) | 基于动态激活及行为监测的Android恶意代码检测装置和方法 | |
CN106570399B (zh) | 一种跨App组件间隐私泄露的检测方法 | |
CN110929264B (zh) | 漏洞检测方法、装置、电子设备及可读存储介质 | |
US20200012793A1 (en) | System and Method for An Automated Analysis of Operating System Samples | |
WO2017071148A1 (zh) | 基于云计算平台的智能防御*** | |
CN110414222B (zh) | 一种基于组件关联的应用隐私泄露问题检测方法和装置 | |
CN111064745A (zh) | 一种基于异常行为探测的自适应反爬方法和*** | |
KR102180098B1 (ko) | 악성코드 모니터링 및 사용자 단말 제어 기능을 수행하는 악성코드 탐지 시스템 | |
CN109815702B (zh) | 软件行为的安全检测方法、装置及设备 | |
CN112818352B (zh) | 数据库的检测方法及装置、存储介质及电子装置 | |
CN109727027A (zh) | 账户识别方法、装置、设备及存储介质 | |
CN112149124A (zh) | 一种基于异构信息网络的安卓恶意程序检测的方法和*** | |
CN111049828B (zh) | 网络攻击检测及响应方法及*** | |
CN108959860B (zh) | 一种检测Android***是否被破解和破解记录获取方法 | |
CN111783092A (zh) | 面向安卓应用程序间通信机制的恶意攻击检测方法及*** | |
CN109271781B (zh) | 一种基于内核的应用程序获取超级权限行为检测方法与*** | |
CN112699369A (zh) | 一种通过栈回溯检测异常登录的方法及装置 | |
CN108427882B (zh) | 基于行为特征抽取的安卓软件动态分析检测法 | |
CN112685255A (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 |