1、1 项目五 木马攻击与防范项目五 木马攻击与防范2 项目五 木马攻击与防范【项目概述】l木马是计算机病毒的一种,已经成为数量增长最快的计算机病毒。黑客通过灰鸽子、上线远控、Ghost木马等各种“肉鸡”控制工具,疯狂侵蚀着Internet安全。为了加强对木马的防范,网络安全公司决定根据木马的特征和主要攻击方式,对整个网络进行木马扫描,加强木马防范措施。3 项目五 木马攻击与防范【项目分析】l木马也称特洛伊木马,名称来源于希腊神话木马屠城记。古希腊派大军围攻特洛伊城,久久无法攻下。于是有人献计制造一只高二丈的大木马,假装为作战马神,让精兵藏匿于巨大的木马中,大部队假装撤退而将木马摒弃于特洛伊城下。
2、城中士兵得知解围的消息后,遂将“木马”作为奇异的战利品拖入城内,全称饮酒狂欢。到午夜时分,全城军民尽入梦乡,藏于木马中的将士打开城门,四处放火,城外埋伏的士兵涌入,部队里应外合,攻下了特洛伊城。l网络攻防中的木马指的是攻击者编写的一段恶意代码,它可以潜伏在被攻击者的计算机中。攻击者通过这个代码可以远程控制被攻击者的计算机,以窃取计算机上的信息或者操作计算机。从本质上讲,木马也是病毒的一种,因此很多用户也把木马称为病毒。4 项目五 木马攻击与防范l在本项目中,将介绍木马工作的原理、典型的木马使用过程、木马的生成方法、木马免杀技术、木马防范技术,提高计算机用户对木马的认识,加强在网络使用中对木马的
3、防范意识和措施,避免在网络使用中遭受木马攻击,造成损失。l本项目主要内容如下:l1.木马的使用。l2.木马的生成。l3.木马免杀。l4.木马的防范。5 项目五 木马攻击与防范项目主要内容:任务一 木马的使用任务二 木马的生成任务三 木马免杀任务四 木马的防范6 项目五 木马攻击与防范任务三 木马免杀7 项目五 木马攻击与防范l任务描述l木马要发挥作用,必须经得起防病毒软件的查杀,即具有木马免杀能力。为加强木马的攻击能力,攻击者通常通过加壳、加花等方式加强木马的免杀能力。请使用ASPack加壳工具、UPX加壳工具进行木马免杀,然后再使用脱壳工具查验木马。l任务分析l木马免杀技术和防病毒软件查杀技
4、术之间的关系,可谓是“魔高一尺,道高一丈”,一旦有新的木马出现,防病毒软件厂商很快就能找到查杀新木马的方法;而造马者也总是不时地推出新的木马。任何木马和木马免杀技术一旦广泛使用,都将被防病毒软件所识别,因此木马的生存周期也就是被防病毒软件识别之前的那一小段时间。8 项目五 木马攻击与防范l防病毒软件对病毒的查杀是建立在拥有该病毒的特征码的基础上的。黑客为了让木马程序不被防病毒软件查杀,会通过各种方法对它进行修改或伪装,也就是进行免杀处理。目前常见的免杀方法有加壳、加花(指令)、修改特征码、变换入口点、入口点加密等。同时当前主流的防病毒软件都采用了复合特征码,因此很多时候通过一种方法很难达到免杀
5、效果,这时就需要几种方法配合才能起到免杀效果。l1.什么是壳?l在一些计算机软件里有一段专门负责保护软件不被非法修改或反编译的程序。它们一般都先于程序运行,拿到控制权,然后完成它们保护软件的任务。由于这段程序和自然界的“壳”在功能上有很多相同的地方,基于命名的规则,就把这样的程序成为“壳”。l正常程序运行的时候是不需要额外附加代码的,代码越多,越消耗资源。但是由于对软件进行保护的目的(防止反编译和破解),或者一些病毒程序为了躲避安全软件的检测或者杀毒软件的查杀,就会用到“壳”。9 项目五 木马攻击与防范l有一些版权信息需要保护起来,不想让别人随意改动,如作者的姓名,即为了保护软件不被破解,通常
6、都采用加壳来进行保护。如使用PDF文件,为了不让别人修改、复制或编辑,可以进行加密保护。l需要把程序变得小一些,从而方便使用。于是用到一些软件,它们能够将exe文件压缩。这种壳只是起到了压缩的功能,当程序运行的时候,会先对程序进行解压缩。l在黑客界给木马等软件加壳以躲避杀毒软件。10 项目五 木马攻击与防范l加壳的过程如图5-37所示。图5-37 加壳的过程11 项目五 木马攻击与防范l2.加壳的原理l所谓加壳,是一种通过一系列数学运算,将可执行程序文件(EXE)或动态链接库文件(DLL)的编码进行改变(目前加壳软件还可以压缩、加密),以达到缩小文件体积或加密程序编码的目的。当被加壳的程序运行
7、时,外壳程序先被执行,然后由这个外壳程序负责将用户原有的程序在内存中解压缩,并把控制权交还给脱壳后的真正程序。l较常见到的压缩壳有“UPX”、“北斗程序压缩”、“ASPack”等,加密壳有“PE-Armor”、“ASProtect”等。12 项目五 木马攻击与防范l3.壳的加载过程。l(1)获取壳自己所需要使用的API地址。lAPI(Application Programming Interface,应用程序编程接口)是一套用来控制操作系统的各个部件的外观和行为的预先定义的函数。Windows的API包含在系统目录下的动态连接库(DLL)文件中。l如果用PE编辑工具查看加壳后的文件,会发现未加
8、壳的文件和加壳后的文件的输入表不一样。l所谓输入表,就是让Windows在程序运行时提供API的实际地址给程序的表格。加壳后的输入表一般所引入的DLL和API函数很少,甚至只有Kernel32.dll以及GetProcAddress这个API函数。因为,加壳以后,输入表仅仅为壳本身,因其代码简单,输入表也简单。同时,壳实际上还需要其他的API函数来完成它的工作,为了隐藏这些API,它一般只在壳代码中用显式链接方式动态加载这些API函数。13 项目五 木马攻击与防范l(2)解密原程序各个区块的数据。l壳出于保护原程序代码和数据的目的,一般都会加密原程序的各个区块。在程序执行时,外壳会对这些区块数
9、据解密,以让程序能正常运行。壳一般是按区块加密的,在解密时也按区块解密,并且把解密的区块数据按照区块的定义放在合适的内存位置。l如果加壳时用到了压缩技术,那么在解密之前还有一道工序,就是解压缩。这也是一些壳的特色,如原来的程序文件未加壳时12M,加壳后反而只有几百K。l(3)重定位。l文件执行时将被映像到指定内存地址中,这个初始内存地址称为基地址(ImageBase)。这只是程序文件中声明的,程序运行时不一定能够保证系统一定满足其要求。l对于EXE程序来说,Windows会尽量给程序分配与原程序起始地址相同的基地址,从而就不需要进行重定位,所以加壳软件把原程序文件中用于保存重定位信息的区块干脆
10、也删除了,这样使得加壳后的文件更加小巧。有些工具提供“Wipe Reloc”的功能,其实就是这个作用。14 项目五 木马攻击与防范l对于DLL文件来说,Windows没有办法保证每一次DLL运行时提供相同的基地址,这样,重定位就很重要了。此时壳中也要提供进行重定位的代码,否则原程序中的代码是无法正常运行起来的。重定位的过程如图5-38所示。图5-38 重定位的过程15 项目五 木马攻击与防范l(4)Hook-API。lWindows API是一套用来控制Windows的各个部件的外观和行为的一套预先定义的Windows函数。l在Windows系统下编程,都会使用到API技术。有些人对API函数
11、的功能不太满意时,就会想到去修改API,从而使之更好地服务于程序,这样Hook API就出现了。通过Hook API可以改变一个系统API的原有功能,基本方法就是通过hook技术“接触”到需要修改的API函数的入口点,改变它的地址指向新的自定义的函数。lHook技术实际上是一个消息处理机制,当特定的消息发出,在没有到达目的窗口前,Hook程序就先捕获该消息,亦即Hook程序先获得控制权,这时,Hook程序可以加工处理(改变)该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递。l程序文件中的输入表的作用是让Windows系统在程序运行时提供API的实际地址给程序使用。在程序的第一行
12、代码执行之前,Windows系统就完成了这个工作。l壳一般都修改了原程序文件的输入表,然后自己模仿Windows系统的工作来填充输入表中相关数据。在填充过程中,外壳就可填充Hook-API的代码地址,这样就可以间接地获得程序的控制权。16 项目五 木马攻击与防范l(5)跳转到程序原入口点(OEP)。lOEP是指程序的入口点,软件加壳就是隐藏了OEP(或者用了假的OEP),只要找到程序真正的OEP,就可以立刻脱壳。l从这个时候起,壳就把控制权交还给原程序了,一般的壳在这里会有明显的一个“分界线”。但现在的猛壳已没有这个界限了,壳里有肉,肉里有壳。l4.常见的加壳工具。l常见的加壳工具包括压缩程序
13、和保护程序两大类,两种加壳工具的作用及常用软件如图5-39所示。17 项目五 木马攻击与防范图5-39 常见的加壳工具 随着加壳技术的发展,这两类软件之间的界限越来越模糊,很多加壳软件除具有较强的压缩性能,同时也有了较强的保护性能。18 项目五 木马攻击与防范l任务实施l本次任务实施拓扑示意图如图5-40所示。图5-40 木马免杀任务拓扑示意图19 项目五 木马攻击与防范l2.ASPack加壳工具的使用。l步骤1 在计算机上运行aspack.exe,界面如图5-41所示。图5-41 ASPack运行界面20 项目五 木马攻击与防范l步骤2 在图5-41中,点击“open”按钮,选择需要加壳的程
14、序,很快即可完成对程序的加壳过程,如图5-42所示。图5-42 对未加壳程序进行加壳在图5-42中,可见使用ASPack加壳工具对程序进行加壳后,程序大小缩小到56%。21 项目五 木马攻击与防范l步骤3 使用peid软件对ASPack工具加壳后的木马程序进行查验。在计算机上打开peid软件后,在“file”一栏中选择需要查验的程序,即可查验出加壳后的程序所加壳的类型、使用的加壳工具或编写语言等信息,如图5-43所示。图5-43 查验ASPack加壳后的木马程序22 项目五 木马攻击与防范l3.UPX加壳工具的使用。l步骤1 UPX是一个以命令行方式操作的可执行文件经典免费压缩程序,压缩算法自
15、己实现,速度极快。在计算机上运行upx.exe,然后打开命令提示符,进入到upx软件目录,然后使用upx命令对未加壳程序进行加壳,结果如图5-44所示。图5-44 使用UPX工具进行加壳23 项目五 木马攻击与防范l使用UPX工具对木马程序进行加壳后,可以查看文件的原大小、压缩后的大小、压缩比率、格式以及压缩后的软件名称。l步骤2 使用peid软件对UPX工具加壳后的木马程序进行查验,结果如图5-45所示。图5-45 查验UPX加壳后的木马程序24 项目五 木马攻击与防范l4.脱壳工具的使用。l知识链接:脱壳指的是去掉软件所加的壳。软件脱壳有手动脱和自动脱壳之分。(1)一般的压缩壳,都有专用的
16、脱壳机。如ASPack和UnASPack,或者用万能脱壳机,如procdump。l(2)加密壳一般很少有脱壳机,必须手动脱壳,脱壳步骤有三步:l1.查找程序的真正入口点(OEP);l2.抓取内存映像文件;l3.输入表重建。25 项目五 木马攻击与防范l步骤1 在计算机上运行超级巡警万能脱壳工具,界面如图5-46所示。图5-46 超级巡警万能脱壳工具界面26 项目五 木马攻击与防范l步骤2 在图5-46中,单击“文件”一栏旁边的选项按钮,加载使用ASPack工具加壳过的程序,然后点击“脱壳”,即可很快完成脱壳,如图5-47所示。图5-47 对加壳程序进行脱壳27 项目五 木马攻击与防范l步骤3 使用peid软件对使用万能脱壳工具脱壳后的木马程序进行查验,结果如图5-48所示。图5-48 检验脱壳后的程序 对比图5-43和图5-48,可见原来已经使用ASPack工具加壳后的程序不再带有壳,直接暴露了程序的编程语言。28 项目五 木马攻击与防范THANKS