CN107193590A - 一种基于android的防root方法 - Google Patents
一种基于android的防root方法 Download PDFInfo
- Publication number
- CN107193590A CN107193590A CN201710327672.7A CN201710327672A CN107193590A CN 107193590 A CN107193590 A CN 107193590A CN 201710327672 A CN201710327672 A CN 201710327672A CN 107193590 A CN107193590 A CN 107193590A
- Authority
- CN
- China
- Prior art keywords
- file
- task
- setuid
- struct
- kernel thread
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44594—Unloading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
本发明提供了一种基于android的防root方法,包括以下步骤:S1、在操作***内核启动时,注册一个LSM模块,注册内核线程;S2、在进程空间中,调用setuid/setgid函数,判断原始程序是否存在升权行为,如果存在,则将task_struct放到全局链表中,并启动内核线程;S3、在内核线程中,在全局链表中找到task_struct结构体,找到进程对应的可执行文件和带有setuid权限的文件;S4、停止进程,释放进程资源,删除步骤S3中的可执行文件和带有setuid权限的文件。本发明的有益效果是:可以避免修改库和用户层程序及修改属性来隐藏文件的问题,有利于搜索非法植入手机的隐藏文件。
Description
技术领域
本发明涉及防root方法,尤其涉及一种基于android的防root方法。
背景技术
基于android的防root方法,传统的方案是启动一个native daemon,该程序周期性搜索/system/bin和/system/xbin下带有setuid权限标志位的文件.这种方案存在几个问题:
(1) 无法搜索非法植入手机的隐藏文件。通常隐藏文件的方法有修改文件权限;修改用户层查看文件工具,so库;通过insmod内核模块添加模块通过LSM钩子函数改变***调用;通过insmod内核模块在现有分区上做一个特殊文件***,将文件隐藏到伪坏块中等.而而通过搜索文件,无法找到通过这几种方法隐藏的文件。
(2) 无法避免非法程序将试图删除su文件的进程被杀死的风险.非法程序通过***LMK调用内核钩子查看谁在删除su文件,然后将该进程kill掉,这样无法通过用户进程防止这种技术。
(3) 为了及时发现非法可执行文件,需要尽可能搜索的间隔较短;为了避免放到非/system/bin和/system/xbin目录下,需要进行整个***范围内搜索,占用了大量***cpu,memory,io资源。
发明内容
为了解决现有技术中的问题,本发明提供了一种基于android的防root方法。
本发明提供了一种基于android的防root方法,包括以下步骤:
S1、在操作***内核启动时,注册一个LSM模块,注册内核线程;
S2、在进程空间中,调用setuid/setgid函数,判断原始程序是否存在升权行为,如果存在,则将task_struct放到全局链表中,并启动内核线程;
S3、在内核线程中,在全局链表中找到task_struct结构体,找到进程对应的可执行文件和带有setuid权限的文件;
S4、停止进程,释放进程资源,删除步骤S3中的可执行文件和带有setuid权限的文件。
作为本发明的进一步改进,在步骤S1中:注册一个LSM模块checkroot,赋值security_operations中的security_task_fix_setuid、task_setpgid函数接口;注册一个kernel thread。
作为本发明的进一步改进,在步骤S2中:在security_task_fix_setuid、task_setpgid中获取当前进程的task_struct结构体,判断原uid是否比现在的uid小,如果是则将该task_struct记录下来。
作为本发明的进一步改进,在步骤S3中:启动kernel thread,在kernel thread中通过步骤S2找到的task_struct结构体,查找进程打开的文件中带有setuid权限的文件对应的file_struct,根据file_struct找到文件的dentry和inode结构体。
作为本发明的进一步改进,直接在内核中stop掉有非法操作的进程并将进程占用的资源释放掉,并将步骤S3找到的文件删除。
本发明的有益效果是:可以避免修改库和用户层程序及修改属性来隐藏文件的问题,有利于搜索非法植入手机的隐藏文件。
附图说明
图1是本发明一种基于android的防root方法的示意图。
具体实施方式
下面结合附图说明及具体实施方式对本发明作进一步说明。
如图1所示,一种基于android的防root方法,通过内核钩子函数,内核线程相结合,在su程序setuid、setgid时(必须通过setuid、setgid等***调用来提权),判断该进程是否在升权,具体包括以下步骤:
S1、在kernel启动时,注册一个LSM模块,注册内核线程;
S2、在进程空间中,调用setuid/setgid函数,判断原始程序是否存在升权行为,如果存在,则将task_struct放到全局链表中,并启动内核线程;
S3、在内核线程中,在全局链表中找到task_struct结构体,找到进程对应的可执行文件和带有setuid权限的文件;
S4、停止进程,释放进程资源,删除步骤S3中的可执行文件和带有setuid权限的文件。
在步骤S1中:注册一个LSM模块checkroot,赋值security_operations中的security_task_fix_setuid、task_setpgid函数接口;注册一个kernel thread。
在步骤S2中:在security_task_fix_setuid、task_setpgid中获取当前进程的task_struct结构体,判断原uid是否比现在的uid小,如果是则将该task_struct记录下来。
在步骤S3中:启动kernel thread,在kernel thread中通过步骤S2找到的task_struct结构体,查找进程打开的文件中带有setuid权限的文件对应的file_struct,根据file_struct找到文件的dentry和inode结构体。
直接在内核中stop掉有非法操作的进程并将进程占用的资源释放掉,并将步骤S3找到的文件删除。
如图1所示,首先几个空间要区分开,kernel空间包含kernel启动,进程在内核运行***调用部分和内核线程。初始化部分是在kernel启动过程中,主要是初始化数据结构,注册security模块,注册内核线程;检测部分是在进程通过***调用软中断方式进入kernel空间后,判断原始uid,gid和要设置的uid,gid的关系;而检测失败后的操作是放在内核线程中处理。
本发明提供的基于android的防root方法,由于机制是在kernel中作判断,这样我们可以避免修改库和用户层程序及修改属性来隐藏文件的问题;对于非法杀死程序,作判断操作的是在非法进程内部,杀死的本进程就杀掉了非法进程本身。而该内核线程在selinux权限中不容许被用户层杀死;该机制只有在进程行为确实有问题才出发,不会无端消耗***资料。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
Claims (5)
1.一种基于android的防root方法,其特征在于,包括以下步骤:
S1、在操作***内核启动时,注册一个LSM模块,注册内核线程;
S2、在进程空间中,调用setuid/setgid函数,判断原始程序是否存在升权行为,如果存在,则将task_struct放到全局链表中,并启动内核线程;
S3、在内核线程中,在全局链表中找到task_struct结构体,找到进程对应的可执行文件和带有setuid权限的文件;
S4、停止进程,释放进程资源,删除步骤S3中的可执行文件和带有setuid权限的文件。
2.根据权利要求1所述的基于android的防root方法,其特征在于:在步骤S1中:注册一个LSM模块checkroot,赋值security_operations中的security_task_fix_setuid、task_setpgid函数接口;注册一个kernel thread。
3.根据权利要求2所述的基于android的防root方法,其特征在于:在步骤S2中:在security_task_fix_setuid、task_setpgid中获取当前进程的task_struct结构体,判断原uid是否比现在的uid小,如果是则将该task_struct记录下来。
4.根据权利要求3所述的基于android的防root方法,其特征在于:在步骤S3中:启动kernel thread,在kernel thread中通过步骤S2找到的task_struct结构体,查找进程打开的文件中带有setuid权限的文件对应的file_struct,根据file_struct找到文件的dentry和inode结构体。
5.根据权利要求4所述的基于android的防root方法,其特征在于:在步骤S4中:直接在内核中stop掉有非法操作的进程并将进程占用的资源释放掉,并将步骤S3找到的文件删除。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710327672.7A CN107193590A (zh) | 2017-05-10 | 2017-05-10 | 一种基于android的防root方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710327672.7A CN107193590A (zh) | 2017-05-10 | 2017-05-10 | 一种基于android的防root方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107193590A true CN107193590A (zh) | 2017-09-22 |
Family
ID=59872917
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710327672.7A Pending CN107193590A (zh) | 2017-05-10 | 2017-05-10 | 一种基于android的防root方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107193590A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019237849A1 (zh) * | 2018-06-12 | 2019-12-19 | 杨力祥 | 一种形式化的发现可能引发攻击风险的代码漏洞的分析方法 |
CN114691220A (zh) * | 2020-12-30 | 2022-07-01 | 网神信息技术(北京)股份有限公司 | 保护进程的方法、装置、电子设备、介质和程序产品 |
CN117908993A (zh) * | 2024-03-18 | 2024-04-19 | 麒麟软件有限公司 | 进程的limit修改方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030172109A1 (en) * | 2001-01-31 | 2003-09-11 | Dalton Christoper I. | Trusted operating system |
CN103699839A (zh) * | 2013-12-09 | 2014-04-02 | Tcl集团股份有限公司 | 一种内核级rootkit检测处理方法及*** |
-
2017
- 2017-05-10 CN CN201710327672.7A patent/CN107193590A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030172109A1 (en) * | 2001-01-31 | 2003-09-11 | Dalton Christoper I. | Trusted operating system |
CN103699839A (zh) * | 2013-12-09 | 2014-04-02 | Tcl集团股份有限公司 | 一种内核级rootkit检测处理方法及*** |
Non-Patent Citations (1)
Title |
---|
左玉丹: "基于SELinux的内核提权攻击防御技术研究", 《中国优秀硕士学位论文全文数据库》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019237849A1 (zh) * | 2018-06-12 | 2019-12-19 | 杨力祥 | 一种形式化的发现可能引发攻击风险的代码漏洞的分析方法 |
CN114691220A (zh) * | 2020-12-30 | 2022-07-01 | 网神信息技术(北京)股份有限公司 | 保护进程的方法、装置、电子设备、介质和程序产品 |
CN117908993A (zh) * | 2024-03-18 | 2024-04-19 | 麒麟软件有限公司 | 进程的limit修改方法 |
CN117908993B (zh) * | 2024-03-18 | 2024-05-17 | 麒麟软件有限公司 | 进程的limit修改方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102902909B (zh) | 一种防止文件被篡改的***和方法 | |
CN102930205A (zh) | 一种监测单元及方法 | |
US20070220061A1 (en) | Method and system for tracking an operation performed on an information asset with metadata associated therewith | |
CN102202062B (zh) | 一种实现访问控制的方法和装置 | |
CN103473501B (zh) | 一种基于云安全的恶意软件追踪方法 | |
CN102236764B (zh) | 用于Android***的抵御桌面信息攻击的方法和监控*** | |
CN102495989A (zh) | 一种基于主体标记的访问控制方法及*** | |
CN104112089A (zh) | 基于多策略融合的强制访问控制方法 | |
CN103699839A (zh) | 一种内核级rootkit检测处理方法及*** | |
US10783041B2 (en) | Backup and recovery of data files using hard links | |
CN103294950A (zh) | 一种基于反向追踪的高威窃密恶意代码检测方法及*** | |
CN102194079B (zh) | 文件访问过滤方法 | |
CN107193590A (zh) | 一种基于android的防root方法 | |
US9418232B1 (en) | Providing data loss prevention for copying data to unauthorized media | |
CN106228067A (zh) | 恶意代码动态检测方法及装置 | |
CN104063669A (zh) | 一种实时监测文件完整性的方法 | |
CN103218561A (zh) | 一种保护浏览器的防篡改方法和装置 | |
CN103440461B (zh) | 一种pdf格式文档安全审计方法 | |
CN102819717B (zh) | 一种文件保护处理的方法和装置 | |
US20100162349A1 (en) | Content protection device, content protection method, and computer readable medium | |
CN105550573B (zh) | 拦截捆绑软件的方法和装置 | |
CN111090857B (zh) | 防御恶意软件攻击文件的方法、计算机***以及记录介质 | |
CN107045605A (zh) | 一种实时度量方法及装置 | |
CN106682504B (zh) | 一种防止文件被恶意编辑的方法、装置及电子设备 | |
CN107871079A (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 | ||
AD01 | Patent right deemed abandoned |
Effective date of abandoning: 20210312 |
|
AD01 | Patent right deemed abandoned |