计算机信息安全技术 课件 第10、11章 软件保护技术、虚拟专用网技术_第1页
计算机信息安全技术 课件 第10、11章 软件保护技术、虚拟专用网技术_第2页
计算机信息安全技术 课件 第10、11章 软件保护技术、虚拟专用网技术_第3页
计算机信息安全技术 课件 第10、11章 软件保护技术、虚拟专用网技术_第4页
计算机信息安全技术 课件 第10、11章 软件保护技术、虚拟专用网技术_第5页
已阅读5页,还剩78页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第十章软件保护技术10.1软件保护技术概述10.2静态分析技术10.3动态分析技术

10.4常用软件保护技术10.5软件加壳与脱壳10.6设计软件的一般性建议10.1软件保护技术概述软件保护技术是软件开发者用来维护软件版权,增加其盗版的难度,或延长软件破解的时间,尽可能防止软件被非法使用所采用的方法。10.1软件保护技术概述软件保护技术与软件盗版之间是矛和盾的关系。软件盗版通常所采用的方法:静态分析技术动态分析技术10.2静态分析技术静态分析是从反汇编出来的程序清单上分析程序流程,从提示信息入手,了解软件中各模块的功能、各模块之间的关系及编程思路。通过对程序的静态分析,是软件破解的一个手段,也是软件保护的必要方法。10.2.1静态分析技术的一般流程步骤1:运行程序,查看该软件运行时的限制或出错信息。如:试用时间的限制、试用次数的限制等。步骤2:查看软件是否加壳。如果该程序使用加壳保护,则在进行静态分析前必须进行脱壳的处理,否则无法进行对该软件的静态反汇编操作或反汇编出来的结果不正确。步骤3:静态分析软件。利用静态反汇编工具(如W32Dasm、C32asm、IDA等)进行反汇编,然后根据软件的限制或出错信息找到对应的代码位置,还要找到该软件的Call和跳转等关键代码,这些对是否成功破解与保护软件起到关键作用。10.2.1静态分析技术的一般流程步骤4:修改程序。根据找到的关键代码,使用十六进制编辑器修改这些关键位置的机器码或汇编代码。步骤5:制作补丁程序。找到软件的相关使用漏洞后,就可以根据这些漏洞信息来制作保护软件的补丁程序。10.2.2文件类型分析常用的文件分析工具有PEiD、DIE和FileInfo等。10.2.2W32DASM简介W32Dasm针对现在流行的可执行程序进行反编译,即把可执行的文件反编译成汇编语言,以便于分析程序的结构和流程。主要功能:

1.加载文件;

2.转到程序入口点

3.转到代码开始;

4.转到页;

5.转到代码位置

6.执行文本跳转;

7.执行调用;

10.2.2W32DASM简介8.输入函数;9.输出函数;10.菜单参考;11.对话框参考;12.串式数据参考;13.复制汇编代码文本;14.单步跟踪程序;15.设置激活断点;10.3动态分析技术动态分析是利用调试器(如OllyDbg),通过调试程序、设置断点、控制调试程序的执行过程来发现问题。常见的调试器SoftICEOllyDbg(简称OD)RW2000软件注册破解实例所用工具:

PeiDv0.92

AspackDiev1.41

OllyDbgv1.10

W32dasmKeyMakev1.73软件注册破解实例Step1:检测壳软件注册破解实例Step2:脱壳软件注册破解实例Step3:运行程序、尝试注册、获取注册相关信息软件注册破解实例Step4:反汇编 用W32dasm对ZnUn.exe进行反汇编。然后在W32dasm提供的参考字符串里寻找刚才那句关键的话:软件注册破解实例转到对应语句段软件注册破解实例Step5:调试 找到刚才的地址004DF869,下断点。软件注册破解实例当运行至断点时,程序暂停,用F8键来单步执行程序,并注意观察下面的信息框。软件注册破解实例继续运行。软件注册破解实例Step6:制作注册机其中指令长度是指令机器码所占的字节数,下面选择用到的寄存器EDX软件注册破解实例10.4常用软件保护技术序列号方式警告(NAG)窗口功能限制的程序时间限制注册保护10.4.1序列号方式1、序列号保护机制构造多元的算法:

特定值=F(用户名1,用户名2,...序列号1,序列号2...)

10.4.1序列号方式现有构造算法的举例:(1)在软件程序中有一段加密过的密文S;

(2)密钥=F(用户名、序列号),用上面的二元算法得到密钥;

(3)明文D=F-DES(密文S、密钥),用得到的密钥来解密密文得到明文D;

(4)CRC=F-CRC(明文D),对得到的明文应用各种CRC统计;

