fracker
驱动太牛
驱动太牛
  • 注册日期2001-06-28
  • 最后登录2021-03-30
  • 粉丝0
  • 关注0
  • 积分219分
  • 威望81点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分1分
  • 社区居民
阅读:3727回复:18

用hook NDIS的NdisMRegisterMiniport做防火墙,实验证明,原理可行。

楼主#
更多 发布于:2002-07-19 10:10
承前一贴,用hook NDIS的NdisMRegisterMiniport做防火墙,实验证明,经过验证,原理可行。不过如果做成产品的话,估计问题会很多,因为这个那个NDIS_MINIPORT_CHARACTERISTICS在不同的平台上结构不同,不好处理啊,一旦出错就是灭顶之灾。另外还有一个就是Windows 98/95,因为这些烂平台不但支持WDM的驱动,还支持实模式方式下的驱动,还没想好怎么做。哪位精通此道的出来指点一下,让我少走点弯路,感激中。。。
fracker
驱动太牛
驱动太牛
  • 注册日期2001-06-28
  • 最后登录2021-03-30
  • 粉丝0
  • 关注0
  • 积分219分
  • 威望81点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分1分
  • 社区居民
沙发#
发布于:2002-07-19 10:19
对于PC网络防火墙,有LSP,Hook TDI,IMD等方法,最近看论坛上讨论Hook NDIS,和注册假协议,继而搜索协议链的方法很火,我有一个可能很幼稚的想法,就是既然可以Hook NDIS的NdisRegisterProtocol,NdisOpenAdapter等函数,为什么不能Hook NDIS的NdisMRegisterMiniport函数,这可是网卡调用的阿,如果我在这里用自己函数替换NDIS_MINIPORT_CHARACTERISTICS里面的函数,是不是也可以得到发送,接受的数据,这个时候应该也可以做过滤,加密之类的操作吧?我想这种思路做过防火墙的朋友考虑过吧?但为什么没人讨论呢?难道是这种方法根本没有办法实现?期待高手来指点迷津。


如果网卡驱动不是通过NdisMRegisterMiniport注册网卡的话,这种方法也就失效了,不知道大家有没有遇到过这种情况。
guardee
驱动巨牛
驱动巨牛
  • 注册日期2002-11-08
  • 最后登录2010-05-29
  • 粉丝2
  • 关注1
  • 积分2分
  • 威望34点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-07-22 16:00
呵呵!你的这个方法是跟网卡紧密的联系到一块了啊!
fracker
驱动太牛
驱动太牛
  • 注册日期2001-06-28
  • 最后登录2021-03-30
  • 粉丝0
  • 关注0
  • 积分219分
  • 威望81点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分1分
  • 社区居民
地板#
发布于:2002-07-22 17:55
是啊,我就是觉得这种方法可能在95/98下很难实现了。
fracker
驱动太牛
驱动太牛
  • 注册日期2001-06-28
  • 最后登录2021-03-30
  • 粉丝0
  • 关注0
  • 积分219分
  • 威望81点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分1分
  • 社区居民
地下室#
发布于:2002-07-22 17:57
不过我觉得很奇怪,大家对这个东西的兴趣远没有对灌水的兴趣大啊,真不懂,我们来这里的主要目的还是交流技术阿,我真得很希望大家对这种方法提出更多的批评。
moqingsong
论坛版主
论坛版主
  • 注册日期2002-04-07
  • 最后登录2011-02-03
  • 粉丝0
  • 关注0
  • 积分74分
  • 威望71点
  • 贡献值0点
  • 好评度10点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-07-22 18:07
很感兴趣呀,可惜我这几天正在对付我的imd,找不出大块时间,hook那玩艺,俺也没玩过,不敢太露怯。于是表现为浓厚的灌水兴趣了。哎。。
跟一把。
按第一贴的“给分”键,给分。
guardee
驱动巨牛
驱动巨牛
  • 注册日期2002-11-08
  • 最后登录2010-05-29
  • 粉丝2
  • 关注1
  • 积分2分
  • 威望34点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-07-22 21:35
