CN110598407A - 一种形式化的发现可能引发攻击风险的代码漏洞的分析方法 - Google Patents
一种形式化的发现可能引发攻击风险的代码漏洞的分析方法 Download PDFInfo
- Publication number
- CN110598407A CN110598407A CN201810605379.7A CN201810605379A CN110598407A CN 110598407 A CN110598407 A CN 110598407A CN 201810605379 A CN201810605379 A CN 201810605379A CN 110598407 A CN110598407 A CN 110598407A
- Authority
- CN
- China
- Prior art keywords
- executed
- searching
- hidden
- file
- codes
- 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
- 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/56—Computer malware detection or handling, e.g. anti-virus arrangements
-
- 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/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了形式化的发现可能引发攻击风险的代码漏洞的分析方法,涉及信息技术,特别是信息安全领域,具体包括搜索隐藏执行序,隐藏代码和搜索特权指令的方法。应用本发明提供的方案,可以防止类似脏牛漏洞等攻击,也能够防止文件中出现不该出现的指令而导致运行时越权操作。
Description
技术领域
本申请涉及信息技术领域,特别涉及一种形式化的“发现可能引发攻击风险的代码漏洞”的分析方法。
背景技术
现有技术中,存在通过引发一种特定的执行序分支,进而非法的获得root权限的攻击方式。例如,不久前发现的脏牛(Dirty Cow)漏洞和大脏牛(Huge Dirty Cow)漏洞,就是上述攻击方式的一种具体实现方式。由于其不需要传统的缓冲区溢出等方式,因此更具有隐蔽性,更加难以被现有技术中基于模式识别的防攻击方法,例如杀毒软件、漏洞检测工具等识别,因此具有更大的危害。
发明内容
针对现有技术中难以发现某些隐藏的特定执行序分支可能导致攻击者可以非法获得root权限的缺陷,本发明公开了一种发现潜在可能引发攻击风险的代码漏洞的分析方法,特别的,涉及一种形式化的发现可能引发攻击风险的代码漏洞的分析方法。
在本发明的一种具体实现方式中,一种搜索隐藏执行序的方法,其特征在于:在编译阶段统计程序所有的涉及分支的执行序;在运行时记录所有执行到的分支执行序,并与编译阶段统计结果作比对,以此确定哪些分支执行序没有执行到,没有执行到的执行序,就是隐藏执行序。
在本发明的一种具体实现方式中,一种搜索隐藏代码的方法,其特征在于:在编译阶段统计程序所有的代码;在运行时记录所有执行到代码,并与编译阶段统计结果作比对,以此确定哪些代码没有执行到,没有执行到的代码,就是隐藏代码。
在本发明的一种具体实现方式中,一种搜索特权指令的方法,其特征在于:在使用者指定的文件中,搜索使用者指定的机器指令,如果发现,将指令位置反馈给使用者,反之,提示没有相应指令。
本发明的技术方案可以实现以下技术效果:
通过搜索隐藏执行序的方法,可以发现程序中常态下不会出现,而在攻击状态下会导致攻击的执行序,如Dirty Cow。
通过搜索隐藏代码的方法,可以发现程序中不需要外部激励,而通过特定条件就能启动攻击的漏洞,如逻辑炸弹。
通过搜索特定指令的方法,可以发现指定文件中是否存在指定机器指令,以防止文件中出现不该出现的指令而导致运行时越权操作。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1:语法树节点记录语句信息示意图
图2:示例程序执行后可能出现的全部分支执行序示意图
图3:示例程序某个语句对应节点的示意图
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
以下通过具体的实施方式来具体的说明本发明的技术内容。
实施例1
搜索隐藏执行序小工具实施方案
在编译的语法分析过程中,记录下每一条语句所在源文件的文件号、在源文件中的行号、以及在每一行中对应的语句号,一套优选的方案是,将这些信息记录在每条语句形成的语法树根节点上。图1表示了一种通过语法树根节点记录上述信息的可选的方式。
图1最左侧的子树描述了该子树对应文件号0中,位于第55行的第0号语句,这些信息记录在图1最左侧的子树的根节点中。图1中间位置和最后侧的子树记录了其对应语句的信息。
每条语句经编译生成的汇编指令,都对应一套文件号、行号和语句号,这些定位信息和汇编指令一起,被保存在目标文件A中,情景如下所示:
文件号:0 行号:55 语句号:0
语句A经编译生成的汇编指令
文件号:1 行号:18 语句号:0
语句B经编译生成的汇编指令
文件号:1 行号:18 语句号:1
语句C经编译生成的汇编指令
目标文件A中的汇编指令和定位信息,最终被保存在可执行文件中。
除此之外,还要在编译阶段确定并记录下,程序执行时可能出现的全部分支执行序,比如有如下源程序:
01:int main()
02:{
03: int a=4,b=3,c=2,d=1;
04: int m=10,n=5;
05: if(a>b)
06: {
07: m=n;
08: }
09: if(a>c)
10: {
11: n=m;
12: }
13: else if(c>d)
14: {
15: m=n;
16: }
17: else
18: {
19: n=m;
20: }
21:numl:
22: switch(a)
23: {
24: case 3:
25: m=n;
26: break;
27: case 4:
28: a=a+1;
29: break;
30: case 5:
31: a=a+b;
32: break;
33: case 6:
34: a=a-1;
35: break;
36: default:
37: break;
38: }
39: return 0;
40:}
图2表示了上述示例程序执行后可能出现的全部分支执行序示意图。上述示例程序中,标号为05、09、13、17、24、27、30、33的代码处可能产生分支,图2右侧的结构的与上述程序可能产生的分支相对应。
以标号09处的结构为例,图3具体展示了该结构。其中,“00 09 00”分别表示的是分支语句所在文件号,分支语句所在行号,分支语句在行中的语句号;其下有两个分支,其中,为0的分支代表分支语句执行结果为假时的执行序;为1的分支代表分支语句执行结果为真时的执行序。
搜索可执行文件中隐藏执行序的方法是:在可执行程序加载并执行时,将EFLAGES寄存器中的TF为置为1,这样可执行程序每执行一条指令,都会产生一个调试异常,内核中的调试异常服务程序,可以根据可执行程序中的定位信息,确定当期执行的指令是否属于分支指令,如果不是,不予处理,如果是,确定其属于哪个文件、哪个行号、哪条语句,并以二叉树结构记录下来。等到可执行程序的执行测试完毕后,执行过的分支语句,就会形成一棵二叉树,用这个二叉树,和编译期间形成的全部分支语句形成的二叉树,就可以确定哪些执行序没有执行到,这些没有执行到的分支执行序,就是隐藏执行序。
实施例2
搜索隐藏代码小工具实施方案
在编译的语法分析过程中,记录下每一条语句所在源文件的文件号、在源文件中的行号、以及在每一行中对应的语句号,一套优选的方案是,将这些信息记录在每条语句形成的语法树根节点上。图1表示了一种通过语法树根节点记录上述信息的可选的方式。
图1最左侧的子树描述了该子树对应文件号0中,位于第55行的第0号语句,这些信息记录在图1最左侧的子树的根节点中。图1中间位置和最后侧的子树记录了其对应语句的信息。
每条语句经编译生成的汇编指令,都对应一套文件号、行号和语句号,这些定位信息和汇编指令一起,被保存在目标文件A中,情景如下所示:
文件号:0 行号:55 语句号:0
语句A经编译生成的汇编指令
文件号:1 行号:18 语句号:0
语句B经编译生成的汇编指令
文件号:1 行号:18 语句号:1
语句C经编译生成的汇编指令
目标文件A中的汇编指令和定位信息,最终被保存在可执行文件中。
搜索可执行文件中隐藏代码的方法是:在可执行程序加载并执行时,将EFLAGES寄存器中的TF为置为1,这样可执行程序每执行一条指令,都会产生一个调试异常,内核中的调试异常服务程序,可以根据可执行程序中的定位信息,确定当时执行的指令,属于哪个文件、哪个行号、哪条语句,并记录下来。等到可执行程序的执行测试完毕后,系统就可以统计出所有执行过的指令对应语句的文件号、行号和语句号,用这些信息和编译期间形成的全部定位信息作比对,就可以确定哪些语句没有执行过,这些没有执行过的语句,就是隐藏代码。
实施例3
搜索特定指令小工具实施方案
为使用者提供人机交互界面,允许使用者输入需要扫描的机器指令以及目标文件,根据输入,小工具在指定目标文件中搜索相应机器指令是否存在,如果存在,确定指令位置并显示给用户,否则,提示用户相应指令不存在。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (3)
1.一种搜索隐藏执行序的方法,其特征在于:在编译阶段统计程序所有的涉及分支的执行序;在运行时记录所有执行到的分支执行序,并与编译阶段统计结果作比对,以此确定哪些分支执行序没有执行到,没有执行到的执行序,就是隐藏执行序。
2.一种搜索隐藏代码的方法,其特征在于:在编译阶段统计程序所有的代码;在运行时记录所有执行到代码,并与编译阶段统计结果作比对,以此确定哪些代码没有执行到,没有执行到的代码,就是隐藏代码。
3.一种搜索特权指令的方法,其特征在于:在使用者指定的文件中,搜索使用者指定的机器指令,如果发现,将指令位置反馈给使用者,反之,提示没有相应指令。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810605379.7A CN110598407A (zh) | 2018-06-12 | 2018-06-12 | 一种形式化的发现可能引发攻击风险的代码漏洞的分析方法 |
PCT/CN2019/085598 WO2019237849A1 (zh) | 2018-06-12 | 2019-05-06 | 一种形式化的发现可能引发攻击风险的代码漏洞的分析方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810605379.7A CN110598407A (zh) | 2018-06-12 | 2018-06-12 | 一种形式化的发现可能引发攻击风险的代码漏洞的分析方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110598407A true CN110598407A (zh) | 2019-12-20 |
Family
ID=68841739
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810605379.7A Pending CN110598407A (zh) | 2018-06-12 | 2018-06-12 | 一种形式化的发现可能引发攻击风险的代码漏洞的分析方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110598407A (zh) |
WO (1) | WO2019237849A1 (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103246708A (zh) * | 2013-04-16 | 2013-08-14 | 康佳集团股份有限公司 | 一种基于智能终端的多屏互动搜索方法及其系统 |
CN106445803A (zh) * | 2016-08-17 | 2017-02-22 | 中国航空工业集团公司西安飞行自动控制研究所 | 一种安全关键嵌入式软件目标码覆盖率分析方法 |
CN107679402A (zh) * | 2017-09-28 | 2018-02-09 | 四川长虹电器股份有限公司 | 恶意代码行为特征提取方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8312518B1 (en) * | 2007-09-27 | 2012-11-13 | Avaya Inc. | Island of trust in a service-oriented environment |
CN107193590A (zh) * | 2017-05-10 | 2017-09-22 | 北京海杭通讯科技有限公司 | 一种基于android的防root方法 |
-
2018
- 2018-06-12 CN CN201810605379.7A patent/CN110598407A/zh active Pending
-
2019
- 2019-05-06 WO PCT/CN2019/085598 patent/WO2019237849A1/zh active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103246708A (zh) * | 2013-04-16 | 2013-08-14 | 康佳集团股份有限公司 | 一种基于智能终端的多屏互动搜索方法及其系统 |
CN106445803A (zh) * | 2016-08-17 | 2017-02-22 | 中国航空工业集团公司西安飞行自动控制研究所 | 一种安全关键嵌入式软件目标码覆盖率分析方法 |
CN107679402A (zh) * | 2017-09-28 | 2018-02-09 | 四川长虹电器股份有限公司 | 恶意代码行为特征提取方法 |
Non-Patent Citations (1)
Title |
---|
ROYAL, PAUL等: ""PolyUnpack: Automating the Hidden-Code Extraction of Unpack-Executing Malware"", 《IEEE》 * |
Also Published As
Publication number | Publication date |
---|---|
WO2019237849A1 (zh) | 2019-12-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7409718B1 (en) | Method of decrypting and analyzing encrypted malicious scripts | |
KR102306568B1 (ko) | 컴퓨터 시스템의 제어 흐름 무결성의 프로세서 트레이스 기반 집행 | |
CN101438529B (zh) | 经由动态转换的主动计算机恶意软件保护 | |
EP3401827A1 (en) | Method and system of static and dynamic data flow analysis | |
CN100483434C (zh) | 病毒识别方法及装置 | |
US8117660B2 (en) | Secure control flows by monitoring control transfers | |
US8549635B2 (en) | Malware detection using external call characteristics | |
JP5042315B2 (ja) | ソースコード内のセキュリティ脆弱性の検出 | |
EP2958044B1 (en) | A computer implemented method and a system for controlling dynamically the execution of a code | |
US20090049425A1 (en) | Code Obfuscation By Reference Linking | |
US20080289042A1 (en) | Method for Identifying Unknown Virus and Deleting It | |
EP3495978B1 (en) | Method for detecting vulnerabilities in software | |
CN115510430A (zh) | 一种函数指针及其数据依赖的识别与保护方法、装置 | |
US20150121508A1 (en) | Method, a computer program and apparatus for analyzing symbols in a computer | |
US8738931B1 (en) | Method for determining and protecting proprietary source code using mnemonic identifiers | |
CN109299610B (zh) | 安卓系统中不安全敏感输入验证识别方法 | |
CN110598407A (zh) | 一种形式化的发现可能引发攻击风险的代码漏洞的分析方法 | |
Qiao et al. | Effective function recovery for cots binaries using interface verification | |
Nasim et al. | Uncovering self code modification in Android | |
CN110516445A (zh) | 反检测恶意代码的识别方法、装置及存储介质 | |
US20240095360A1 (en) | Risc-v and o-cfi mechanism-based defense method and apparatus for code reuse attacks | |
CN105868633B (zh) | 一种恶意软件感染后宿主软件中恶意代码识别方法 | |
CN113158147B (zh) | 一种基于母体融合的代码混淆方法 | |
CN112989345B (zh) | 一种威胁处置方法及框架 | |
CN112507292B (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 |