基于行为的软件胎记技术研究
本文选题:软件抄袭 + 软件胎记 ; 参考:《南京大学》2013年硕士论文
【摘要】:随着软件产业的迅猛发展以及开源项目的日益流行,软件窃取已经严重威胁软件产业的健康发展。为保护软件的知识产权,有学者提出了软件水印技术。软件水印可以用来标识软件的作者、软件的发行商、软件的所有者以及软件的使用者等信息,可以用来鉴别出非法复制和盗用的软件产品。然而,软件水印需要额外嵌入代码,并且很容易被软件混淆和编译器优化所破坏。因此,继软件水印技术之后,软件胎记利用程序的某些特征,可以用来验证软件的来源,防止软件盗版。目前最为先进的软件胎记技术—基于软件动态系统调用依赖关系图(SCDG),根据程序动态运行时的行为特征,捕捉系统调用之间参数的依赖关系,并以此独有的特点作为软件的胎记。这种技术能够检测出程序之间部分拷贝的情况,同时能够较好的躲过已有的混淆技术和无用系统调用(no-ops)的插入攻击。在本文中,我们重点对基于系统调用依赖关系图(SCDG)的软件胎记技术及其混淆技术进行了研究。首先,我们利用Valgrind提供的动态二进制分析框架和对外编程接口,在已有的Hawk工具的基础上,实现了这种基于系统调用依赖关系图的软件胎记的提取。同时我们对比了经典的图-子图匹配算法,选择了更加适合我们实验背景的VF2算法,对得到的软件胎记进行匹配,并利用NetworkX库开发了相应的检查工具。在这些工作的基础上,我们继续分析了这种基于系统调用依赖关系图的软件胎记技术的弱点,提出一种同语义转换的系统调用混淆技术,可以巧妙地躲避已有的检测。我们从系统调用依赖关系图(SCDG)的结构入手,选择在原有的系统调用依赖关系对中插入冗余的系统调用,用一个新的系统调用和两条依赖边替换原来的一条依赖边,以此改变原有的图结构并保证原有的程序功能不变。我们选用已被证实存在复用关系的两个程序对我们的系统调用依赖关系的提取工作进行验证,并且经过我们的检查工具,确实发现存在抄袭。这同时也证明了我们工作的准确性。此外,我们还从有效性和性能两方面,对我们的混淆系统进行了评估。实验证明,我们的混淆方案能够有效破坏原有的软件胎记,达到了很好的混淆目的。并且我们系统的性能损耗很低,且这些开销基本上来自新插入的系统调用。虽然,我们的混淆技术可以用于软件胎记的攻击,但是我们旨在软件保护领域做出新的探索,无意增加新的攻击。我们提出的基于系统调用的混淆技术,也为实现软件多样性提供了新的思路。
[Abstract]:With the rapid development of software industry and the increasing popularity of open source projects, software theft has seriously threatened the healthy development of software industry. In order to protect the intellectual property of software, some scholars put forward software watermarking technology. Software watermarking can be used to identify software authors, software distributors, software owners, software users and other information, can be used to identify illegal replication and theft of software products. However, software watermarking requires additional embedded code and is easily compromised by software confusion and compiler optimization. Therefore, after software watermarking technology, software birthmarks can be used to verify the source of software and prevent software piracy. At present, the most advanced software birthmark technology, based on the software dynamic system call dependency graph (SCDGG), captures the parameter dependence relationship between the system calls according to the behavior characteristics of the program dynamic running, and this unique feature is used as the birthmark of the software. This technique can detect some copies between programs, and avoid the obfuscation technique and no-ops insertion attack. In this paper, we focus on the software birthmark technology based on system call dependency graph (SCDG) and its obfuscation technique. Firstly, using the dynamic binary analysis framework provided by Valgrind and the external programming interface, we realize the extraction of birthmarks based on the system call dependency graph based on the existing Hawk tools. At the same time, we compare the classical graph-subgraph matching algorithm, select the VF2 algorithm which is more suitable for our experimental background, match the birthmarks of the software, and develop the corresponding checking tools by using the NetworkX library. On the basis of these works, we continue to analyze the weakness of this software birthmark technology based on system call dependency graph, and propose a system call confusion technique with semantic transformation, which can avoid the existing detection skillfully. Starting with the structure of the system call dependency graph (SCDG), we choose to insert redundant system calls into the original system call dependency pair, and replace the original dependency edge with a new system call and two dependent edges. This changes the original graph structure and ensures that the original program function remains unchanged. We use two programs that have been proved to have reuse relationship to verify the extraction of system call dependency. Through our checking tools, we do find that plagiarism exists. It also proves the accuracy of our work. In addition, we evaluate our confusion system in terms of effectiveness and performance. Experiments show that our confusion scheme can effectively destroy the original software birthmarks, and achieve a good purpose of confusion. And our system performance loss is very low, and these overhead basically comes from the newly inserted system call. Although our obfuscation technology can be used to attack software birthmarks, we aim to make new explorations in the field of software protection and have no intention of adding new attacks. The obfuscation technique based on system call also provides a new way to realize the diversity of software.
【学位授予单位】:南京大学
【学位级别】:硕士
【学位授予年份】:2013
【分类号】:TP309
【相似文献】
相关期刊论文 前10条
1 李梦雨;;关于系统调用的发展研究综述[J];河北经贸大学学报(综合版);2010年01期
2 姚立红 ,訾小超 ,黄皓 ,茅兵 ,谢立;基于系统调用特征的入侵检测研究[J];电子学报;2003年08期
3 罗宁,喻莉;一种基于系统调用异常检测的改进算法[J];电子工程师;2005年07期
4 刘雪飞;王申强;吴伯桥;马恒太;;基于系统调用的入侵检测新方法[J];计算机应用研究;2006年12期
5 陶芬;尹芷仪;傅建明;;基于系统调用的软件行为模型[J];计算机科学;2010年04期
6 吴瀛;江建慧;张蕊;;基于系统调用的入侵检测研究进展[J];计算机科学;2011年01期
7 刘竹;陈晶;方良;;基于支持向量数据描述的系统调用轨迹异常检测[J];计算机应用与软件;2012年01期
8 李珍;田俊峰;杨晓晖;;基于系统调用属性的程序行为监控[J];计算机研究与发展;2012年08期
9 吴瀛;江建慧;;基于进程轨迹最小熵长度的系统调用异常检测[J];计算机应用;2012年12期
10 资武成,徐鹏飞;一种基于系统调用的主机入侵检测及实现[J];计算机与现代化;2003年01期
相关会议论文 前6条
1 吴瀛;江建慧;;一种基于异常模式的系统调用异常检测[A];第六届中国测试学术会议论文集[C];2010年
2 陈林博;江建慧;张丹青;;基于多版本冗余进程的容侵系统[A];第十四届全国容错计算学术会议(CFTC'2011)论文集[C];2011年
3 朱国强;刘真;李宗伯;;基于程序行为分析的入侵检测技术研究[A];全国网络与信息安全技术研讨会'2005论文集(上册)[C];2005年
4 符蓉;徐向阳;王靖;;Linux下基于交叉视图的隐蔽恶意代码检测[A];第八届全国信息隐藏与多媒体安全学术大会湖南省计算机学会第十一届学术年会论文集[C];2009年
5 石玉平;何银南;郭俊杰;张琳;;机电测控系统调用Matlab函数的实现[A];制造技术自动化学术会议论文集[C];2002年
6 高岩;董占球;;有限目标的系统级防护技术的研究与实现[A];第十八次全国计算机安全学术交流会论文集[C];2003年
相关重要报纸文章 前1条
1 郑林;保护关键服务器[N];网络世界;2002年
相关博士学位论文 前3条
1 徐明;基于系统调用的异常入侵检测技术及IDS扩展功能的研究[D];浙江大学;2003年
2 尹芷仪;基于结构指纹和污点跟踪的软件行为模型研究[D];武汉大学;2010年
3 张桂玲;基于软计算理论的入侵检测技术研究[D];天津大学;2006年
相关硕士学位论文 前10条
1 苏杰;基于系统调用的入侵检测研究[D];华中科技大学;2007年
2 徐文龙;虚拟化系统进程防护技术研究与实现[D];南京理工大学;2015年
3 赵尚杰;云环境下多层次粒度可控的安全审计方法研究[D];哈尔滨工业大学;2015年
4 杨洋;基于Linux进程行为的入侵检测技术研究[D];电子科技大学;2014年
5 冯威;基于内核对象的动态恶意代码检测[D];哈尔滨工业大学;2014年
6 王新澈;基于行为的软件胎记技术研究[D];南京大学;2013年
7 符鹤;基于系统调用的入侵检测实现与评估[D];中南大学;2005年
8 王宇;基于系统调用异常检测的深度分析方法[D];华中科技大学;2005年
9 朱朝晖;系统调用在入侵检测中的研究与应用[D];广东工业大学;2008年
10 许铝才;采用系统调用监测安卓应用资源使用的研究[D];复旦大学;2013年
,本文编号:1825910
本文链接:https://www.wllwen.com/falvlunwen/zhishichanquanfa/1825910.html