1.理解带宽攻击原理
2.理解资源消耗攻击原理
3.掌握洪泛攻击网络行为特征
4.理解DDos攻击原理
5.掌握TFN2K攻击全过程
一.SYN Flood攻击
Dos(Denial of Service)拒绝服务攻击是指在特定攻击发生后,被攻击的对象不能及时提供应有的服务。从广义上说,任何导致服务器不能正常提供服务的攻击都是拒绝服务攻击。
SYN Flood是当前最流行的拒绝服务攻击之一,这是一种利用TCP协议缺陷,发送大量的伪造的TCP连接请求,从而使得被攻击方资源耗尽(CPU满负荷或内存不足)的攻击方式。
TCP协议是基于连接的,也就是说,为了在服务端和客户端之间传送TCP数据,必须先建立一个虚拟电路,也就是TCP连接。
二.ICMP Flood攻击
正常情况下,为了对网络进行诊断,一些诊断程序,比如Ping等,会发出ICMP请求报文(ICMP Request),计算机接收到ICMP请求后,会回应一个ICMP应答报文。而这个过程是需要CPU处理的,有的情况下还可能消耗掉大量的资源,比如处理分片的时候。这样如果攻击者向目标计算机发送大量的ICMP Request报文(产生ICMP洪水),则目标计算机会忙于处理这些请求报文,而无法继续处理其它的网络数据报文,这也是一种拒绝服务攻击(DOS)。
三.DDos攻击原理
分布式拒绝服务攻击的英文意思是Distributed Denial of Service,简称DDoS。它利用在已经侵入并已控制的不同的高带宽主机(可能是数百,甚至成千上万台)上安装大量的DoS服务程序,它们等待来自中央攻击控制中心的命令,中央攻击控制中心适时启动全体受控主机的DoS服务进程,让它们对一个特定目标发送尽可能多的网络访问请求,形成一股DoS洪流冲击目标系统,猛烈的DoS攻击同一个网站。在寡不敌众的力量抗衡下,被攻击的目标网站会很快失去反应而不能及时处理正常的访问甚至系统瘫痪、崩溃。
四.DDos攻击角色分析
从图可以看出,DDoS攻击分为3层:攻击者、主控端、代理端,三者在攻击中扮演着不同的角色。
五.DDos攻击流程
攻击者发起DDoS攻击的第一步,就是寻找在Internet上有漏洞的主机,进入系统后在其上面安装后门程序,攻击者入侵的主机越多,他的攻击队伍就越壮大。第二步在入侵主机上安装攻击程序,部分主机充当攻击的主控端,一部分主机充当攻击的代理端。最后各部分主机各司其职,在攻击者的调遣下对攻击对象发起攻击。在攻击时不会受到监控系统的跟踪,身份不容易被发现。
本练习主机A、B为一组,C、D为一组,E、F为一组。角色说明如下:
实验主机 |
实验角色 |
主机A、C、E |
攻击者(扫描主机) |
主机B、D、F |
靶机(被扫描主机) |
首先使用“快照X”恢复Windows系统环境。
一.SYN洪水攻击
1.捕获洪水数据
(1)攻击者单击实验平台工具栏中的“协议分析器”按钮,启动协议分析器。单击工具栏“定义过滤器”按钮,在弹出的“定义过滤器”窗口中设置如下过滤条件:
在“网络地址”属性页中输入“any<->同组主机IP地址”;
在“协议过滤”属性页中选中“协议树”|“ETHER”|“IP”|“TCP”结点项。
单击“确定“按钮使过滤条件生效。
单击“新建捕获窗口”按钮,点击“选择过滤器”按钮,确定过滤信息。在新建捕获窗口工具栏中点击“开始捕获数据包”按钮,开始捕获数据包。
2.性能分析
(1)靶机启动系统“性能监视器”,监视在遭受到洪水攻击时本机CPU、内存消耗情况,具体操作如下:依次单击“开始”|“程序”|“管理工具”|“性能”。在监视视图区点击鼠标右键,选择“属性”打开“系统监视器属性”窗口,在“数据”属性页中将“计数器”列表框中的条目删除;单击“添加”按钮,打开“添加计数器”对话框,在“性能对象”中选择“TCPv4”,在“从列表选择计数器”中选中“Segments Received/sec”,单击“添加”按钮,然后“关闭”添加计数器对话框;单击“系统监视器属性”对话框中的“确定”按钮,使策略生效。
(2)靶机打开“任务管理器”,单击“性能”选项卡,记录内存的使用状况。
3.洪水攻击
(1)攻击者单击实验平台工具栏中的“Nmap”按钮,进入nmap工作目录。在控制台中输入命令:nmap -v –sS -T5 靶机IP地址 --dns_server 127.0.0.1,对靶机进行端口扫描,根据nmap对靶机的扫描结果选择一个开放的TCP端口作为洪水攻击的端口。
(2)单击工具栏“洪泛工具”按钮,启动洪泛工具,在视图中需要输入以下信息:目的IP:靶机IP地址。目标端口:在步骤1中扫描所得的靶机开放端口(建议80/tcp端口)。伪源IP:任意。单击“发洪水”按钮,对靶机进行SYN洪水攻击。
(3)攻击者对靶机实施洪水攻击后,靶机观察“性能”监控程序中图形变化,并通过“任务管理器”性能页签观察内存的使用状况,比较攻击前后系统性能变化情况。
(4)攻击者停止洪水发送,并停止协议分析器捕获,分析攻击者与靶机间的TCP会话数据。
(5)通过对协议分析器所捕获到的数据包进行分析,说明在攻击者对靶机开放的TCP端口进行洪泛攻击时,靶机为什么会消耗大量的系统资源: 问题主要出在TCP连接的三次握手中,假设一个用户向服务器发送了SYN报文后突然死机或掉线,那么服务器在发出SYN+ACK应答报文后是无法收到客户端的ACK报文的(第三次握手无法完成),这种情况下服务器端一般会重试(再次发送SYN+ACK给客户端)并等待一段时间后丢弃这个未完成的连接,这段时间的长度我们称为SYN Timeout,一般来说这个时间是分钟的数量级; 一个用户出现异常导致服务器的一个线程等待1分钟并不是什么很大的问题,但如果有一个恶意的攻击者大量模拟这种情况,服务器端将为了维护一个非常大的半连接列表而消耗非常多的资源。实际上如果服务器的TCP/IP栈不够强大,最后的结果往往是堆栈溢出崩溃,即使服务器端的系统足够强大,服务器端也将忙于处理攻击者伪造的TCP连接请求而无暇理睬客户的正常请求(毕竞客户端的正常请求比率非常之小),此时从正常客户的角度看来,服务器失去响应,这种情况我们称作:服务器端受到了SYN Flood攻击(SYN 洪水攻击) 。
二.ICMP洪水攻击
(1)攻击者启动协议分析器,监听任意源与靶机间的ICMP会话数据,协议分析器设置方法参看步骤一。
(2)靶机启动“性能监视器”,监视在遭受到洪水攻击时本机CPU、内存消耗情况。具体操作参看步骤一。需要说明的是监视的性能对象应为ICMP,并且计数单位应为“Messages Received/sec”。
(3)攻击者对靶机进行洪水攻击,进入洪泛工具“ICMP洪水攻击”视图,填写相关信息,并发ICMP洪水。
(4)靶机观察“性能”监控程序中图形变化,比较洪水攻击前后系统性能变化情况。
(5)攻击者停止洪水发送,并停止协议分析器捕获,观察并分析ICMP会话过程。
本练习主机A、B、C为一组,D、E、F为一组。实验角色说明如下:
实验主机 |
实验角色 |
系统环境 |
A、E |
主控端 |
Linux |
B、F |
代理端 |
Linux |
C、D |
受害者 |
Windows |
首先使用“快照X”恢复Windows/Linux系统环境。
一.实验描述
假设黑客已攻下主控端主机,利用主控端主机取得了代理端主机的一定权限,用主控端主机操控代理端主机攻击受害者主机。
二.TFN2K攻击
1.编译生成执行文件
TFN2K主控端和代理端的网络通讯是经过加密的,使用的是AES(Advanced Encryption Standard)对称加密算法,作为加、解密双方都需要知道密钥,加密方使用密钥对信息进行加密,解密方使用密钥对信息进行解密。在TFN2K中,作为下发控制命令的主控端利用密钥对发送信息进行加密,作为接收命令的代理端利用密钥对接收信息进行解密,并执行命令;与此同时,代理端可通过密钥确定主控端的身份。
要选择一个最合适、最安全的时机通告主控端和代理端加密通信所使用的密钥,而TFN2K将这个时机选择在对源码进行编译、生成执行文件过程当中。作为被固化到程序内部的密钥,很难从外部获取到它。
因此,我们需要从编译、安装TFN2K入手,期间录入通信密钥。
主控端单击平台工具栏“控制台”按钮,进入实验目录,依次进行下列操作:
tfn是主控端程序,通过此程序对代理端加密、下发攻击命令;td是代理端程序,负责解密、接收攻击命令,并对目标主机发起攻击。
2.tfn2k攻击
(1)主控端将代理端程序植入代理端主机,这里使用scp命令通过远程复制操作来模拟植入过程。
主控端执行如下命令:
在执行过程中要求输入代理端主机root用户的登录口令,口令为jlcssadmin。
(2)代理端查看/root目录,确定td代理程序已被植入。运行td程序。
(3)主控端建立代理记录文件,并将代理主机加入进去,具体命令如下:
(4)主控端与代理端连接测试,主控端使用tfn命令(参见实验原理五)进行测试,命令如下:
解释命令: 获取代理端主机名称或IP 地址列表文件,代理端执行shell 命令,并确定攻击选项/攻击目标为“mkdir test” 。
(5)代理机查看是否有建立test目录(默认与td同目录)。在确定主控端与代理端通信正常的情况下,开始对目标主机进行攻击。
(6)受害者主机打开任务管理器,实时观察CPU使用消耗情况。
(7)代理端监听通信命令。
代理端进入snort所在目录/opt/ExpNIC/NetAD-Lab/Tools/ids,执行snort监听目的IP为本机的网络数据包,snort执行命令如下:
(8)主控端向代理下发攻击指令,具体操作如下:
解释命令: 获取代理端主机名称或IP 地址列表文件,对目标主机实施ICMP/PING洪泛攻击 。
(9)代理端观察snort监听信息,确定主控与代理间是否为密文通信。
(10)停止攻击,主控端输入如下命令:
思考题:查阅防范tfn2k攻击的方法。
用防火墙过滤掉所有icmp包,来保护主机,尽量让主机不成为别人攻击的代理,并对intranet内出行的包进行严格限制。
泛洪攻击的实现方法其实有很多,包括SYN泛洪攻击、ICMP泛洪攻击、DHCP报文泛洪攻击、ARP报文泛洪攻击等等,我们在实验里主要了解的是前两者。但两者的原理却并不相同。
SYN攻击利用的是TCP的三次握手机制,攻击端利用伪造的IP地址向被攻击端发出请求,而被攻击端发出的响应报文将永远发送不到目的地,那么被攻击端在等待关闭这个连接的过程中消耗了资源,如果有成千上万的这种连接,主机资源将被耗尽,从而达到攻击的目的。ICMP泛洪攻击主要是指计算机接收到ICMP请求后,会回应一个ICMP应答报文。而这个过程是需要CPU处理的,有的情况下还可能消耗掉大量的资源,比如处理分片的时候。这样如果攻击者向目标计算机发送大量的ICMP Request报文(产生ICMP洪水),则目标计算机会忙于处理这些请求报文,而无法继续处理其它的网络数据报文,这也造成拒绝服务。