模拟三次握手欺骗客户端连接

肉肉_Alex 2014-11-13 09:03:46
我使用libpcap和libnet完成了三次握手的程序,而且显示三次握手包都成功收发了,但是任然无法连接。
问题在于,本地在没有打开端口的情况下,收到SYN包,本地直接返回了一个RST,导致客户端即使成功收发SYN|ACK握手包,并返回ACK后,也无法正常建立连接。
我不太清楚,如果是路由器的话如何处理跨网传输这种TCP的连接?难道要在路由器内部开启那么多独立端口的socket来监听吗?
求大牛解惑。
...全文
378 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
x8680800 2018-09-28
  • 打赏
  • 举报
回复
楼主搞定没有 我已经搞定RTS自动返回的问题了 可以加QQ一起讨论下386169474
shenyi0106 2014-11-14
  • 打赏
  • 举报
回复
引用 10 楼 ToAsuN 的回复:
问题就是发SYN包欺骗时,系统给了一个RST,因为转发设备的端口没有打开。我看了一下SYN代理,这个可能是我想要的东西,如果是内核处理的东西,也比较好应对。
你不能把你修改过的包直接提交给内核,那样做的话,协议栈是肯定不会放你过去的,你可以通过缓存,以及修改收到的数据包,然后在提交给协议栈,这样来达到欺骗的目的
肉肉_Alex 2014-11-14
  • 打赏
  • 举报
回复
问题就是发SYN包欺骗时,系统给了一个RST,因为转发设备的端口没有打开。我看了一下SYN代理,这个可能是我想要的东西,如果是内核处理的东西,也比较好应对。
肉肉_Alex 2014-11-14
  • 打赏
  • 举报
回复
引用 8 楼 shenyi0106 的回复:
在多说几句: 如果你理解了OSI的7层网络模型,以及这7层分别干什么事情的,那么我上面所说的,你应该可以理解其中的道理。 如果你还不是很了解OSI的七层网络模型,那么你现在不应该来问这个问题,你应该找本网络基础书籍,看看那么模型。 《模拟三次握手欺骗客户端连接》课题说简单了也很简单,所有抗DDOS中的SYN Flood攻击都应用这种技术来防止攻击; 说复杂了也很复杂,你需要非常了解TCP协议机制。 最后提供给你一个idea,你可以通过《SYN代理》来达到欺骗的目的。 就说道这了,在说下去,就可以去开发DDOS了
为什么总要询问我会不会OSI模型…醉了。我对问题描述的不好,我完整的说一下吧:我现在在arm上做一个TCP/IP交换系统,系统有两个网卡,分别在2个网段,网卡A所在局域网和网卡B所在局域网互相不互通,数据由C直接发往A,再由B转发到另一网的某D中,这里面是要修改IP和PORT地址的,并不是简单的路由交换,而且可能连应用层协议都会去扫描。也就是说,这个数据C发往A的时候,目的地址就是这个A网卡本身,而不是最终目的D中。系统的UDP已经简单完成了,TCP转发主要受限于建立连接的主动防御情况,不过我已经有了一些思路。谢谢你的建议。
肉肉_Alex 2014-11-13
  • 打赏
  • 举报
回复
引用 3 楼 shenyi0106 的回复:
路由器如果是转发数据包,它是不需要处理4层以上协议的,它只处理三层协议,找到目的IP,然后路由转发。 如果是发送给路由器自身的数据,它是需要提交到路由器的协议栈去处理的(例如,你通过HTTP访问路由器的管理页面)
那么我从本地发起的一个TCP/IP连接,比如qq,通过路由器是以什么方式去连接公网的服务器的?他应该不是转发握手完成连接的吧?因为如果是握手的话,同步包来了之后,路由就会回发RST直接重置了,因为路由没有开启响应的端口。我是这么理解的,不知道对不对
shenyi0106 2014-11-13
  • 打赏
  • 举报
回复
路由器如果是转发数据包,它是不需要处理4层以上协议的,它只处理三层协议,找到目的IP,然后路由转发。 如果是发送给路由器自身的数据,它是需要提交到路由器的协议栈去处理的(例如,你通过HTTP访问路由器的管理页面)
肉肉_Alex 2014-11-13
  • 打赏
  • 举报
回复
引用 1 楼 xiaohuh421 的回复:
如果你理解了tcp/ip协议, 也许你就能找到答案.
我的意思是如何欺骗客户端而绕过协议栈检测端口是否打开。是否只能修改协议栈,还是有其他办法打开所有端口进行监听。路由器是如何完成TCP交互的,他也是通过网关的
xiaohuh421 2014-11-13
  • 打赏
  • 举报
回复
如果你理解了tcp/ip协议, 也许你就能找到答案.
shenyi0106 2014-11-13
  • 打赏
  • 举报
回复
在多说几句: 如果你理解了OSI的7层网络模型,以及这7层分别干什么事情的,那么我上面所说的,你应该可以理解其中的道理。 如果你还不是很了解OSI的七层网络模型,那么你现在不应该来问这个问题,你应该找本网络基础书籍,看看那么模型。 《模拟三次握手欺骗客户端连接》课题说简单了也很简单,所有抗DDOS中的SYN Flood攻击都应用这种技术来防止攻击; 说复杂了也很复杂,你需要非常了解TCP协议机制。 最后提供给你一个idea,你可以通过《SYN代理》来达到欺骗的目的。 就说道这了,在说下去,就可以去开发DDOS了
shenyi0106 2014-11-13
  • 打赏
  • 举报
回复
引用 4 楼 ToAsuN 的回复:
[quote=引用 3 楼 shenyi0106 的回复:] 路由器如果是转发数据包,它是不需要处理4层以上协议的,它只处理三层协议,找到目的IP,然后路由转发。 如果是发送给路由器自身的数据,它是需要提交到路由器的协议栈去处理的(例如,你通过HTTP访问路由器的管理页面)
那么我从本地发起的一个TCP/IP连接,比如qq,通过路由器是以什么方式去连接公网的服务器的?他应该不是转发握手完成连接的吧?因为如果是握手的话,同步包来了之后,路由就会回发RST直接重置了,因为路由没有开启响应的端口。我是这么理解的,不知道对不对[/quote] 只要不是访问路由器本身,都是转发(NAT转发),对于转发的数据包,路由器只负责根据IP头中的目的IP路由数据包。 理解以上论点以后,在来看看你的这个例子:你内网的QQ连接公网服务器,它的目的IP不是你的路由器本身,所以路由器只负责转发数据包,不负责处理四层以上协议。 如果你了解防火墙原理的话,你还应该知道,其实防火墙对于转发的数据包是有处理四层协议的,但是仅仅是取出四层协议中的端口(源端口和目的端口),加上三层协议中的地址(源地址和目的地址),在加上四层协议(TCP或者UDP)这五个元素用来建立或者查找一条“连接”,这是NAT转发的基础。 说跑题了,但是记住一点即可: 对于目的地址是自己的包,才进行四层以上协议的处理(所有网络设备都是这样的);对于目的地址不是自己的包,要看这个网络设备的功能,如果是路由器,则转发收到的数据包(不处理四层以上协议),如果是主机(没开启转发功能),则直接丢弃,不做任何处理。
肉肉_Alex 2014-11-13
  • 打赏
  • 举报
回复
引用 5 楼 Henzox 的回复:
路由器方面,你可以了解下 NAT。
我主要不想暴露内网ip给到其他网段,所以在想欺骗方法……
Henzox 2014-11-13
  • 打赏
  • 举报
回复
路由器方面,你可以了解下 NAT。

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