呵呵!我现在怀疑系统通知网卡发收数据有可能使用的是irp_mj_DEVICE_CONTROl
fracker
驱动太牛
驱动太牛
  • 注册日期2001-06-28
  • 最后登录2021-03-30
  • 粉丝0
  • 关注0
  • 积分219分
  • 威望81点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分1分
  • 社区居民
7楼#
发布于:2002-07-23 09:07
呵呵!我现在怀疑系统通知网卡发收数据有可能使用的是irp_mj_DEVICE_CONTROl


那岂不是就可以 Filter 一把?
fracker
驱动太牛
驱动太牛
  • 注册日期2001-06-28
  • 最后登录2021-03-30
  • 粉丝0
  • 关注0
  • 积分219分
  • 威望81点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分1分
  • 社区居民
8楼#
发布于:2002-07-23 09:09
哪位有规则分析的源代码?给来一份,我把这种方法完善一下,看看实际的效果如何。
guardee
驱动巨牛
驱动巨牛
  • 注册日期2002-11-08
  • 最后登录2010-05-29
  • 粉丝2
  • 关注1
  • 积分2分
  • 威望34点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-07-23 12:17
呵呵!还是自己来吧
fracker
驱动太牛
驱动太牛
  • 注册日期2001-06-28
  • 最后登录2021-03-30
  • 粉丝0
  • 关注0
  • 积分219分
  • 威望81点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分1分
  • 社区居民
10楼#
发布于:2002-07-23 13:05
自己写多累阿?
gjpland
驱动小牛
驱动小牛
  • 注册日期2001-09-13
  • 最后登录2011-03-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2002-07-24 14:20
[quote]对于PC网络防火墙,有LSP,Hook TDI,IMD等方法,最近看论坛上讨论Hook NDIS,和注册假协议,继而搜索协议链的方法很火,我有一个可能很幼稚的想法,就是既然可以Hook NDIS的NdisRegisterProtocol,NdisOpenAdapter等函数,为什么不能Hook NDIS的NdisMRegisterMiniport函数,这可是网卡调用的阿,如果我在这里用自己函数替换NDIS_MINIPORT_CHARACTERISTICS里面的函数,是不是也可以得到发送,接受的数据,这个时候应该也可以做过滤,加密之类的操作吧?我想这种思路做过防火墙的朋友考虑过吧?但为什么没人讨论呢?难道是这种方法根本没有办法实现?期待高手来指点迷津。


如果网卡驱动不是通过NdisMRegisterMiniport注册网卡的话,这种方法也就失效了,不知道大家有没有遇到过这种情况。
 [/quote]
fracker兄,好厉害,小弟,光顾着NDIS版了,没看到你的文章。
以前我研究protocol wrapping时,曾想过,不过,一直没有想通一些问题,所以就没有研究下去。
1.PE HOOK,我一直望而却步的。
2.如何接收数据包。对于MINIPORT来说直接从物理网卡的得到数据的,然后通过NdisIndicatePacket向上传递数据包,那么是不是也要拦截NdisIndicatePacket呢。
3.早期通过NdisRegisterMac注册的Miniport怎么处理,因为他的处理方式似乎与现在的处理方式不同。
4.该如何卸载这个hook程序呢。




[编辑 -  7/24/02 by  gjpland]
我思故我在,脑袋不会坏.
fracker
驱动太牛
驱动太牛
  • 注册日期2001-06-28
  • 最后登录2021-03-30
  • 粉丝0
  • 关注0
  • 积分219分
  • 威望81点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分1分
  • 社区居民
12楼#
发布于:2002-07-24 14:35

fracker兄,好厉害,小弟,光顾着NDIS版了,没看到你的文章。
以前我研究protocol wrapping时,曾想过,不过,一直没有想通一些问题,所以就没有研究下去。
1.PE HOOK,我一直望而却步的。
2.如何接收数据包。对于MINIPORT来说直接从物理网卡的得到数据的,然后通过NdisIndicatePacket向上传递数据包,那么是不是也要拦截NdisIndicatePacket呢。
3.早期通过NdisRegisterMac注册的Miniport怎么处理,因为他的处理方式似乎与现在的处理方式不同。
4.该如何卸载这个hook程序呢。


