baohe 2008-8-3 22:10
Tiny防毒设置----釜底抽薪
我用Tiny观察过很多病毒,包括那些狠毒的,如:熊猫烧香、机器狗、磁碟机、硬盘杀手(篡改MBR).....。
发现一个普遍性的规律:这些病毒发生实质动作(创/写文件、写注册表、写MBR)前,需要加载数量不等的系统DLL。此后,才开始植入、感染等破坏动作。
因此,针对这一规律,设计了一个用Tiny防毒的方案。目的是不让病毒为其自身创建运行环境。具体操作如下:
1、打开Tiny的Administration Center,点击My Applications、Add New Groups。创建两个程序组:
(1)My_Program(收录所有系统程序、用户安装的应用程序以及特定电脑特有的应用程序)
(2)sys_dlls(收录system32目录及其子目录下的DLL)
2、选定My_Program程序组。点击Tiny的My Applications面板上的Generte Apllications or DLL(即:程序批量录入)。
按图1设定录入参数,即可按路径依次录入程序到My_Program中。
[attach]265849[/attach]
3、选定sys_dlls程序组。点击Tiny的My Applications面板上的Generte Apllications or DLL(即:程序批量录入)。
按图2设定录入参数,然后将system32目录及其子目录下的DLL录入程序到sys_dll程序组中。
[attach]265850[/attach]
4、点击Tiny主面板左侧的DLL,再点击Add New Rule。添加一条高权限规则:允许My_Program程序组中的程序加载sys_dlls程序组中的DLL(图3)。
[attach]265851[/attach]
5、重复上一步操作,添加一条高权限规则:禁止其它任何程序加载sys_dlls程序组中的DLL(图4)。
[attach]265852[/attach]
6、正确完成上述5步操作。重启系统,运行自己的应用程序试试。系统及应用程序没问题。这步不能忽略哦!否则,弄不好,还没给病毒玩儿釜底抽薪,倒先给自己下绊儿了。
7、实机运行病毒样本,检验此方案的防护效果(图5-图6)。OK!结束那个~~.exe进程,病毒就死翘翘了。
[attach]265853[/attach]
[attach]265854[/attach]
注:本方案实施的基本前提是---系统是干净的。否则,录入My_Program程序组的程序混入病毒,那就糟了。
这个“釜底抽薪”方案讨论的实际是“利用Tiny的DLL加载控制规则设置阻止病毒为其自身创建运行环境”问题。Tiny的其它的防毒设置还有:
(1)禁止My_Program程序组以外的任何程序在重要目标写入、创建、删除文件
(2)禁止My_Program程序组以外的任何程序获得系统特权
(3)禁止My_Program程序组以外的任何程序插入正常程序进程或注入代码到正常应用程序进程中
(4)禁止My_Program程序组以外的任何程序终止重要程序进程等等。
上述设置,用户也应一一搞掂。这里不再详述。
(5)程序入组时,之所以选择“路径”而舍弃“路径+MD5保护”,原因在于:某些程序(如:瑞星)频繁升级,其MD5常变,因此需要频繁刷MD5值,挺烦人的。至于程序完整性保护问题,可采用文件访问控制规则解决。
之所以没用瑞星主动防御搞此防毒方案,原因在于:
1、瑞星主防貌似没有程序分组功能
2、瑞星主防貌似没有程序批量录入功能。数千个程序,一一手工入组?用户会发疯的!
3、也没见瑞星主防针对不同程序组的DLL加载控制
如果谁知道如何用瑞星主防实现这种防御,请不吝赐教。
[[i] 本帖最后由 baohe 于 2008-8-3 23:03 编辑 [/i]]
eyeego 2008-8-3 22:15
猫叔玩TINY已经出神入化了。。。。
恩对了。。。。SSM跟TINY会不会冲突来着?
baohe 2008-8-3 22:18
[quote]原帖由 [i]eyeego[/i] 于 2008-8-3 22:15 发表 [url=http://bbs.janmeng.com/redirect.php?goto=findpost&pid=13223209&ptid=785337][img]http://bbs.janmeng.com/images/common/back.gif[/img][/url]
猫叔玩TINY已经出神入化了。。。。
恩对了。。。。SSM跟TINY会不会冲突来着? [/quote]
不冲突。
SSM、TINY、瑞星杀软-----三者共用4年多了,三者一直相安无事。
eyeego 2008-8-3 22:22
晕。。。。同是主动防御,难道他们使用的HOOK不同。。。。。?
baohe 2008-8-3 22:31
[quote]原帖由 [i]eyeego[/i] 于 2008-8-3 22:22 发表 [url=http://bbs.janmeng.com/redirect.php?goto=findpost&pid=13223269&ptid=785337][img]http://bbs.janmeng.com/images/common/back.gif[/img][/url]
晕。。。。同是主动防御,难道他们使用的HOOK不同。。。。。? [/quote]
瑞星的主防,基本不用。其设置远远不如Tiny灵活。
你自己试试,就知道了。实践是检验真理的唯一标准。
天月来了 2008-8-4 07:54
Tiny的规则制定时的方便和灵活可真做到家了。
其他HIPS或主动防御也这样就好了。
在无毒情况下建立独立的正常不受限程序组,还支持批量搞搞。
金剑人 2008-8-4 07:58
TINY在那里下载啊 : JM1
destinyhack 2008-8-4 09:13
谢谢LZ的文章,学习了。
baohe 2008-8-4 09:21
再次检验此方案的防护效果(用的是悠悠提供的这个样本:[url]http://bbs.janmeng.com/thread-785062-1-1.html[/url])
[attach]265902[/attach]
来自卡饭的新样本([url]http://bbs.kafan.cn/thread-298624-1-1.html[/url])
[attach]265903[/attach]
[[i] 本帖最后由 baohe 于 2008-8-4 09:57 编辑 [/i]]
tiandi010 2008-8-4 09:32
[quote]原帖由 [i]金剑人[/i] 于 2008-8-4 07:58 发表 [url=http://bbs.janmeng.com/redirect.php?goto=findpost&pid=13224792&ptid=785337][img]http://bbs.janmeng.com/images/common/back.gif[/img][/url]
TINY在那里下载啊 : JM1 [/quote]
在卡饭论坛可以 下载
卡饭论坛每星期日上午十点开始开放注册.
kongzi 2008-8-4 22:44
猫叔按照你的设置,重启电脑后无法进入系统。到显示桌面报userini.exe调用映像文件失败。: JM8
沁妍万岁 2008-8-4 22:52
不如白名单+阻止运行方便
反正阻止加载DLL和阻止运行差不多
轩辕小聪 2008-8-4 22:52
总觉得……
首先,加载系统DLL并不能被认为是恶意行为,所以它不会被作为判断依据。
那么唯一的判断依据就在于你是否把程序加入My_Program组了。
那么,你什么时候决定一个程序是否要被加入My_Program组呢?在程序运行时。
是的,当系统将要创建一个新进程时(这个进程的文件是没有被确认过的),Tiny将会提示。
如果你不允许这个程序运行,你就直接拒绝它,那么这个进程就不会创建了,自然也不会加载系统DLL了。
如果你允许这个程序运行,那么你必须同时把它加入My_Program组,否则它根本不会跑起来(加载DLL的时候就失败退出了)。
由此可见,如果你想不允许一个程序运行,直接当这个进程要被创建时拒绝掉就可以了,不需要加上不让它加载系统DLL这一步。而如果你想让一个程序运行,那则必须要允许它加载系统DLL。
有没有折衷呢?我能不能先允许程序运行,但不把它加入My_Program组,等它表现出某种行为,我确定它是病毒了,再由于这个规则的限制,使它直接出错被阻止?不可能!因为当进程创建的时候,只有等系统隐式装载dll完成(IAT被填入正确的内容了),然后才会进入程序exe文件的入口点去运行。所以,程序因没有被加入My_Program组而被阻止的情况,几乎永远发生在程序表现出任何恶意行为之前!
这样的规则违背了一般HIPS规则的原则,即:当程序运行并表现出某种可能为恶意的行为时,触发了规则,因此被阻止。
这样的规则的情况是:只要你不允许程序运行,直接在进程创建时把它拒绝掉就行了,这个规则没有被触发的可能;而只要你允许了程序运行,这个规则必须给程序开绿灯,否则程序将不会表现出任何的行为就被终止了,相当于你不让它运行!所以这个规则根本就是累赘!
这个规则当然可以阻止病毒,那是因为之前你已经知道它是病毒了,然后你故意在进程创建时不阻止它,然后让这个规则来阻止它。
但是在实际操作中,这根本就不必要,你既然已经知道它是病毒了,你在进程创建时就可以直接阻止它了;如果你不知道它是病毒,你则必须把它加入My_Program组,否则你根本也就没有办法根据它的行为判断它是不是病毒!
综上,“允不允许程序加载系统DLL文件”和“允不允许程序的进程被创建”,起的作用其实是一样的,所以有了后者的进程创建提示,前者根本就没有必要再存在!
[[i] 本帖最后由 轩辕小聪 于 2008-8-4 22:59 编辑 [/i]]
baohe 2008-8-4 23:25
[quote]原帖由 [i]轩辕小聪[/i] 于 2008-8-4 22:52 发表 [url=http://bbs.janmeng.com/redirect.php?goto=findpost&pid=13232871&ptid=785337][img]http://bbs.janmeng.com/images/common/back.gif[/img][/url]
首先,加载系统DLL并不能被认为是恶意行为,所以它不会被作为判断依据。
那么唯一的判断依据就在于你是否把程序加入My_Program组了。
那么,你什么时候决定一个程序是否要被加入My_Program组呢?在程序运行时。
... [/quote]
[color=Red]有没有折衷呢?我能不能先允许程序运行,但不把它加入My_Program组,等它表现出某种行为,我确定它是病毒了,再由于这个规则的限制,使它直接出错被阻止?不可能!......[/color]
可能的。
对于那些安全性未知的程序(不知道它是不是病毒),以Track'nRevers方式运行,该程序进入Tracking组。
Tracking组在Tiny的默认设置中权限是很高的,几乎不受什么限制。
然而,有了My_Program组及那些规则后,由于Tracking组与My_Program组是隔离开的,所以这样设置,可以观察用户以Track'nRevers方式运行未知程序是否有不良行为。
另外,Tiny的运行程序方式有多种。下图中的这种方式运行程序,该程序只进入All Apllications(也就是不入任何组)。
[attach]266092[/attach]
Tracking组的程序,若发现不安全行为,随后,用户即可将其移入Blacklist组(见下两图)
[attach]266095[/attach]
[attach]266096[/attach]
[[i] 本帖最后由 baohe 于 2008-8-4 23:56 编辑 [/i]]
baohe 2008-8-4 23:27
[quote]原帖由 [i]kongzi[/i] 于 2008-8-4 22:44 发表 [url=http://bbs.janmeng.com/redirect.php?goto=findpost&pid=13232793&ptid=785337][img]http://bbs.janmeng.com/images/common/back.gif[/img][/url]
猫叔按照你的设置,重启电脑后无法进入系统。到显示桌面报userini.exe调用映像文件失败。: JM8 [/quote]
My_Program组程序录入不全。关键的系统程序userinit.exe漏掉了。
[[i] 本帖最后由 baohe 于 2008-8-4 23:59 编辑 [/i]]
11度 2008-8-4 23:36
全是E文呀??????
有没有汉化的TINY呢?
嗯,LZ可否将规则共享一下~?
kongzi 2008-8-5 08:45
回复 15楼 的帖子
userinit.exe是在c:\windows\system32\而my_program组的路径是c:\programfiles 路径下。这点不太明白。
baohe 2008-8-5 09:07
[quote]原帖由 [i]kongzi[/i] 于 2008-8-5 08:45 发表 [url=http://bbs.janmeng.com/redirect.php?goto=findpost&pid=13233999&ptid=785337][img]http://bbs.janmeng.com/images/common/back.gif[/img][/url]
userinit.exe是在c:\windows\system32\而my_program组的路径是c:\programfiles 路径下。这点不太明白。 [/quote]
c:\programfiles 路径下不可能有userinit.exe。
my_program组是你自己在Tiny的管理中心设置的一个程序管理组,它不是通常意义上的某个系统目录或应用程序目录。
估计你理解有误。本帖关于程序入组的操作-----看下图:
[attach]266116[/attach]
[color=Red]按路径依次录入[/color]是指按先后顺序将若干目录及其子目录下的程序录入My_Program组(录入操作有若干次,而不是[color=Red]一次[/color])。
程序入组操作:应先看看你系统分区根目录下有多少个目录。C盘根目录下的每个目录及其子目录下的可执行程序都要分别录入my_program组,而不是仅仅将c:\programfiles目录及其子目录下的程序录入My_Program组了事。c:\programfiles目录及其子目录下的程序仅仅是应用程序,系统程序不在其中,而是在C:\windows\system32目录下。注意:除了system32外,c:\windows\目录下还有不少子目录,这些目录下的程序也是系统程序。
此外,explorer.exe等重要程序在C:\windows\目录下。
总之,程序入组操作是一件细致的事,不能遗漏,也不能搞错。
[[i] 本帖最后由 baohe 于 2008-8-5 09:20 编辑 [/i]]
eyeego 2008-8-5 14:25
能不能直接将WINDOWS文件夹下的程序批量入组
包括嵌套的文件夹里程序?
baohe 2008-8-5 15:23
[quote]原帖由 [i]eyeego[/i] 于 2008-8-5 14:25 发表 [url=http://bbs.janmeng.com/redirect.php?goto=findpost&pid=13236192&ptid=785337][img]http://bbs.janmeng.com/images/common/back.gif[/img][/url]
能不能直接将WINDOWS文件夹下的程序批量入组
包括嵌套的文件夹里程序? [/quote]
可以。
甚至可以将C:\及其各级子目录下的程序一次批量录入。
[[i] 本帖最后由 baohe 于 2008-8-5 15:26 编辑 [/i]]