【问题标题】:Performing TCP connections automatically with libpcap使用 libpcap 自动执行 TCP 连接
【发布时间】:2015-08-10 10:54:00
【问题描述】:

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

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

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

在我的脑海中,我认为 TCP 连接是由 pcap(或内核)自动建立的。是否有任何配置或参数来设置这个,或者我需要自己执行 TCP 事务?如果是这样,是否有任何建议可以让其发挥最大性能?

感谢您的建议。

Obs.:为了过滤 HTTP 请求,我在 pcap 上使用了以下过滤器,可在 it's man page 上获得

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

【问题讨论】:

    标签: c++ tcp libpcap man-in-the-middle


    【解决方案1】:

    Libpcap 是一个用于读取原始网络数据包的库,并且在带有pcap_sendpacket()/pcap_inject() 的版本中,发送原始网络数据包。 “原始网络数据包”是指原始链路层数据包;如果您想伪装成 TCP 实现,则必须在原始数据包读取/发送机制之上提供自己的 TCP 实现自己的实现 - 以及 IPv4 或 IPv6。

    【讨论】:

    • 这肯定回答了我的问题!但我找到了另一种实现服务器和受害者之间正确连接的方法。贴在下面。
    【解决方案2】:

    好的,对于碰到这个话题的任何人,我找到了一种巧妙的方法来实现受害者和服务器之间的连接(我猜这是正确的方法)。

    不要执行两个连接来发送 HTTP 消息,一个与网关,另一个与受害者,您必须只让 TCP SYN、ACK 和其他任何东西通过。你的行为就像一根“管道”。

    因此,当您收到来自受害者的 SYN 时,只需将其发送到网关,网关会将其传递到服务器并以 SYN ACK 进行应答。当然,您必须伪造发送者和目标的以太网标头,以验证欺骗。

    【讨论】:

    • 你怎么能预防它? Libpcap 没有任何数据包过滤功能。
    • 对不起,我没听懂你的问题。您的意思是“如何防止 ARP 欺骗攻击”?或者我是如何阻止 TCP 通过的?实际上,ibpcap 具有数据包过滤功能,它记录在 here
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-03
    • 1970-01-01
    • 2013-04-05
    • 2016-12-28
    • 2015-06-16
    • 1970-01-01
    • 2018-03-11
    相关资源
    最近更新 更多