Tiny提供了强大的程序控制功能,可以详细的设定不同程序组的权限,从启动到访问网络一应俱全.

Tiny对于未列入组的程序的控制是从这里开始的:

这里的选项分别是:
  • Run with Default Security:采用默认安全级别

  • Run with No Security:不进行安全控制

  • TnR:采用Track’n Reverse功能进行监视

  • Do not Run:停止运行

  • Move to Quarantine folder:转移至隔离区

  • Trust this Application:加入信任程序组

对于”停止运行”,”隔离”这些选项我想就不用再多作介绍了,而对于TnR,一位网友已经做过详细的介绍,请大家参阅.下面我们来着重讲一下其他功能,以及”Advanced”里面的一些设置.
首先是Run With Default Security,这个比较令人费解,所谓的Default Security到底是什么样的安全级别,点击以后会产生什么效果?经过本人的使用,发现这里所说的Default Security主要有以下几个安全特征:
  • 主程序(即你现在运行的这个程序)可以启动(废话!)

  • 默认的安全级别不属于任何用户组,也就是说选择这种模式运行的程序不会被加入任何用户组

  • 默认安全级别的程序将会采用Checksum的Integrity Check方法,这个稍后再作详细介绍

  • 主程序访问网络会有提示,你可以在弹出的对话框中选择”允许”,”禁止”或者选择”Trust it”直接将其加入信任组

  • 默认不会监测其文件变化,即Integrity Monitor默认是关闭的

  • 主程序调用其它程序时会有提示,提示内容和启动新程序类似.

然后就是”不进行安全控制”,正如其选项后注明的一样,这个运行方式主要是用来运行安装程序的,在这个方式下运行的程序拥有不受控制的安全等级,可以随意添加文件和注册表项(用户另有设置的除外),一般不要轻易对其它程序使用该运行方式.

接着是Trust模式,点击该项会将程序加入信任组,关于信任组这个最常用的组,Tiny默认已经内置了其对应规则,主要有以下:
  • 可以访问网络

  • 可以启动其它程序

  • 采用Checksum的Integrity Check方式

  • 可任意挂载dll文件

  • 默认不会监测其文件变化,即Integrity Monitor对信任组默认是关闭的

信任组是最常用的用户组,也是一个拥有很高权限的用户组,除非你对所运行的程序有十足的把握,否则最好别将其加入信任组.

最后,你也可以通过点击”Advanced”按钮来采用高级选项定制程序规则,点击”Advanced”以后会出现这个对话框:

在这个对话框中,你可选择”Create a new record for this application”将程序加入特定组(下方列表中)或自定义的新组(New Group按钮),而不仅仅是信任组或默认安全级别,还可以选择程序的Integrity Check方式(稍候详细介绍).

钩选下方的”Let Binary Guard check integrity of this application”将会将当前程序置于Integrity Guard的监视之下,也就是说可以实时的监视程序是否发生了变化,关于上面的两种Check方式我稍候将作介绍,下面列表中的三个选项在选择后分别会产生如下效果:

  • Monitor:将提示程序发生变化,但是不阻止程序运行

  • Ask:在程序发生变化时会提示程序变化,并询问是否继续运行程序

  • Protection:直接阻止发生变化的程序运行

到这里,控制中心以外的程序控制选项也就介绍完毕了,下面转入控制中心中程序规则的设定和修改部分.

启动控制中心后会发现有两个子菜单列在Application之下,分别是My Applications和Application Start Control,首先我们来看My Application.

点击My Application以后右边的窗口会转入这样的界面:

在这里列出了你目前所有已经定义过的程序及其Integrity Check的方式,你可以通过”selected group”来查看不同的用户组中的程序,也可以通过底部的几个按钮和程序前方的复选框批量移动程序组别或者删除程序规则(点击程序后方那个两页图标和红叉可以对单个程序实现类似效果),还可以通过上方的”Add New Group”增加新组,这些功能相对比较简单,在此不作介绍.

下面来介绍对单个程序规则的定义和修改(分别通过”Enroll Exe or dll”和应用程序后的那个带有铅笔的图标实现),这两个功能中的选项比较类似,下面以新程序规则定义为例说明:
点击”Enroll Exe or dll”开启如下界面:

