网络对抗技术.ppt
网络对抗技术网络对抗技术叶进叶进参考教材网络对抗原理胡建伟等编著西安电子科技大学出版社学习计划一、课堂讲授 16学时 14周二、上机实践 12学时 68周三、讨论及测试 4学时 机动一、课堂讲授1、信息获取技术(扫描、截获)2、代码漏洞利用(溢出攻击)3、网络攻击(DoS攻击和ARP欺骗)4、系统攻击5、病毒及木马综述网络对抗:在信息网络环境中,以信息网络系统为载体,以计算机或计算机网络为目标,围绕信息侦察、信息干扰、信息欺骗、信息攻击,为争夺信息优势而进行的活动。是以比特流对抗为着眼点的比知识、比算法的智力战。黑客技术:是对计算机系统和网络系统的缺陷和漏洞的发现,以为围绕这些缺陷实施攻击的技术。包括软件缺陷、硬件缺陷、网络协议缺陷、管理缺陷和认为的失误。第一部分 信息获取技术1、踩点(存活性探测)获取有关目标计算机网络和主机系统安全态势的信息。例如:Tracert 命令2、扫描(查找漏洞)检测目标系统是否同互联网连接、所提供的网络服务类型等。例如:ping 命令3、查点(获取权限)提取系统的有效账号或者输出资源名的过程。例如:nbtstat 命令网络侦查Traceroute:跟踪TCP/IP数据包从出发点到达目的点所走的路径。Unix:TracerouteWindows:Tracert例如:Tracert 通过ICMP命令发送小的探测包扫描技术1、PING扫描:确定目的IP是否存活(发送ICMP ECHO请求分组)。2、端口扫描:目标系统提供什么样的服务或哪些端口处于侦听状态。3、不同的服务侦听在不同的端口,一个端口就是一个入侵通道。端口如何查询端口:Windowssystem32drivesetcservices (for well-know services defined by IANA)Dos 命令:netstat an(查询主机的端口状态)扫描技术扫描的方式:1.正向扫描:一般由管理员完成,相当于对网络进行安全评估,当发现网络中有漏洞时会给出如何弥补这些漏洞的建议。正向扫描软件:SSS、SuperScan、X-Scan、NMAP、MBSA等。2.反向扫描:一般由黑客完成,当发现网络中有漏洞时会给出如何利用这些漏洞的建议。反向扫描软件:流光。扫描的建议:尽量使用多种扫描软件,分时段、分多次,对对方主机进行扫描。操作系统检测意义:大多数安全漏洞都是有操作系统特定的原理:发送探测分组以确定协议的独有特性。实现:从TCP的四个字段入手TTL:操作系统对出站数据包设置的存活时间(Windows初始为128,Linux为64)WINDOWS SIZE:在发送FIN数据包时包含的选项(Linux基本维持不变,Windows采用AIMD机制)DF:是否设置了不准分片位TOS:是否设置了服务类型信息获取技术1、踩点(存活性探测)获取有关目标计算机网络和主机系统安全态势的信息。例如:Tracert 命令2、扫描(查找漏洞)检测目标系统是否同互联网连接、所提供的网络服务类型等。例如:ping 命令3、查点(获取权限)提取系统的有效账号或者输出资源名的过程。例如:nbtstat 命令Windows查点技术netBIOS:网络基本输入/输出系统,敌定义了一个软件接口,提供标准方法用于使用各种网络服务。查点步骤:1、获得所有主机信息:nbtstat2、获取用户名信息:net 3、远程共享:net used1、给出自己机器所在的拓扑2、下载并使用一种扫描软件3、学会探测激活的端口4、尝试非法入侵第二部分 代码漏洞利用“安全漏洞”:字典的定义:任何会引起系统的安全性受到破坏的事物,包括不恰当的操作指导、病毒、没有被正确配置的系统、弱密码或者写在纸条上的密码等。领域的定义:即使使用者在合理配置了产品的条件下,由于产品自身存在的缺陷,产品的运行可能被改变以产生非设计者预期的后果,并可最终导致安全性被破坏的问题,包括使用者系统被非法侵占、数据被非法访问并泄露,或系统拒绝服务等。我们将这些缺陷称为安全漏洞。http:/安全漏洞产品:产品中的缺陷可以导致安全漏洞。但是,因为遵从不安全的,但是被广泛接受的标准而导致的缺陷,不属于安全漏洞。例子:当使用浏览器连接至FTP站点时,其连接会话是明文的,这不是安全漏洞,因为FTP协议标准中规定使用明文会话。但是,如果浏览器在SSL会话中使用了明文通信,这就产生了一个安全漏洞,因为SSL标准中规定了会话必须加密。缺陷:安全漏洞可能是由于设计者或开发者的不慎而造成的产品缺陷。但并不是所有的产品缺陷都是安全漏洞。例子:尽管在产品中使用一个40比特的密码可能会由于保护强度弱而产生安全隐患,但这并不属于安全漏洞。相反,如果一个设计者由于疏忽在一个128比特的密码中只使用了64比特,那么这一缺陷属于安全漏洞。缓存溢出攻击缓冲区溢出漏洞是一种软件中边境条件边境条件、函数指针函数指针等设计不当的造成地址空间错误地址空间错误。原理:向一个有限空间的缓冲区中拷贝了过长的字符串,带来了两种后果:一是过长的字符串覆盖覆盖了相临的存储单元而造成程序瘫痪,甚至造成宕机、系统或进程重启等;二是利用漏洞可以让攻击者运行运行恶意代码,执行任意指令,甚至获得超级权限等。缓存溢出攻击#include“String.h”Void Mycopy(Char*str)char buffer256;strcpy(buffer,str);int main()int I;Char buffer512;For(i=0;i511;i+)bufferi=C;myCopy(buffer);Return 0;堆栈1.栈是用来存储临时变量,函数传递的中间结果。2.操作系统维护的,对于程序员是透明的。栈的原理:void fun(void)printf(hello world);voidmain(void)fun()printf(函数调用结束);特点:特点:FIFOFIFO函数调用函数调用:压栈,压栈,函数返回:出栈函数返回:出栈 堆栈栈帧:1.EIP寄存器:存储的是CPU下次要执行的指令的地址下次要执行的指令的地址。也就是调用完fun函数后,让CPU知道应该执行main函数中的printf(“函数调用结束”)语句了。2.EBP寄存器:存储的是是栈的栈底指针,通常叫栈基址栈基址,这个是一开始进行fun()函数调用之前,由ESP传递给EBP的。(在函数调用前你可以这么理解:ESP存储的是栈顶地址,也是栈底地址。)3.ESP寄存器:存储的是在调用函数fun()之后,栈的栈顶栈顶。并且始终指向栈顶。缓存溢出攻击#include“String.h”Void Mycopy(Char*str)char buffer256;strcpy(buffer,str);int main()int I;Char buffer512;For(i=0;i511;i+)bufferi=C;myCopy(buffer);Return 0;通过反汇编和汇编去完成!缓存溢出攻击 shellcode:是一段代码(也可以是填充数据),是用来发送到服务器利用特定漏洞的代码,一般可以获取权限。Shellcode一般是作为数据发送给受攻击服务的。#include“String.h”Void Mycopy(Char*str)char buffer256;strcpy(buffer,str);int main()int I;Char buffer512;For(i=0;i511;i+)bufferi=C;myCopy(buffer);Return 0;缓存溢出攻击缓存溢出攻击Shellcode本质上可以使用任何编程语言,但由于需要的是提取其中的机器码机器码,使用汇编语言编写是最具可控性的,因为可以通过指令控制代码生成。C语言编写较为省力,但Shellcode提取较为复杂。不同版本的操作系统,DLL导出函数的入口地址,指令地址有所不同。缓存溢出攻击早在1988年,美国康奈尔大学的计算机科学系研究生,23岁的莫里斯(Morris)利用了UNIX fingered程序不限制输入长度的漏洞使缓冲器溢出。Morris又写了一段程序使他的恶意程序能以root(根)身份执行,并传播到其他机器上,结果造成6000台Internet上的服务器瘫痪,占当时总数的10%。缓存溢出攻击“SQL Slammer”蠕虫王的发作原理,就是利用未及时更新补丁的MS SQL Server数据库缓冲溢出漏洞。采用不正确的方式将数据发到MS Sql Server的监听端口,这个错误可以引起缓冲溢出攻击。缓存溢出攻击目前新出现的MSBLAST病毒正是利用了微软关于RPC 接口中远程任意可执行代码漏洞,“中招”的机器会反复重启,或者拷贝、粘贴功能不工作等现象。事实上,如果成功利用缓冲漏洞,攻击者就有可能获得对远程计算机的完全控制,并以本地系统权限执行任意指令,如安装程序、查看或更改、删除数据、格式化硬盘等。作业了解和熟悉一些反汇编工具网络攻击网络协议攻击攻击WWW分布式攻击TCP/IP协议ARP攻击ARP:Address Resolution ProtocolIP地址和 MAC地址ARP攻击ARP缓存表:IP地址与地址与MAC对应的关系对应的关系ARP请求:发送报文前,在请求:发送报文前,在ARP缓存表中查找中查找MAC地址,如果没有,就发送一地址,如果没有,就发送一个目的为广播地址的个目的为广播地址的ARP请求包。请求包。ARP攻击ARP请求:ARP攻击ARP响应:ARP攻击ARP欺骗:用错误的IP-MAC映射刷新主机的ARP缓存。ARP攻击域网内一旦有ARP的攻击存在,会欺骗局域网内所有主机和网关,让所有上网的流量必须经过ARP攻击者控制的主机。其他用户原来直接通过网关上网,现在却转由通过被控主机转发上网。由于被控主机性能和程序性能的影响,这种转发并不会非常流畅,因此就会导致用户上网的速度变慢甚至频繁断线。另外ARP欺骗需要不停地发送ARP应答包,会造成网络拥塞。ARP攻击检测抓包工具来抓包,如果发现网内存在大量ARP应答包,并且将所有的IP地址都指向同一个MAC地址,那么就说明存在ARP欺骗攻击。到路由器或者网关交换机上查看IP地址与MAC地址的对应表,如果发现某一个MAC对应了大量的IP地址,那么也说明存在ARP欺骗攻击。ARP攻击防范(1)在客户端使用arp命令绑定网关的真实MAC地址命令如下:arp(先清除错误的ARP表)arp 192.168.1.1 03-03-03-03-03-03(静态指定网关的MAC地址)(2)在交换机上做端口与MAC地址的静态绑定。(3)在路由器上做IP地址与MAC地址的静态绑定。(4)使用“ARP SERVER”按一定的时间间隔广播网段内所有主机的正确IP-MAC映射表 网络层协议攻击Smurf 攻击:攻击者想一个具有大量主机和因特网的广播地址发送一个欺骗性Ping分组,其源地址就是希望攻击的目标系统。目标主机被大量的Echo信息淹没,从而拒绝正常服务。源代码 P101网络协议攻击链路层攻击:链路层攻击:ARP欺骗:用错误的欺骗:用错误的IP-MAC映射刷新映射刷新ARP缓存缓存网络层攻击:网络层攻击:Smurf攻击:向一个有大量主机和因特连接的网络的攻击:向一个有大量主机和因特连接的网络的广播地址发送一个欺骗广播地址发送一个欺骗PING分组分组传输层攻击:传输层攻击:SYN flood攻击、攻击、TCP会话劫持会话劫持应用层攻击:应用层攻击:DNS欺骗、欺骗、WWW攻击攻击SYN Flood攻击原理:伪造大量的TCP 连接,从而使被攻击放资源耗尽。DoS攻击:Denial of ServeiceDDoS攻击:Distribution DoS用三次握手建立 TCP 连接 SYN,SEQ=x主机 BSYN,ACK,SEQ=y,ACK=x 1ACK,SEQ=x+1,ACK=y 1被动打开主动打开确认确认主机 A连接请求SYN Flood攻击SYN,SEQ=x主机 BSYN,ACK,SEQ=y,ACK=x 1ACK,SEQ=x+1,ACK=y 1被动打开主动打开确认确认主机 A连接请求What B should do?Retransmitting until Timeout.SYN Flood攻击SYN,SEQ=x主机 BSYN,ACK,SEQ=y,ACK=x 1被动打开主动打开确认主机 A连接请求SYN,ACK,SEQ=y,ACK=x 1SYN,ACK,SEQ=y,ACK=x 1Flood TCP 会话劫持原理:攻击者重定向客户和服务器之间的数据流,使原理:攻击者重定向客户和服务器之间的数据流,使之经过攻击者的机器,从而截获他们之间的通信。之经过攻击者的机器,从而截获他们之间的通信。过程:过程:1、与服务器建立连接、与服务器建立连接2、截获客户端的数据包实施、截获客户端的数据包实施IP欺骗欺骗3、用正常范围的序列号伪造客户端发包、用正常范围的序列号伪造客户端发包4、获得服务器的应答并发回、获得服务器的应答并发回ACK5、正常客户端忽略服务器的响应、正常客户端忽略服务器的响应TCP 会话劫持原理:攻击者重定向客户和服务器之间的数据流,使原理:攻击者重定向客户和服务器之间的数据流,使之经过攻击者的机器,从而截获他们之间的通信。之经过攻击者的机器,从而截获他们之间的通信。过程:过程:1、与服务器建立连接、与服务器建立连接2、截获客户端的数据包实施、截获客户端的数据包实施IP欺骗欺骗3、用正常范围的、用正常范围的序列号序列号伪造客户端发包伪造客户端发包4、获得服务器的、获得服务器的应答应答并发回并发回ACK5、正常客户端、正常客户端忽略忽略服务器的响应服务器的响应猜测序列号猜测序列号收到确认即可前移1002003004005006007008009001012013014015016017018011发送窗口可发送不可发送指针发送端要发送 900 字节长的数据,划分为 9 个 100 字节长的报文段,而发送窗口确定为 500 字节。发送端只要收到了对方的确认,发送窗口就可前移。发送 TCP 要维护一个指针。每发送一个报文段,指针就向前移动一个报文段的距离。收到确认即可前移1002003004005006007008009001012013014015016017018011可发送不可发送指针1002003004005006007008009001012013014015016017018011发送窗口可发送不可发送指针发送窗口前移发送端已发送了 400 字节的数据,但只收到对前 200 字节数据的确认,同时窗口大小不变。现在发送端还可发送 300 字节。已发送并被确认已发送但未被确认TCP Transmission PolicyWindow management in TCP.TCP 序列号S_SEQ:将要发送的下一个字节的序号:将要发送的下一个字节的序号S_ACK:将要接收的下一个字节的序号:将要接收的下一个字节的序号S_WIND:接收窗口:接收窗口C_SEQ:将要发送的下一个字节的序号:将要发送的下一个字节的序号C_ACK:将要接收的下一个字节的序号:将要接收的下一个字节的序号C_WIND:接收窗口:接收窗口服务器(服务器(Server)客户端(客户端(Client)C_ACK=C_SEQ =C_ACK+C_WINDS_ACK=S_SEQ =S_ACK+S_WIND正常关系正常关系:TCP 会话劫持客户端的正常包:客户端的正常包:服务器进行响应服务器进行响应客户端作出应答客户端作出应答攻击者伪造包:攻击者伪造包:服务器进行响应服务器进行响应客户端忽略应答客户端忽略应答TCP 会话劫持进行会话劫持的工具:Juggernaut,可以进行TCP会话劫持的网络TTY Watcher,针对单一主机上的连接进行会话劫持Dsniff,Hunt。网络协议攻击链路层攻击:链路层攻击:ARP欺骗:用错误的欺骗:用错误的IP-MAC映射刷新映射刷新ARP缓存缓存网络层攻击:网络层攻击:Smurf攻击:向一个有大量主机和因特连接的网络的攻击:向一个有大量主机和因特连接的网络的广播地址发送一个欺骗广播地址发送一个欺骗PING分组分组传输层攻击:传输层攻击:SYN flood攻击、攻击、TCP会话劫持会话劫持应用层攻击:应用层攻击:DNS欺骗、欺骗、WWW攻击攻击DNS攻击DNS:域名系统(Domain Name System)域名解析: 与 218.30.66.101 之间的转换DNS服务器:域名解析需要由专门的域名解析服务器来完成,DNS就是进行域名解析的服务器。Figure 7-1.A portion of the Internet domain name space.DNSDNS大致工作过程大致工作过程1 1,应用调用解析器,应用调用解析器(resolver)(resolver);2 2,解析器作为客户,向,解析器作为客户,向Name ServerName Server发出查发出查询报文(封装在询报文(封装在UDPUDP段中);段中);3 3,Name ServerName Server返回响应报文返回响应报文(name/(name/ipip)。applicationresolver1:requestName Server2:request3:reponse4:reponse7.1 DNSThe Domain Name System名字解析过程一个改进-缓存目的:下次再用。问题:如果情况变化,缓存结果和权威资源记录不一致。解决:TTL递归查询(recursive query)及其问题解析器作为客户端,向最近的一个NS发出查询请求。NS再作为客户端,向根DNS服务器发出查询请求,直到找到记录为止。问题:根服务器的负担太重。解决:迭代查询(iterated queries),根服务器返回的不是查询结果,而是下一个NS的地址。7.1.3 Name Serversrequesting hostsurf.eurecom.frgaia.cs.umass.eduroot name serverlocal name serverdns.eurecom.fr123456authoritative name serverdns.cs.umass.eduintermediate name serverdns.umass.edu78iterated query7.1.3 Name ServersDNS攻击DNS攻击主机主机-DNS服务器服务器DNS服务器-客户端(攻击者)客户端-DNS服务器前提:有一台前提:有一台INTERNETINTERNET授权的授权的DNSDNS服务器,并服务器,并且具有对这个服务器的控制权且具有对这个服务器的控制权DNS攻击的防范(1)直接用IP访问重要的服务,这样至少可以避开DNS欺骗攻击。但这需要你记住要访问的IP地址。(2)加密所有对外的数据流,对服务器来说就是尽量使用SSH(Secure Shell)之类的有加密支持的协议,对一般用户应该用PGP(Pretty Good Privacy)之类的软件软件加密所有发到网络上的数据.作业了解IIS 5.0 Unicode漏洞了解360安全浏览器所使用的沙箱原理