CN105184169A - Windows操作环境下基于插桩工具的漏洞检测方法 - Google Patents

Windows操作环境下基于插桩工具的漏洞检测方法 Download PDF

Info

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
Application number
CN201510585330.6A
Other languages
English (en)
Inventor
张小松
向琦
牛伟纳
鲍凯
唐海洋
曹思宇
岳豪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
University of Electronic Science and Technology of China
Original Assignee
University of Electronic Science and Technology of China
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by University of Electronic Science and Technology of China filed Critical University of Electronic Science and Technology of China
Priority to CN201510585330.6A priority Critical patent/CN105184169A/zh
Publication of CN105184169A publication Critical patent/CN105184169A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test 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操作环境下基于插桩工具的漏洞检测方法
技术领域
本发明属于计算机领域,具体涉及一种在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漏洞。
CN201510585330.6A 2015-09-14 2015-09-14 Windows操作环境下基于插桩工具的漏洞检测方法 Pending CN105184169A (zh)

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 (9)

* Cited by examiner, † Cited by third party
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 中国海洋大学 基于函数分组动态激活的代码重用攻击防御***及方法

Citations (3)

* Cited by examiner, † Cited by third party
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Title
刘露平: "基于动态插桩的缓冲区溢出漏洞检测技术研究", 《信息安全与通信保密》 *
舒辉等: "缓冲区溢出攻击的自动化检测方法", 《计算机研究与发展》 *
韩浩等: "针对ROP攻击的动态运行时检测***", 《计算机工程》 *

Cited By (14)

* Cited by examiner, † Cited by third party
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 南京大学 一种程序内存布局信息泄露行为的检测方法
CN107220537B (zh) * 2017-05-25 2021-02-23 南京大学 一种程序内存布局信息泄露行为的检测方法
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 中国海洋大学 基于函数分组动态激活的代码重用攻击防御***及方法

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.
US8627478B2 (en) Method and apparatus for inspecting non-portable executable files
Lindorfer et al. Lines of malicious code: Insights into the malicious software industry
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
US20150256552A1 (en) Imalicious code detection apparatus and method
US20170076094A1 (en) System and method for analyzing patch file
US20110265182A1 (en) Malware investigation by analyzing computer memory
CN103500308A (zh) 用于对抗由恶意软件对仿真的检测的***和方法
US20180060584A1 (en) Securing Code Execution in a Network Environment
CN101964026A (zh) 网页挂马检测方法和***
CN102012988B (zh) 自动二进制恶意代码行为分析方法
CN105488388A (zh) 一种基于cpu时空隔离机制实现应用软件行为监控***的方法
CN102521542B (zh) 一种计算机软件漏洞利用的捕获方法及***
CN106355092B (zh) 用于优化反病毒测定的***和方法
US20190138713A1 (en) Method for Detecting a Deviation of a Security State of a Computing Device from a Desired Security State
KR20090120717A (ko) 마이크로소프트 윈도우 운영체제를 사용하는 컴퓨터시스템에서의 악성코드 탐지 및 처리 시스템 및 방법
CN113688398A (zh) 漏洞扫描结果的评估方法、装置及***
Kaur et al. A complete dynamic malware analysis
Bravo et al. Proactive detection of kernel-mode rootkits
CN111027072B (zh) Linux下基于elf二进制标准解析的内核Rootkit检测方法及装置

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