阅读:4154回复:9
怎样做这个firewall?
Win ME/98
研究了一天98DDK里面的VPACKET,发现好像不能做firewall。而 看了一些贴子,发现可以做imd来实现firewall,不知道在98/me下面可以实现吗?需要的功能就是控制TCP/UDP/ICMP/IGMP的传输。 另外,可以在VToolsD里面的例子HookTDI基础上写这个firewall吗? 急啊!哪位xd肯帮忙指点一下? 谢了先! :D |
|
|
沙发#
发布于:2001-12-04 11:42
Win ME/98 我不知道目前做防火墙还有什么新意?:-) 实现起来类似于iptable,可以在不同的地方放置多条链。 98下可以通过hook_device_service。这个和vpn source 的原理一样,不过比那简单一些,不需要碎包。这是在 ip上放的链。这一层可以得到所有的ip包,但是没有更多 的信息,例如发送的所属进程,端口号(如果包分片的话, 需要自己组包) hooktdi是在tdi层放的链,这一层得不到所有的数据包, 但是可以得到tcp/dup详细的信息。 对于nt来说,imd是最底层的沟挂点,然后就是ip层, 不过这两层其实是一样的,此外就是tdihook,基本 上也差不多。 目前win平台下的单机firewall,好像也就是这些创意, 我实在没有更好的创意,结果似乎也就是不能卖钱,因为 我自己都不知道这些玩艺到底有什么用。我甚至产生了不 做firewall和vpn去做一个imd层木马的想法,至少我自己的 firewall和vpn是难以防住这种木马的,他奶奶的。 |
|
|
板凳#
发布于:2001-12-04 18:44
我在本论曾经发表过一篇《网络数据包通用拦截技术》就是介绍如何对IP数据包的拦截.你可以去查阅一下。
|
|
|
地板#
发布于:2001-12-06 14:42
To Huyg:虽然说:没有不透风的墙,但有墙总归比没有墙好吧?就好像人人都知道家里的门是挡不住小偷的,但出门的时候还是会把门锁上(我老板语)。反正是民用的,又有人肯给钱,就不用造原子弹的标准来要求了。呵呵.. :D
我是参考pcausa的那个pimd来做的,他用hook_device_service来hook住一些必须的ndis service(当然98和me下的hook方法不一样)。试了一下,可以在NdisSend里面得到process handle(ProcessID好像不行,要让上层来得到),也可以得到数据(是否有port No.就不知道了)。我是初练ndis,以前根本没有看过,特来向斑竹和各位高人请教的。不知道这样的一种架构是否有什么缺陷(除了斑竹说的那些攻击以外)?是否可以控制我所希望的那些协议(tcp/udp/icmp/igmp还有什么non-sync ip packet之类的)? To gjpland:以前曾经走马观花的看过您的文章,现在重新读一下,有了更深的认识。这样好像是注册一个新的协议,然后所有的ip数据都会打个弯从这个新的协议上通过,好像ddk里面的vpacket也是这样的。可能我的理解有错误,请指正。 不管如何,谢谢二位的回贴,希望以后能够多多请教。谢谢。 :) |
|
|
地下室#
发布于:2001-12-06 17:19
To Huyg:虽然说:没有不透风的墙,但有墙总归比没有墙好吧?就好像人人都知道家里的门是挡不住小偷的,但出门的时候还是会把门锁上(我老板语)。反正是民用的,又有人肯给钱,就不用造原子弹的标准来要求了。呵呵.. :D 9x下就是通过hook_device_service实现的,发出的数据好办, 不会遇到碎包,但是接收的数据遇到碎包的情况虽然比较少, 但是这种情况必须考虑,因为不排除对方变态。(目前几乎 所有的os都支持pmtu,路由设备也是如此,但是有了pmtu还是 要分片你也没有办法)。因此,获得所有网络数据包(不仅仅 是ip包)并不困难,你的比较令人烦恼的事情一定是自己要 组包以便获得端口号或者其他tcp header。否则就只能挡住第 一个ip包,后续包没有tcp header,你怎么办呢? 因此我的建议是,你不但要在现在这一层实现hook,还要hook 住tdi层,这样一来,tcp/udp等都用tdi的处理解决,在这里 你要获得processid,tcp header什么的都比较简单。 底下那一层我看就只能做点简单分析。但是没有也不行,例如 我通过packet.vxd发送数据包做后门,tdi是查不到的,因为packet 并不通过tdi。 此外,firewal对于加密传输的数据几乎无能为力。 |
|
|
5楼#
发布于:2001-12-07 10:15
谢谢Huyg!
那就要在同一个vxd里面做pimd和hooktdi,这样就比较全面了。那icmp/igmp应该再哪一层控制呢? 另外,你所指的加密传输,这样的传输不会把整个packet都加密吧?如果都加密了,还可以在网上传输吗? |
|
|
6楼#
发布于:2001-12-07 19:59
谢谢Huyg! icmp/igmp我认为在imd上处理好一点,但是在linux的机器上 ping一个指定长度为2000的包,linux就会发出两个分片包, windows平台上好像是发出两个icmp(记不太清楚了).因此, 如果这种情况发生,还是比较痛苦.几乎很难避免组包. 加密传输并不需要全加密,加密ipheader后面的数据就可以 了,也可以把tcp封装到一个icmp或者别的ip包发出.这样路由 是毫无问题的,firewall总不可能把所有的包都封住把?至少 icmp的pmtu包不会封住,或者ping包也不会封住吧?这样 不就可以悄悄地把数据发出了?或者backdoor干脆就在firewall 下层,那就根本得不到backdoor发出的数据,一点办法都没有. |
|
|
7楼#
发布于:2001-12-07 22:20
理论上说不能把icmp封住。 这样就会有问题。记得有一个unix黑客软件可以通过icmp包控制机器.即一般情况下关闭别的端口后, 不会封住icmp(icmp和tcp/ip是并立的,一般的包属于tcp/ip包), 在机器上装一个backdoor程序接收外面发送的特定icmp包就可以控制机器了...
|
|
|
8楼#
发布于:2001-12-07 23:28
感觉和我们做的文件加密系统一样,对于这些特定的、恶意的木马、后门都没有绝对安全的办法。但这样程序的安装并不太容易,一般都还需要趁主人不在的时候手动安装,因此,对能够接触计算机的人员就要加以控制了。
对于民用产品,想不出有什么十全十美的方案,即使把个软件防火墙做的再好,在网线上加个分析仪也是可以看到数据的。但是,这样的机会并不多,不是没有黑客都可以做到的。记得以前看到报道说上海这边有个人就是在证券公司的计算机里面接了根线,半夜抱个notebook跑去通过这根线闯入公司的内部网,偷去了不少内部资料,还偷了不少钱,把别人的股票也给卖了。但像这样能够把别人的网线给剥开的事情毕竟还是比较少的。 Huyg: 这样的加密方法也不错,不知道PGPNet是不是这么这么做的。 |
|
|
9楼#
发布于:2001-12-08 14:35
感觉和我们做的文件加密系统一样,对于这些特定的、恶意的木马、后门都没有绝对安全的办法。但这样程序的安装并不太容易,一般都还需要趁主人不在的时候手动安装,因此,对能够接触计算机的人员就要加以控制了。 你未免过于悲观,上海的那个案例是因为他们的数据传输 没有加密,现在任何一个vpn产品都可以保证这种事情不再发生。 此外,这样的程序安装并不困难,一个应用程序完全可以解决。 可以把一个driver以资源的形式放在app里面,app运行释放出 driver,然后app安装driver,然后app显示出一个挖地雷游戏。 |
|
|