(5)检查CRC是否正确。最好多设计几种CRC算法,检查多个CRC结果是否都正确。10.4.1序列号方式2、攻击序列号保护数据约束性的秘诀

S命令利用消息断点10.4.2警告(NAG)窗口Nag窗口是软件设计者用来不时提醒用户购买正式版本的窗口。它会在程序启动或退出时弹出来,或者在软件运行的某个时刻随机或定时地弹出来。去除警告窗口方法:修改程序的资源静态分析动态分析。10.4.3功能限制的程序菜单中部分选项是灰色的不能用,一般是通过如下两种函数实现的:

(1)EnableMenuItem(2)EnableWindow

(1)EnableMenuItem允许、禁止或变灰指定的菜单条目BOOL

EnableMenuItem(

HMENUhMenu,//菜单句柄

UINTuIDEnableItem,//菜单ID,形式为:充许,禁止,或灰

UINTuEnable//菜单项目旗帜

);

其ASM代码形式如下:

PUSHuEnable

//uEnable=0则菜单选项允许

PUSHuIDEnableItem

PUSHhWnd

CALL[KERNEL32!EnableMenuItem]允许或禁止鼠标和键盘控制指定窗口和条目(禁止时菜单变灰)

BOOLEnableWindow(

HWNDhWnd,//窗口句柄

BOOLbEnable//允许/禁止输入

);

如窗口以前被禁止则返回一TRUE,否则返回FALSE。(2)EnableWindow10.4.4时间限制在Windows中使用计时器有如下几个API函数。1.SetTimer()。应用程序可以在初始化时调用这个API函数来向系统申请一个计时器。2.TimeSetEvent()。应用程序通过调用TimeSetEvent()函数来设定回调函数的激活,从而提高计时的精度。3.GetTickCount()。该函数返回系统自成功启动以来所经过的毫秒数。4.TimeGetTime()。多媒体计时器函数TimeGetTime()也可以返回Windows自启动后所经过的时间,以毫秒为单位。10.4.5注册保护注册文件(KeyFile)是一种利用文件来注册软件保护的方式。软件每次启动时,从该注册文件中读取数据,然后利用某种算法进行处理,根据处理的结果判断是否为正确的注册文件,如果正确则以注册版模式来运行。10.5软件加壳与脱壳10.5.1壳的介绍 壳是一段执行于原始程序前的代码。原始程序的代码在加壳的过程中可能被压缩、加密……

当加壳后的文件执行时,壳先于原始程序运行,它把压缩、加密后的代码还原成原始程序代码,然后再把执行权交还给原始代码。10.5.2软件加壳工具简介最常见的加壳软件:ASPACKUPXPEcompact不常用的加壳软件:WWPACK32PE-PACKPETITENEOLITE10.5.3软件脱壳软件加壳是作者写完软件后,为了保护自己的代码或维护软件产权等利益所常用到的手段。常用脱壳工具:

(1)Aspack:用得最多,可以用ASPACKDie或PEDUMP32脱壳(2)ASProtect+aspack:国外的软件多用它加壳,脱壳时需要用到SOFTICE+ICEDUMP,需要一定的专业知识。(3)Upx:可以用UPX本身来脱壳(4)Armadill:可以用SOFTICE+ICEDUMP脱壳,比较烦(5)Dbpe:国内比较好的加密软件,新版本暂时不能脱壳,但可以破解(6)NeoLite:可以用自己来脱壳(7)Pcguard:可以用SOFTICE+ICEDUMP+FROGICE来脱壳(8)Pecompat:用SOFTICE配合PEDUMP32来脱壳(9)Petite:一部分的老版本可用PEDUMP32直接脱壳,新版本脱壳时需要用到SOFTICE+ICEDUMP,需要一定的专业知识。(10)WWpack32:和PECOMPACT一样其实有一部分的老版本可以用PEDUMP32直接脱壳,最好还是用SOFTICE配合PEDUMP32脱壳。10.6设计软件的一般性建议(1)软件最终发行之前一定要进行加壳/压缩,使得解密者无法直接修改程序。(2)增加对软件自身的完整性检查。包括对磁盘文件和内存映像的检查,以防止有人未经允许修改程序进行破解。(3)不要采用一目了然的名字来命名函数和文件。如IsLicensedVersion()、key.dat等。(4)尽可能少地给用户提示信息。因为蛛丝马迹都可能导致解密者直接深入到保护的核心。(5)将注册码、安装时间记录在多个不同的地方。