这里提供的选项和在外部新运行程序时的高级选项类似,我只简单介绍几个地方:
  • Type of File:顾名思义,是决定你将要定义规则的程序是什么类型

  • Application/Dll is identified by its:这个是Integrity check的选项,稍候详细介绍

  • Path:填入程序所在的完整路径,当然,也可以通过一些环境变量来进行设置,比如%SystemRoot%就是指你的Windows所在的文件夹.

  • Name/Description:随你便.

  • Type of Data base :定义本规则是对所有系统中的账户通用,还是仅对本账户有效.

接下来就是这个界面中比较有特色的一个功能:批量添加功能.这个功能可以批量添加特定目录下的程序规则,点击”:Genertate Application or dll”出现如下对话框:

可以很明显的看到这里和上面单个添加的规则基本一致,那就来看看不一样的吧,在目录(path)中填入c:\Program files\选择用户组为”Trusted”,然后点击OK,然后看看用户组Trusted的变化,是不是Program files里边的所有程序都被加入了”Trusted”,好用吧?在这里你还可以通过”search”中的选择来决定是只添加制定目录下的程序(..only),还是连同制定目录子目录下的程序一起添加.(…and all subdirectories).

现在我们就进行到了TPF程序设置中最为强大也最为繁琐的一部分—程序启动控制了.这部分虽然选项不见得比前面的几个模组多,但是由于不同组合可以产生截然不同的效果,综合起来可以说千变万化,想一次讲清似乎不太现实,所以我下面通过一个实例尽量让大家明白怎么才能按照自己的需要组合这部分的功能.

例:禁止其他调用WinRAR.exe程序.

这里我以禁止调用WinRAR为例,介绍如何禁止其他程序自动调用指定程序(程序组).以下是实现步骤:

1.点击”Add new rule”,在弹出的对话框中填写规则描述,并选择优先级(这里不需要解释了吧?),然后钩选”Enabled”确保规则被启用:

2.点击”Application”,转入程序选择界面,在这里选择当前程序,由于我要禁止一切程序调用WinRAR.exe,所以我选择*(至于程序列表后面那几个小按钮,点一下就会发现其功能你已经看过了^_^)

3.点击”Access”,转入的页面是用来设置是否允许的,这里有几个选项需要说明一下:

首先是Start两个下拉列表中的选项:

第一个,
  • Allow:允许程序被启动.

  • Prevent:禁止程序被启动.

  • Ask:程序被要求启动时弹出对话框让用户决定是否可以被启动.

第二个,
  • Ignore:忽略,选择这一选项时目标程序的活动不会弹出警告,也不会在Amon中被监测(Activity Monitor我以后会作说明).

  • Mnotior:监控,选择这项时程序的活动会被Amon监控,但不会弹出警示框.

  • Alert:警告,程序的活动会在右下角弹出警示框警示,内容依照你第一个下拉列表中定的内容显示.

然后是Use parent security,首先说明一点,这个选项只有在你把Start设置为Allow或者Ask时才有意义,否则由于程序不会被启动,这一选项的设置就没有任何意义.当这里被设置为yes时,即使目标程序(你在Object里面设置的,这里为WinRAR.exe)属于与当前程序(Application里面设置那个)不同的程序组,目标程序依然会以当前程序所在的程序组的安全级别进行运行,而不是采用自身已有的程序组设定.这样说可能有点抽象,举例说吧,比如你把3721.exe(当然,世界上没有这个程序)设置为blacklist组,win.exe(也没有^_^)设置为trusted组,当3721.exe运行时调用win.exe时,win.exe将以Blacklist的安全级别而不是Trusted的安全级别运行(怎么像绕口令?)
这里我们不允许winrar.exe被启动,自然也就设置为prevent+Alert.

4.点击”Restriction”来到下一步,这里设置的是一些时间和用户组,比较简单,你可以通过设置时间使规则只在特定时间生效(爸爸们可以控制儿子玩游戏了!),也可以指定规则生效的用户组.

5.Summary是规则的一些摘要信息,会设定没理由不会看,我就不说了.

至此,大功告成,所有程序都无法间接调用WinRAR了!

例子讲完了,别的框我不想多说了,点了你就会发现和这个框内容几乎是一抹一样的,至于Integrity check,还是留个悬念到以后吧.

NND,忘了,还得补充一点,就是这个:

