CN105184169A - Windows操作环境下基于插桩工具的漏洞检测方法 - Google Patents
Windows操作环境下基于插桩工具的漏洞检测方法 Download PDFInfo
- Publication number
- CN105184169A CN105184169A CN201510585330.6A CN201510585330A CN105184169A CN 105184169 A CN105184169 A CN 105184169A CN 201510585330 A CN201510585330 A CN 201510585330A CN 105184169 A CN105184169 A CN 105184169A
- Authority
- CN
- China
- Prior art keywords
- address
- target process
- instruction
- function
- leak
- 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/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 Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种Windows操作环境下基于插桩工具的漏洞检测方法。本发明为:当检测到目标进程执行函数调用指令时,保存下一指令地址,以及函数的返回地址;若目标进程的跳转目的地址对应的指令不是该函数的起始指令,则判定存在ROP漏洞;当检测到目标进程执行函数返回指令时,检测当前线程栈中的返回地址是否被存储过,若是,则判定存在缓冲区溢出漏洞;判断函数返回指令地址与所存储是否相同,若否,则保存该函数返回指令的地址,当检测到其被执行多次时,则判定目标进程存在ROP漏洞;基于函数调用接口打开预设被调试进程,再判断所述预设被调试进程能否打开目标进程,若否,则存在本地提权漏洞。本发明能够并发地对多个样本进行自动识别和检测。
Description
技术领域
本发明属于计算机领域,具体涉及一种在Windows操作环境下的基于插桩工具的漏洞检测。
背景技术
软件漏洞是造成蠕虫、木马等各类攻击逐渐猖獗的重要原因。近几年来,重大安全事件屡见不鲜,如2010年1月Google受Microsoft的极光漏洞影响,被黑客攻击,导致系统故障;2011年12月全球最大的中文IT社区CSDN被脱库,造成600万注册用户的个人信息被泄露。国家信息安全漏洞共享平台(ChinaNationalVulnerabilityDatabase)从2004年到2014收集的漏洞数据显示,只有在06年到08年间漏洞数量有所下降,从08年起,漏洞数量开始反弹,被曝光的漏洞不仅在数量上越来越多,其危害程度也在急速增长,由此带来的安全问题也会日益增多。
漏洞验证是归类于软件系统安全领域的黑盒测试,目标文件二进制级的测试通过对大量的漏洞样本文件的获取来完成,在测试过程中,将探针插入目标代码中来监控运行过程中是否有异常行为出现。Pin是目前国内外广泛采用的二进制动态插桩工具,其采用JIT(Just-In-Time)编译,通过在进程中插入探针实现对目标进程进行监控的目的。另一方面,动态污点分析技术(DynamicTaintAnalysis)被外界普遍采纳,其在代码动态运行过程中对利用软件漏洞的攻击行为进行探测,从而实现对漏洞文件样本的验证。
缓冲区溢出、本地提权和ROP这三类漏洞,是非常普遍、非常危险的漏洞,在各种操作系统、应用软件广泛存在,但是当前研究仅仅对一种漏洞进行分析处理,比较单一。同时,为保护互联网中用户的信息安全,国家安全部门以及企业随时都会捕获到大量的文件样本,仅仅依靠静态扫描或者人工分析文件样本会导致分析进度迟缓,特别是在当今如此复杂的网络环境下,海量的文件数据有分析需求,而单纯的手工分析只能处理有限的样本。另一方面,多数样本文件中的恶意代码隐藏极深,手工分析等方法无法准确地判断出文件中是否存在对软件漏洞的利用等恶意行为。因此,有必要提供一个稳定的自动化平台,用于动态执行过程中,快速且精确地验证文件中是否存在对漏洞的触发等恶意行为。
发明内容
本发明的发明目的在于:针对上述存在的问题,提供一种能检查多种类型的漏洞检测方法。
本发明的Windows操作环境下基于插桩工具的漏洞检测方法,能实现对缓冲区溢出漏洞、本地提权漏洞和ROP漏洞的检测。即对给定的漏洞样本文件,采用插桩工具(例如Inter公司的Pin技术)对样本动态运行过程中的指令进行实时反汇编,对目标指令(如call函数调用、ret函数返回等)执行前后插入相应处理函数来获得进程运行过程中的相应信息(如寄存器、内存分配状态、栈帧等),从而可以监控进程运行状态。其具体包括下列步骤:
当检测到目标进程执行函数调用指令时(例如通过检测目标进程调用call指令来判断是否执行函数调用指令),将下一指令的地址存入第一预设存储单元中(例如采用堆栈的方式进行存储),并且将当前被调用函数的返回地址存入第二预设存储单元中;
检查目标进程的跳转目的地址,若所述目的地址对应的指令不是被调用函数的起始指令,则判定目标进程存在ROP漏洞;
当检测到目标进程执行函数返回指令时(例如通过检测目标进程调用ret指令来判断是否执行函数返回指令),检测当前线程栈中的返回地址是否在第一预设存储单元中存在,若是,则判定目标进程存在缓冲区溢出漏洞;判断所述函数返回指令的地址与第二预设存储单元中的当前被调用函数的返回地址是否相同,若否,则保存所述函数返回指令的地址,当检测到该地址的函数返回指令被执行K(K≥2)次时,则判定目标进程存在ROP漏洞;针对缓冲区溢出漏洞,还可以通过检测是否存在未匹配到函数调用指令的函数返回指令来判定,例如,系统运行的指令存在未匹配到call指令的ret指令,则对应于该ret指令的目标进程存在缓冲区溢出漏洞。另外,针对ROP漏洞,还可以通过判断目标进程的提权指令地址和跳转目的地址是否在一个库来判定,即若两者不在同一个库(操作系统本身所构建的对应库),则认为目标进程存在ROP漏洞。
基于函数调用接口(API)打开预设被调试进程(例如可获取的已有漏洞样本),再判断所述预设被调试进程能否打开目标进程,若否,则目标进程存在本地提权漏洞。
综上所述,由于采用了上述技术方案,本发明的有益效果是:能够并发地对多个样本进行处理,对于满足缓冲区溢出,本地提权和ROP这三类漏洞的样本,能够自动进行识别和检测。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面结合实施方式,对本发明作进一步地详细描述。
实施例1
本发明所述的基于插桩工具的漏洞检测的具体实施为:
a)以挂起方式创建目标进程;
b)以调试模式附加到目标进程;
c)恢复目标进程运行直到内存管理动态链接库加载到进程空间并完成初始化再次挂起;
d)将内存管理动态链接库从进程空间中分离;
e)拷贝插桩启动例程到目标进程空间并将进程计数器指向该例程;
f)恢复目标进程运行;
g)加载插桩工具模块枚举(Pinvm.dll);
h)加载漏洞触发判定模块;
i)对目标进程进行插桩,并执行进程指令,生成漏洞检测报告。
上述步骤除步骤h外,均可采用任一惯用方式具体实现,步骤h中所涉及的漏洞出发判定模块是用来判定目标进程运行中是否触发了漏洞,漏洞所在位置以及漏洞类型。漏洞触发判定模块利用漏洞先验知识来判定目标进程在执行过程中是否存在漏洞,即遭受到漏洞攻击,其具体执行步骤如下:
1.缓冲区溢出漏洞触发判定:
缓冲区溢出型漏洞的判定原理可利用影子栈技术(ShadowStack),即当目标进程利用call指令调用函数时,将下一条指令地址存入第一影子栈中,当执行ret指令从当前被调用函数返回时检测当前线程栈中的返回地址是否与该影子栈中的返回地址相同,如不相同则可以判定目标程序存在缓冲区溢出漏洞;
例如:目标进程执行callMyPrintf(4010B0h)指令,将下一条指令地址(0x401023)存入当前线程栈中;漏洞触发判定模块检测到call指令时,将下一条指令地址(0x401023)存入第一影子栈中;当目标进程执行ret指令,即从MyPrintf函数中返回时,跳转到0x401023处;漏洞触发判定模块检测到ret指令时,从第一影子栈中取出对应返回地址与当前线程栈中的返回地址比对,当比对结果不一样时,可以判定当前目标进程存在缓冲区溢出漏洞。
2.ROP漏洞触发判定:
ROP是一种新型的基于代码复用技术的攻击,攻击者从已有的库或可执行文件中提取指令片段,构建恶意代码。本发明利用插桩工具对call,ret,jmp指令的完整性检测(动态监控)进行判定:
call:当识别到目标进程执行call指令时,将被执行函数的返回地址压入第二影子栈,然后检查目标进程的跳转目的地址。如果该目的地址所对应指令不是其所在的函数的起始指令,则判定目标进程存在ROP漏洞;例如,执行callMyPrintf(4010B0h)指令时,将被执行函数(MyPrintf)的返回地址压入第二影子栈,再判断目标进程的调准目的地址所对应的指令是否为MyPrintf的起始指令,若否,则判定当前目标进程存在ROP漏洞。
ret:当识别到目标进程执行ret指令时,从第二影子栈取出压入的返回地址,比较两者是否一致,若否,则记录该ret指令的内存地址,若该内存地址的ret指令被执行多次(大于或等于2次),则判定当前目标进程存在ROP漏洞;
jmp:提权目标进程的jmp指令地址和跳转目的地址,如果不在一个库,则判定当前目标进程存在ROP漏洞。
3.本地提权漏洞触发判定:
利用APIopenprocessstoken去打开预设被调试进程,由于低权限进程不能打开高权限进程的限制,若预设被调试进程打开目标进程失败,那么就可以判定当前目标进程存在漏洞样本提权。
以上所述,仅为本发明的具体实施方式,本说明书中所公开的任一特征,除非特别叙述,均可被其他等效或具有类似目的的替代特征加以替换;所公开的所有特征、或所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以任何方式组合。
Claims (3)
1.Windows操作环境下基于插桩工具的漏洞检测方法,其特征在于,包括下列步骤:
当检测到目标进程执行函数调用指令时,将下一指令的地址存入第一预设存储单元中,并且将当前被调用函数的返回地址存入第二预设存储单元中;
检查目标进程的跳转目的地址,若所述目的地址对应的指令不是被调用函数的起始指令,则判定目标进程存在ROP漏洞;
当检测到目标进程执行函数返回指令时,检测当前线程栈中的返回地址是否在第一预设存储单元中存在,若是,则判定目标进程存在缓冲区溢出漏洞;判断所述函数返回指令的地址与第二预设存储单元中的当前被调用函数的返回地址是否相同,若否,则保存所述函数返回指令的地址,当检测到该地址的函数返回指令被执行K次时,则判定目标进程存在ROP漏洞,其中K≥2;
基于函数调用接口打开预设被调试进程,再判断所述预设被调试进程能否打开目标进程,若否,则目标进程存在本地提权漏洞。
2.如权利要求1所述的方法,其特征在于,针对缓冲区溢出漏洞,还包括:检测系统运行的指令是否存在未匹配到函数调用指令的函数返回指令若是,则判定目标进程存在缓冲区溢出漏洞。
3.如权利要求1或2所述的方法,其特征在于,针对ROP漏洞,还包括:检测目标进程的提权指令地址和跳转目的地址是否在一个库,若否,则判定目标进程存在ROP漏洞。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510585330.6A CN105184169A (zh) | 2015-09-14 | 2015-09-14 | Windows操作环境下基于插桩工具的漏洞检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510585330.6A CN105184169A (zh) | 2015-09-14 | 2015-09-14 | Windows操作环境下基于插桩工具的漏洞检测方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105184169A true CN105184169A (zh) | 2015-12-23 |
Family
ID=54906243
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510585330.6A Pending CN105184169A (zh) | 2015-09-14 | 2015-09-14 | Windows操作环境下基于插桩工具的漏洞检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105184169A (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106126981A (zh) * | 2016-08-30 | 2016-11-16 | 电子科技大学 | 基于虚拟函数表替换的软件安全防护方法 |
CN106650423A (zh) * | 2016-11-28 | 2017-05-10 | 北京奇虎科技有限公司 | 一种目标样本文件的检测方法和装置 |
CN107220537A (zh) * | 2017-05-25 | 2017-09-29 | 南京大学 | 一种程序内存布局信息泄露行为的检测方法 |
CN109558726A (zh) * | 2018-09-29 | 2019-04-02 | 四川大学 | 一种基于动态分析的控制流劫持攻击检测技术与系统 |
CN112685744A (zh) * | 2020-12-28 | 2021-04-20 | 安芯网盾(北京)科技有限公司 | 一种利用栈相关寄存器检测软件漏洞的方法及装置 |
CN112784261A (zh) * | 2021-01-04 | 2021-05-11 | 北京蓝军网安科技发展有限责任公司 | 用于程序运行的方法及相应的系统、计算机设备和介质 |
CN113360419A (zh) * | 2021-08-11 | 2021-09-07 | 云智慧(北京)科技有限公司 | 一种应用的数据处理方法、装置及设备 |
CN114880665A (zh) * | 2022-05-12 | 2022-08-09 | 电子科技大学 | 一种针对面向返回编程攻击的智能化检测方法及装置 |
CN116401668A (zh) * | 2023-06-08 | 2023-07-07 | 中国海洋大学 | 基于函数分组动态激活的代码重用攻击防御系统及方法 |
CN118211218A (zh) * | 2024-03-25 | 2024-06-18 | 中国人民解放军61660部队 | 一种基于动态插桩的低开销后门行为监测方法 |
CN118211218B (zh) * | 2024-03-25 | 2024-09-27 | 中国人民解放军61660部队 | 一种基于动态插桩的低开销后门行为监测方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100064367A1 (en) * | 2005-02-02 | 2010-03-11 | Universitetet I Oslo | Intrusion detection for computer programs |
CN102034045A (zh) * | 2010-12-15 | 2011-04-27 | 上海交通大学 | 低计算机系统资源开销的软件漏洞检测系统 |
US20150213260A1 (en) * | 2014-01-27 | 2015-07-30 | Igloo Security, Inc. | Device and method for detecting vulnerability attack in program |
-
2015
- 2015-09-14 CN CN201510585330.6A patent/CN105184169A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100064367A1 (en) * | 2005-02-02 | 2010-03-11 | Universitetet I Oslo | Intrusion detection for computer programs |
CN102034045A (zh) * | 2010-12-15 | 2011-04-27 | 上海交通大学 | 低计算机系统资源开销的软件漏洞检测系统 |
US20150213260A1 (en) * | 2014-01-27 | 2015-07-30 | Igloo Security, Inc. | Device and method for detecting vulnerability attack in program |
Non-Patent Citations (3)
Title |
---|
刘露平: "基于动态插桩的缓冲区溢出漏洞检测技术研究", 《信息安全与通信保密》 * |
舒辉等: "缓冲区溢出攻击的自动化检测方法", 《计算机研究与发展》 * |
韩浩等: "针对ROP攻击的动态运行时检测系统", 《计算机工程》 * |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106126981A (zh) * | 2016-08-30 | 2016-11-16 | 电子科技大学 | 基于虚拟函数表替换的软件安全防护方法 |
CN106650423A (zh) * | 2016-11-28 | 2017-05-10 | 北京奇虎科技有限公司 | 一种目标样本文件的检测方法和装置 |
CN107220537B (zh) * | 2017-05-25 | 2021-02-23 | 南京大学 | 一种程序内存布局信息泄露行为的检测方法 |
CN107220537A (zh) * | 2017-05-25 | 2017-09-29 | 南京大学 | 一种程序内存布局信息泄露行为的检测方法 |
CN109558726B (zh) * | 2018-09-29 | 2022-02-11 | 四川大学 | 一种基于动态分析的控制流劫持攻击检测方法与系统 |
CN109558726A (zh) * | 2018-09-29 | 2019-04-02 | 四川大学 | 一种基于动态分析的控制流劫持攻击检测技术与系统 |
CN112685744A (zh) * | 2020-12-28 | 2021-04-20 | 安芯网盾(北京)科技有限公司 | 一种利用栈相关寄存器检测软件漏洞的方法及装置 |
CN112784261A (zh) * | 2021-01-04 | 2021-05-11 | 北京蓝军网安科技发展有限责任公司 | 用于程序运行的方法及相应的系统、计算机设备和介质 |
CN112784261B (zh) * | 2021-01-04 | 2023-10-27 | 北京蓝军网安科技发展有限责任公司 | 用于程序运行的方法及相应的系统、计算机设备和介质 |
CN113360419A (zh) * | 2021-08-11 | 2021-09-07 | 云智慧(北京)科技有限公司 | 一种应用的数据处理方法、装置及设备 |
CN113360419B (zh) * | 2021-08-11 | 2022-06-07 | 云智慧(北京)科技有限公司 | 一种应用的数据处理方法、装置及设备 |
CN114880665A (zh) * | 2022-05-12 | 2022-08-09 | 电子科技大学 | 一种针对面向返回编程攻击的智能化检测方法及装置 |
CN116401668A (zh) * | 2023-06-08 | 2023-07-07 | 中国海洋大学 | 基于函数分组动态激活的代码重用攻击防御系统及方法 |
CN116401668B (zh) * | 2023-06-08 | 2023-08-15 | 中国海洋大学 | 基于函数分组动态激活的代码重用攻击防御系统及方法 |
CN118211218A (zh) * | 2024-03-25 | 2024-06-18 | 中国人民解放军61660部队 | 一种基于动态插桩的低开销后门行为监测方法 |
CN118211218B (zh) * | 2024-03-25 | 2024-09-27 | 中国人民解放军61660部队 | 一种基于动态插桩的低开销后门行为监测方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105184169A (zh) | Windows操作环境下基于插桩工具的漏洞检测方法 | |
CN107808094B (zh) | 检测文件中的恶意代码的系统和方法 | |
Carmony et al. | Extract Me If You Can: Abusing PDF Parsers in Malware Detectors. | |
Lindorfer et al. | Lines of malicious code: Insights into the malicious software industry | |
US8627478B2 (en) | Method and apparatus for inspecting non-portable executable files | |
Rathnayaka et al. | An efficient approach for advanced malware analysis using memory forensic technique | |
US10055585B2 (en) | Hardware and software execution profiling | |
US8763128B2 (en) | Apparatus and method for detecting malicious files | |
Jung et al. | Automated memory leak detection for production use | |
US20170076094A1 (en) | System and method for analyzing patch file | |
US20150256552A1 (en) | Imalicious code detection apparatus and method | |
US10162966B1 (en) | Anti-malware system with evasion code detection and rectification | |
CN103500308A (zh) | 用于对抗由恶意软件对仿真的检测的系统和方法 | |
US20180060584A1 (en) | Securing Code Execution in a Network Environment | |
CN105488388A (zh) | 一种基于cpu时空隔离机制实现应用软件行为监控系统的方法 | |
CN102521542B (zh) | 一种计算机软件漏洞利用的捕获方法及系统 | |
CN106355092B (zh) | 用于优化反病毒测定的系统和方法 | |
KR100991807B1 (ko) | 마이크로소프트 윈도우 운영체제를 사용하는 컴퓨터시스템에서의 악성코드 탐지 및 처리 시스템 및 방법 | |
US20190138713A1 (en) | Method for Detecting a Deviation of a Security State of a Computing Device from a Desired Security State | |
CN102012988A (zh) | 自动二进制恶意代码行为分析方法 | |
CN113688398A (zh) | 漏洞扫描结果的评估方法、装置及系统 | |
Kaur et al. | A complete dynamic malware analysis | |
Bravo et al. | Proactive detection of kernel-mode rootkits | |
CN111027072B (zh) | Linux下基于elf二进制标准解析的内核Rootkit检测方法及装置 | |
Lamps et al. | WinWizard: Expanding Xen with a LibVMI intrusion detection tool |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20151223 |
|
RJ01 | Rejection of invention patent application after publication |