前言:想要写出一篇令人眼前一亮的文章吗?我们特意为您整理了5篇网络安全逆向工程范文,相信会为您的写作带来帮助,发现更多的写作思路和灵感。
>> 基于协议分析的《计算机网络》课程教学方法的研究 一种新教学模式在“计算机网络”课程教学中的探索与实践 一种基于知识拓扑的《计算机网络》教学方法的研究 对《计算机网络》教学方法的一点探讨 计算机网络课程传统教学方法的困境与优化 “计算机网络”课程教学方法体系的研究与实践 一种基于网络熵的计算机网络攻击效果定量评估方法 《计算机网络》教学方法探讨 计算机网络教学方法初探 计算机网络“自上而下”和“自下而上”两种教学方法比较分析 独立设置实验课程《计算机网络》教学方法初探 计算机网络的一种实体安全体系结构分析 一种计算机网络安全“做中学”教学改革的实现办法 高校计算机专业《计算机网络原理》教学方法研究 计算机网络基础与实用技能教学方法的探讨与实践 基于计算机网络平台的互动教学方法的探索 高职院校计算机网络专业教学方法的研究 简析计算机网络课程教学方法的探索 普林斯顿大学计算机网络课程教学方法的启发 浅析《计算机网络基础》课程教学方法的研究 常见问题解答 当前所在位置:l.
[9] Salman A. Baset, Henning Schulzrinne. An Analysis of the Skype Peer-to-Peer Internet Telephony Protocol[J]. INFOCOM 2006. 25th IEEE International Conference on Computer Communications:1-11.
[10] 罗超,曾繁建,彭玉涛.重叠网络中QoS机制研究[J].井冈山学院学报:自然科学版,2009,30(6):59-61.
A New Teaching Method of Computer Network Protocol Analysis and Development Lab
CHEN Jian, WU Haijun, XU Xuan
(Department of Computer Science & Technology, Nanjing University, Nanjing 210093, China)
Abstract: A new approach to teaching computer network protocol analysis and development based on reverse engineering and overlay network was proposed. Students can improve their ability to protocol analysis through protocol reverse engineering exercise, and they can also develop protocol using the result of protocol analysis. Using overlay network, student can self-design a full network protocol stack without touching the underlying operating system’s stack. It can simulate basic functions and features of the TCP/IP protocol stack, such as routing protocol, sliding window protocol and signaling protocol. This kind of teaching method can not only train student’s protocol analysis and design capability, but also can greatly enhance student’s protocol development ability.
关键词:僵尸网络 攻击 防御 维护网络
中图分类号:TP393 文献标识码:A 文章编号:1007-9416(2014)05-0196-01
近年来,随着计算机网络技术的快速发展,网络攻击手段层出不穷,网络安全为广大用户所关注。黑客可以通过系统或网络漏洞对计算机发动攻击,使一群计算机成为更复杂的僵尸网络受其控制,并可以用来发起大规模的网络攻击,给人们造成更大的损失。面对威胁,就需要有针对性的采取手段进行防御及反制。
1 僵尸网络
1.1 僵尸网络的定义
僵尸网络是指攻击者通过使大量主机感染程序,并对此机群进行一对多操控的计算机网络。僵尸网络被恶意代码操控者远程控制和操作,在一个巨大的范围内可以发动多次拒绝服务攻击,多个渗透攻击,或执行其他恶意网络活动。攻击者通常利用这样大规模的僵尸网络实施各种其他攻击活动,对网络造成巨大危害,这也是僵尸网络攻击模式近年来受到黑客青睐的根本原因。僵尸程序本身并不能传播,但是网络蠕虫是可以通过漏洞扫描来实现自身的传播的,黑客通常将僵尸程序和蠕虫捆绑,利用蠕虫来传播僵尸程序,因此这类僵尸网络继承网络蠕虫的传播特性。同时,僵尸网络传播扩散是受控的,在受控的前提下僵尸网络的传播和网络蠕虫的传播相似。
1.2 僵尸网络的危害
僵尸网络其实是一个攻击平台,通过这个平台可以有效地发起各种各样的攻击行为。通过释放蠕虫代码让计算机群产生大量数据流,从而导致整个基础信息网络或者重要应用系统瘫痪;黑客通过控制这些计算机的所保存的信息,也可以导致大量机密或个人隐私泄漏,譬如银行账号的密码与社会安全号码等都可被黑客随意取用;还可以利用僵尸程序开放的sock服务器或重定向服务器作为网络跳板用来从事网络欺诈等其他违法犯罪活动。随着将来出现各种新的攻击类型,僵尸网络还可能被用来发起新的未知攻击,常见的中等规模的“业余”攻击和使用成千万僵尸主机进行的 “专业”攻击之间的差别正在逐步扩大。因此,不论是对网络安全运行还是用户数据安全的保护来说,僵尸网络都是极具威胁的隐患。
2 僵尸网络的攻击方式
僵尸网络是恶意软件技术,其有效性依赖多种恶意软件技术,使他们可以穿透一台电脑并执行他们的攻击。僵尸网络的工作过程分为三个阶段,传播、加入和控制。一个僵尸网络的传播载体如病毒、蠕虫、电子邮件、即时通信软件或网站的恶意软件工具等。当一台主机被感染后,它会根据控制方式和通信协议的不同,会自动加入到指定的服务器和频道中去,然后等待控制者发来的恶意指令。在控制阶段,攻击者就能够通过中心服务器控制被感染主机执行恶意行为,如发起拒绝服务攻击、窃取敏感信息等。
2.1 蠕虫代码释放
蠕虫,其特点就是能够快速繁殖蔓延,当一个僵尸网络释放出蠕虫代码时,计算机群就会在短时间内产生大量数据流导致整个网络堵塞或者瘫痪。研究表明,蠕虫病毒破坏力的大小主要取决于蠕虫的释放初节点规模及分布。
2.2 拒绝服务攻击
使用僵尸网络发动,攻击者可以向自己控制的所有僵尸机群发送指令,在特定的时间同时开始连续访问特定的网络目标,从而达到拒绝服务攻击的目的。由于僵尸网络可以形成庞大规模,攻击者就可以在进行拒绝服务攻击时做到更好地同步,使得拒绝服务攻击的危害更大,防范更难。
2.3 发送垃圾邮件
僵尸网络通过设立sockv4、v5 ,在完全隐藏自己的IP信息的同时,可以向特定主机发送大量垃圾邮件,这也对原来的反垃圾邮件工作提出了新的技术挑战。
2.4 窃取私密数据
攻击者可以从僵尸计算机中窃取用户的各种敏感信息和其他秘密。窃取的内容不但包括用户存储在计算机中的私密数据,还包括用户操作主机的每一个举动。
2.5 耗费网络资源
僵尸计算机能够大量的耗费网络资源,影响用户网络性能。利用这一点,攻击者可以在僵尸机中植入广告、不断访问特定的网址、进行各类违法活动;或者控制僵尸机进行违规的投票、选举活动等。
3 僵尸网络的应对策略
通过分析僵尸网络的工作过程,可以采取有效的对策防止其对网络进行危害。可以通过两个方面进行,一是通过传统的防御方法加强网络终端的防御;二是采用对抗技术,通过侵入僵尸网络内部,破坏它的命令控制机制,从而斩断它的控制信道,彻底摧毁僵尸网络。
3.1 提高系统安全级别
由于构建僵尸网络的僵尸程序仍是恶意代码的一种,因此,通过及时升级系统,更新系统补丁,升级应用程序,减少系统漏洞,安装防毒软件和防火墙,设置密码保护,都可以有效地提高用户系统的安全性,提高网络主机的防御能力。
从用户层面来说,养成良好的上网习惯需要用户本身具有一定的安全意识,不访问具有诱惑内容的网站;从网站上下载的软件要先进行病毒查杀;对不明来历的电子邮件不要打开而立即删除;对于即时通信中出现的网页链接、接受的文件等要谨慎,不可随意点击。
3.2 使用技术手段对抗僵尸网络
通过技术手段尽可能多的获得僵尸程序样本,采用逆向工程等恶意代码分析,获得登录僵尸网络的属性,开展针对僵尸网络命令控制信道的对抗。
3.2.1 僵尸网络劫持
通过对僵尸程序所要连接的僵尸网络控制信道的信息进行提取,获得僵尸程序的频道密码、认证口令、管理权限等认证控制者身份,伪装成控制者可以对僵尸网络予以劫持。以控制者身份登录到僵尸网络后,可以向僵尸网络良性控制命令,不仅可以清除整个僵尸网络,还可以接管其控制权。
3.2.2 僵尸程序漏洞攻击
僵尸程序既然作为一种程序代码,也一样会存在各种漏洞。比如,通过漏洞挖掘,发现僵尸网络存在内存越界读取漏洞,我们就可以直接向僵尸程序发送Shellcode,或者构造特殊的控制命令,等待其主动读取,从而造成僵尸程序缓冲区溢出而执行任意代码,通过这种手段可以达到接管僵尸主机控制权的目的。
1计算机硬件安全概述
计算机硬件主要包括主板、CPU、内存、输入及输出设备等,若计算机硬件安全等级不够,极易导致计算机存在安全隐患,计算机硬件设备遭受病毒程序侵袭,导致计算机系统崩溃。计算机信息安全体系主要由保密、集成及实用组成。计算机信息系统安全性指的是计算机硬件、软件及通信的安全。当前主要从物理、个人及组织三个层面确定计算机信息安全标准。计算机硬件安全设计目的在于使计算机用户正确使用安全产品,保证计算机信息安全。计算机硬件安全是计算机系统正常运行的重要保障,因此需要对计算机硬件及其处理器进行安全设计,为计算机系统构建安全的信息平台。
2计算机硬件设计安全发展过程
计算机应用技术对计算机硬件发展具有重要影响。在20世纪70年代,由于硅片成本较高,因此人们更重视将硅片进行简化,实现计算机硬件的共享。直到20世纪80年代,人们开始重视提高芯片运行速度,直至90年代,人们开始追求计算机硬件电力减耗工作。当前对于计算机硬件的安全研究不仅包括对计算机数据、通信及存储的安全,还重视对计算机信任、数字版权及用户隐私的安全管理。计算机芯片是计算机硬件系统的重要组成部分,如果芯片受到网络攻击,如拒绝服务、非授权拷贝及篡改等,会导致计算机硬件出现极大的损伤。非授权拷贝攻击方式主要通过对芯片信息进行复制,从而获取芯片副本,篡改则指的是改变芯片等软件程序代码,出现计算机系统敏感数据被窃取及系统故障等问题。当前计算机数据中心、移动通信、嵌入式设备等计算机硬件仍受到物理或软件的攻击,因此需要采用新型数据加密技术,加强计算机硬件安全性。
3计算机硬件安全设计方案
3.1计算机硬件设计安全
当前对计算机硬件安全研究主要包括硬件木马检测、基于不可信工具的可信综合型技术、新型安全原语设置、通过安全原语构建芯片及单元的综合技术、版权集成电路构建及计算机硬件安全协议等内容。硬件木马对计算机硬件安全性具有极大影响,通过对计算机芯片进行恶意更改,使计算机芯片产生极大的损害。硬件木马发生作用主要通过第三方在计算机原有电路中加入多种门电路,使得计算机常规检测无法有效识别此类攻击。芯片内在变异会导致计算机系统对硬件木马的检测难度加大,若木马存在于电路支路中,使得计算机结构测试无法最大程度上发挥作用。物理不可复制技术(PUF)是针对芯片变异的重要技术9见图1),通过在芯片中形成完整的输入及输出映射,作为一种基于硬件变异的安全原语,无法通过数学或统计方法实现逆向工程,使得芯片映射存在一定的不确定性。当前各种PUF设计方案具有一定限制,其芯片结构线性特征、非线性特征不足,且对统计及逆向工程攻击具有较强的灵敏性,使得PUF技术安全等级无法满足人们对计算机硬件安全的要求。
3.2计算机硬件设计方案
3.2.1计算机硬件内置安全确认
在计算机芯片制造过程中,利用EPIC技术,采用电路加设密钥、激活及电路总线加置加锁、解锁的方式实现对计算机硬件IP的有效保护。本文结合EPIC技术,采用PUF技术,设计出计算机硬件内置安全设计方案。方案设计原理为:将HDL、C格式的IC原始设计通过EDA工具进行编译,获取IC物理版图,并采用PUF技术改变IC原始设计芯片,获取PUFID,并将其与IC所有者的版权信息进行结合,采用AES等加密算法获得IC产品的密钥。IC物理版图中的关键部位经过密钥形成需验证模块,实现对IC版图的保护。
3.2.2计算机外置辅安全检测
计算机外置辅安全检测通常采用RAS机制,通过可信任的密钥管理中心形成私人密钥与公共密钥。在公共密钥中设置加密型芯片,将芯片信息存储到集成电路中,形成信息回路。计算机外置辅安全检测设备主要包括安全验证芯片与密钥存储器,保证私人密钥的安全性。在计算机外置辅检测设备运行时,需要利用RFID获取芯片内部电路信息,由安全验证芯片对芯片进行检测,保证芯片硬件的安全性。
4结语
当前我国计算机硬件安全系统仍处于发展早期,对计算机硬件安全性的研究已取得一些成果,但由于计算机硬件安全性受到硬件木马等威胁,仍需要加强对影响计算机硬件安全性因素的研究。计算机硬件安全是计算机信息系统正常运行的重要保障,我们需要重视计算机安全检测设备的研究,从计算机内置安全管理及外置辅安全检测方面,制定合理有效的计算机硬件检测方案,不断提升计算机安全性能,推动我国计算机信息安全系统的发展。
参考文献:
[1]聂廷远,贾萧,周立俭等.计算机硬件设计安全问题研究[J].信息网络安全,2012,10:17-19.
[2]陈兴欣.计算机硬件设计安全问题分析[J].电子技术与软件工程,2015,06:232.
西安电子科技大学(以下简称西电科大)是西北地区最早开设“编译原理”课程的高校之一,由计算机学院和软件学院开设的“编译原理”分别于2003年、2004年被评为校级、省级精品课程,并获2005年度“教育部-微软精品课程”建设立项支持。
课程创新点
经过长期的教学实践,西电科大“编译原理”课程组已建立起了较完整的教学体系,包括年龄结构和知识结构合理的教师队伍、反映本课程水平的自编教材及先进的教学实践环境,其特色和创新点概述如下:
1)坚持教学科研并重,不断更新教学内容
课程组成员坚持教学与科研并重,十几年来先后主持与承担国防预研、国防预研基金、横向科研课题等十余项,发表学术与教学研究论文20余篇。这些课题所研究内容大部分是编译领域的核心技术,科研成果水平在国内高校同行中处于领先地位。丰富的科研积累为教学的实施与改革提供了充足的养分。
课程组能够将科研成果及时转化到本课程的教学中,同时不断更新教学内容和教学手段,极大地发挥了学生的学习热情和创造性,提高了“编译原理”课程教学的水平和质量。同时,通过科研与教学相结合,形成了一支学术造诣高、知识与年龄结构合理、勇于改革且团结协作的课程梯队。
2)重视实验教学研究与改革,培养学生工程实践能力与素质
计算机科学与技术专业是一个实践性要求很高的专业,而“编译原理”是本专业中对软件设计实验环节要求更高的课程。“编译原理”开设了独立的综合实验“函数绘图语言解释器构造”,其中的三个实验子系统“词法分析器构造”、“语法分析器构造”、“语法制导翻译图形绘制”有机连为一体,反映了“编译原理”课程的核心技术和实验水平,充实了理论教学内容,培养了学生的工程实践能力与科研素质。
我们还根据国内教学条件的实际情况,在所承担的科研项目工作基础上,于1993年自主研制开发了在微机和DOS/Windows环境下的词法分析器生成器XDFLEX和语法分析器生成器XDYACC(它们是与编译器构造领域中最具影响且被广泛使用的、Unix环境下的词法分析器生成器Lex和语法分析器生成器Yacc兼容的软件,其中XD是我校英文缩写),当时在国内是首创。1996年,我们又对XDFLEX进行了改造,增加了汉字识别的自动生成,并重新命名为XDCFLEX。至此,XDCFLEX/ XDYACC形成了具有中国特色的、教学与科研兼顾的编译器编写工具(放在我校网站上供自由下载)。此工具不但提高了我校学生的上机实习水平和“编译原理”课程实验室建设的水平,同时也被国内多所高校的教师和学生以及研究所的科研人员使用,提高了我校“编译原理”课程在国内的地位。
课程建设的实施办法
1)明确目标,合理安排。根据课程组的现有条件,制定合理的建设目标和课程质量标准,提出师资队伍建设规划以及教学过程、教学管理和教学改革等方面的基本要求。依靠教师和教学管理人员,明确职责,分级建设,责任到人。
2)树立课程整体优化的观念。在明确课程建设目标的前提下,解决相关课程之间的配合和衔接问题,推进“模块课程”或“系列课程”的整体优化,将课程建设放在专业建设和培养模式中进行优化设计。
3)重视师资队伍建设,开展教学改革与研究。课程建设应形成合理、优化的专业教师梯队,以高层次、高学历教师为主体,教师队伍中高、中、初级职称比例合适,课程负责人具有较高的学术水平和教学水平,课程组有计划地经常开展教研活动,加强对中青年教师的培养。保证每年有一定的教学改革项目或教研项目立项和教学改革成果。
4)加强教材建设,改革教学手段。一方面采用国内现有的先进教材和精品教材,另一方面根据学院自身的现有条件和专业特点组织教师自编部分具有一定创新性和特色的教材。同时制作、收集和整理电子教材、课件以及教辅材料,逐步形成立体化教材体系。根据本课程的教学特点,采用多媒体教学,建立教学网站,实现网上教学辅导。
5)建立健全学生评价、教师同行听课和教学督导组听课机制,逐步完善教学质量监控和评估体系,确保和提高课堂教学质量和效果。
6)建立有效的激励机制。对于承担精品课程建设任务并作出突出贡献的课程负责人及骨干教师在评奖、评优、晋职等方面给予优先考虑。
教材介绍
课程组曾经选用陈火旺院士的《编译原理》(国防科技大学出版社)、《编译原理和技术》,经过长期积累,在总结二十多年教学经验、科研与教学改革成果的基础上,由刘坚教授主编了《编译原理基础》教材。该教材及与其配套的教学辅助指导书《编译原理基础-习题与上机题解答》全面体现编译原理的教学规律,内容新颖先进,独创性、实用性好,教学适用性强。自2002年出版以来,已发行万余册,被若干高校选用,在相关科研技术人员中亦被广泛使用。2005年《编译原理基础》被评为西安电子科技大学优秀教材,同年,荣获陕西省优秀教材二等奖。
课程组教师
目前,“编译原理”课程组由4名主讲和3名专职辅导教师组成。
刘坚:1982年2月起在西安电子科技大学任教,教授。主讲本科生“编译原理”、研究生“编译原理与技术”等课程,研究方向为计算机软件理论与技术。主持“Ada软件开发平台技术”、“软件系统安全故障模式分析”、“软件安全模式”等课题的研究工作,发表多篇学术论文。
龚杰民:1973年5月起在西安电子科技大学任教,教授,研究方向为人机交互技术和软件开发工具。主讲“编译原理”、“形式语言与自动机理论”、“C程序设计”、“PROLOG程序设计”、“人机交互技术与可靠性工程”等课程。长期从事编译原理、形式语言与自动机、人机交互技术等课程的教学与研究。发表教学研究及学术论文多篇,著有《C语言程序设计及其应用》、《标准C语言程序设计及应用》、《人机交互技术及可视化技术》、《人-计算机界面设计》(译)等。主持的多项科研课题获得省部级奖励,其中,“触摸屏电子笔”获中国实用新型专利证书,主持的“液晶显示器和等离子体显示器的工效研究”课题成果已在日本使用。
方敏:1989年起在西安电子科技大学任教,博士,教授。主讲“编译原理”、“操作系统”、“计算机网络”等课程,参加“联合作战态势评估辅助决策模型研究”、“智能化多源数据融合”等课题的研究工作;编著教材“计算机操作系统”(西安电子科技大学出版社,2004);撰写论文多篇。
张淑平:1995年起在西安电子科技大学任教,在读博士生,副教授。主讲“编译原理”、“数据结构”等课程,西电科大 ACM/ICPC竞赛基地教练, 参加“宽带无线IP网络安全体系结构”、“基于算法的容忍入侵检测系统”等科研项目,著有“程序员教程”一书(清华大学出版社,2004),撰写论文多篇。
张立勇:2001年起在西安电子科技大学任教,在读博士生,讲师。主讲“编译原理”、“分布对象技术”、“算法设计与分析”等课程,参加“计算机软件安全模式分析”等课题研究,担任西电科大ACM/ICPC竞赛队教练。
胡圣明:2003年起在西安电子科技大学任教,在读博士生,讲师。辅导“编译原理”课程,主讲“数据库应用技术”课程,参加《编译原理基础-习题与上机题解答》的编写工作。参加“程序理解征挖掘理论与方法的研究”、“面向对象逆向工程工具研究”、“系统应用软件逆向工程工具研究”等科研项目的研究工作,撰写论文多篇。
王小兵:2004年起在西安电子科技大学任教,在读博士生,讲师。辅导“编译原理”课程,主讲“数据库系统”课程。
关键词:软件;安全;测试;方法
中图分类号:TP311文献标识码:A文章编号:1009-3044(2012)13-3081-02
The Brief Analysis of Methods of the Software Security Test
SONG Yan-hong
(Beijing Electronic Institute of Science and Technology, Beijing 100070, China)
Abstract: With the development of science and technology, the computer software has been applied more and more range. But the security of software is becoming more and more important, safety is one of the most important link in a software cycle life. Only when we solve software security issues well we can urge software better development. This paper mainly introduces attentions and methods of the software testing.
Key words: software; security; testing; methods
软件的安全测试的目的是为了保证软件能够满足与软件预期的设计要求相符合的安全系数,和平常的软件缺陷不同的是,计算机的软件安全测试检测的是软件不应该做什么,而软件缺陷是软件应该做什么没有做到。检测软件的安全性能我们可以分成安全功能和漏洞两个方面来进行检测。功能的测试是为了验证计算机的软件安全功能能不能达到安全所需要的要求。检测软件的安全功能会涉及到比较广的内容和方面,大致包含授权、机密、安全管理以及访问的控制等。[1]安全漏洞的检测主要是针对软件存在的缺陷有哪些可能以及这些缺陷可能会引起的软件使用过程中发生危险。
就软件安全检测工作本身而言研究检测软件安全方法具有很高的价值和意义,软件安全的测试方法的研究是保障计算机软件安全重要的保障之一。软件的安全检测作为开发过程中重要的环节之一,主要的目的就是要发现软件存在的漏洞,通过对程序进行执行、检查,从而有效的发现、解决、更正软件存在的潜在风险和问题。[2]我们就目前应用在计算机软件的安全检测技术情况而言,我们通常使用的软件安全测试方法大致可以分为手工检测以及静态、动态检测等数种方法。
1计算机软件安全检测是应注意的问题
我们在检测软件的安全性的时候要特别的注意一些问题:首先我们要从实际出发,根据所要检测计算机软件的自身特点以及安全性的要求进行综合的分析判断,在这些基础上科学的选择最适合此软件的安全检测方法,安全检测方案的制定贵在实事求是的合理选择。其次,我们在检测软件安全的时候要注意好身边的人员的分配,最好进行多元化的配置,因为在检测软件安全的过程我们要配备的不仅仅是软件的安全分析员,还要找一些熟悉那个软件系统的、以及设计这个软件系统的设计人员,让他们一同加入软件的安全测试中去,多领域配合会使得软件的安全检测更全面更有效。[3]最后,我们要注意在检测软件安全的时候,要积极的认真的分析需求级、系统级以及代码级,在适当那个的时候比如规模大的软件,我们还应该分析软件的结构设计。计算机软件的安全检测过程是系统化的,我们不能用简单的方法来解决,我们要向全面的检测出系统所有的安全问题就要选择合理的检测方法,安排配置好检测人员。
2软件安全漏洞检测方法
2.1手工分析
现在绝大多数的安全研究员采用的依然是最古老的最传统的手工分析方法。手工分析方法如果运用在开源软件上,这种方法一般通过Source Insight这样的源码阅读工具来进行源码的查询和检索。例如我们分析C语言或者C++的程序,最简单的办法是首先审查软件系统中的gets、strcpy等输入命令有没有存在危险的函数调用,接着需要审核的就是库函数以及软件中的循环。[4]对于闭源软件来说,他们和开源不同,闭源的源代码获得比较的困难,所以我们要使用必要的反汇编以及调试器,我们利用反汇编来得到软件的汇编代码,在这个代码的基础上再来分析软件的安全性,闭源软件的手工分析难度比源代码阅读要高得多,这就会造成理解源程序以及程序的逆向工程分析困难。总之不论是用什么手工分析方法,我们都要求我们的安全分析员能够深入的了解软件安全漏洞原理,对软件结构和功能的掌握也是必不可少的。用手工分析的方法来检测软件的安全性能,软件开发员即使精通检测软件安全漏洞技术,手工捡漏仍然非常的费时耗力。可是现在还没有完全自动化的检测软件安全的技术,而且机器的检测最终还需要我们去验证,因此人工参与是一个必须的也是不可或缺的过程,在确认静态分析结果、分析动态程序数据的构造等操作的时候我们也少不了手工分析。
2.2动态测试
软件的动态测试的目的是检验软件运行过程中的动态行为以及结果的正确性。现在,动态测试成为了软件安全测试主要的方法之一。这个测试需要执行程序的来完成测试需要,动态分析在运行程序以后可以得到一次或者多次的信息,然后工作人员根据得到的信息检测特定的漏洞,进而完成安全分析。最常见的动态测试是程序的测试以及剖析,动态测试对程序的测试结果非常的准确,因为动态测试没有抽象化处理程序,在程序的执行过程中是哪条路被执行了,计算得出的数据是多少,程序运行时使用的内存、执行的时间等都可以很明确的知道。可是动态测试的结果不完整,因为程序的执行的一个情况无法代表程序还可能会执行的其他情况。也就是如果输入的一个数据集无法保证程序能够执行完所有可能的路径,程序一次甚至多次执行还是可能会有一些安全的问题无法被发现软件,可是这些漏洞是真实存在的,我们要做好动态测试就是要设计好分支和状态覆盖测试。
2.3静态测试
我们在安全检查的时候还有一种效率比较高的软件安全分析方法就是静态测试,它的应用越来越受到人们的重视。只要用户给出抽象语义,静态测试技术就可以自动的发现软件所有可能执行的状态,以及状态下的软件属性。软件的静态测试分析速度快、自动化程度高,在实际的应用中我们也发现静态测试和动态相比效率更高,而且找到缺陷的速度也快不少。虽然软件的静态分析有可能会发生漏报、误报可是到目前为止和其他的安全测试方法比起来静态测试最实用、有效的方法。静态测试使用静态分析技术,直接分析程序的源代码,通过词法分析、语法分析和静态语义分析,检测程序中潜在的安全漏洞。现在,主要有类型推断、数据流以及约束分析三种静态分析方法。
2.3.1类型推断
我们知道我们分析运算符作用的对象、赋值,实际参数的传递时,或多或少都会存在一些类型合适不合适的情况。我们所说的类型推断属于处理过程,它的目的是保证进行对象的每个操作的数目和类型都是正确、合理的,确保操作有效。类型推断可以检查类型错误,选择合适的操作,根据情况确定必要的类型转换。这种方法简单、高效,对快速的检测软件的安全性非常的适合。我们在检查操作系统内核权限、遇到程序中字符串格式化漏洞和内核中不安全的指针使用的安全检测的时候采用类型推断方法检测。
2.3.2数据流分析
在编译的时候我们可以使用数据流分析技术,这种技术可以收集程序代码中的语义信息,然后用代数的方式对它进行编译,从而确定变量定义以及变量的使用。我们可以用数据流分析来优化编译、调试、验证、并行、测试、向量化程序的环境因素。在安全检测中数据流分析有非常广泛的应用,我们用数据流分析可以检测程序软件中的数组的越界等多种类型的安全漏洞。
2.3.3约束分析
约束分析分为约束产生、约束求解两个步骤,约束分析的第一步是利用约束规则建立分析状态和变量类型的约束,第二步是求解这些约束系统。约束系统分为三种形式:等式、集合以及混合。约束项之间仅仅存在等式关系的是等式约束,集合约束是把程序变量看作值集,混合约束系统由部分等式约束和部分集合约束组成。在安全检测中我们使用约束分析来测试软件的安全性能也是比较广泛的。例如我们利用集合约束的方法来测试程序中缓冲区是不是存在溢出漏洞。
以上三种静态检测方法各有各的利弊,通过对各自的比较我们可以看出,检测能力强但是速度慢的是约束分析,这种分析方法检测软件安全比较适合;检测强速度较快的是数据流分析,这种方法最适合的是要求考虑控制流信息并且变量之间的操作简单的问题;最检测能力弱检测速度快的是类型推断,这种方法最适合的问题是与控制流无关、属性域有限的安全属性。
2.4侦听技术
我们所说的侦听技术有的也叫做网络监听,这种方法可以获取网络传输的信息,获取的信息并非发给自己的。在测试软件的安全性时网络侦听技术是常用手段,这种方法可有效诊断、管理网络问题,可以很好的检查软件网络安全存在的威胁。
我们现在最常用的网络是一个广播型的网络,我们可以从该网中的任何的一台计算机都可以侦听到这个网段所有的数据传输包。我们可以利用这种技术对软件进行安全性检测,防止软件泄露一些重要的数据,我们可以利用工具或者是自己编的小程序复制我们侦听到的数据包并把他们存储下来,然后我们就可以通过得到的这些信息数据来分析网络、软件的安全。我们最好把侦听放在路由器、网关、防火墙、交换机等设备的地方,由于这些地方流过的信息包多,所以这里的监听效果最好。我们经常使用的网络侦听经典程序有Snoop等,一般来说侦听程序还不能做到把侦听到的数据包马上进行分解分析,这些软件一般是先进行不停地存储,然后慢慢再进行分析,这样可以防止数据包的遗漏。
3总结
从上面的介绍和论述中我们可以看出,软件的安全是计算机信息安全最重要的组成部分之一,安全性测试的重要性越来越得到软件开发以及测试人员的认可。现在软件安全的检测办法有很多,我们主要了解介绍了比较传统但是不可缺少的手动分析方法,还有动态分析和静态分析,通过对程序的执行来检测软件的安全,还有侦听技术,保证网络和软件的安全使用,保证软件的重要数据不被泄露。但是我们现在的测试软件安全的方法还不够的系统全面,还或多或少的存在着这样那样的问题,这些还需要我们进一步的去研究。在接下来,我们要深入的研究软件的授权等安全功能建模与测试技术,把安全测试方法形式化,研究模糊测试、故障注入以及基于属性的安全测试方法还有很多新的软件安全测试技术等着我们去深入的研究开发,我相信,通过我们的努力,我们一定能够开发出更好的软件安全测试技术,让软件的安全性能得到保障。
参考文献:
[1]黎连业,王华,李淑春.软件测试与测试技术[M].北京:清华大学出版社,2009(5):24.
[2]罗国庆.实用软件测试方法与应用[M].北京:电子工业出版社,2007:129-130.