TCP连接劫持

TCP Connection Hijacking

本文关键字:劫持 连接 TCP      更新时间:2023-10-16

我有一个用c++开发的小项目,由于它工作的性质,我需要将数据包插入到一个实时TCP流中。(目的是无辜的,http://ee.forumify.com/viewtopic.php?id=3299如果你一定要知道)我正在为一款游戏创建关卡编辑器,由于握手的性质,我不能简单地与WinSock等高级库建立新连接。到目前为止,它一直依赖于Winsock包编辑器来完成这些繁琐的工作,但如果我让应用程序来处理这一切,这将使每个人都高兴。

所以我的问题是:是否有一个API的地方,将允许我采取一个实时TCP流的控制,最好是一个保持它有效后,它完成?我希望不用注射任何dll。另外,由于我使用的是GCC/Mingw,所以Detours是一个禁忌。

我已经玩弄了WinPCap,我有一些工作代码(我可以收集一个数据包,并从中生成一个适当的数据包发送),但由于它在如此低的级别上运行,我无法预测最终用户可能使用的所有潜在协议。是的,他们可能会在以太网上使用IPv4,但是那些仍然使用PPP或其他晦涩协议的人怎么办?此外,在我的连接完成后,客户机应用程序将丢弃连接,因为数据包中的最新ID值已经更改,并且客户机假定它已断开连接。

所以,如果有人能提供一个高级TCP流操纵器,我会很高兴。如果没有,我就继续摆弄WinPCap,并告诉所有拨号用户去获得更好的互联网。

目标平台:Microsoft Windows XP到Windows 7

创建一个单独的进程绑定到本地端口。当创建初始tcp流时,代理它通过该进程,然后将其转发到网络。当你需要"注入"到流中时,你可以让这个代理进程来做这件事。只是一个想法。

您应该查看ettercap http://ettercap.sourceforge.net/的源代码或者追捕,TCP劫机者http://packetstormsecurity.org/files/view/21967/hunt-1.5.tgz

我不认为有任何合理的API允许你劫持TCP流。这样的事情,从本质上讲,是一个安全问题。

您可以插入您的程序作为正在讨论的连接的代理吗?也就是说,让打开连接的程序将其打开到您的程序,然后让您的程序打开到真正目标的连接。

这个想法是,如果所有的数据包都通过您的程序,那么修改TCP流就变得相对微不足道了。