你这几个问题可都是痛处阿。
2.NdisIndicatePacket这个也还是简单。也Hook一把解决。
3.我知道,在98下的很多.VxD就是用这个API注册,我还没搞清楚。
  还有就是我都不知道怎么到98下面去找ndis.vxd的影像,好像跟nt不一样,98下的hook大多都是VMM的Service提供的。
4。这个倒是简单,删除注册表里面的健,删除.sys就可以了。
gjpland
驱动小牛
驱动小牛
  • 注册日期2001-09-13
  • 最后登录2011-03-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2002-07-24 15:04
[quote]
fracker兄,好厉害,小弟,光顾着NDIS版了,没看到你的文章。
以前我研究protocol wrapping时,曾想过,不过,一直没有想通一些问题,所以就没有研究下去。
1.PE HOOK,我一直望而却步的。
2.如何接收数据包。对于MINIPORT来说直接从物理网卡的得到数据的,然后通过NdisIndicatePacket向上传递数据包,那么是不是也要拦截NdisIndicatePacket呢。
3.早期通过NdisRegisterMac注册的Miniport怎么处理,因为他的处理方式似乎与现在的处理方式不同。
4.该如何卸载这个hook程序呢。


你这几个问题可都是痛处阿。
2.NdisIndicatePacket这个也还是简单。也Hook一把解决。
3.我知道,在98下的很多.VxD就是用这个API注册,我还没搞清楚。
  还有就是我都不知道怎么到98下面去找ndis.vxd的影像,好像跟nt不一样,98下的hook大多都是VMM的Service提供的。
4。这个倒是简单,删除注册表里面的健,删除.sys就可以了。 [/quote]
我问的卸载是动态卸载。
我思故我在,脑袋不会坏.
fracker
驱动太牛
驱动太牛
  • 注册日期2001-06-28
  • 最后登录2021-03-30
  • 粉丝0
  • 关注0
  • 积分219分
  • 威望81点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分1分
  • 社区居民
14楼#
发布于:2002-07-24 15:12
我想在想到的是只能是删除了重新启动了。

如果动态的话,估计不好办,因为NDIS_MINIPORT_CHARACTERISTICS是在拦截NdisMRegisterMiniport的时候得到的,如果动态卸装了驱动程序,等下次再加载的时候,没有办法找到这个地址的。因为网卡驱动程序只调用一次NdisMRegisterMiniport。
fracker
驱动太牛
驱动太牛
  • 注册日期2001-06-28
  • 最后登录2021-03-30
  • 粉丝0
  • 关注0
  • 积分219分
  • 威望81点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分1分
  • 社区居民
15楼#
发布于:2002-07-24 15:14
如果我们的程序并没有从内存卸出,倒是可以把所有的地址恢复。
guardee
驱动巨牛
驱动巨牛
  • 注册日期2002-11-08
  • 最后登录2010-05-29
  • 粉丝2
  • 关注1
  • 积分2分
  • 威望34点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2002-07-25 12:46
呵呵!动态卸载也应该可以的,在卸载的时候分配内存,设置一条跳转指令啊
fracker
驱动太牛
驱动太牛
  • 注册日期2001-06-28
  • 最后登录2021-03-30
  • 粉丝0
  • 关注0
  • 积分219分
  • 威望81点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分1分
  • 社区居民
17楼#
发布于:2002-07-25 15:51
老鼠,这不好办吧?驱动再次起来的时候,怎么找这个地址?
而且还有就是有些网卡停止又启动,啊。。。
好烦的,不如不支持动态安装。
guardee
驱动巨牛
驱动巨牛
  • 注册日期2002-11-08
  • 最后登录2010-05-29
  • 粉丝2
  • 关注1
  • 积分2分
  • 威望34点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2002-07-25 18:15
没关系的啊!啊,对了,动态卸载之后就不能从新加载了!因为网卡驱动不再调用注册的那个函数了,动态卸载是可以的啊
游客

返回顶部