(6)检查注册信息和时间的代码越分散越好。(7)不要依赖于GetLocalTime()、GetSystemTime()这样众所周知的函数来获取系统时间。可以通过读取关键的系统文件的修改时间来得到系统时间的信息。(8)如果可能,可以采用联网检查注册码的方法,且数据传输时要加密。(9)除了加壳/压缩之外,还需要自己编程在软件中嵌入反跟踪的代码,以增加安全性。(10)在检查注册信息的时候插入大量无用的运算以误导解密者,并在检查出错误的注册信息之后加入延时。(11)给软件保护加入一定的随机性。比如除了启动时检查注册码之外,还可以在软件运行的某个时刻随机地检查注册码。

(12)如果采用注册码的保护方式,最好是一机一码。即注册码与机器特征相关。(13)如果试用版与正式版是分开的两个版本,且试用版的软件没有某项功能,则不要仅仅使相关的菜单变灰,而是彻底删除相关的代码。(14)如果软件中包含驱动程序,则最好将保护判断加在驱动程序中。(15)如果采用keyfile的保护方式,则keyfile的尺寸不能太小,可将其结构设计得比较复杂,在程序中不同的地方对keyfile的不同部分进行复杂的运算和检查。(16)检查注册信息的算法不能过于简单,采用比较成熟的密码学算法。本章教学要求:(1)掌握软件破解的常用技术,包括静态分析、动态分析技术;(2)掌握常用的软件保护技术和方法;(3)了解软件的加壳与脱壳的概念和方法。计算机信息安全技术第十一章虚拟专用网技术目录11.1VPN的基本概念11.2VPN实现技术11.3VPN的应用方案11.1VPN的基本概念VPNVPN的英文全称是“VirtualPrivateNetwork”,翻译过来就是“虚拟专用网络”。顾名思义,虚拟专用网络我们可以把它理解成是虚拟出来的企业内部专线。传统意义上的VPN:在DDN网或公用分组交换网或帧中继网上组建VPN。基于IP的VPN:依靠ISP和其它NSP(网络服务提供商)在公用网络中建立专用的数据通信网络的技术。卡车相当于运载协议,盒子相当于封装协议,计算机则是乘客协议。11.1VPN的基本概念VPN的工作原理VPN的定义:是指依靠ISP或其他NSP在公用网络基础设施之上构建的专用的数据通信网络,这里所指的公用网络有多种,包括IP网络、帧中继网络和ATM网络。IETF对基于IP的VPN定义:使用IP机制仿真出一个私有的广域网。原理上来说,VPN就是利用公用网络(通常是互联网)把远程站点或用户连接到一起的专用网络。与使用实际的专用连接(例如租用线路)不同,VPN使用的是通过互联网路由的“虚拟”连接,把公司的专用网络同远程站点或员工连接到一起。11.1VPN的基本概念VPN采用“隧道”技术,可以模仿点对点连接技术,依靠Internet服务提供商(ISP)和其他的网络服务提供商(NSP)在公用网中建立自己专用的“隧道”,让数据包通过这条隧道传输。对于不同的信息来源,可分别给它们开出不同的隧道。11.1VPN的基本概念VPN的分类按VPN的应用方式进行分类

拨号式VPN专用式VPN按VPN的应用平台分类

软件平台VPN专用硬件平台VPN辅助硬件平台VPN11.1VPN的基本概念按VPN的协议分类

第二层协议:PPTP、L2F、L2TP第三层协议:GRE、IPSec第二层协议-第三层协议之间(2.5层):MPLS第四层隧道协议:SSLVPN按VPN的服务类型分类IntranetVPN(内部网VPN)AccessVPN(远程访问VPN)ExtranetVPN(外联网VPN)三种类型VPN的示例11.1VPN的基本概念按VPN的部署模式分类

端到端(End-to-End)模式供应商——企业(Provider-Enterprise)模式内部供应商(Intra-Provider)模式VPN的特点与功能

具备完善的安全保障机制具备用户可接受的服务质量保证(QoS)具备良好的可扩充性与灵活性具备完善的可管理性11.1VPN的基本概念VPN安全技术加解密技术对称加密算法非对称加密算法认证技术验证数据的完整性用户认证密钥管理技术11.2VPN实现技术隧道VPN所有现有的实现都依赖于隧道,隧道技术又称为tunneling,主要是利用协议的封装来实现,用一种网络协议来传输另外一种网络协议。即本地网关把第二种协议报文包含在第一种协议报文中,然后按照第一种协议来传输,等报文到达对端网关时,由该网关从第一种协议报文中解析出第二种协议报文,这样是一个基本的隧道技术的实现过程。第二层隧道协议

