企业版更突出了集中管理功能,用户不能禁用实时监控以及更改相关的设置,以确保企业网络环境中大量计算机的安全。如企业版客户端中LiveUpdate按钮变灰,前面有一个小锁标志,表示客户端会强制自动升级病毒库及相关组件。凡按钮前有一个小锁标志的,表示用户均无权修改该项。这的确充分体现了企业版的优势:强制性。
而如此强大的杀毒软件却有着不完善的地方,美中不足之处为: (这里测试版本8-9.0.0.X)
图1
仅需改动注册表中的几个键值,这款杀毒工具就失去了原有的功能。问题集中在[HKEY_LOCAL_MACHINESOFTWAREINTELLANDeskVirusProtect6CurrentVersionStoragesFilesystemRealTimeScan]下的键值中。
如:若实时防护被禁用,软件会自动启用,默认自动启用时间为3分钟,用户无权改动。现在将 "APESleep" 这个键值改动,它对应多少分钟后重新启用实时监控。3b是16进制数,转换为10进制为59,当更改这个值为3b后,原来的3分钟变成了59分钟。如图2所示。
图2
别忘了,这可是在企业版环境中,而更危险的还在后面。找到"APEOn-L"=dword:00000001改成0,则小锁标志消失,这样,普通用户也可更改这里的设置了。如果更改"APEOn-L"值为1,"APEOn"值为0 。则“实时监控被禁用”的小勾去掉,而且前面有小锁的标志,这样在实时防护被禁用的情况下,程序将不会再自动启用实时监控,而且用户无法更改。默认状态,实时监控是启用的,用户可以选择启用实时监控或临时禁用监控。禁用时,赛门铁克小鼠标形状的图标会加上一个红色的圈和一斜杠。而是否开启实时防护的键值为"OnOff",再修改"OnOff-L"值为1,更改这两个键值后,如图3,用户无权启用防护功能!!这对个人版同样适用。
图3
同理,"FirstAction"=dword:00000005 非宏病毒-1操作00000001 隔离受感染文件00000003删除受感染文件00000005清除文件中的病毒,为0则不做任何操作
"FirstMacroAction" 宏病毒的第一操作,具体同上。
"FileType"=dword:00000001 所有类型: 0 所选类型:
"FileType-L" 文件类型的小锁标示。
"FirstMacroAction-L" 宏病毒操作1的锁定。
"FirstAction-L" 非宏病毒操作1的锁定。
"Heuristics-L" 启发式扫描设置的锁定。
"HeuristicsLevel" 敏感级别的设置。
"Heuristics" 是否启用Bloodhound病毒检测技术。
"PrescanExclude" 扫描前是否检查排除的文件。
"Networks" 驱动类型网络;
"MessageBox"有病毒是是否显示消息。
NoScanDir项里添加不需要扫描的文件夹路径。如添加dword值命名为G:,则在实时监控时排除G盘。
上述所列的键值中(没有全部列出),若某些被黑客或病毒制造者所利用,则会造成杀毒程序不能工作或失效。由于该软件本身没有注册表监控功能,所以很容易就能遭到破坏,使计算机失去原先强有力的保护。本人在此只是指出主要的键值及SymantecAntivirus企业版客户端(个人版也如此)存在这样的缺陷,以便大家在该软件出现问题时可参阅并及时处理。
诚然,一个程序的各种设置若都体现在注册表里,这并不是一个错误。但对于一款杀毒软件来说,不对注册表进行保护,一旦更改注册表,则程序的设置就非法的变更,这无论对企业版还是个人版杀毒工具都是一个亟待改进的地方。
上文测试注册表改动时,采取了直接修改或导入reg类型文件达到修改目的。但实际上,恶意程序要篡改注册表时会执行程序本身代码对注册表进行修改,更为隐蔽。但杀毒软件的注册表监控程序不能,也不太可能对每次更改注册表的操作进行监控,只是对敏感区域进行监控。这是一个棘手的问题,既要允许合法程序修改注册表的操作,又要有效的防止恶意程序篡改重要的(包括杀毒软件自身相关的)键值。
如何解决呢?可以考虑对注册表进行实时防护,更改注册表中对应键值的权限或杀毒软件的进程实时占用某个键值,如卡巴斯基,当更改其相关注册表键值时显示:相关键值被系统关键进程所占用,不能更改;
另外可以从程序本身的开发着手,使程序设置的更改时不涉及到注册表。总之,也就是杀毒软件首先实现要自我保护,再去保护计算机,才能解决类似的问题。
谈到了注册表权限,就要谈到如何利用,有一款工具regini,专门修改注册表以及注册表权限,针对注册表中的某些项,对不同的用户设不同的权限;你也可以在regedit注册表编辑器(开始-运行-regedit)中,右键单击某个项,点击“权限”,具体的设置某些功能,也可再点“高级”,完成更细的配置。大家可以去摸索。同理,用编程的手段,API函数也可以实现regedit32修改注册表权限,关键函数如下:
// 创建一个ACE,允许Everyone完全控制对象,并允许子对象继承此权限
ZeroMemory(&ea, sizeof(EXPLICIT_ACCESS));
BuildExplicitAccessWithName(&ea, "Everyone", KEY_ALL_ACCESS, SET_ACCESS, Mi).
SUB_CONTAINERS_AND_OBJECTS_INHERIT);
顺便提一句,asp.net开发中若遇到“应用程序试图执行安全策略不允许的操作。要授予此应用程序所需的权限,请与系统管理员联系,或在配置文件中更改该应用程序的信任级别。异常详细信息: System.Security.SecurityException:不允许所请求的注册表访问权”。这应该也是权限的问题,可以考虑将machine.config 中userName="Machine"修改为userName="SYSTEM"。
综上,只要有windows操作系统,就会有注册表(其实若把注册表看成是操作系统的系统配置文件的存储区,则同理其他操作系统平台上也会有类似的问题),注册表的安全问题将是一个不朽的话题。SymantecAntivirus杀毒软件存在类似的问题,终归是需要改正的,要完善的。任何东西都是在不断的完善之中,让我们大家用自己智慧的双眼,去发现问题,解决问题,若实施不了,至少可以提出解决方案嘛......


评论加载中…
