trent
驱动老牛
驱动老牛
  • 注册日期2002-03-01
  • 最后登录2014-09-18
  • 粉丝0
  • 关注0
  • 积分61分
  • 威望185点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
阅读:2137回复:2

TDI 过滤 ,传说中的问题

楼主#
更多 发布于:2013-05-28 11:07
楚狂人教材里:
一个传说中的问题
有一个传说中的问题,那就是netbt这个设备发送TCP数据的时候,无法被我们的TDI过滤驱动
过滤到。尽管我们前面已经过滤了TDI_SEND。netbt是Netbios Over Tcp/Ip,是用于计算机名字解
析,对于想监控网络邻居的安全系统非常重要。不过更重要的是,如果netbt可以绕过我们的安全
监控,那么别的程序也可以,这个漏洞必须弥补。
有人发现netbt将直接获取函数指针TCPSendData进行数据发送,既然不通过发送TDI_SEND请
求,那么当然可以绕过我们的监控了。
研究tcpip.sys的代码,以下是tcpip.sys 的分发函数节选,其中有一个
IRP_MJ_DEVICE_CONTROL的功能号码为IOCTL_TDI_QUERY_DIRECT_SEND_HANDLER。如
果你发出这个请求,tcpip.sys将把TCPSendData这个函数的指针返回给你,你就可以直接用它来发
送数据。


Netbt会在加载的时候就获得这个地址,所以TDI驱动没法动态加载,只能依赖重启过程,在Netbt.sys加载前加载,所以要调整注册表中的加载顺序。
这些都试过了,没问题。但是发现即便这么做了,共享传文件还是抓不到,具体说如果是139端口是抓的到的,如果连接建立在445端口,那么即便过滤了IOCTL_TDI_QUERY_DIRECT_SEND_HANDLER这个请求也抓不到。

有谁是否也碰到类似问题,因为TCPIP.sys的加载数序group是PNPTDI,在PNPTDI和NetBIOSGroup之间有NDIS和TDI,我试了我的驱动加载group设置为NDIS和TDI都一样,只对139能过滤,对445不能。

139是SMB协议,445是CIFS协议,确实看http://www.shcherbyna.com/?p=121%2F这个文章也是分析的SMB的,CIFS难道有别的方式发送数据?

求高手,谢谢!


我不仅要金子,我还要点石成金的手指!
trent
驱动老牛
驱动老牛
  • 注册日期2002-03-01
  • 最后登录2014-09-18
  • 粉丝0
  • 关注0
  • 积分61分
  • 威望185点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2013-05-30 14:11
发现天网也没搞定445
我不仅要金子,我还要点石成金的手指!
no_wc
驱动牛犊
驱动牛犊
  • 注册日期2009-11-19
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分46分
  • 威望201点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2013-06-26 09:27
楼主这个问题解决了吗?我很想知道怎么解决的,我遇到这个问题。求解
游客

返回顶部