2015-06-15 72 views
1

我正在编写一个程序,它在网关和主机上执行ARP欺骗攻击,然后尝试捕获它们之间的de HTTP流量并在浏览器上呈现Web会话。我正在使用libnet和pcap。使用libpcap自动执行TCP连接

我已经成功地进行了欺骗,现在我正在尝试进行中继,其中程序实现主机和网关之间的虚拟连接。

我在TCP事务中遇到了问题。当主机需要一个页面时,它首先尝试与攻击者建立一个TCP连接(因为它已被欺骗),通过发送一个TCP SYN数据包。问题是我的机器(攻击者)不响应SYN,然后受害者重新尝试连接,发送一堆SYN重传。

在我的脑海中,我认为TCP连接是由pcap(或内核)自动完成的。有没有配置或参数设置,或者我需要自己执行TCP事务?如果是这样,是否有任何建议,以最大限度地提高性能?

感谢您的建议。

实验值:用于过滤HTTP请求,我使用PCAP以下过滤器,缴费上it's man page

tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0) 

回答

0

好吧,对于那些碰到这个话题的人,我找到了一个聪明的方法来实现受害者和服务器之间的连接(这是我猜的正确方法)。

而不是执行两个连接来发送HTTP消息,一个与网关和另一个与受害者,你只能让TCP SYNs,ACKs和whatevers通过。你的行为就像一个“管道”。

所以,当你从受害者那里收到一个SYN时,只要将它发送到网关,它就会将它传送到服务器并用SYN ACK来回答。当然,你必须为发件人和目标伪造以太网头,以验证欺骗。

+0

你怎么能防止它呢? Libpcap没有任何数据包过滤功能。 – EJP

+0

对不起,我不明白你的问题。你的意思是“我如何防止ARP欺骗攻击?”或者我如何阻止TCP通过?实际上,ibpcap具有数据包过滤功能,它记录在[here](http://www.tcpdump.org/manpages/pcap-filter.7.html) – rodopoulos

1

Libpcap的是读取原始的网络数据包库,并在版本的pcap_sendpacket()/pcap_inject() ,发送原始网络数据包。 “原始网络分组”表示原始链路层分组;如果你想伪装成一个TCP实现,你将不得不在原始数据包读取/发送机制上提供你自己的 TCP的实现 - 以及IPv4或IPv6。

+0

这肯定回答我的问题!但是我发现了另一种实现服务器和受害者之间正确连接的方式。在下面发帖。 – rodopoulos