ROPDetector一种基于硬件性能计数器的ROP攻击实时检测方法

第44卷第4期2021年4月
Vol.44Ao.4
Apr.2021计算机学报
CHINESE JOURNAL OF COMPUTERS
ROPDetector:一种基于硬件性能计数器的
ROP攻击实时检测方法
牛伟纳年赵成洋年张小松年,黄晓祥年蒋廉年张詢旋年
年(子科技大学计算机科学与工程学院网络空间安全研究院成都611731)
鹏程实验室网络空间安全研究中心广东深圳518000)
摘要面向返回编程(Return-Oriented Programming,ROU)是针对软件漏洞利用最广泛的攻击技术之一,能够
绕过数据执行保护、地址空间布局随机化等防御机制•本文提出了一种基于硬件的NO攻击实时检测方法,在
不需要任何边缘信息鹏如代码、编译器支持)和二进制重写的情况下,利用现代CPU中的硬件性能计数器监控
密封油目标程序执行过程,提取NO攻击发生时底层硬件事件特征来实时检测NO攻击•然后,在32位Lit实验环
境下实现了原型系统ROPDetector,使用真实的NO攻击与漏洞进行实验,并与同类方法进行了对比实验,最后
评估了系统的性能消耗然验结果表明,该方法能有效地检测真实的NO攻击,在分别以6次和9次错误预测
返回指令为检测周期时,系统性能消耗仅有5.05%和5.25%,磁盘I/O性能消耗仅有0.94%和2%,网络I/O性
能消耗仅有0.06%和0.78%.
关键词面向返回编程;硬件事件;实时检测;硬件性能计数器;错误预测返回指令
中图法分类号TP304DPI号10.11897/SP.J.1016.2021.本761
ROPDetector:A Real-time Detection Method of RPD Attack Based or
Hardware Performance Counter
NIR WeiOm〉ZHAO Cheng-Yanr n ZHANG Xiao-Song15R)HUANG Xiao-Oianr n
JIANG Lim年ZHANG Ke-Xuag n
年(.School of CompuLer Science and Engineering,Inslilule for Cyber Security,
UniuersiLy of ElecLronic Science anE Technolog,of Chinn,Chengdr611731)
1(.Cyberspace SecuriL,Research Cenfr,Pen,Chen,Laboraloro,Chenzhen,Guangdond518040)
Abstract Neturn-oriente-programmin-(ROD)is one ol the most commo-attack techniques
for software vulnerabilitieo.Attackero cae use this attack technique to tampeo with the program execution flow to ruu maliciouc coPe.ROD attack it o generalizatiou ot the ret-to-lit attack.A
the rW-to-lib attack,the attactea reusec the entire libk library.While in the ROD attack,ths attactea chains fora o spiteful attack chain to carry out the attack,chick cau bypase the dah execution protection,address spare layouh randomizatioo defense mechanism,anP ultimatelo destrop the user-levet and kernel-levet software modulee.Amon-thern,gadgeh refere
to the instruction fragmeft ending with the return instruction in the target prograc ps the librarp ftmetion called bp the target prograc.A series of special registert foe recordin-the numbee of hardware-relaten activities built into the CPA of modern computere arc called hardwarc performancc
收稿日期:2019-11-12;在线发布日期:2020-05-Y.本课题得到国家重点研发计划鹏016QY1121)、国家自然科学基金(61902260, A9A216)、四川省科技支撑项标鹏17CCH71)资助.牛伟纳该士该师该要研究方向为网络攻击检测、恶意代码分析.R-mail: niuweinal@126.赵成洋,硕士研究生,主要研究方向为网络攻击检测.张小松(通信作者),博士,使授,主要研究领域为网络攻击检测、恶意代码分析.Email:joWnsonzxsm 黄晓祥,硕士研究生,主要研究方向为系统安全.蒋廉,硕士研究生,主要研究方向为网络攻击检测•张电可旋该士研究生该要研究方向为二进制安全.
762计 算 机 学 报2021 年
counters  (HPCs), which  is  designed  for  performance  debugging  of  complex  software  systems.
Developers  cat  configure  the  HCC  to  monitos  the  execution  of  the  target  program. As  with  tradi ­
tional  software  analysic  tools, they  cat  collect  detailed  performancr  informatioo  about  the  target
program. A  is  helpful  to  understanp  program  behavios  bt  runtime  anp  optimize  their  performance. Io  responsr  to  the  threah  of  ROC  attacks , v  largr  numbes  of  researcher) v P  homr  anp  abroad  havr
imested  io  ths  research  of  ROC  defenss  mechanisms , and  havr  proposed  v  serier  of  defense  oe  detection  methohs. However, some  existing  defense  techniques  cac  Oe  overcome  by  cttackere , pc
suffer  frorn  high  performancrIc  this  paper , ws  observed  anomalies  io  exceptional
underlying  hardware  events  when  ths  ROC  attach  was  happening. Aus  to  it, ws  proposed  p  real-timc  detection  approach  based  on  hardwars  withoui  my  side  informatioc  (s. g. , sourer  code, compilee
support) , which  mW  hardware  performance  counters  in  modere  CPU  to  monitoe  targei  program  execmon  process  md  extracted  the  low-level  featurs  of  hardwars  events  against  ROC  attach  t
rmtinR. Then, ws  implemented  p  prototype  on  x86-based  Linux  platform  called  ROPDetectos. Ws  found  v  tiny  program  with  buffes  overflow  vulnerabilitp, and  used  ROPGadget  to  construci  42 real  ROC  paylofs. Ws  reproduced  othes  method  which  is  alsp  based  on  hardwars  performancr
counters  foe  comparative  experiments  nd  utilized  real  exploits  which  are  fotrnd  on  the  opec  sourer  exploitatioc  platform  t o  verifp  feasibilitp  of  ROPDetector. The  experimental  results
showed  thai  oue  approach  could  eRicientlp  detect  real  ROC  attach  with  a  higher  detectiod  rate. At  last , we  evaluated  the  performance  overhead  of  our  method  through  UnixEench, the  dish  I/O
performance  overhead  of  oue  method  througO  Bonnie  + + , nd  the  netword  1/O  performance
overhead  of  oue  method  through  the  Apa_che  wed  serves  httpd-1. 2. 41. When  the  detectiod 
interval  T  of  ROPDetectos  is  ( rnis-predicted  return  instructiod  cvents , the  overall  systern  performance
drops  Up  5. 05%, the  dish  I/O  performance  drops  Up  0. 94%, and  the  netword  I/O  performance  drops  Up  0.06%. When  the  detectiod  interval  T  of  ROPDetectos  is  4 rnis-predicted  return
instructiod  cvents , the  overall  systern  performance  drops  Up  5.05%, the  dish  I/O  performance  drops  by  0. 94%, and  the  netword  I/O  performance  drops  by  6. 06%.
Keywords  return-oriented  programminh  ; hardware  events  ; real-timr  detectiod  ; hardware
performance  counter  ; mis-predicted  return  instructions
(CVE-2015-6,787)®. Wireshark(CVE-2015-67 36)③
等.针对ROP 攻击威胁,国内外大量研究人员投入 到ROP 防御机制研究中,并提出了一系列防御/检
测方法.
G-free^是第一个实用的且可以防御所有形式
ROP 攻击的方法,它集成了对齐UAW 密返回地
址、帧cookie 和代码重写技术.前三个技术都是在
1引言
面向返回编程是一种高级代码复用攻击技 术5攻击者可以利用这种攻击技术去篡改程序执 行流来执行恶意代码.W  ROP 攻击中,攻击者将可 用的gadget 链接起来,构成恶意攻击链来进行攻
击,能够绕过数据执行保护、地址空间布局随机化
(Address  Space  Layout  Randomization, ALSR)「幻
防御机制,最终达到用户级归和内核级软件模块的 破坏/其中,gadget 是指在目标程序或目标程序
所调用的库函数中以返回指令为结尾的指令片段.
近年来,如表1所示,大量与ROP 攻击相关的漏洞 被曝出来,例如 gliUe  t  CVE-2015-7547)①、pdfium
Google  Seccs 让y  Research. Glibc-getaddrinfo  Stack-Based  Buller  Overflow. Wtp ://www. exploit-dp. com/exploits/ 39452/
Google  Security  Research. Pdfium  CPDF_ Function : : Cab  Stack-Based  Buller  Overflow, https ://www. exploit-dp. com/expl c —s  /39165/
心电电极Google  Seccs 让y  Research. Wireshah-be_read(wtap_read_ byte_ or  _ eof/mp2t  _ find  _ next _ per ) Stack-based  B u IR s  Overflow. Wtps ://www. exploit-db. com/exploits/38997/
4期牛伟纳等:ROPDetector:一种基于硬件性能计数器的ROP攻击实时检测方法763
表1ROP相关CVE
冷库蒸发器序号描述CVEt 0Adobe Flask Casi32InB OvL2014-0569
2Adobe Flask Domaid Memory UAF2015-0359
3IE COALineDashStyleArray InB Ovl.2013-2554
相册内页
4IE CButCd UAF21204792
5IE Cixeg Table Col Span Heap OvL2012-1873
3IE Execommang UAF21120499
7IE CDisplayPointee UAF211.0.797
8WiresharO2115077.
9IE OptCd ElemedB UAF2011-1996
10Adobe Clash Kern Parsing Int.OvI.2112015.5
11pdfium21150777
02Nginxl.3.9211.02127 11Glibc2.3.3211507547
11DNSTracerl.3211011191 11FFmpeg3.3.12117094.1
保护二进制文件中可用的对齐的自由分支指令(对齐的概念是指它只使用代码中已经存在的“预期”指令),利用现有的堆栈保护机制,把具有危险指令的函数作为一个短代码块整体,确保该函数内任何指令不能单独执行,只能以一个整体执行,保证攻击者不能直接跳转到该危险指令执行,这样才能执行自由分支指令.此外利free是针对各种可能出现分支指令未对齐的情况,通过代码重写或者一些其它手段来阻止这种情况发生.它有效消除了传统的利用lib库进行攻击的威胁,具有无需在目标进程中注入任何代码,性能开销非常低,且增加的文件大小也在接受范围内的优点.缺点是它是基于编译器进行定制的,需要提前收集编译器信息,实际应用不太现实.CFLoctong"〕通过对目标程序进行重编译来限制或是锁定异常控制流的数量来检测ROP攻击,但是这种技术本质上就不能检测以未对齐分支指令为结尾的ROP攻击.Return-less kernel^77是—种基于编译器的ROP攻击检测方法,它通过从内核镜像中移除:相关操作,将控制流数据从栈移动到专用区域.基于此方法,Shu。等人归提出了一种基于虚拟化的ROP攻击检测方法,但此方法需要被检测程序的源代码,然后在编译过程中在函数的头部和尾部插入控制流完整性检测.显然,以上方法都不能防御使用jmp或是call指令的ROD攻击.CFI-Mon⑷是通过分析运行时控制流轨迹来检测那些企图篡改程序控制流的攻击,但它具有较高的延时性,可能导致检测到攻击时攻击早就已经发生过了. MoCFW是在智能手机上检测篡改控制流攻击的框架,它能够实时地进行控制流完整性检查,且不需要目标程序的源代码,实验结果表明它在对IOS上流行的应用程序进行监测时的开销并不高.Coly-ctoonakis等⑴〕提出一种对任意数据都可以检测出ROD payloads的方法,该技术通过扫描目标程序地址空间中可执行代码的输入来检测ROD payloaSs.
TRUSS®〕和TaintChecto"〕使用二进制代码插桩的方式来检测ROP攻击,这类方法不仅会打破目标程序的二进制完整性,也会带来高昂的性能代价.例如具aintCheck的性能消耗更是高达20倍.为了克服性能消耗过高这一点,IPR[14]被提出来. IPR目的是破坏ROD gadget而不改变代码规模.但是它总是只破坏可执行地址空间的明显的gadgee,很难保证剩余的gadgee能否构成一次完整的ROD 攻击.ROPDefender:通过跟踪目标程序二进制指令的执行过程来检查软件控制流完整性进而检测是否受到ROD攻击.一旦目标程序发出调用指令, Defendee会将返回地址的副本存储到一个单独的影子堆栈中,在运行时检查目标程序执行过程中执行的返回指令,将其和影子堆栈上的顶部返回地址进行对比,以此来判断是不是恶意构造的ROD payloads.ROPDefendee能够检测ROP攻击,甚至可以检测到非预期的指令序列.缺点是系统会检查进程执行的每条机器指令,开销巨大,而且由于它的影子堆栈机制,只关注了以返回指令结尾的ROR gadget的防御,比较局限.CCFIR将所有的间接控制流分支指令的合法目标地址存储在一个基础数据库里,然后插桩二进制代码,规定所有的间接分支指令的目标地址只能是基础数据库里的地址.但是,一方面该方法可移植性差,因为它事先收集的地址数据库只能是某一个固定平台(例如:Windows10)上的共享代码库;另一方面,攻击者只需要使用非基础数据库里面的gadget就能绕过此检测机制.
为了有效扩展现有ROP攻击检测范围,基于硬件的方法KBounce会0和ROPecke会0被提出来,它们都使用最后分支记录(Last Branch Record, LBR)来监控程序的执行并追踪间接分支的目标地址,将
LBR中的地址和程序的控制流路径相比较来判断程序运行期间是否受到ROP攻击.这两种工具都具有良好的攻击类型覆盖和运行效率,相对于G f e来说,不太依赖编译器环境等多余信息.对于ROPDefendee来说,检测ROP攻击的类型更广.其中在Bouncer利用二进制重写技术编写代码,破坏了二级制代码完整性但I发了针对安全机制的兼容性问题,而且它只监视选定关键路径上的执行流,会错误遗漏其余路径上的ROP攻击.ROPeckee是一种基于Linux的反ROP方法,它使用LBR CPU
764计算科学报2026年寄存器来查潜在的gadget执行,另外需要一个静
态数据库检测将来可能调用的小工具.每当程序执行离开滑动窗口或调用关键的系统指令时博会触发检查.但是这个滑动窗口机制可能会被攻击者利用来绕过.ROPK++U-在ROPeRee的基础上进行扩展,在其内核模块中加入了ret-cheRO函数使□入了“ret”指令完整性检测机制,通过“call”与“ret”的—
—对应性来加强ROD攻击防御能力.缺点是与ROPeRee同样存在粗粒度被人为绕过的问题以及预先的静态数据库建立耗费大量的时间成本的问题.
基于硬件性能计数器(Aardwarc Performance Counter,RPC)的ROD攻击检测方法HDROPi20能够极大地减少性能开销,与前面的方法不同,它不再关注内存和LBR中的信息,从而省去了一个时间成本很大的环节.现代处理器利用分支预测器来提高性能该OPK击常常使它无法预测正确的分支目标,DROP「0通过检测给定执行路径上的错误预测是否异常地增加,来判断是否存在ROD攻击. SIGDROP「0利
用在-个检测周期内(6个错误预测返回指令)gadget长度与错误预测返回指令数的乘积小于等于总指令数作为检测逻辑来判断是否发生ROD攻击,但这种方法只能针对ROD攻击且攻击者可以利用long gadget来绕过这种检测机制. ROPSentet通过使用硬件性能计数器跟踪特定的硬件性能事件来观察、分析ROD攻击行为模式,检测的精度较高,在防御基于堆喷射的ROP攻击时性能消耗较低,但在防御非基于堆喷射的ROD攻击时性能消耗也在10%以上.
本文提出了基于配置硬件性能计数器获取异常特征来检测ROD攻击的方法—
—ROPDetector,G 可以在无源代码、无定制编译器支持和无二进制重写的情况下高效、低消耗地防御ROP攻击.同时,它适用于任何系统框架中该OPDetechr是一种通用、实用和低消耗的NP攻击检测机制.
本文的主要贡献可概括如下:
通)设计了一种通用且实用的ROP攻击检测方法该OPDetechr不需要源代码、定制编译器支持和二进制重写.
(2)
ROPDetectoe适用于任何平台,不依赖于特定的软件,不需要修改硬件.
⑶我们在基于X86的Linux平台上实现了ROPDetectoe,验证了它的正确性,并评估了它的系统性能消耗、磁盘1/O性能消耗和网络1/O性能消耗这些指标.2背景知识
2.1返回地址堆栈(Return Address StacB g
返回地址堆栈(RAS)°是一个存储着return 指令目标地址的先进后出的硬件栈.由于call指令与ret指令是一一对应的,当有一个call指令发生时,处理器会将下一条指令⑶返回目标地址)压入RAS的栈顶.当ret指令发生时,处理器会弹出RAS栈顶的预测地址,若与与程栈里的返回目标地址不同主则预测失败.
2.2面向返回编程(Return-Oriented Programming)
ROD攻击是w Y o-1指攻击的推广,在ret-ta-指攻击中,攻击者复用整个liba库.本ROP攻击中,攻击者在内存(目标程序或者是共享库)中到可用的代码片段——gadget,而后将构造一个有效载荷来将一系列gadget链接在一起.如图1所示,攻击者利用return指令将可利用库文件中的gadget 链接起来,就可以执行想要的任何操作.
图1ROP gadget链进行链接与攻击示意图
2.3硬件性能计数器通ardware Performance Counterg
现代计算机CPU中内置了一系列用于记录硬件相关活动发生次数的专用寄存器,被称为硬件性能计数器(Hardware Cerformance Counter,RPC)[Z%. HDC与硬件事件选择器一起,当指定的硬件事件发生时,计数器将递增.
HPC最初被设计用于复杂软件系统的性能调
4期牛伟纳等:ROPDetecmy—种基于硬件性能计数器的ROP攻击实时检测方法765
试,利用HPC,开发者可以更深入地理解运行时的程序行为和优化其性能2.开发者可以通过配置HPC监控目标程序执行与传统的软件分析工具一样能收集到目标程序的详细性能信息,但系统开销却低得多并且不需要修改源代码.
早期的处理器仅支持少部分事件并且HPC的数量也很少.在现代CPU中,预定义的可被监控的性能事件根据CPA微架构的不同也不同.例如,Intel PentiumP有两个HPCs和一百多种不同的事件; AMD Opterod有四个HPCs和超过一百种事件;相比之下,第六、七代Intel Core处理器2有数百种事件,如表2所示的架构兼容事件和部分架构非兼容事件.
表2第六、七代Intel Core CPU中部分性能事件
架构兼容性能事件描述非架构兼容体系事件(对分)描述
Unllalteg Core Cyclep Unllalteg Reference Cyclep Instruction-Retiren
LLC Reference
LLC Misset
Branch Instruction Retireg Branch Misses RetireF 时钟周期数
访问时钟周期数
有效执行的指令数
LLC的访问次数例括命中和未命中)
LLCC命中数
有效执行的分支指令数牙箱
分支未命中数
UOCEXECUTED.TIIREAD
BR_INST_RETIRED.此川!™?^
DTLB_DSSES
BR_INST_RETIRED.NEAR_RETURN
ITLB_MISSES
br_misp_retired.此创丁]。?^
三明治面料mem_inst_retired. ALL_LOADS
在所有端口上执行的微指令数目
条件分支指令数
DTLB未命中
返回分支指令数
ITLB未命中
条件分支指令预测失败
所有的载入指令数
3系统设计
3.1威胁模型
在我们的威胁模型中,我们允许攻击者利用目标程序软件漏洞,如缓冲区溢出等来获取程序栈的控制和发起ROP攻击.因此,我们假定攻击者知道目标程序的全部细节,并能向目标程序发送任意的输入.
3.2条件假设
我们假定CPU和操作系统开启了数据执行保护机制(Data Executiod Protection,DEC),编译程序过程中关闭栈保护机制.同时,攻击者有权限执行目标程序的二进制文件及其共享库文件来获得可用的gadget链,利用信息泄露或JIT-ROP对ust in time ROP)攻击绕过ASLR.
3.3ROPDetectoe的具体设计
经过我们实际ROP攻击的观察,发现ROP攻击在硬件层面具有以下特征:
例)每一个gadget的执行都会出现错误预测返回指令(Ds-preRcted returd instruction):R—■个ROP gadget都是以“预来指令为结尾,因为这些gadget都是攻击者构造的,没有与之对应的“预指指令且在原本的程序中并不会执行,故而都会被返回地址栈(RAS)错误预测.因此,当一个ROP载荷被执行时,会持续地出现错误预测返回指令.
例单一gadget的短指令:为了避免执行gadget 链过程中产生一些不必要的边际效应(如,更改了CPA状态、导致寄存器数值被异常修改而无法顺利执行gadget链剩余部分等):每一个gadget都仅有几条指令.最近的研究"表明真实攻击中的ROP gadget指令数一般都小于3.
对)指令转译后备缓冲区未命中数和数据转译后备缓冲区未命中数会异常增加:由于ROP gadget 链分布在不同的程序段,所以在执行过程中会不断地在多个页面间跳转,会导致大量的指令转译后备缓冲区(Instruction Translatiod Lookaside Buffer, ITLR)未命中和数据转译后备缓冲区(Data Tr会和lation Lookaside Buffer攻TLB)未命中.
ROPDetectoe监控目标程序提取运行时特征进行比对来检测ROP攻击.如图2所示,当目标程序运行时也OPDetec的r持续监控多种低级事件:总指令数、返回指令数、错误预测返回指令数、ITLL未命中数返址未命中数.然后,我们在指定的周期内记录当前各种预定事件的数值,再采用如下策略检测ROP攻击:
图2ROP攻击检测逻辑
R)Ret/I t表示在每个采样区间返回指令在总指令中的占比.在ROP攻击期间,攻击者利用“预t”指令链接gadgetl即从一个gadget跳转到另一

本文发布于:2024-09-23 13:20:43,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/279790.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:攻击   指令   检测   执行   性能   返回   硬件   目标程序
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议