by scott
解决了一个历史遗留问题。记得去年的时候和CD讨论过 IOCTL_TCP_QUERY_INFORMATION_EX 这个东西的处理,后来就没下文了。
这几天整理代码,索性就把那时候的几个相关代码找出来分析了一下。发现以前的代码有一个逻辑错误导致可以隐藏 XP netstat -an 命令。但是不可以在2003 netstat -an 下隐藏。然后发现处理的时候漏处理了ReqType 0×102 这个类型修正了这个逻辑错误后可以在2003 netstat -an 下隐藏了。
其实本应该到此结束,不过在这个过程中有个了一个偶然的发现,才有了继续做的动力。
先说发现:在XP下 netstat -an 实际上系统只发了一个 0×101 ID IRP进行查询。而在2003上也许是微软对网络版操作系统的加强(个人想法),netstat -an 与在XP截然不同,2003发了两个查询IRP 分别是 0×101 和 0×102,然后对两个IRP返回的数据进行对比分析然后给出显示。以上的发现都是在我自己写的一个截获系统IRP的工具下动态监视后得出的。
然后继续用此工具分析,再参照一些TDI的结构,也就知道了 IceSword 1.22 查隐藏端口的原理,再稍微看一下其操作的层次。一切OK!
既然知道了原理那么绕过便是一个机械化的工作了。到此结束。