第一篇:个人分享木马病毒查杀总结
一、前言
《病毒木马查杀》系列以真实的病毒木马(或统称为恶意程序)为研究对象,通过现有的技术手段对其分析,总结出它的恶意行为,进而制定出相应的应对方法(如编写专杀工具),对其彻底查杀。当然,本系列更多地是讨论如何应对某一个特定的病毒,而不涉及广义的杀毒软件的编写。因为如今杀软的原理非常复杂,并不是一个人就能够完成的,加之我个人水平有限,因此不会涉及杀软编写的问题。不过,我会在以后的文章中在理论层面对此进行分析。
在本系列的文章中,对于某一个病毒或木马,我可能会从以下三个方面进行查杀:手动查杀、监测恶意行为编写专杀工具或通过逆向分析其反汇编代码进行彻底查杀。这几种方式通过对病毒的不断深入分析,从而更有效地对抗恶意程序。需要说明的是,手动查杀病毒是比较粗浅的,难以彻底清除病毒,但是有些时候却是快速而有效的。而通过行为对恶意程序进行监测,虽说比手动查杀的效果要好很多,但是有些时候往往也会有些遗漏。所以其实最好的还是通过逆向分析来了解恶意程序,只是这样往往耗时较多。希望本系列的文章能够起到科普作用,让大家打消对病毒木马的恐惧感,使得每一位读者都能成为反病毒的专家。
二、病毒分析方法
一般来说,除非是感染型病毒,否则是不需要对病毒进行逆向分析的,只需要对病毒进行行为分析就可以编写专杀工具。而如果是感染型病毒,由于需要修复被病毒感染的文件,那么就不能仅仅简单地分析病毒的行为,而必须对病毒进行逆向分析,从而修复被病毒所感染的文件。因此,实际中的分析方法有以下两种:
1、行为分析。恶意程序为了达到目的,都有自己的一些特殊的行为,这些特殊的行为是正常的应用程序所没有的。比如把自己复制到系统目录下,或把自己添加进启动项,或把自己的某个DLL文件注入到其它进程中去……这些行为都不是正常的行为。我们拿到一个病毒样本后,通常就是将病毒复制到虚拟机中,然后打开监控工具,比如Process Monitor。将各种准备工作做好以后,在虚拟机中把病毒运行起来,看病毒对注册表、对文件进行了哪些操作,连接了哪个IP地址、创建了哪些进程等。通过观察这一系列的操作,就可以写一个程序。只要把它创建的进程结束掉,把它写入注册表的内容删除掉,把新建的文件删除掉,就等于把这个病毒杀掉了。这也是手动查杀病毒所惯用的方法。当然,这整个过程不会像说起来那么容易。
2、逆向分析。当恶意程序感染了可执行文件之后,所感染的内容是无法通过行为监控工具发现的。而病毒对可执行文件的感染,有可能是通过PE文件结构中的节与节之间的缝隙来存放病毒代码,也可能是添加一个新节来存放病毒代码。无论是哪种方式,都需要通过逆向的手段进行分析。常用的逆向分析工具有OllyDbg、IDA Pro以及WinDBG。
三、病毒查杀方法
病毒的查杀方法有很多种,在网络安全知识日益普及的今天,在各大杀软公司大力宣传的今天,想必大部分网络安全爱好者对于病毒查杀技术都有一定的了解。当今常见的主流病毒查杀技术有特征码查杀、启发式查杀、虚拟机查杀和主动防御等。
1、特征码查杀。特征码查杀是杀软厂商查杀病毒的一种较为原始的方法。它是通过从病毒体内提取病毒特征码,从而识别病毒。但是这种方法只能查杀已知病毒,对于未知病毒则无能为力。
2、启发式查杀。静态地通过一系列“带权规则组合”对文件进行判定,如果计算出的值高于某个界限则被认为是病毒,否则不认为是病毒。启发式查杀可以相对有效地识别出病毒,但是往往也会出现误报的情况。
3、虚拟机查杀。在内存中虚拟一个运行环境用于病毒的运行,根据其行为或释放出的已知病毒特征码,来判断其是否为病毒程序。这个技术用来应对加壳和加密的病毒比较有效,因为这两类病毒在执行时最终还是要自身脱壳和解密的,这样,杀软可以在其现出原形之后进行查杀。
4、主动防御。基于程序行为自主分析判断的实时防护技术,不以病毒的特征码作为判断病毒的依据,而是从最原始的病毒定义出发,直接将程序的行为作为判断病毒的依据。主动防御是用软件自动实现了反病毒工程师分析判断病毒的过程,解决了传统安全软件无法防御未知恶意软件的弊端,从技术上实现了对木马和病毒的主动防御。
四、环境的配置
我们所有的病毒分析工作都会在虚拟机中进行,因此安装虚拟机是一个必须的步骤。虚拟机也是一个软件,用于模拟计算机的硬件系统,在虚拟机中可以安装操作系统,之后可以安装各种各样的应用程序,这与真实的计算机是没有区别的。在虚拟机中的操作完全不会对我们真实的系统产生影响。但是这里要特别说明的是,某些特别强的病毒能够绕出虚拟机,进而感染我们真实的系统。这种情况可能是因为我们的虚拟机中存在漏洞,而病毒正好利用了这个漏洞。因此一定要选择最新版本的虚拟机软件。除了对病毒进行分析需要使用虚拟机外,在进行双机调试系统内核时(比如使用WinDBG),往往也是要借助于虚拟机的。常用的虚拟机有VMware和Oracle公司的VM VirtualBox。我个人最喜欢使用VMware,因为它的功能非常强大,而且基本上所有的教程都会以这款软件作为讲解对象。但是Vmware在我的系统中总是会出现莫名的问题,所以在我的实验环境中,我选择使用开源且免费的VirtualBox。我的VirtualBox采用的是4.3.12版,虚拟机中安装的操作系统为Windows XP Professional SP3,为其虚拟1个处理器,1GB内存、10GB硬盘空间与128M显存。而我的真实系统采用的是Windows 8.1(64位),使用Intel Core i5-3230M 2.60GHz的CPU,4GB内存。如无特别说明,本系列所有的实验都会在这个配置中完成。这里还需要说一下系统的备份,因为在分析病毒程序时,我们的虚拟系统或多或少地会被病毒所破坏,而备份功能则可以将系统很好地恢复到被破坏前的状态。在VirtualBox中,可以在“控制”菜单下选择“生成备份”,输入备份名称后保存。这样,以后如果想还原系统,可以选择“恢复备份”,至此,我们的实验环境基本配置完毕。
一、前言
作为本系列研究的开始,我选择“熊猫烧香”这个病毒为研究对象。之所以选择这一款病毒,主要是因为它具有一定的代表性。一方面它当时造成了极大的影响,使得无论是不是计算机从业人员,都对其有所耳闻;另一方面是因为这款病毒并没有多高深的技术,即便是在当时来讲,其所采用的技术手段也是很一般的,利用我们目前掌握的知识,足够将其剖析。因此,我相信从这个病毒入手,会让从前没有接触过病毒研究的读者打消对病毒的恐惧心理,在整个学习的过程中开个好头。
本篇文章先研究如何对“熊猫烧香”进行手动查杀。这里所说的手动查杀,主要是指不通过编写代码的方式对病毒进行查杀。说白了,基本上就是通过鼠标的指指点点,有时再利用几条DOS命令就能够实现杀毒的工作。但是不可否认的是,采用这种方法是非常粗浅的,往往不能够将病毒彻底查杀干净,但是从学习手动查杀病毒起步,有助于我们更好地理解反病毒的工作,从而为以后更加深入的讨论打下基础。需要说明的是,手动查杀病毒并不代表在什么软件都不使用的前提下对病毒进行查杀,其实利用一些专业的分析软件对于我们的查杀病毒的还是很有帮助的,这些工具我会在对不同的病毒的研究中进行讲解。另外,出于安全考虑,我的所有研究文章,都不会给大家提供病毒样本,请大家自行上网寻找,我只会给出我所使用的病毒样本的基本信息。
二、手动查杀病毒流程
手动查杀病毒木马有一套“固定”的流程,总结如下:
1、排查可疑进程。因为病毒往往会创建出来一个或者多个进程,因此我们需要分辨出哪些进程是由病毒所创建,然后删除可疑进程。
2、检查启动项。病毒为了实现自启动,会采用一些方法将自己添加到启动项中,从而实现自启动,所以我们需要把启动项中的病毒清除。
3、删除病毒。在*步的检查启动项中,我们就能够确定病毒主体的位置,这样就可以顺藤摸瓜,从根本上删除病毒文件。
4、修复被病毒破坏的文件。这一步一般来说无法直接通过纯手工完成,需利用相应的软件,不是我们讨论的重点。
三、查杀病毒
我这里研究的“熊猫烧香”病毒样本的基本信息如下: MD5码:87551e33d517442424e586d25a9f8522,Sha-1码:cbbab396803685d5de593259c9b2fe4b0d967bc7 文件大小:59KB 大家在网上搜索到的病毒样本可能与我的不同,但是基本上都是大同小异的,查杀的核心思想还是一样的。
这里我将病毒样本拷贝到之前配置好的虚拟机中(注意要备份),首先打开“任务管理器”查看一下当前进程:因为我的虚拟机系统中没有安装任何软件,是很纯净的,所以一共有18个进程(包含任务管理器进程),可以认为这18个进程是系统所必须的。有时我们就需要这样的一个纯净系统,来与疑似中毒的系统进行进程的对比操作。然后我们运行病毒,再次尝试打开“任务管理器”,发现它刚打开就立刻被关闭了,说明病毒已经对我们的系统产生了影响,而这第一个影响就是使得“任务管理器”无法打开。不过没关系,我们可以在cmd中利用“tasklist”命令进行查看:通过对比可见这里多出了一个名为spoclsv.exe的进程,那么我们可以通过命令“taskkill /f /im 1820”(强制删除PID值为1820的文件映像),从而将这个进程结束掉:这时就可以发现“任务管理器”可以被打开了,说明我们工作的第一步是成功的。然后需要对启动项进行排查,可以在“运行”中输入“msconfig”:
这里很快就能够锁定“spoclsv.exe”这一项,我们首先需要记下其文件位置: C:WINDOWSsystem32driversspoclsv.exe 然后是注册表位置:
HKCUSOFTWAREMicrosoftWindowsCurrentVersionRun 然后将这个启动项前面的对勾取消,来到注册表相应的位置,将Run中的“spoclsv.exe”删除,并且删除病毒文件本体:
以上工作完毕后,重启系统,再次打开“任务管理器”,可以被正常打开,说明我们的工作是成功的。然后打开“我的电脑”,用鼠标右键点击一下各个盘符(我的系统只有C盘):我们在手动查杀病毒的时候,就应该养成一个习惯,那就是使用右键来打开盘符,而不是通过双击左键的方式。在这里我们可以看到,鼠标右键菜单中多出来了一个“Auto”项,那么很明显C盘中存在autorun.inf的文件。可以在cmd中查看一下:因为我已经确定C盘中存在autorun.inf文件,而使用dir命令却没有看到,说明它应该是被隐藏了,所以这里要使用“dir /ah”(查看属性为隐藏的文件和文件夹)命令。而我们也确实发现了autorun.inf与setup.exe这两个可疑文件(因为正常文件是不需要隐藏的,特别是EXE文件更加不需要隐藏自己,所以这个setup.exe属于可疑文件)。因为这两个可疑程序的属性是隐藏的,所以这里可以先去掉其隐藏属性,然后再进行删除:
重启系统后,所有手动查杀病毒的工作完毕,我们的系统就又恢复正常了。
四、小结
事实上,“熊猫烧香”对于我们的电脑的危害远不止于此,只是说在不使用任何辅助工具的前提下,我们能做的基本上就是这些了。对于“熊猫烧香”病毒的手动查杀部分就到这里,在以后对于别的病毒的研究中,由于它们比“熊猫”要强大,我们不得不使用一些专业工具作为辅助。也希望大家能够亲自去尝试,勤动手,由这里开始,不再惧怕病毒。
一、前言
为了分析“熊猫烧香”病毒的行为,我这里使用的是Process Monitor v3.10版。
行为分析的目的,是为了编写出病毒的专杀程序。当然,由于现实环境的种种限制,可能无法发现病毒的所有行为,这些我都会在文章中进行说明。
二、对“熊猫烧香.exe”进程树的监控分析
这里我将病毒和Process Monitor v3.10复制到之前配置好的虚拟机中,并做好备份。然后先打开Process Monitor,在筛选条件中将“熊猫烧香.exe”加入到筛选器的“Process Name”中,然后运行病毒,首先可以查看一下进程树: 图①
在进程树中可以发现,“熊猫烧香.exe”衍生出了“spoclsv.exe”。衍生出的进程又打开了两次“cmd.exe”。第一次运行的命令是“cmd.exe /c net share C$ /del /y”,它的意思是在命令行模式下删除C盘的网络共享,执行完后关闭cmd.exe。因为我的系统只有一个C盘,因此有理由相信,这个病毒应该是会关闭系统中所有的盘的网络共享。第二次运行的命令是“cmd.exe /c net share admin$ /del /y”,这里取消的是系统根目录的共享。那么由此就可以总结出病毒的两点行为:
病毒行为1:病毒本身创建了名为“spoclsv.exe”的进程,该进程文件的路径为“C:WINDOWSsystem32driversspoclsv.exe”。
病毒行为2:在命令行模式下使用net share命令来取消系统中的共享。
三、对“熊猫烧香.exe”注册表监控分析
对于注册表的监控,我们发现只有一项需要注意: 注册表的这个位置主要用于随机数种子的生成,仅仅依靠这条信息是无法推测病毒的行为的,所以可以认为“熊猫烧香.exe”对于注册表没有什么实质的影响。
四、对“熊猫烧香.exe”文件监控分析
对于文件的监控,也只有一条需要注意:创建文件
可见,“熊猫烧香.exe”在“C:WINDOWSsystem32drivers”中创建了“spoclsv.exe”,其它再无可疑操作,那么可以认为,这个病毒真正的破坏部分是由“spoclsv.exe”实现的,那么接下来的工作就是专门监控这个进程。
五、对“spoclsv.exe”注册表监控分析 这里需要将进程名为“spoclsv.exe”的进程加入筛选器进行分析。一般来说,病毒所产生的操作会比较多,所以我这里为了便于讨论,我每次只会列出几项操作进行显示,其它的操作就由筛选器排除掉。首先可以查看一下“Reg*Value”这个操作:
可见病毒程序将当时几乎所有的安全类工具的自启动项给删除了,就有: 病毒行为3:删除安全类软件在注册表中的启动项。然后只保留“Reg*Key”与“RegSetValue”
可见,病毒程序为自身创建了自启动项,使得每次启动计算机就会执行自身,则有:
病毒行为4:在注册表“HKCUSoftwareMicrosoftWindowsCurrentVersionRun”中创建“svcshare”,用于在开机时启动位于“C:WINDOWSsystem32driversspoclsv.exe”的病毒程序。对注册表的这个位置进行设置,能够实现文件的隐藏。此处进行设置后,即便在“文件夹选项”中选择“显示所有文件和文件夹”,也无法显示隐藏文件,则有:
病毒行为5:修改注册表,使得隐藏文件无法通过普通的设置进行显示,该位置为:HKLMSOFTWAREMicrosoftWindowsCurrentVersionExplorerAdvancedFolderHiddenSHOWALL,病毒将CheckedValue的键值设置为了0。至此,注册表部分就基本分析完毕了。
六、对“spoclsv.exe”文件监控分析
文件的监控,主要看的是病毒是否将自己复制到其他目录,或者创建删除了哪些文件等,监控如下所示:
图二在图中可以看到,病毒文件在“C:WINDOWSsystem32drivers”中创建了“spoclsv.exe”这个文件,在C盘根目录下创建了“setup.exe”与“autorun.inf”,并且在一些目录中创建了“Desktop_.ini”这个文件。由于创建这些文件之后就对注册表的SHOWALL项进行了设置,使得隐藏文件无法显示,那么有理由相信,所创建出来的这些文件的属性都是“隐藏”的,于是有:
病毒行为6:将自身拷贝到根目录,并命名为“setup.exe”,同时创建“autorun.inf”用于病毒的启动,这两个文件的属性都是“隐藏”。
病毒行为7:在一些目录中创建名为“Desktop_.ini”的隐藏文件。
七、对“spoclsv.exe”网络监控分析
现在只进行网络监控,来查看病毒是否有联网动作:从监控结果可以看到,病毒会向“124.16.31.148”发送并接收信息,并不断尝试连接“10.0.2.X”即局域网中的其它计算机,于是有:
病毒行为8:向外发包,连接局域网中其他机器。
八、小结
至此,我们已总结出病毒的8点行为,在分析的过程中,我基本上是一语带过,主要是因为病毒比较简单,加上它在Process Monitor面前也是无所遁形。但是请大家注意,以上8点不代表就是病毒的所有行为,因为更加详细的结论是要通过逆向分析才能得出的。而通过上述的分析结果,我们就可以着手专杀工具的编写了,这将会在*文章中详述。
一、前言
为了分析“熊猫烧香”病毒的行为,我这里使用的是Process Monitor v3.10版。
行为分析的目的,是为了编写出病毒的专杀程序。当然,由于现实环境的种种限制,可能无法发现病毒的所有行为,这些我都会在文章中进行说明。
二、对“熊猫烧香.exe”进程树的监控分析
这里我将病毒和Process Monitor v3.10复制到之前配置好的虚拟机中,并做好备份。然后先打开Process Monitor,在筛选条件中将“熊猫烧香.exe”加入到筛选器的“Process Name”中,然后运行病毒,在进程树中可以发现,“熊猫烧香.exe”衍生出了“spoclsv.exe”。衍生出的进程又打开了两次“cmd.exe”。第一次运行的命令是“cmd.exe /c net share C$ /del /y”,它的意思是在命令行模式下删除C盘的网络共享,执行完后关闭cmd.exe。因为我的系统只有一个C盘,因此有理由相信,这个病毒应该是会关闭系统中所有的盘的网络共享。第二次运行的命令是“cmd.exe /c net share admin$ /del /y”,这里取消的是系统根目录的共享。那么由此就可以总结出病毒的两点行为:
病毒行为1:病毒本身创建了名为“spoclsv.exe”的进程,该进程文件的路径为“C:WINDOWSsystem32driversspoclsv.exe”。
病毒行为2:在命令行模式下使用net share命令来取消系统中的共享。
三、对“熊猫烧香.exe”注册表监控分析
对于注册表的监控,我们发现只有一项需要注意,对注册表的写入 注册表的这个位置主要用于随机数种子的生成,仅仅依靠这条信息是无法推测病毒的行为的,所以可以认为“熊猫烧香.exe”对于注册表没有什么实质的影响。
四、对“熊猫烧香.exe”文件监控分析
对于文件的监控,也只有一条需要注意: 创建文件
可见,“熊猫烧香.exe”在“C:WINDOWSsystem32drivers”中创建了“spoclsv.exe”,其它再无可疑操作,那么可以认为,这个病毒真正的破坏部分是由“spoclsv.exe”实现的,那么接下来的工作就是专门监控这个进程。
五、对“spoclsv.exe”注册表监控分析
这里需要将进程名为“spoclsv.exe”的进程加入筛选器进行分析。一般来说,病毒所产生的操作会比较多,所以我这里为了便于讨论,我每次只会列出几项操作进行显示,其它的操作就由筛选器排除掉。首先可以查看一下“Reg*V
可见病毒程序将当时几乎所有的安全类工具的自启动项给删除了,就有: 病毒行为3:删除安全类软件在注册表中的启动项。然后只保留“Reg*Key”与“RegSetValue”进行分析:
可见,病毒程序为自身创建了自启动项,使得每次启动计算机就会执行自身,则有:
病毒行为4:在注册表“HKCUSoftwareMicrosoftWindowsCurrentVersionRun”中创建“svcshare”,用于在开机时启动位于“C:WINDOWSsystem32driversspoclsv.exe”的病毒程序。接下来还有
对注册表的这个位置进行设置,能够实现文件的隐藏。此处进行设置后,即便在“文件夹选项”中选择“显示所有文件和文件夹”,也无法显示隐藏文件,则有:
病毒行为5:修改注册表,使得隐藏文件无法通过普通的设置进行显示,该位置为:HKLMSOFTWAREMicrosoftWindowsCurrentVersionExplorerAdvancedFolderHiddenSHOWALL,病毒将CheckedValue的键值设置为了0。至此,注册表部分就基本分析完毕了。
六、对“spoclsv.exe”文件监控分析
文件的监控,主要看的是病毒是否将自己复制到其他目录,或者创建删除了哪些文件等,监控如下所示:
在图中可以看到,病毒文件在“C:WINDOWSsystem32drivers”中创建了“spoclsv.exe”这个文件,在C盘根目录下创建了“setup.exe”与“autorun.inf”,并且在一些目录中创建了“Desktop_.ini”这个文件。由于创建这些文件之后就对注册表的SHOWALL项进行了设置,使得隐藏文件无法显示,那么有理由相信,所创建出来的这些文件的属性都是“隐藏”的,于是有:
病毒行为6:将自身拷贝到根目录,并命名为“setup.exe”,同时创建“autorun.inf”用于病毒的启动,这两个文件的属性都是“隐藏”。
病毒行为7:在一些目录中创建名为“Desktop_.ini”的隐藏文件。
七、对“spoclsv.exe”网络监控分析
现在只进行网络监控,来查看病毒是否有联网动作:
从监控结果可以看到,病毒会向“124.16.31.148”发送并接收信息,并不断尝试连接“10.0.2.X”即局域网中的其它计算机,于是有:
病毒行为8:向外发包,连接局域网中其他机器。
八、小结
至此,我们已总结出病毒的8点行为,在分析的过程中,我基本上是一语带过,主要是因为病毒比较简单,加上它在Process Monitor面前也是无所遁形。但是请大家注意,以上8点不代表就是病毒的所有行为,因为更加详细的结论是要通过逆向分析才能得出的。而通过上述的分析结果,我们就可以着手专杀工具的编写了,这将会在*文章中详述。
一、前言
对病毒进行逆向分析,可以彻底弄清楚病毒的行为,从而采取更有效的针对手段。为了节省篇幅,在这里我不打算将“熊猫烧香”进行彻底的分析,只会讲解一些比较重要的部分,大家只要掌握了这些思想,那么就可以处理很多的恶意程序了。一般来说,对病毒的静态分析,我们采用的工具是IDA Pro,动态分析则采用OllyDbg。由于后者会使病毒实际运行起来,所以为了安全起见,最好在虚拟机中操作。另外,在实际分析过程中,我们可能还需要一些辅助工具,比如侦壳或脱壳程序等。为了简单起见,这次研究的“熊猫烧香”程序并没有加壳,但是以后我们会讨论如何应对加壳或采用了其它保护手段的病毒。
二、查壳操作
逆向分析的第一步就是用查壳工具对目标程序进行查壳操作。由Delphi所编写的代码与VC++所编写的代码有所不同,最明显的两点区别如下:
1、函数调用时参数的传递不完全用栈,而是主要用寄存器,即Delphi编译器默认以register方式传递函数参数。这一点与VC编译的程序完全不同。Delphi一般将第一个参数放入eax寄存器,第二个参数放入edx,第三个参数放入ecx寄存器,其余参数按照与VC程序类似的方式压栈。
2、栈上给局部变量分配空间的时候,栈是向下增长的,而栈上的数组、字符串、结构体等却是向上增长的。理解这一点可以帮助识别栈上的变量。对病毒样本进行了简单的侦测之后,就确定了分析的方向,那么接下来就需要使用反汇编工具进行分
三、“熊猫烧香”的初步分析 这里我使用IDA Pro载入病毒样这里最开始的两个*调用的都是名为sub_403C98的函数,IDA Pro已经将其中第二个*上方的字符分析出来了,是一段作者感言信息。所以有理由相信,第一个*上方应该也是一段字符串,这里可以结合OD来查看一下:可见,第一个*上方的字符串就是“***武*汉*男*生*感*染*下*载*者***”,可以理解为是病毒作者信息,那么接下来就有必要分析一下病毒程序利用这两段字符串究竟做了什么。也就是进入*的内部,即sub_403C98去研究一下:
[mw_shl_code=asm,true]CODE:00403C98 sub_403C98 proc near;CODE XREF: sub_403ED4+8j CODE:00403C98;sub_403F18+6j...CODE:00403C98 test edx, edx;对edx 进行验证,这里的test相当于and,不同的是test只进行比较,而不会将结果保存;在edx中。由于edx保存的是病毒作者所编写的一段字符串,因此这里的结果一定是非0的。
CODE:00403C9A jz short loc_403CC0;由于*条语句的结果是非0的,因此这条跳转语句并不会被执行到。CODE:00403C9C mov ecx, [edx-8];利用OD进行动态分析可知,[edx-8]是将edx-8这个地址中的值取出来,赋给ecx,那么赋值
;完以后,ecx的值为0x0FFFFFFFF。CODE:00403C9F inc ecx;ecx自增1,那么ecx的值就变为了0x0,注意这个自增的运算会使得ZF的值变为1。CODE:00403CA0 jg short loc_403CBC;这里的jg表明不大于则跳转。或者更准确地说,其跳转条件是SF=OF且ZF=0。由于经过*步
;的运算,ZF=1,因此本跳转不成立。CODE:00403CA2 push eax CODE:00403CA3 push edx CODE:00403CA4 mov eax, [edx-4];经过赋值后,eax中保存的值为0x20。CODE:00403CA7 * sub_403D08;结合OD在虚拟机中进行动态分析,进入一层又一层的调用可以得知,这个*主要是调用了;LocalAlloc函数,它从堆中分配大小为0xFF8的空间,函数参数uFlags=0,即
;LMEM_FIXED,意思是分配固定内存,返回值是指向一个内存对象的指针。LocalAlloc函数;如果执行成功则返回一个指向新分配的内存对象的句柄。CODE:00403CAC mov edx, eax CODE:00403CAE pop eax CODE:00403CAF push edx CODE:00403CB0 mov ecx, [eax-4] CODE:00403CB3 * sub_402650;结合OD在虚拟机中进行动态分析,这个*的主要功能是将之前保存在edx中的字符串(病;毒信息与作者感言)拷贝到上面所分分配的堆空间中。如图5所示。CODE:00403CB8 pop edx CODE:00403CB9 pop eax CODE:00403CBA jmp short loc_403CC0[/mw_shl_code] 至此,sub_403C98分析完毕。这个函数有两个参数,由于采用的是Delphi编译器,因此在反汇编中,第一个参数保存在eax中,第二个参数保存在edx中。这个函数首先完成堆空间的申请,然后将edx中保存的字符串复制到新申请的空间中。这个函数在最初赋值的时候,eax的值均为0,而在执行后,eax中保存的就是新申请的堆空间中,所复制的字符串的首地址。
这里又是两个字符串,其中第一个是“xboy”,而第二个借助于OD可以知道是一堆乱码 之后可以借助于OD进入sub_405360内部进行动态查看,不过这里我们无需关注所有的细节,仅仅有一处循环需要注意:
[mw_shl_code=asm,true]CODE:004053D1 loc_4053D1:;CODE XREF: sub_405360+B5 j CODE:004053D1 mov eax, [ebp+var_14] CODE:004053D4 * sub_403ECC CODE:004053D9 push eax CODE:004053DA mov eax, ebx CODE:004053DC pop edx CODE:004053DD mov ecx, edx CODE:004053DF cdq CODE:004053E0 idiv ecx CODE:004053E2 mov edi, edx CODE:004053E4 inc edi CODE:004053E5 mov eax, [ebp+var_14] CODE:004053E8 movzx eax, byte ptr [eax+edi-1];每次循环逐字节取出“xboy”中的字符进行运算,注意这里首先取出的是“b”。CODE:004053ED mov ecx, 0Ah;将ecx赋值为0x0A,作为接下来除法运算的除数。CODE:004053F2 xor edx, edx;清空edx。
CODE:004053F4 div ecx;做除法运算,商保存在eax中,余数保存在edx中。CODE:004053F6 mov eax, [ebp+var_4];这里由于给eax重新赋值,说明程序实际想使用的是edx中的余数。CODE:004053F9 movzx eax, byte ptr [eax+ebx-1];每次循环逐字节取出乱码中的字符,赋值给eax进行接下来的运算。CODE:004053FE xor edx, eax;异或运算,结果保存在edx中,也就是通过运算最终得出的字符。CODE:00405400 lea eax, [ebp+var_18] CODE:00405403 * sub_403E2C CODE:00405408 mov edx, [ebp+var_18] CODE:0040540B lea eax, [ebp+var_10] CODE:0040540E * sub_403ED4 CODE:00405413 inc ebx CODE:00405414 dec esi CODE:00405415 jnz short loc_4053D1[/mw_shl_code] 很明显,这是一段解密代码,利用关键字“xboy”将乱码进行还原,通过OD观察,可以得到还原后的字符串为“***武*汉*男*生*感*染*下*载*者***”。那么就可以将函数sub_405360重命名为:DecodeSt*。继续分析:
这里第一句反汇编代码中的[ebp-14h]所保存的就是上面经过解密后的字符串的地址,而ds:dword_40E7D4保存的是之前所分配的堆空间中所保存的字符串地址。通过OD的动态分析,我们很容易就能够确定sub_404018函数的用途是对字符串进行比较,那么可以将其重命名为:St*Cmp。正常来说经过比对之后,二者是一致的,所以下面“相等则跳转”就会执行,跳到loc_40CBBC处执行:
由于之前已经进行了相应的分析,并进行了重命名的工作,所以这里的代码功能就一目了然了。首先进行解密,然后是字符串的比对。那么接下来的条件跳转也会成立,直接来到loc_40CBE6:
这里连续使用了3个*,限于篇幅,我会在接下来的文章中再做分析。
四、小结
本文对“熊猫烧香”病毒样本的反汇编程序的起始部分做了初步的分析。由于反汇编代码总会出现各种调用与跳转,所以分析时会显得很是凌乱,可能会打消大家的积极性。可见逆向分析工作需要各位读者的耐心与细致。耐心,需要大家沉得住气,不断跟踪每一个可疑的*;细致,需要大家时刻留意寄存器中的内容,才能够找到我们需要的信息。当然经验也是非常重要的。成功分析出病毒功能的喜悦是不言而喻的,它也吸引着病毒分析人员不断探索,一口气完成工作。也希望各位读者能够以此作为起点,体验到其中的乐趣。
一、前言
*篇文章讲解了“熊猫烧香”病毒样本的反汇编代码入口处的分析,虽然尚未研究到病毒的核心部分,但其实我们后续的分析与之前的思想是一致的。而越到核心部分,可能会遇到越来越多的API函数,结合所调用函数的参数进行分析,反而有助于我们更容易地理解病毒的行为。应当将分析出的每一个*函数,改为我们能够理解的名字,这往往也有助于对后续程序的理解。
二、病毒功能分析
*篇文章的最后,我留下了三个*没有分析,现在进入第一个*,即sub_408024的内部查看 程序先将0x84赋值给ecx,此即为循环次数。然后使用了两个push 0,每个push能够开辟8个字节(32位)空间,所以这里每次能够获取16个字节的空间,这样的空间一共申请ecx次。那么本段代码的功能在于空间的申请。接下来有:
这段代码的最后出现了sub_40277C这个函数,我们跟进后可以看到这几句代码: 可见sub_40277C主要是调用GetMuduleFileNameA这个API函数,而这个函数的功能就是获取当前进程已加载模块的文件的完整路径,那么就可以将sub_40277C重命名为:GetFilePathAndName。获取成功后,结合OD,可以看到如下信息:
图4 获取当前进程的完整路径 接下来有:
注意第一句代码中的[ebp+var_3B8]保存的就是图4中所获取的路径地址,这个地址值赋给了eax。然后进入sub_405684分析。这个函数中有一处循环结构,是我们重点关注的对象,利用OD动态分析:
仅仅进行静态分析,不容易明白这个循环的作用,但是结合OD单步执行,观察寄存器中的值,就很容易明白这段代码的功用:它利用之前获取的文件完整路径,从后向前以单字节为单位,不断循环搜索,直至遇到*码值为0x5C或0x2F或0x3A,然后便跳出循环。而0x5C所表示的是字符“”,可以知道这段程序要么是获取文件名,要么是获取不包含文件名的路径。进入最后一条语句的*分析,很快就能够发现:
可见,程序将去除了文件名的路径拷贝到了之前申请的空间中,于是可以将sub_405684重命名为:GetFilePath。接下来有:
这三句代码的第一句,是将上面所获取的不带文件名的路径的地址赋值给eax,然后将字符串“Desktop_.ini”的地址赋给edx。然后进入sub_403ED4进行分析:
上图中代码的最后一个*,在分析sub_405684(GetFilePath)时遇到过,其作用是将字符串复制到指定的位置。对于这段程序来说,就是将“Desktop_.ini”这段字符复制到之前的路径字符后面。那么可以得知,sub_403ED4的作用是字符串的连接,那么就将其重命名为:St*Cat。继续分析:
第一句代码是将之前所处理完毕的路径字符串地址赋给eax,然后调用sub_4057A4函数,进入该函数可以发现:
这里调用了FindFirstFileA这个函数,说明它是在查找当前目录下“Desktop_.ini”文件是否存在,那么sub_4057A4函数的作用就在于检测文件是否存在,可将其改名为:CheckFileExist。接下来有:
由于有了之前的分析并进行了重命名,那么这一段代码的作用就很明显了,首先根据*段代码的查找结果进行判定,即如果当前目录下Desktop_.ini文件存在,那么就将该文件的文件属性调整为NORMAL,接下来有: 停止1毫秒后,将Desktop_.ini删除。
可见这个函数用于检测待删除的文件路径是否为空。那么就可以将sub_4040CC重命名为:CheckPath。当然,以上分析是建立在Desktop_.ini文件存在的前提下,如果文件不存在,那么程序就会直接跳到loc_408110处执行
这里最后一句调用了sub_4078E0函数,跟进去发现这个函数较长,并且也调用了很多其它的函数,乍一看,似乎不知这个函数究竟是做了什么。既然如此,我们可以先不管其具体的实现细节,只看看该函数执行完后,我们寄存器等位置产生了什么变化,主要关注该函数执行前后,程序使用了哪些寄存器。利用OD可以很容易发现变化: 由截图可以发现,在获取了当前文件的路径后,该函数利用了很大的一片区域来写入了大量看似无意义的字符。结合右边分析出的*码,发现这些可以理解为是一个暴力破解字典,病毒编写者企图利用暴力破解的方式,来攻破计算机中的某些验证机制。当然截图中仅仅展示了一小部分变化,病毒还写入了很多其它信息,有兴趣的读者可以自行查看,这里不再赘述,这有助于我们获取病毒的行为信息。那么这里可以将sub_4078E0函数重命名为:WriteVirusInfoToMem。接下来有
这里第一句执行完后,eax的值为ebp+var_8的地址,通过OD可以知道,这个地址中保存的是0,可以理解为没有数据。之后有一个*,我们进入查看一下:
这里首先取出eax所保存的地址中的值,也就是0,并赋给edx,那么edx保存的也就是0值。之后的test运算,使得ZF变为1,满足跳转条件,那么本段函数也就结束了。如果说edx所保存的不是0值,那么接下来的语句就会把eax所保存的地址中的值设为0。这么看上去,这段函数似乎并没有实现什么特别清晰具体的功能,那么不妨将这个操作理解为某种标志的设置,将sub_403C44重命名为:SetZeroFlags。继
结合OD可以知道,第一句是获取文件在内存中的首地址,然后进入sub_403ECC查看: 这里需要特别强调的是,由于本病毒程序是使用Delphi编写的,那么字符串的首地址减去4后,所取出的4个字节的内容就是此字符串的长度。也就是说,这段代码中的[eax-4]就是eax所指向的文件长度。于是可以将sub_403ECC重命名为:GetFileLen。在获取文件长度后,程序会跳转到loc_408163处执行:
在获取了文件长度后,这段代码首先会验证文件长度是否为0,这里由于文件真实存在,所以接下来的跳转不成立。接下来,eax中保存的是文件起始地址,而ebx是文件的长度,于是可以知道,倒数第二句的对比,是验证文件的尾端数据是否为0,如果为0,则接下来的跳转不成立。经过OD的动态分析,这里文件尾端的值为0,所以不执行跳转,继续向下执行。
接下来代码的分析,留给*文章。
三、小结
经过一整篇文章的讨论,我并没有将病毒的一个完整功能块分析完全,主要是我需要讲得细致些,带领大家弄清楚每一个*的功能。接下来的最后一篇文章也无法将整个病毒分析完全,但是我相信,只要各位读者勤于动手,并将我所讲的逆向分析的基本原理搞清楚,那么这个“熊猫烧香”就根本不在话下了。
一、前言
这次我们会接着*篇的内容继续对病毒进行分析。分析中会遇到一些不一样的情况,毕竟之前的代码我们只要按照流程顺序一步一步往下走,就能够弄清楚病毒的行为,但是在接下来的代码中,如果依旧如此,在某些分支中的重要代码就执行不到了,所以我们需要采取一些策略,走完每个分支,彻底分析出病毒的行为。
二、病毒分析
现在程序执行到了loc_408171位置处:
程序首先进行比较操作,由于二者都为0,所以在比较过后ZF=1,那么接下来的跳转并不执行。之后的*获取到了病毒程序所在的路径(包含文件名),并将完整路径名的首地址保存在eax中,注意[ebp+var_3D8]中所保存的是一个地址数值,该地址指向文件路径字符串。而接下来赋给edx的地址,则是病毒程序完整地址向后4个字节的位置,正好跳过了两个大写字母和两个符号。接下来进入sub_40532C进行查看,可以发现:
这里的CharUpperBuff函数的作用是把缓冲区中指定数目的字符转为大写。于是可以将sub_40532C重命名为:ToUpper。接下来有: 这里出现了sub_4054BC函数,跟进查看可以发现
这里的GetSystemDirectory函数的作用在于获取系统路径,于是可以将sub_4054BC重命名为:GetSystemDir。可见以上这几个函数分析得还是比较顺利的,因为病毒直接调用了API函数,让我们对于程序的功能一目了然。接下来程序首先将刚才获取的系统路径字符串的首地址入栈,然后分别压入“drivers”与“spoclsv.exe”这两个字符串,之后利用OD对sub_403F8C进行分析,执行完后可以发现:
由此可见,sub_403F8C的作用是将两个字符串与另一个字符串连接起来,从而组成一个长路径,所以可以将其重命名为:TwoSt*sCat。接下来是:结合OD动态分析可知,这段程序首先将之前连接好的路径字符串转换为大写字母,然后将该字符串与之前所转换的病毒程序路径的大写字符串作对比操作,这里执行时,二者是不同的,所以接下来的跳转不成立(如果想要理解这里为什么要利用比对的操作,可以结合之前文章中对于病毒的行为分析,病毒会将自身改名为“spoclsv.exe”,并复制到“drivers”目录中,这里的对比就是要确认病毒到底有没有被复制到该目录下,如果没有,即对比结果不为零,那么就执行接下来的病毒复制操作)。dword_408658中保存的是字符串“spoclsv.exe”,然后可以进入sub_4060D4中进行分析。sub_4060D4这个函数也是比较长,内部有众多的*,一个一个*进行查看,可以发现它调用了非常多的API函数,依据这些API函数的功能可以知道,sub_4060D4的作用在于查找当前内存中的指定进程,若存在,则将其终止。由于较长,这里就不进行截图分析了。于是可以将sub_4060D4重命名为:SearchAndTerminateProcess。接下来有:这段代码已经有了足够的注释,就不再赘述。接下来还有:由最后一句的CopyFile函数可以知道,这里主要是实现文件的拷贝操作,也就是将本病毒文件改名为“spoclsv.exe”后,复制到“drivers”目录中。这段代码调用了Win*函数,查看它上面的eax中所保存的字符信息可以发现,当病毒本体将自身复制到“drivers”中并改名后,这里就是对改了名字的病毒程序执行运行的操作,然后主体程序就退出了。至此,如果想继续用OD进行动态分析,要么载入“spoclsv.exe”,要么对之前的一处条件跳转进行修改,令程序以为自己就是“spoclsv.exe”。该位置就是图7中的0x004081E8,我们先在该位置*个断点,然后用OD重新载入本程序,令其停在断点处。正常来说,这里的跳转是不成立的,为了使其成立,当然可以将jz改为jnz,但是这改变了病毒程序。最好的办法是改变ZF标志位,将原来的0改为1就可以了。但是,经过了之前的行为分析可以知道,真正实现病毒功能的,可以说就是“spoclsv.exe”这个程序,虽说这个程序和“熊猫烧香.exe”是完全一样的,可是毕竟其内部的执行流程是不同的。为了得到病毒完整的资料,这里我利用OD载入“spoclsv.exe”进行动态分析。那么0x004081E8处的跳转得以执行,一段代码出现了sub_40416C这个函数,它也是比较抽象,不太容易分析,这需要耐心与细致,在此我将过程省略。其实这个函数的功能是删除字符串中的信息,其中eax保存的是欲操作字符串的地址,ecx保存的是欲删除的字符的个数。那么就将sub_40416C重命名为:*St*Buff。然后程序跳转到loc_4085D3:
在*函数之上,eax保存的是一个标记数值,这里为0x01。之后的*就是查找文件中是否包含有这个标记,如果包含有这个标记,那么就执行跳转,否则不跳转。由此我们可以假设,这个0x01标记应该就是病毒将程序感染后,在原本正常的程序中添加的,用于标识该程序是否被感染的标记。如果真是这样的话,若想分析跳转后的程序内容,要么在OD中修改标志位,要么对一个被感染的程序进行分析,这里我不再赘述,有兴趣的读者可以拿一个被感染的程序自行分析。这里可以将sub_4041B4重命名为:SearchSignPos。
由于我现在分析的是病毒程序,他自身没有0x01标志位,因此跳转不成立,继续执行。一部分的代码主要用于收尾工作,最后的*用于删除堆栈中所保存的地址,这些地址指向的是病毒写入的一些信息。这部分代码返回后,那么sub_408024就执行完了。可能大家已经不记得sub_408024是什么了,这个就是我在本逆向分析系列的上篇的最后,所分析出的病毒三大功能的第一项功能。分析至此,可见这第一项功能主要用于病毒的初始化工作。余下的两大功能我在此就不进行分析,有兴趣的读者可以独立研究试试看。
三、小结 至此,熊猫烧香病毒的逆向分析系列就结束了,我用了三篇文章的篇幅来一步一步地给大家做了较为详尽的分析。尽管只分析了病毒的一项大功能,但是我相信大家或多或少地了解到了病毒逆向分析的基本方法。在我看来,这里面并没有多高深的技术,重要的是经验的积累以及个人的耐心的培养。希望各位读者能够踏踏实实地将这个病毒亲自动手分析完全,相信这会令大家的收获巨大。
一、前言
之前用了六篇文章的篇幅,分别从手动查杀、行为分析、专杀工具的编写以及逆向分析等方面,对“熊猫烧香”病毒的查杀方式做了讨论。相信大家已经从中获取了自己想要的知识,希望大家在阅读完这几篇文章后,能够有一种“病毒也不过如此”的感觉,更希望这些文章能够为有志于在未来参与到反病毒工作的朋友,打下坚实的理论基础。以下就是我在这几篇文章的分析中所总结出来的一些知识点,分为静态分析与动态分析两个方面进行讨论,并加入了一些延伸知识,为大家查漏补缺。
二、病毒的静态分析
静态分析技术通常是研究恶意代码的第一步。静态分析指的是分析程序指令与结构来确定目标程序的功能的过程。在这个时候,病毒本身并不在运行状态。我们一般采用以下几种方式进行静态分析:
1、采用反病毒引擎扫描
如果尚不确定目标程序是否为病毒程序,我们可以首先采用多个不同的反病毒软件来扫描一下这个文件,看是否有哪个引擎能够识别它。当然杀软也存在着误报的可能性,但如果说多款杀软都认为目标程序有问题,那么这个程序十有八九就是一个恶意程序了。
2、计算哈希值
哈希是一种用来唯一标识目标程序的常用方法。目标程序通过一个哈希程序,会产生出一段唯一的用于标识这个样本的哈希值,我们可以将这个值理解为是目标程序的指纹。常用的哈希算法有MD5、Sha-1以及CRC32等。由于仅仅采用一种算法,特别是MD5算法,有可能使得不同程序产生同样的哈希结果,所以为了谨慎起见,一般会运用多种哈希方式进行计算,比如“火眼”(https://fireeye.ijinshan.com/)的检测结果中就包含了计算出的哈希值
哈希运算的结果在病毒大规模爆发时可以快速响应,成为检测病毒的一种方式。我在《病毒木马查杀第004篇:熊猫烧香之专杀工具的编写》那篇文章中就采用了CRC32算法来验证目标
查找字符串
程序中的字符串就是一串可打印的字符序列,一个程序通常都会包含一些字符串,比如打印输出信息、连接的*,或者是程序所调用的API函数等。从字符串中进行搜索是获取程序功能提示的一种简单方法。这里我使用微软推出的St*s程序(http://technet.microsoft.com/en-us/sysinternals/bb897439.aspx),来搜索可执行文件中的可打印字符串。将St*s与病毒样本都拷贝到C盘根目录下,然后在CMD中输入: C: >St*s setup.exe 得到的部分结果
由结果可见,并不是所有的字符串都是有意义的,但是利用这个结果,也能够给我们的静态分析带来很大的便利了。比如“*DownloadToFile”这个API函数就经常被恶意程序用来执行文件的下载操作,该函数需要*MON.DLL动态链接库的支持,在上述截图中也有所体现。
4、侦壳操作
病毒木马编写者经常会使用加壳技术来让他们的恶意程序难以被检测或分析。正常的程序总是会包含很多字符串。而加了壳的恶意代码通过分析所得到的可打印字符串就会很少。如果使用St*s程序来检测一个程序,发现它的字符串很少时,那么这个程序就很有可能是加了壳的。此时往往就需要使用其它方法来进一步检测它们的行为。
对于这次的研究对象“熊猫烧香”来说,使用了PEiD这一款静态分析工具,用于检测目标程序是否有壳以及由什么软件编写的。因为如果病毒样本有壳,那么就一定要先脱壳才可以进行分析。而弄清楚了病毒是由什么软件编写的,我们就能够确定其函数调用方式以及栈的分配方式等特点,从而更好地进行分析。比如我的“熊猫烧香”样本是由Delphi编写的,如果我们不懂Delphi编译器的特性,依旧以C++的眼光来看待它,那么很可能会给接下来的分析工作带来困扰。
5、侦测动态链接
在对病毒木马进行分析的过程中,我们一定要关注目标程序中的动态链接,因为这些信息有助于我们猜测目标程序到底干了什么事情。Dependency Walker这款工具(http://www.xiexiebang.com/)就是我们常用的用于侦测动态链接的软件。比如我们用它来检测“熊猫烧香”:
可见Dependency Walker很清晰地指出了“熊猫烧香”使用了*MON.DLL中的“*DownloadToFile”这个API函数。有经验的反病毒工程师,利用这款软件往往就能将恶意代码的大概功能基本分析完全了。
6、PE分析
对于目标程序PE结构的分析,往往可以使我们获取更多的信息。常用的工具有PEview和Resource Hacker等。由于PE的分析较为复杂,所以这里不再详述。有兴趣的读者可以参考相应的PE类资料。
7、使用IDA Pro进行高级静态分析
IDAPro这款软件可以说是所有反病毒工程师的首选,我在对“熊猫烧香”病毒样本进行静态逆向分析时,使用的就是这款软件。相信大家在之前的三篇文章中,已经深有体会。它除了能够反汇编整个程序以外还能执行查找函数、栈分析、本地变量标识等任务。而且IDA Pro生来就是交互式的,其反汇编过程的所有属性都可以被修改、操作、重新安排或重新定义。而我们在实际分析的过程中,也应当及时地将已分析出的内容进行重命名或进行标注。我在分析的过程中全都是在文本模式下进行分析的,其实我觉得这款软件很好的一点是它能够以图形化的界面来为用户揭示程序的整个执行流程,可见,图形模式会给我们的分析工作带来更加直观化的体验。当然这款软件还有很多十分强大的功能,我会在未来的分析中,给大家一一展示。
三、病毒的动态分析
所谓动态分析就是在运行恶意代码之后进行检查的过程,它能够让你观察到恶意代码的真实功能。虽然动态分析技术非常强大,但是它们还是应该在静态分析之后进行,并且应该在虚拟的环境中进行。一般有以下几种方式:
1、使用沙箱
现在有很多自动化的软件可以用来对病毒进行基本的动态分析,最常用的就是沙箱技术。沙箱是一种在安全环境里运行可疑程序的一种分析方法,从而无需担心伤害到我们真实的系统。有些安全类企业也在线提供了这样的服务,比如“火眼”(https://fireeye.ijinshan.com/),可见“火眼”已经较为全面地揭示了病毒样本的行为,这对我们*步的分析很有帮助。不过,沙箱也存在着很多缺点,比如,如果我们分析的是一个后门程序,需要等待一条控制指令才会启动特定的行为,那么在沙箱中这个后门程序就无法被彻底分析了。而且沙箱也不能记录所有事件,因为如果恶意代码将自己设置为等待一天甚至更长的时间才去执行自己的行为,那么沙箱往往就无能为力了。诸如此类的缺点还有很多,但不管怎样,沙箱都是我们在反病毒工作中不可或缺的利器。
2、行为监控
Process Monitor可以说是在反病毒领域最为常用的软件了。我在《病毒木马查杀第003篇:熊猫烧香之行为分析》中所使用的就是它,而且在以后的分析中,还会经常使用。Process Monitor一旦开始运行,它就会监控所有能够捕获的系统调用,但并不是所有的数据都能捕获。所以往往也需要多款软件的同时使用,才能够获取恶意程序的完整行为。比如我们经常使用Process Explorer来查看进程,使用Regshot来比较注册表在病毒运行前后所发生的变化,利用Netcat进行网络监视等。每款软件都有各自的优点,我们在实际分析中要善于利用。
3、动态调试
使用调试器对病毒进行分析在反病毒工作中扮演着十分重要的角色。调试器允许你查看任意内存地址的内容、寄存器的内容以及每个函数的参数。调试器也允许你在任意时刻改变关于程序执行的任何东西。比如你可以在任意时刻改变一个变量的值——前提是你需要获得关于这个变量足够的信息,包括在内存中的位置。在实际的动态调试过程中,我们最常用的是OllyDbg和WinDbg,前者是病毒分析人员使用最多的调试器,缺点是不支持内核调试,如果想调试内核,WinDbg基本上就是唯一的选择了。虽然IDA Pro也能够进行动态调试,但是它远远不如OD方便。因此在实际分析的过程中,往往是将二者结合使用的。因为如果用IDA Pro在静态分析中遇到了十分抽象的函数,那么用OD动态地执行一下,该函数的功能往往就能一目了然了。
四、病毒分析的几点补充
我们在病毒分析的过程中,不要过于陷入细节。大多数病毒木马程序是庞大而复杂的,你不可能也没有必要去了解每一个细节。真正需要关注的是恶意程序最关键最主要的功能。在实际分析过程中,当遇到了一些困难和复杂的代码段后,应当在进入到细节之前有一个概要性的了解。另外,在面对不同的工作任务中,应当善于使用不同的工具和方法。不存在通吃的做法。如果在一个点上被卡住了,不要花太长的时间在这个问题上,尝试转移到其他问题,尝试从不同的角度进行分析。最后,病毒的分析工作就如同猫捉老鼠的游戏,正所谓道高一尺魔高一丈,恶意代码分析技术与恶意代码编写技术是对立统一的,二者都在不断地相互促进并发展着。所以我们应当能够认识、理解和战胜这些不断涌现的新技术,并能够快速适应这个领域中的新的变化。也就只有这样,才能够在这个领域有所成就。
第二篇:常见木马病毒速查表
常见木马病毒速查表.txt25爱是一盏灯,黑暗中照亮前行的远方;爱是一首诗,冰冷中温暖渴求的心房;爱是夏日的风,是冬日的阳,是春日的雨,是秋日的果。
常见木马病毒速查表常见木马病毒速查表
文章转自: 陪你醉生梦死
exe→BF EvolutionMbbmanager.exe→聪明基因
_.exe→TryitMdm.exe1.6-1.7
Aboutagirl.exe→初恋情人Microsoft.exe密码使者
Absr.exe→Backdoor.AutoupderMmc.exeAplica32.exe→将死者病毒Mprdll.exeAvconsol.exe→ 将死者病毒Msabel32.exeAvp.exe→将死者病毒Msblast.exe病毒
Avp32.exe→将死者病毒Mschv.exeAvpcc.exe→将死者病毒Msgsrv36.exeAvpm.exe→将死者病毒Msgsvc.exeAvserve.exe→震荡波病毒Msgsvr16.exeShiver
Bbeagle.exe→恶鹰蠕虫病毒Msie5.exeBrainspy.exe→BrainSpy vBetaBackdoor.livup
Cfiadmin.exe→将死者病毒Mstesk.exe1.1-1.5
Cfiaudit.exe→将死者病毒Netip.exe2000 Beta
Cfinet32.exe→将死者病毒Netspy.exe灵
Checkdll.exe→网络公牛Notpa.exeCmctl32.exe→Back Construction Telecommando
Command.exe→AOL TrojanPcfwallicon.exe死者病毒
Diagcfg.exe→广外女生Pcx.exeDkbdll.exe→Der SpaeherPw32.exe毒
Dllclient.exe→BoboRecycle-Bin.exes**tHeap
Dvldr32.exe→口令病毒Regscan.exe→Doly →传奇→尼姆达病毒→Bla→ Cain and Abel→冲击波→Control→Coma→火凤凰→Acid →CanassonMsstart.exe→→Doly →Spirit →网络精→BackdoorOdbc.exe→→将→Xplorer→将死者病→→波特后
门变种
Esafe.exe→将死者病毒Tftp.exe→尼姆达病毒
Expiorer.exe→Acid BatteryThing.exe→ThingFeweb.exe→将死者病毒User.exe→Schwindler
Flcss.exe→Funlove病毒Vp32.exe→将死者病毒
Frw.exe→将死者病毒Vpcc.exe→将死者病毒
Icload95.exe→将死者病毒Vpm.exe→将死者病毒Icloadnt.exe→将死者病毒Vsecomr.exe→将死者病毒
Icmon.exe→将死者病毒Server.exe→Revenger, WinCrash, YAT
Icsupp95.exe→将死者病毒Service.exe→TrinooIexplore.exe→恶邮差病毒Setup.exe→密码病毒或Xanadu
Rpcsrv.exe→恶邮差病毒Sockets.exe→Vampire
Rundll.exe→SCKISS爱情森林Something.exe→BladeRunner
Rundll32.exe→狩猎者病毒Spfw.exe→瑞波变种PXRunouce.exe→中国黑客病毒Svchost.exe(线程105)→蓝色代码
Scanrew.exe→传奇终结者Sysedit32.exe→SCKISS爱情森林
Scvhost.exe→安哥病毒Sy***plor.exe→wCrat
Server 1.2.exe→Spirit 2000 1.2fixed Sy***plr.exe→冰河Intel.exe→传奇叛逆Syshelp.exe→恶邮差病毒
Internet.exe→传奇幽灵Sysprot.exe→Satans Back Door
Internet.exe→网络神偷Sysrunt.exe→RipperKernel16.exe→Transmission ScountSystem.exe→s**tHeap
Kernel32.exe→坏透了或冰河System32.exe→DeepThroat 1.0
Kiss.exe→传奇天使Systray.exe→DeepThroat 2.0-3.1
Krn132.exe→求职信病毒Syswindow.exe→Trojan Cow
Libupdate.exe→BioNetTask_Bar.exe→WebEx
Load.exe→尼姆达病毒Taskbar→密码病毒 Frethem
Lockdown2000.exe→将死者病毒Taskmon.exe→诺维格蠕虫病毒
Taskmon32→传奇黑眼睛Tds2-98.exe→将死者病毒
Tds2-Nt.exe→将死者病毒Temp $01.exe→SnidTempinetb00st.exe→ The UnexplainedTempserver.exe→Delta Source
Vshwin32.exe→将死者病毒Vsstart.exe病毒
Vw32.exe→将死者病毒Windown.exe2000 1.2
Windows.exe→黑洞2000Winfunctions.exeDark Shadow
Wingate.exe→恶邮差病毒Wink.exe信病毒
Winl0g0n.exe→笑哈哈病毒Winmgm32.exe霸病毒
Winmsg32.exe→XtcpChupachbra
Winprotecte.exe→StealthWinrpc.exe病毒
Winrpcsrv.exe→恶邮差病毒Softwarst
Wubsys.exe→传奇猎手Sckiss爱情森林
Winver.exe→Sckiss爱情森林Winvnc.exe病毒
Winzip.exe→ShadowPhyreWqk.exeWscan.exe→AttackFTPXx.Tmp.exe病毒
Zcn32.exe→AmbushZonealarm.exe者病
Powered by 无名小鬼 wumingxiaogui.blog.163.com
→将死者→Spirit →→求职→巨无Winprot.exe→→恶邮差Winserv.exe→Winupdate.exe→→恶邮差→求职信病毒→尼姆达→将死
第三篇:病毒查杀分析报告
东营市医药公司和扣分公司
病毒查杀分析报告
2013本企业计算机网络系统未发生重大病毒感染情况,计算机系统运行正常。
信息科
2014年1月6日
第四篇:防范局域网ARP欺骗,手动查杀木马,介绍和认识IP地址
解决和防患局域网内Arp欺骗
当局域网种存再ARP欺骗包的话,总的来说有主要又这么两种可能。
一、有人恶意破坏网络。
这种事情,一般会出现在网吧,或是一些人为了找到更好的网吧上网座位,强行让别人断线。
又或是通过ARP欺骗偷取内网帐号密码。
二,病毒木马
如:传奇网吧杀手等,通过ARP欺骗网络内的机器,假冒网关。从而偷取对外连接传奇服务器的密码。
ARP欺骗的原理如下:
假设这样一个网络,一个交换机接了3台机器
HostA HostB HostC 其中
A的地址为:IP:192.168.1.1 MAC: AA-AA-AA-AA-AA-AA---------网关B的地址为:IP:192.168.1.2 MAC: BB-BB-BB-BB-BB-BB--------黑客C的地址为:IP:192.168.1.3 MAC: CC-CC-CC-CC-CC-CC---------被欺骗者
正常情况下 C:arp-a
Interface: 192.168.1.3 on Interface 0x100000
3Internet Address Physical Address Type
192.168.1.1 BB-BB-BB-BB-BB-BBdynamic
现在假设HostB开始了罪恶的ARP欺骗:假冒A像c发送ARP欺骗包
B向C发送一个自己伪造的ARP欺骗包,而这个应答中的数据为发送方IP地址是192.168.1.1(网关的IP地址),MAC地址是BB-BB-BB-BB-BB-BB(A的MAC地址本来应该是AA-AA-AA-AA-AA-AA,这里被伪造了)。当C接收到B伪造的ARP应答,就会更新
本地的ARP缓存(C可不知道被伪造了)。而且C不知道其实是从B发送过来的,这样C就受到了B的欺骗了,凡是发往A的数据就会发往B,这时候那么是比较可怕的,你的上网数据都会先流向B,在通过B去上网,如果这时候B上装了SNIFFER软件,那么你的所有出去的密码都将被截获。
为了以后出现问题的时候好查找,我建议大家平时建立一个MAC和IP的对应表,把局域网内所有网卡的MAC地址和IP、地理位置统统装入数据库,以便当以后发现ARP 欺骗时找出欺骗者的机器。
二、防范措施和解决方法。
方法一
通过arp –s 来绑定网关的MAC 地址和IP 地址。
这种方法对于XP 和2003系统是有用的,使用arp –s 来绑定的话。那么在ARP表中显示的是一条静态的记录。
这样就不会被动态的ARP 欺骗包给欺骗,而修改。
那么在2000的系统上也是可以使用arp-s来进行绑定得,在SP4的2000系统上需要下载2000 Rollup v2更新补丁包,ARP的补丁已经包含在里面 了,大小应该在38MB那样。http://download.microsoft.com/download/7/e/9/7e969f31-e33d-45a2-9d1a-fecbcde29a0e/Windows2000-KB891861-v2-x86-CHS.EXE
并且装好后,下面几个文件不能小于下面的版本号。
DateTimeVersionSizeFile name
-------------------------
19-Jun-200320:055.0.2195.6602108,816Msafd.dll
02-Jun-200422:445.0.2195.6938318,832Tcpip.sys
19-Jun-200320:055.0.2195.660117,680Wshtcpip.dll
19-Jun-200320:055.0.2195.6687120,240Afd.sys
19-Jun-200320:055.0.2195.665516,240Tdi.sys
相关文章,大家可以看微软的KB.http://support.microsoft.com/kb/842168
例:arp-s192.168.1.1 00-0B-AD-DD-22-35
方法二
有些木马或是一些骇客总是使用本地网卡上的网关来做欺骗。网关是通往外网或是和不同网络互联的一个中间设备。
而通过添加路由表中的记录,设置优先级高于网关默认路由,那么网关的路由在级别高的路由可用时将不会生效。
施行方法:1.先手动修改客户机的网关地址为任意ip地址,最好是同一网段中,没使用的一个IP,以免被怀疑。
2.手动添加或是通过批处理,或是脚本来添加永久对出口路由。
此中方法可以欺骗过大部份,菜鸟或是所谓的骇客和大部份ARP欺骗木马。
缺点是: 如果以后网关以后网卡或是机器改变。那么以后还得重新修改已有得路由。route delete 0.0.0.0-----删除到默认得路由
route add 0.0.0.0 mask 0.0.0.0 192.168.1.254 metric 1--- 添加路由route add-p 0.0.0.0 mask 0.0.0.0 192.168.1.254 metric 1------参数-p 就是添加永久的记录。
route change--修改路由
http:///dispbbs.asp?BoardID=33&ID=2631&replyID=6840&skin=1方法 三
1.如果你但前使用得交换机器有网卡和MAC地址绑定功能,那么将你所在得网得IP地址和MAC 地址进行绑定。
但有时候,我们可能没有这些设备那么要想做就很困难了。
另类方法思路--如何全面解决让ARP欺骗,ARP木马无法在本机器安装,运行。
大部分监控,arp 欺骗软件,都会使用到一个winpcap驱动。那么现在的思路就是让其无法在本地计算机安装。
这样arp欺骗软件就无法被使用了使用了,此方法可以用于任何程序的安装。需要的条件:
1.所在的系统盘为NTFS 分区格式。
2.知道所要安装的文件所要在系统中生成的文件。
3.使用注册表和文件安装监视软件来监视安装所生成的文件。
方法四:
利用些别人做好的ARP 监控工具。
实验:
作业:
1.使用arp-s 来添加一条arp静态记录,使用arp-a 查看添加的记录。使用arp-d 来删除刚添加的那条记录
2.使用route print 来查看现有的路由表,使用route add-p 来添加一条永久记录,最后使用route delete来删除刚建的那条记录。
3.使用组策略禁止本地系统中的记事本程序。
4.利用注册表和文件安装监视软件,来查找组策略中设置后,对注册表中键值的修改。并通过修改注册表,禁止记事本软件(notepad.exe)的执行。
第五篇:个人总结
2016年个人工作总结
时光的车轮无情的碾压过生活的轨迹,转眼间2016即将过去,迎来崭新的2017。回想这一年的工作,感受颇多,有成功,有失误,每一次成功都是成长,每一次失误都是经历。通过工作中的不断实践,我对本职工作有了更深刻的认识,了解了出纳岗位的各种工作制度以及日常工作流程,出纳工作虽简单,但繁琐,对工作质量要求极高,不容许出一点点的差错,每项工作都必须准确、耐心的完成。想要做好出纳工作还必须严格遵守并执行公司的有关财务制度,认真贯彻和执行国家有关财经的各项法律法规、方针政策,坚持理论与实践相结合。
现将2016年工作总结列示如下:
一、工作总结
1.严格按照公司的财务管理制度进行资金的把关,杜绝公司的资金流失。
2.严格保证现金的安全,每天核对库存现金与现金日记账余额是否相符,防止收付差错,确保现金收支的准确无误,及时登记现金日记账,做到日清月结。
3.每日终了,核对银行存款余额与银行日记账余额是否相符,月底坚持网银对账,以保证资金收付的准确无误。
4.严格执行借款手续,对于有关业务需要借支的备用金,限定还款期限为3个月,严格把控还款期限,对于逾期未归还者及时提醒,并要求其作出详细说明。
5.坚持以财务的规章制度为准,严格审核(报销凭证上必须有经办人及相关领导的签字才能给予报销),对不符合报销手续的凭证坚决不予支付。
6.及时打印银行以及税务系统的各种支付回单,并找领导签字确认。
7.坚持完成月底的结账工作,作出相关财务报表,并完成报税工作。
8.积极完成领导交办的其他工作。
二、培训经历 1.“营改增”培训
众所周知,自2016年5月1日起,在全国范围内全面推开营业税改征增值税试点,全面实行营改增,有利地支持了服务业发展和制造业的转型升级,另外,将不动产纳入抵扣范围,比较完整的实现了规范的消费型增值税制度,有利于扩大企业投资,增强了企业的经营活力。一些制造业在获取服务的同时,也获得了进项增值税抵扣,降低了企业税负。通过参加营改增的培训,对于国家政策有了更深层次的解读,对于营改增的抵扣范围以及注意事项也有了更多的了解,有助于更好的完成日常工作,使自己能够积极适应当前发展的大环境,与时俱进。
2.“一诺365”开票软件的升级培训
企业的发展需要与时俱进,而相应配套设施也应及时的完成升级,以适应不断发展的企业需要。通过对开票软件的升级,实现了增值税专用发票、普通发票、货运增值税专用发票、机动车统一销售发票的统一管理,实现了增值税管理模式的根本性变革。四类发票的全覆盖、发票数据信息的全面集中,有效的解决了虚假发票泛滥的问题,为建立全国统一的发票真伪查验平台提供了保障。开票软件的有效升级,将“营改增”纳税人全部纳入增值税规范管理的轨道,既为“营改增”保驾护航,也将作为一项重大的信息技术配套支撑系统,保障税制改革的运行。
3.增值税发票的认证培训
根据《国家税务总局关于纳税信用A级纳税人取消增值税发票认证有关问题的公告》以及《国家税务总局关于全面推开营业税改征增值税试点有关税收征收管理事项的公告》,河北航天信息就有关增值税发票抵扣问题进行了相关培训。通过培训,用户可以直接通过认证系统的“发票勾选”或“批量勾选”模块,对税款所属期内需要抵扣(或退税)的发票进行勾选认证处理;摒弃了之前使用的扫描认证方法,抵扣方法的升级,节省了之前扫描发票耗费的时间,更进一步提高了工作效率,还可以实时通过抵扣统计模块查询当期已认证的所有发票数据,保证了纳税人当期申报代扣数据的真实完整。.三、经验教训
1.日常工作中,对相关的政策法规还需要更进一步的了解,积极关注国家对于财经方面的新规定,新政策,只有这样,才更有利于做好日常工作。
2.在细节方面完善自己,更加严格的要求自己,认真的完成各项工作。
3.更加注重学习,在理论知识方面更加进步,认真坚持理论与实践相结合,不断在工作中吸取教训,提高自己的业务水平和解决问题的能力,进一步提高工作效率。
4.积极把握更多的学习机会,积极参加税务部门以及各财政部门组织的相关培训,不断的充实自己,完善自己。
新的一年意味着新的起点、新的机遇、新的挑战,在以后的工作和学习中我将更加努力的拼搏,逆流而上,扬长避短,克服自身缺点,找准工作的突破口,更好的完成本职工作。在此,我更应该感谢各位领导及同事们对我的关心和帮助。我相信,在新的一年里一定会更加进步,不会辜负领导的期望,为公司贡献自己的一份微薄之力!