毒师周军:我如何创造一只“杀毒神兽”(3)
做了这么多准备,我们终于准备开发自己的反病毒引擎了。 【火绒安全截图】 (四) 乔装改扮是病毒的基本技能。Win PE 系统中 80% 的病毒都有对杀毒软件的对抗代码。病毒今天穿蓝衣服,明天换黑衣服,杀毒软件就可能无法识别了。 所以在把目标文件放到病毒引擎查杀之前,有一个非常重要的工作,那就是先用“照妖镜”让文件现出原形。这个照妖镜就是虚拟沙盒。 简单来说,就是让文件在这个虚拟的环境里“释放天性”,自由地展示它的好和坏的本性。 这件事情的难点在于,如何让杀毒软件相信,自己不是被放在实验台上任人亵玩,而是真的进入了目标电脑。 很多病毒的脚本会用各种奇异的姿势来测试它是否在真实的系统中。例如向系统请求一些冷门的环境,在真实的系统里,无论病毒提出什么要求,系统一定会满足。但是在虚拟系统里,稍有不慎就会“露馅”。病毒一旦没有拿到理想的相应结果,便不再继续运行。 另外,有些杀毒软件使用开源代码制造脚本解释引擎,这些开源代码本身就可能存在漏洞,这些漏洞如果被病毒利用,则会被病毒逆袭。 举个例子: upatre 木马家族会使用一种独特的方法,它会在自身外层设立一个混淆器,登陆目标之后先创建一个窗口,在里面建立文本控件,使用这个计算出一个长度,再拿出来为自己解密。这个方法的巧妙之处在于它调用了其他病毒很少调用的窗口和文本系统,这就使得一般的虚拟机很难“跑开”它。 如果不能跑开,就只能进行静态的代码审计,由于代码复杂度极高,人工方法几乎没办法完全审看。 于是,我们用了一种方法,那就是在引擎里直接嵌入了一个“Windows 系统”,这个系统完全由我们开发,里面包含了注册表、窗口系统、进程调度等等功能。 病毒的目的是:看你和真实系统哪里不一样。 我们的目的是:让病毒相信我们就是真实的系统。 当然,Windows 系统极其复杂。理论上来说,我们如果模拟得一模一样,那么体量上也会和它一样大。我们希望不断抹平和最新 Windows 之间的差距,目标就是做到“病毒需要的,我们全都有”。 我们从成立一年半的时候开始做引擎,到现在为止对于虚拟沙盒的完善一直没停过。一旦发现病毒利用了新的系统特性,我们也会马上在虚拟沙盒里加入。 【虚拟沙盒整体架构】 (五) 最大快人心的,就是引擎杀毒这一步。 引擎杀毒的依据是病毒库。病毒库分为三个部分。 病毒文件哈希:特定病毒文件呈现的具体特征 病毒基因特征:被“跑开”以后的病毒样本里的关键数据 病毒行为特征:病毒所具有的一系列行为特征。 检验文件的哈希,是一种比较笨的方法。就像警察拿着通缉令逐一排查。然而由于病毒会不断变幻加密生成变种,所以可怜的警察要拿着同一个人穿着不同衣服的照片才能识别。一旦病毒买了一件新衣服,警察还是会漏过。 检查文件的基因特征,大概就像先把路人的衣服脱光,然后再对照片进行比对。这种情况下,病毒的真身就会赤裸裸呈现在面前,彻底杜绝了穿上马甲就不认识的尴尬局面。 对病毒行为的分析,是引擎最让我自豪的能力。因为它已经脱离了病毒的外貌,转而判断病毒的灵魂。外表再和善的人,只要伸手做坏事,都难逃“老刑警”的法眼。 我记得有一条行为模型,在对1900万病毒样本进行测试的时候,成功命中了47万样本,这样的单条检出率甚至超过了我的预计。 【火绒安全对恶意代码采用的分类】 但是,就像这世界的骗术在不断进化一样,病毒的行为“剧本”也在发生演化。所以我们正在尝试用一种新的方法来找到最新的病毒威胁情报。 (编辑:ASP站长网) |