今天无意间看到一篇题为“Windows Firewall: Another Good Reason Not to Login as Administrator”的文章,讲的是WindowsXP SP2自带的防火墙Windows Firewall的一个——不知道怎么称呼——应该说是缺点吧。就是任何程序只要具有管理员权限,就可以在注册表中添加一个键值,从而使Windows Firewall允许该程序接收外部数据的进入(大家都知道Windows Firewall只会拦截外来数据),与外网畅通无阻地传输数据!!(这些操作都是后台进行的,所以用户根本不知道)
下面我就这个注册表键进行研究:
位置:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\ Parameters\FirewallPolicy\StandardProfile\AuthorizedApplications\List
数据类型:
字符串
语法:
1、字符串名:
字符串名是用来标识该程序的,默认是用程序的完整路径作为字符串名。
2、字符串数据:
由程序的完整路径开头,然后再以 : 隔开,后面依次为端口,操作,防火墙中的显示数据。比如:
G:\Program Files\MSN Messenger\msnmsgr.exe:*::MSN Messenger
这个表示G:\Program Files\MSN Messenger\msnmsgr.exe的这个程序,*代表任何端口,Enabled表示允许(Disabled表示禁止),在防火墙中显示的数据为MSN Messenger。整句话完整的说就是:允许G:\Program Files\MSN Messenger\msnmsgr.exe程序接收任何端口发来的数据,并在防火墙中项目显示MSN Messenger
玩过黑客工具的朋友们一定曾经对防火墙的拦截十分苦恼,自己辛辛苦苦上传了的后门就被防火墙给截了~~致使许多木马都默认自动杀了常见防火墙进程,但这样非常容易让别人察觉出来,最ideal的方法就是在防火墙允许列表中添加自己的小马而不被发现。
我没有研究过天网防火墙的允许列表是注册表键值还是文件中的数据,但无论是哪一种保存方法,我都觉得应该加密数据,不能让程序如此轻而易举地绕过防火墙。
我以前倒考虑过这个问题,但认为Windows Firewall应该不至于把允许列表作为注册表键值来储存吧,但今天大吃一惊!
我觉得随着SP2的普及,越来越多的Windows用户会使用SP2的Windows Firewall,那么就是说只要以管理员权限运行一个未知程序,如果是病毒的话,那么它就已经可以正常和外界通讯了,而这一切你是完全不知道的!!如果SP2再出现SP1中的ms03049那样的溢出漏洞的话,如果许多用户的XP SP2管理员密码还是弱口令的话,那么利用木马播种机就会更容易入侵了!
作为微软忠实用户,提供关于Windows技术支持的我,也不得不告诫各位初级用户,最好不要使用Windows Firewall,使用第三方防火墙;或者平常使用电脑时以Users组用户登录(但这个很少人愿意)
这里有另外一篇文章,标题为“MS AntiSpyware Beta Turns A Blind Eye....”,讲的时MS AntiSpyware Beta对此注册表键视而不见,并对以上“缺点”做了一番讨论,作者认为是漏洞,还说 Microsoft''s Hole By Design。http://netadmin.77169.com/HTML/20050228010800.html