Skip to content

Latest commit

 

History

History
32 lines (23 loc) · 1.37 KB

200503241827.txt.md

File metadata and controls

32 lines (23 loc) · 1.37 KB

标题: Windows网络数据流跟踪技巧(1)

http://scz.617.cn/windows/200503241827.txt

这个系列相当琐碎,想到哪里写到哪里,说不定这是第一篇也是最后一篇。同时,这 也不是正式文档,可能仅仅是某次调试过程中临时记录的内容。

这次说说跟踪445/TCP口上的数据流。445/TCP口上的很多数据流由内核态的驱动直接 处理,并不交给用户态程序,此时想通过拦截传统套接字函数跟踪数据流是没有意义 的。

假设在SoftICE中跟踪,为了使stack命令的输出更有可读性,一般加载如下符号表:

ntoskrnl.nms tcpip.nms netbios.nms netbt.nms rdbss.nms mrxsmb.nms srv.nms

下例表示目标IP为192.168.7.151、源IP为192.168.7.166时命中:

:bpx tcpip!TCPRcv if (esp+8)==9707A8C0&&(esp+c)==A607A8C0

最有意义的事实在于tcpip!TCPRcv()是Windows系统真正开始处理TCP报文的地方,因 此在tcpip!TCPRcv()入口处修改了IP数据区,将影响所有上层处理。比如mrxsmb.sys 将从tcpip.sys获得数据,如果先行在TCPRcv()处修改了SMB报文,对于mrxsmb.sys来 说,它看到的就是修改后的SMB报文。

可能你有点奇怪,为什么我没有直接根据端口进行过滤。在我的测试环境中,根据端 口进行过滤时容易死机,所以没举相应例子,但你不妨一试。