TCP ACK欺骗

时间:2011-06-22 14:38:51

标签: tcp spoofing spoof

我正在编写一个程序来伪造TCP请求并收集数据以存储在本地缓冲区中。为此,在连接到客户端的系统中,我已经配置了iptables,以便在路由之前将所有传入的数据包保留到队列中。然后我使用netfilter库来读取队列中的数据包。在使用RAW套接字之后,我将假的TCP数据包发送到客户端。有了这个,我能够伪造SYN / ACK数据包以响应来自客户端的SYN请求。

但是当我尝试向客户端伪造ACK以响应传入数据时会出现问题。在这种情况下,源的真实IP来自数据包而不是伪造的。请参阅下面标有“>>>”的第7条曲目。在此,源ip显示为192.168.10.10,其中必须为212.58.246.81。在第4条跟踪(即SYN / ACK数据包)中,它显示为正常。

3  0.073852000  192.168.10.100  212.58.246.81  TCP  38307 > http [SYN] Seq=0 Win=5840 Len=0 MSS=1460 TSV=502233100 TSER=0 WS=6
4  0.103102000  212.58.246.81  192.168.10.100  TCP  http > 38307 [SYN, ACK] Seq=0 Ack=1 Win=31744 Len=0
5  0.103147000  192.168.10.100  212.58.246.81  TCP  38307 > http [ACK] Seq=1 Ack=1 Win=5840 Len=0
6  0.103349000  192.168.10.100  212.58.246.81  HTTP  GET /go/rss/int/news/-/sport2/hi/tennis/9519762.stm HTTP/1.1
>>> 7  1.118729000  192.168.10.10  192.168.10.100  TCP  http > 38307 [ACK] Seq=1 Ack=1 Win=31744 Len=0
8  1.118788000  192.168.10.100  192.168.10.10  TCP  38307 > http [RST] Seq=1 Win=0 Len=0
9  3.102627000  192.168.10.100  212.58.246.81  HTTP  [TCP Retransmission] GET /go/rss/int/news/-/sport2/hi/tennis/9519762.stm HTTP/1.1
10  3.148590000  192.168.10.10  192.168.10.100  TCP  [TCP Dup ACK 7#1] http > 38307 [ACK] Seq=1 Ack=1 Win=31744 Len=0
11  3.148606000  192.168.10.100  192.168.10.10  TCP  38307 > http [RST] Seq=1 Win=0 Len=0

此外,我已经尝试过“sendip”命令,如下所示发送假的TCP ACK

sendip -p ipv4 -p tcp -is 212.58.246.81 -id 192.168.10.100 -ts 80 -td 4567 -tfa 1 -tfs 0 -d "Data" 192.168.10.100

这里tfa和tfs分别代表ack和syn标志。 这也没有按预期工作,它显示为192.168.10.10而不是212.58.246.81。但是如果我将两个标志(syn和ack)设置为1,那么它的工作正常。

操作系统是Ubuntu。任何人都可以让我知道我哪里出错了。非常感谢你的帮助。

0 个答案:

没有答案