去除XP SP2对raw socket的一些限制

 http://www.opencjk.org/~scz/windows/200701091750.txt

A: scz@nsfocus.com 2007-01-09 17:50

现在已经是众所周知,XP SP2对raw socket做了一些限制,最引人注目的有两条:

1) 不能通过raw socket发送TCP报文。做此尝试时会得到10004号错误。

2) 不能通过raw socket发送伪造源IP的UDP报文。

另有一条就不太引人注目:

3) 不能通过raw socket发送IP碎片。做此尝试时会得到10004号错误。

不知微软在哪次对2000 SP4的修补中实现了类似上述第三条的限制,只是要宽松一些:

3) 不能通过raw socket发送全部IP碎片,只有第一个碎片可被发送出去。试图发送
   后续碎片时会得到10004号错误。

尚未在2003 SP1上测试第三条限制。

微软做这些限制时,有两种方案,一种是完全没有实现相关代码,另一种是在全功能
代码中增加一些判断语句。想了想,第二种可能居多,最后事实证明确实如此。

微软在tcpip.sys中固化了这些限制,没有注册表项对之调整。

曾在"12.3 XP SP2对raw socket所做的改动"中提过,可以考虑剁了tcpip.sys,但不
推荐。

为了调整XP SP2并发半开出连接上限,已经硬剁了tcpip.sys。对于我们来说,硬剁
tcpip.sys面临的诸多风险中最大的就是BSOD,便如杀人是要偿命的。杀一个人是死,
杀两个人也是死,索性全家上下三代都给杀了图个痛快。基于这种信念,我一直奇怪
外界流传的现成工具为何只剁了ActiveOpenProgressThreshold,按说这帮人也不是
什么善主,在其本机使用raw socket是很正常的需求啊。以前多在*nix上做点事,
root想怎么用raw socket就怎么用,如今早已背叛了*nix,手头*nix的测试环境甚少
启用。最近工作机被迫升级至XP SP2后,被这些限制搞得很不爽。剁掉tcpip.sys的
这些限制已经成了心病。

下面以英文版XP SP2上的5.1.2600.2892版tcpip.sys为例进行介绍。用自己熟悉的16
进制编辑工具按如下说明进行修改(已包含对校验和的修改):

> fc /b tcpip.sys.old tcpip.sys
00000130: 65 BA
00000131: F8 FD
0002403A: 8A EB
0002403B: 41 45
0004F5A2: 0A FE
0004F5A3: 00 FF
0004F5A4: 00 FF

将临时目录里修改好的tcpip.sys严格地按如下顺序复制到相应目录:

%systemroot%/ServicePackFiles/i386/
%systemroot%/system32/dllcache/
%systemroot%/system32/drivers/

在资源管理器里确认%systemroot%/system32/drivers/tcpip.sys未因SFC而被自动恢
复成某个早期版本。重启OS使之生效。

剁了tcpip.sys之后用sendto()发送所有IP碎片均不会返回10004号错误。第一个IP碎
片肯定可以发送出去,但后续IP碎片会被XP SP2 PFW默默丢弃,用户态程序得不到任
何提示,伪造源IP的报文也会被PFW默默丢弃。关闭PFW后这些问题都得到解决。PFW
的限制与tcpip.sys本身的限制是两回事,是两层不同的限制。PFW的限制可以热取消,
tcpip.sys本身的限制是固化的,无法正常取消。总之,关闭PFW再测试raw socket。

实测表明,用IP碎片可以对2003 SP1进行syn-flood攻击,当指定正确的源IP时,可以
收到SYN+ACK或RST。

顺便说一句,这个版本的tcpip.sys不允许用raw socket发送IP-ENCAP、IPv6报文,
剁了之后这些限制一并绕过。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值