PPTP(PointtoPointTunnelingProtocol,点到点隧道协议)、L2TP(Layer2TunnelingProtocol,链路层隧道协议)、L2F(Layer2Forwarding,链路层转发协议)。11.2VPN实现技术PPTP协议PPTP由PPTPForum开发,PPTPForum是一个联盟,其成员包括USRobotics、Microsoft、3COM、Ascend和ECITelematics。PPTP是点到点协议(PPP)的扩充,即PPTP协议是基于PPP之上并且应用了tunneling技术的协议。它用“PPP质询握手验证协议(CHAP)”来实现对用户的认证。简单的说,PPTP是用于将PPP分组通过IP网络封装传输。11.2VPN实现技术图11.5PPTP工作示意图11.2VPN实现技术在PPTP的体系结构中,主要由三部分组成:1)PPP连接和通信,按照PPP协议和对方建立链路层的连接。2)PPTP控制连接,建立到Internet的PPTP服务器上的连接,并建立一个虚拟隧道。3)PPTP数据隧道,在隧道中PPTP协议建立包含加密的PPP包的IP数据报,这些数据报通过PPTP隧道进行发送。L2F协议

由CISCO提出并倡导使用的链路层安全协议,当然它也采用了tunneling技术,主要面向远程或拨号用户的使用。11.2VPN实现技术L2F主要强调的是将物理层协议移到链路层,并允许通过Internet光缆的链路层和较高层协议的传输。物理层协议仍然保持在对该ISP的拨号连接中。L2F还解决IP写地址和记帐的问题。对于ISP的初始连接,L2F将使用标准PPP。对于验证,L2F将使用标准CHAP或者做某些修改。对于封装,L2F指定在L2F数据报中封装整个PPP或SLIP包所需要的协议。同时这些操作尽可能地对用户透明,以方便应用L2F来构建灵活的VPN网络。11.2VPN实现技术L2TP协议由PPTPForum各成员、思科公司和IETF(互联网工程工作组)联手打造了一个新的协议——L2TP协议。不仅提供了以CHAP为基础的用户身份认证,支持了对内部地址的分配,而且还提供了灵活有效的记帐功能,和较为完善的管理功能。在链路层上实现VPN,有一定的优点。假定两个主机或路由器之间存在一条专用通信链路,而且为避免有人“窥视”,所有通信都需加密,便可用硬件设备来进行数据加密。这样做最大的好处在于速度。11.2VPN实现技术但是该方案不易扩展,而且仅在专用链路上才能很好地工作。另外,进行通信的两个实体必须在物理上连接到一起。这也给在链路层上实现VPN带来了一定的难度。PPTP、L2F和L2TP这三种协议都是运行在链路层中的,通常是基于PPP协议的,并且主要面向的是拨号用户,由此导致了这三种协议应用的局限性。而当前在Internet及其他网络中,绝大部分的数据都是通过IP协议来传输的,逐渐形成了一种“everythingonip”的观点。11.2VPN实现技术PPTP与L2TP的区别:1)PPTP要求互联网为IP网络;而L2TP能够在IP、X.25、ATM等网络上使用。2)PPTP只能在两端点间建立单一隧道;L2TP可以在两个端点之间建立多个隧道。用户可根据不同的服务质量创建不同的隧道。3)PPTP不支持隧道验证;L2TP提供了此项功能。可通过与Ipsec共同使用,由Ipsec提供隧道认证。11.2VPN实现技术第三层隧道协议

