当前位置:  开发笔记 > 运维 > 正文

pwnat仍在工作吗?

如何解决《pwnat仍在工作吗?》经验,为你挑选了1个好方法。

我需要NAT遍历的解决方案来通过互联网传输RDP数据.我遇到了以下工具,它真的很棒 - pwnat.

我已尝试使用不同路由器后面的两台不同的机器,但我无法使其工作,如上面链接中所述.所以pwnat仍然有效,如果是的话,我做错了什么?这对我很有帮助.

注意:我正在使用Windows机器进行测试,并从以下链接下载了Windows版本.

http://www.sumitgupta.net/pwnat-windows-complied-version/

任何帮助请..



1> jfly..:

不,
我猜你知道它是如何工作的: 在此输入图像描述
服务器将ICMP echo请求报文发送到固定地址(例如1.2.3.4),其中不会返回回应回复,客户端假装是Internet上的跳,发送ICMP Time Exceeded报文给服务器,期望服务器前面的NAT将ICMP超时消息转发给服务器.

上面的图片来自pwnat的主页,它的前提是客户端不在NAT之后,并且NAT实现通常不会检查超过时间的原始有效载荷.如果客户端和服务器都是这样的NAT,

=========================================================================================
| CLIENT  | <---> |  NAT-C  | <---> { internet } <---> |  NAT-S  | <---> | SERVER |
=========================================================================================

它现在很少有用,主要有以下两个原因:

    当服务器向固定地址发送ICMP echo请求报文时,根据RFC 3022,ICMP echo请求报头中的标识符字段将通过NAT-S唯一映射到已注册IP地址的查询标识符,以便它可以路由未来的ICMP Echo使用相同的查询ID回复发件人,因此必须修改ICMP查询数据包中的ICMP头以替换查询ID和ICMP头校验和.RFC 3022 ICMP错误包修改部分:

    在NAPT设置中,如果ICMP中嵌入的IP消息恰好是TCP,UDP或ICMP查询数据包,您还需要修改TCP/UDP报头中的相应TU端口号或ICMP查询中的查询标识符字段头.

    但是客户端不知道外部查询ID(pwnat中的代码使用0作为原始请求的标识符),它向服务器发送ICMP Time Exceeded数据包,即使数据包可以到达NAT-S前面.服务器,NAT-S找不到嵌入式数据包的主动映射,大多数NAT实现都会丢弃它.

    此外,根据rfc 5508,当NAT-C从私有领域接收ICMP错误数据包时,NAT-C使用嵌入在ICMP错误消息中的数据包(即,从客户端到服务器的IP数据包)来查找嵌入数据包所属的NAT会话.如果NAT-C没有嵌入数据包的活动映射,则NAT-C应该静默地丢弃ICMP错误数据包.这意味着来自客户端的ICMP Time Exceeded数据包不会到达NAT-S.

因此pwnat仅适用于基本NAT设备(rfc 1631描述),它执行简单的地址转换,不适用于具有强大NAPT实现的任何NAPT设备.而本文确实提到了这个问题.


有人知道后继工具吗?还是2016年最后一次提交到GitHub中的samyk / pwnat源或fork timdiels / pwnat sorces的帮助?
推荐阅读
个性2402852463
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有