Netexpert FAQ 网络分析专家学习建议入口 @netexpert成员申请指南
网络分析时代 netexpert积分规则的说明 Netis招贤纳士(2007年12月2日更新)
发新话题
打印

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

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

12.7 去除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使之生效。

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

顺便说一句,这个版本的tcpip.sys不允许用raw socket发送IP-ENCAP、IPv6报文,
剁了之后这些限制一并绕过。
说了世上一无牵挂为何有悲喜
说了朋友相交如水为何重别离
说了少年笑看将来为何常回忆
说了青春一去无悔为何还哭泣

TOP

给自己方便也给了别人方便,,,没有特殊需要还是不要改的好....个人观点,仅供参考

TOP

这是贴给程序员看的,好吧?不是程序员的,有几个需要跟raw socket打交道。那不成了吃撑着了。
说了世上一无牵挂为何有悲喜
说了朋友相交如水为何重别离
说了少年笑看将来为何常回忆
说了青春一去无悔为何还哭泣

TOP

发新话题
版块跳转