在网络层的实现中,有两种常用的实现方式:GRE和IPSecGRE——GenericRoutingEncapsulation(通用路由封装协议)GRE是VPN的第三层隧道协议,即在协议层之间采用了一种被称之为Tunnel(隧道)的技术。GRE在RFC1701/RFC1702中定义,它规定了怎样用一种网络层协议去封装另一种网络层协议的方法,GRE的隧道由其源IP地址和目的IP地址来定义。它允许用户使用IP去封装IP、IPX、AppleTalk并支持全部的路由协议,如RIP、OSPF、IGRP和EIGRP。11.2VPN实现技术图11.7GRE协议11.2VPN实现技术当路由器接收了一个需要封装的上层协议数据报文,首先这个报文按照GRE协议的规则被封装在GRE协议报文中,而后再交给IP层,由IP层再封装成IP协议报文便于网络的传输,等到达对端的GRE协议处理网关时,按照相反的过程处理,就可以得到所需的上层协议的数据报文了。标准的GRE在虚拟通道中的数据是没有进行加密传输的,一旦数据被截获,重要数据将有失密的危险。而与GRE相比,IPSec只能进行通道内的数据加密,无法在Internet上建立虚拟的通道互连,使异地的两个局域网像访问本地网一样方便;也无法在加密的数据连接上跑路由协议,网络管理很不方便。所以GRE+IPSec联合应用方式,成为实际中VPN建网的首选。11.2VPN实现技术IPSec——IPSecurity(IP安全协议)IPSec是一套协议包而不是一个独立的协议。IPSec位于网络层,对通信双方的IP数据分组进行保护和认证,对高层应用透明。IPSec能够保证IP网络上数据的保密性、完整性,并提供身份认证。IPSec拥有密钥自动管理功能,优于PPTP/L2TP。IPSec提供了下列网络安全性服务:数据机密性数据完整性数据来源认证反重播11.2VPN实现技术IPSec使用的加密算法包括DES-56位、Triple-Des-128位和RSA等国际较为通用的算法;验证算法采用的也是流行的HMAC-MD5和HMAC-SHA算法。图11.8IPSec安全体系结构11.2VPN实现技术IPSec安全体系包括3个基本协议:AH协议为IP包提供信息源验证和完整性保证;ESP协议提供加密机制;密钥管理协议(ISAKMP)提供双方交流时的共享安全信息。ESP和AH协议都有相关的一系列支持文件,规定了加密和认证的算法。最后,解释域(DOI)通过一系列命令、算法、属性和参数连接所有的IPSec组文件。而策略决定两个实体之间能否进行通信以及如何通信。策略的核心部分由安全关联(SA)、安全关联数据库(SAD)、安全策略(SP)、安全策略数据库(SPD)组成。11.2VPN实现技术AH协议:该协议用于保证IP数据包的完整性和真实性,防止黑客截断数据包或向网络中插入伪造的数据包。考虑到计算效率,AH没有采用数字签名而是采用了安全哈希算法来对数据包进行保护。AH没有对用户数据进行加密。当需要身份验证而不需要机密性的时候,使用AH协议时最好的选择。AH有两种工作模式:传输模式——不改变数据包IP地址,在IP头和IP数据负载间插入一个AH头。隧道模式——生成一个新的IP头,把AH和原来的整个IP包放到新IP包的负载数据中。11.2VPN实现技术图11.9AH协议的传输模式图11.10AH协议的隧道模式11.2VPN实现技术ESP协议:用于确保IP数据包的机密性(对第三方不可见)、数据的完整性以及对数据源地址的验证,同时还具有抗重播的特性。ESP主要用于提供加密和认证功能。它通过在IP分组层次进行加密从而提供保密性,并为IP分组载荷和ESP报头提供认证。ESP是与具体的加密算法相独立的,几乎支持各种对称密钥加密算法,默认为3DES和DES。ESP也有传输和隧道两种工作模式,与AH传输模式相比较,ESP的传输模式还多了ESP尾和ESP验证数据。隧道模式可以对整个原始数据分组进行加密和认证。而传输模式时,仅对IP包有效载荷加密,不对IP头加密。11.2VPN实现技术图11.11ESP协议的传输模式图11.12ESP协议的隧道模式11.2VPN实现技术密钥管理——IKE

IKE主要是用来协商和建立IPSec通信双方的SA,实际上就是对双方所采用的加密算法、验证算法、封装协议和有效期进行协商,同时安全地生成以上算法所需的密钥。二、三层隧道协议

MPLS

MPLS(Multi-ProtocolLabelSwitching)即多协议标签交换属于第三代网络架构,是新一代的IP高速骨干网络交换标准。MPLS介于第二层和第三层之间,把第二层的链路状态信息集成到第三层的协议数据单元中,将第二层的高速交换能力和第三层的灵活特性结合起来,并且引入了基于标记的机制。11.2VPN实现技术在MPLS中,数据传输发生在标签交换路径(LSP)上。LSP是每一个沿着从源端到终端的路径上的结点的标签序列。现今使用着一些标签分发协议,如标签分发协议(LDP)、RSVP或者建于路由协议之上的一些协议,如边界网关协议(BGP)及OSPF。因为固定长度标签被插入每一个包或信元的开始处,并且可被硬件用来在两个链接间快速交换包,所以使数据的快速交换成为可能。传统的VPN一般是通过GRE、L2TP、PPTP、IPSec协议等隧道协议来实现私有网络间数据流在公网上的传送。而LSP本身就是公网上的隧道,所以用MPLS来实现VPN有天然的优势。11.2VPN实现技术第四层隧道协议SSLVPN是解决远程用户访问敏感公司数据最简单最安全的解决技术。SSL(SecureSocketsLayer)是由Netscape公司开发的一

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论