MITM与winpcap和/或套接字? - C ++

时间:2016-01-17 18:58:22

标签: c++ sockets networking tcp winpcap

我正在为Windows开发MITM。我正在使用winpcap。我正确地将arp欺骗和ip转发给了我网络的受害者。 winpcap的问题是你无法控制数据包,你需要套接字才能做到这一点。

使用winpcap,您可以读取传入的数据包,过滤它们,更改它们并轻松发送到路由器。当您需要充当服务器时,问题就出现了。例如,如果我们想要取代可执行文件,我们需要提供自己的exe。我们不能使用套接字向受害者提供我们的文件,因为我们使用的是winpcap,我们必须创建所有数据包并用pcap_sendpacket()发送它,我们必须听到受害者的响应,如何?,唯一的方法是等待所有传入的数据包来自所有受害者和不同协议,并过滤所有搜索我们的ACK,下载所有数据包tcp。

这样可行吗?或者我应该在每个嗅探器端口创建一个服务器,并使用套接字执行此操作?嗯想法请。什么是更好的,你会做什么?

谢谢并抱歉我的英语:)

问候!

1 个答案:

答案 0 :(得分:1)

是的,这是可能的。以下是成功完成此操作所需的步骤。

  1. 识别子网上未使用的IP地址。如果您尝试使用已绑定的地址,您将与主机操作系统中的IP堆栈进行竞争。由于它不知道您正在管理/欺骗的连接,它将发送RST数据包以响应您收到的几乎每个响应数据包(注意,我假设您正在使用TCP)
  2. 选择您要使用的MAC。您实际上可以使用与主机操作系统网络堆栈相同的MAC,这将允许您在不实际将接口置于混杂模式的情况下进行操作。主机操作系统将干扰,因为第2层地址与主机操作系统对第2层地址的了解不匹配,但是当其他主机寻找时,您仍然必须为第2层地址提供ARP回复你。
  3. 实际上,编写自己的IP堆栈。是的,您将负责计算校验和,跟踪会话状态和其他所有内容。
  4. 您似乎更容易接受的一种更容易的方法是使用Scapy。 Scapy为您提取了大部分内容,让您专注于您实际尝试做的事情的逻辑。例如,如果您愿意,Scapy会为您处理校验和。