[发明专利]一种基于模拟攻击的软件漏洞检测方法有效

专利信息
申请号: 201510179362.6 申请日: 2015-04-15
公开(公告)号: CN104778413B 公开(公告)日: 2018-04-03
发明(设计)人: 曾庆凯;杨继龙 申请(专利权)人: 南京大学
主分类号: G06F21/57 分类号: G06F21/57
代理公司: 南京瑞弘专利商标事务所(普通合伙)32249 代理人: 陈建和
地址: 210093 江*** 国省代码: 江苏;32
权利要求书: 查看更多 说明书: 查看更多
摘要: 基于模拟攻击的软件漏洞检测方法,通过静态反汇编工具获取敏感操作所涉及的函数信息,利用动态插桩平台实现监控、模拟攻击和攻击影响分析等过程;主要操作步骤如下1)执行静态分析获取程序信息;2)动态执行程序,检测敏感函数调用;3)分析攻击实施条件;4)执行模拟攻击;5)分析攻击影响,依据攻击影响结果进行漏洞判定;在具体实施时,采用符号链接攻击对程序进行模拟攻击,对应的漏洞类型为一类文件访问漏洞,通过利用这类漏洞,本地攻击者通过符号链接更改程序预期访问文件,从而实现访问攻击者权限之外的文件资源。
搜索关键词: 一种 基于 模拟 攻击 软件 漏洞 检测 方法
【主权项】:
基于模拟攻击的软件漏洞检测方法,其特征是通过静态反汇编工具获取敏感操作所涉及的函数信息,利用动态插桩平台实现监控、模拟攻击和攻击影响分析过程;操作步骤如下:1)执行静态分析获取程序信息;2)动态执行程序,检测敏感函数调用;3)分析攻击实施条件;4)执行模拟攻击;5)分析攻击影响,依据攻击影响结果进行漏洞判定;在具体实施时,采用符号链接攻击对程序进行模拟攻击,对应的漏洞类型为一类文件访问漏洞,通过利用这类漏洞,本地攻击者通过符号链接更改程序预期访问文件,从而实现访问攻击者权限之外的文件资源;操作1):在静态分析阶段,利用静态反汇编工具IDA Pro对待检测elf文件进行反汇编获得反汇编代码,通过对反汇编代码的分析获取程序信息,包括函数信息和常量信息;静态分析阶段的输入为待检测的elf文件,输出为程序信息,静态分析所提取的程序信息存储在elf_data文件中,以供动态检测阶段使用;程序信息包括函数信息和常量信息;其中函数信息包括敏感函数、影响函数和信息流传播函数的信息;常量信息为常量地址;静态分析过程利用反汇编工具对待检测程序进行反汇编得到反汇编代码,并分析反汇编代码获取函数信息和常量信息;函数信息具体体现为函数名、函数调用地址,敏感函数信息还需要获取含有敏感函数的函数体的开始和结束地址;函数名来自动态符号表中的函数名与敏感函数集的匹配结果;函数调用地址为敏感函数被调用的地址;含有敏感函数的函数体为敏感函数调用地址所在的函数体;函数名来自动态符号表中的函数名与敏感函数集的匹配结果;函数调用地址为敏感函数被调用的地址;含有敏感函数的函数体为敏感函数调用地址所在的函数体;静态提取程序信息流程,利用静态反汇编工具实现程序信息的提取;通过预先定义的函数集匹配完成函数信息的获取;常量信息为常量地址;静态分析过程利用反汇编工具对待检测程序进行反汇编得到反汇编代码,并分析反汇编代码获取函数信息和常量信息;步骤20是初始动作;步骤21获取待检测elf文件,等待分析;步骤22利用IDA Pro对待检测程序进行反汇编;步骤23获取程序汇编代码;步骤24根据反汇编代码获取rodata节数据;步骤25分析rodata节数据,提取只读数据的地址作为常量信息;步骤26获取程序的动态符号表,用于获取程序所调用的库函数信息;步骤27提取一个符号表项;步骤28判断是否提取到,是则转步骤29,否则转步骤2b;步骤29判断符号表项中的函数名与函数集中的函数名是否匹配,是则转步骤2a,否则转步骤27;步骤2a借助动态符号表、全局偏移表和过程链接表获取函数的跳转地址;步骤2b利用IDA中的get_func_qty函数获取反汇编代码中的函数体;步骤2c判断是否获取到,是则转步骤2d,否则转步骤2i;步骤2d提取函数体中的一条指令;步骤2e对判断指令地址是否是函数体结束地址,是则转步骤2b,否则转步骤2f;步骤2f判断指令操作码是否为call或jmp,是则转步骤2g,否则转步骤2d;步骤2g判断目标地址与敏感函数跳转地址是否匹配,是则转步骤2h,否则转步骤2d;步骤2h记录敏感函数调用地址,并利用IDA中的curFunc‑>startEA和curFunc‑>endEA获取函数体开始结束地址;步骤2i将步骤25、2a、2h中提取到的函数信息输出至文件elf_data中;步骤2j是结束状态;操作2):在动态检测阶段,利用动态插桩平台PIN运行待检测程序,读取elf_data文件中的程序信息用于敏感函数调用及实施条件的检测;程序信息中的敏感函数信息包含敏感函数调用地址,敏感函数调用检测主要检测指令地址与敏感函数调用地址的匹配情况;当检测到敏感函数调用时,进入实施条件分析;获取程序所访问的路径名和路径名可猜测分析结果,并进一步检测目录写权限,当满足实施条件时则实施攻击;通过攻击影响分析,给出漏洞检测结果;最后通过恢复操作消除攻击对文件造成的影响,并重新返回程序运行状态以供执行下一次漏洞检测;敏感函数调用检测流程;通过PIN动态执行待分析程序,完成敏感函数调用的动态检测;步骤30为初始动作;步骤31获取待检测elf文件;步骤32读取elf_data文件,获取静态分析得到的程序信息;步骤33利用PIN平台动态执行程序;步骤34利用PIN平台获取指令执行序列;步骤35提取执行序列中一条指令;步骤36判断是否提取到,是则转步骤37,否则转步骤3a;步骤37判断指令地址是否为敏感函数调用地址,是则转步骤38,否则转步骤35;步骤38获取敏感函数调用中参数的路径名,利用PIN中的PIN_AddSyscallEntryFunction函数对敏感函数调用中涉及的系统调用进行插桩,并利用PIN_GetSyscallArgument函数获取系统调用参数中的路径名参数;步骤39触发实施条件分析;步骤3a是结束状态;操作3):在检测到敏感函数调用后,执行分析攻击实施条件,判断对于攻击者而言是否具备实施条件;实施条件包括路径名可猜测和目录写权限两个部分,其中路径名可猜测表示攻击者是否能够猜测到访问的文件路径名,能通过路径名的来源判定;将来源分为可猜测和不可猜测两类;通过取路径名来源到路径名的信息流分析,能得出路径名是否可猜测;目录写权限体现为攻击者对于文件所在目录是否具备写权限,通过系统中的访问策略进行判定;步骤40为起始动作;步骤41获取文件访问涉及的路径名,来自于敏感函数调用检测中的步骤35;步骤42获取路径名可猜测分析结果;步骤43判断路径名是否为可猜测的,是则转步骤44,否则转步骤46;步骤44判断当前的访问操作对于攻击者而言是否具备实施条件;分析的主要流程,是则转步骤45,否则转步骤46;步骤45为等待攻击实施的状态;步骤46是结束状态;操作4):执行模拟攻击;在确定攻击者具备实施条件后,对当前访问的文件实施符号链接攻击;步骤70为起始动作;步骤71获取路径名,由步骤41获取;步骤72获取目录写权限信息,由步骤65获得,步骤65将具备目录写权限信息返回,并输出权限信息;步骤73利用系统调用access检测当前文件是否存在,是转步骤74,否则转步骤75;步骤74将文件重命名,确保文件在检测结束后能恢复;步骤75实施符号链接攻击,利用系统调用link创建一个符号链接指向预先设定的目标文件,攻击者对目标文件不具备任何权限,这里将目标文件设定为/etc/root文件,该文件对于同组和其他用户不具备任何权限;步骤76依据link返回值判断攻击是否成功,是则转步骤77,否则转步骤78;步骤77等待程序执行攻击影响分析;步骤78为结束状态;操作5):分析攻击影响,依据攻击影响结果进行漏洞判定;攻击影响分析流程用于判断攻击是否对程序或系统产生影响;通过影响函数对攻击影响进行判定;影响函数与敏感函数相对应,打开类包括open、open64、fopen、fopen64、freopen和freopen64敏感函数、对应影响函数为相应的读写函数,其他敏感函数的影响函数为其本身;影响函数根据功能分为read、write和execution三类;read影响函数的影响主要表现为读取的文件数据对程序执行路径产生影响,或者用于系统调用参数,具体体现为由影响函数获取的文件数据是否通过信息流传播路径传播至条件跳转的判断条件或系统调用参数;Write和execution影响函数执行成功则表明存在影响;利用敏感函数所对应的影响函数判断攻击是否有效,结合攻击对程序或系统产生影响能完成攻击影响分析,判定是否存在漏洞;步骤80为起始动作;步骤81通过PIN平台获取指令执行序列;步骤82取一条指令;步骤83判断指令是否为影响函数调用,是则转步骤84,否则转步骤82;步骤84通过影响函数返回值判断影响函数是否调用成功,是则转步骤85,否则转步骤8g;步骤8g不存在漏洞转步骤8h;步骤85判断影响函数是否为read类,是则转步骤86,否则转步骤8f;步骤86取一条指令;步骤87判断当前指令是否满足信息流传播规则,具体规则与信息流传播规则一致,是则转步骤88,否则转步骤8a;步骤88判断传播源是否来自于影响函数,是则转步骤89,否则转步骤86;步骤89记录信息流传播路径;步骤8a检测当前指令是否包含有系统调用,是则转步骤8b,否则转步骤8c;步骤8b检测系统调用参数是否来自于影响函数,是则转步骤8f,否则转步骤86;步骤8c检测当前指令是否为条件跳转,是则转步骤8d,否则转步骤8e;步骤8d用于检测已检测指令数目是否超过指令读取阈值,或者影响函数传播数据被清除,是则转步骤8j,否则转步骤86;步骤8j给出未检测出漏洞提示;步骤8k执行文件恢复操作,删除符号链接攻击所产生的符号链接,并将步骤74重命名的文件进行恢复;8m为结束状态;步骤8e识别跳转条件是否来自于影响函数,即该条件是否位于影响函数数据的传播路径上,是则转步骤8f,否则转步骤86;步骤8f输出漏洞报告,包括敏感函数名及调用地址、文件路径名、路径名来源、目录写权限信息;步骤8h执行文件恢复操作,同步骤8k;步骤8i为结束状态。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京大学,未经南京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/patent/201510179362.6/,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top