这个界面中最上方那四个列表框设置的是默认程序的启动控制,选项我已经讲过,但是需要注意的是当你把左上角第一个框设置为Run时候,运行未归组的新程序时将不会出现本文第一个图那样的提示,而直接按照Default Security运行,希望大家注意(设置成Prevent?那当然不能运行了!).


第二篇来了.在前几天写的那部分里我介绍了一下TPF的应用程序保护部分,在其中我多次提到了Tiny的Integrity Check部分,下面我就来详细介绍一下TPF的Integrity Check.

首先,所谓的Integrity Check,直译的话就是”文件完整性检查”,通过这个,我们可以检测到已经归组的应用程序是否发生了变化.一般来说,这个功能最直接也是最常用的领域就是可以检测出程序是否被捆绑了其它东西,当然,也可以检测到一些将自身写入可执行文件的病毒(这不还是捆绑吗?).

好了,废话我就不说了,直接进入正题吧.

TPF对于程序完整性的验证提供了三种基本的方式,分别是:

  • Name:通过文件名检测,这种方式下,只要文件名发生变化,就认为程序已经被改动.

  • Path:通过文件所在的路径进行验证,这种方式下一旦程序所在的路径发生变化,TPF就认为程序已经被改动过.

  • Checksum:通过MD5验证程序是否被改动(MD5大家都知道吧?不知道就www.google.com吧).

明眼人一眼就可以看出来,前两种验证方式比较的白痴,自然用途也不是很广,建议大家设置Integrity Check的时候最好少用(怎么设置上次已经说过了,不过我一会儿还要说一次),而MD5检测已经被证明可以有效的监测出程序的变化,对于一般的程序,我们可以尽量采用Checksum的验证方式.当然,这也不是绝对,对于一些频繁改动的程序(最典型的就是自动升级程序),如果你对它的完整性比较有信心,最好采用前两种验证方式,否则每次运行都弹出对话框估计连佛祖都会被烦死的.

如果你觉得单一的验证方式并不能保证你对程序完整性的要求,TPF还提供了两种组合的验证方式,分别是Checksum+Name和Checksum+Path,你可以根据需要选择.

明白了验证方式以后,我们就可以开始利用他们保证程序的完整性了.在检查的方式上,TPF为我们提供了静态检测和实时监控两种方式.对于那些相对稳定的程序,我们可以选择静态监测,而对于一些高危程序,实时监控则能够更好的的完成保护的任务.下面我们举两个例子来说明如何利用这两种方式.

  • 例一:静态检测程序变化

这里我们拿一个TinyFirewallKG.exe来举例,新建应用程序规则,将其属性设置为如下

下面,我们将程序用ASPack加壳.

现在我们需要通过调用Integrity Check扫描器来扫描应用程序的变化,右击任务栏的TPF图标,选择”Update Known Applications”,在弹出的界面中点击”Scan”,在扫描结束后,会给出如下结果:

可以看到TPF准确检测出了程序被修改过.这时,如果你确定程序的修改是无害的,可以选择Update来更新程序规则.否则,你就要注意程序是否有问题了.不过还有一个问题,如果某些程序在Scanner中不能正确检测出MD5,而检测方式又不是Checksum的话,即使其文件名或路径已经发生了变化,Scanner也不会给出变化信息(知道为什么Name和Path要少用的另一个原因了吧?)

[List]
  • 例二:实时监控程序的变化[/List]
    还以刚才的程序为例,新建程序规则,将其属性设置为如图所示:

    这里需要注意的是,只有选择两种组合检查方式的时候,我们才可以对程序的变化进行实时监控,单独的监测方式不能做到这一点.

    对程序加壳,然后双击运行程序.可以看到TPF给出了入下提示,告诉你程序已经被修改:

    这时你就可以根据程序变化是否有害来选择是否运行程序.同时还需要提醒的是,TPF不会自动记忆你这次对于这个程序是否运行的选择,也就是说如果你下次打开这个程序时还会看到同样的提示,如果你不想这样,可以选择在程序规则中更新程序的信息,也可以通过第一个例子中的方式,启动Checkcum Scanner来更新程序的信息.

    两个例子已经讲完,Integrity的主要部分也已经说完了,不过TPF中还有另一种Integrity Check,就是对于规则的完整性进行的检查,这个功能可以看到对应模块中有多少规则不会产生实际效果以及其原因,这个可以通过点击对应模块中的
    按钮来实现.