第一篇:病毒查杀分析报告
东营市医药公司和扣分公司
病毒查杀分析报告
2013年度本企业计算机网络系统未发生重大病毒感染情况,计算机系统运行正常。
信息科
2014年1月6日
第二篇:典型病毒分析报告
典型病毒的分析
班级: 姓名: 学号:
一、计算机病毒
1.1、简介
计算机病毒是一个程序,一段可执行码。就像生物病毒一样,计算机病毒有独特的复制能力。计算机病毒可以很快地蔓延,又常常难以根除。它们能把自身附着在各种类型的文件上。当文件被复制或从一个用户传送到另一个用户时,它们就随同文件一起蔓延开来。
除复制能力外,某些计算机病毒还有其他一些共同特性:一个被污染的程序能够传送病毒载体。当你看到病毒载体似乎仅仅表现在文字和图像上时,它们可能也已毁坏了文件、再格式化了你的硬盘驱动或引发了其他类型的灾害。若是病毒并不寄生于一个污染程序,它仍然能通过占据存储空间给你带来麻烦,并降低你的计算机的全部性能。
可以从不同角度给出计算机病毒的定义。一种定义是通过磁盘、磁带和网络等作为媒介传播扩散,能“传染”其他程序的程序。另一种是能够实现自身复制且借助一定的载体存在的具有潜伏性、传染性和破坏性的程序。还有的定义是一种人为制造的程序,它通过不同的途径潜伏或寄生在存储媒体(如磁盘、内存)或程序里。当某种条件或时机成熟时,它会自生复制并传播,使计算机的资源受到不同程序的破坏等。这些说法在某种意义上借用了生物学病毒的概念,计算机病毒同生物病毒所相似之处是能够侵入计算机系统和网络,危害正常工作的“病原体”。它能够对计算机系统进行各种破坏,同时能够自我复制,具有传染性。
所以,计算机病毒就是能够通过某种途径潜伏在计算机存储介质(或程序)里,当达到某种条件时即被激活的具有对计算机资源进行破坏作用的一组程序或指令集合。
1.2、计算机病毒的引导过程
一般包括以下三方面。
(1)驻留内存病毒若要发挥其破坏作用,一般要驻留内存。为此就必须开辟所用内存空间或覆盖系统占用的部分内存空间。有的病毒不驻留内存。
(2)窃取系统控制权在病毒程序驻留内存后,必须使有关部分取代或扩充系统的原有功能,并窃取系统的控制权。此后病毒程序依据其设计思想,隐蔽自己,等待时机,在条件成熟时,再进行传染和破坏。
(3)恢复系统功能病毒为隐蔽自己,驻留内存后还要恢复系统,使系统不会死机,只有这样才能等待时机成熟后,进行感染和破坏的目的。
有的病毒在加载之前进行动态反跟踪和病毒体解密。对于寄生在磁盘引导扇区的病毒来说,病毒引导程序占有了原系统引导程序的位置,并把原系统引导程序搬移到一个特定的地方。这样系统一启动,病毒引导模块就会自动地装入内存并获得执行权,然后该引导程序负责将病毒程序的传染模块和发作模块装入内存的适当位置,并采取常驻内存技术以保证这两个模块不会被覆盖,接着对该两个模块设定某种激活方式,使之在适当的时候获得执行权。处理完这些工作后,病毒引导模块将系统引导模块装入内存,使系统在带毒状态下运行。对于寄生在可执行文件中的病毒来说,病毒程序一般通过修改原有可执行文件,使该文件一执行首先转入病毒程序引导模块,该引导模块也完成把病毒程序的其他两个模块驻留内存及初始化的工作,然后把执行权交给执行文件,使系统及执行文件在带毒的状态下运行。
1.3、常见病毒发作症状
(1)屏幕异常滚动,和行同步无关。(2)系统文件长度发生变化。(3)出现异常信息、异常图形。
(4)运行速度减慢,系统引导、打印速度变慢。(5)存储容量异常减少。(6)系统不能由硬盘引导。(7)系统出现异常死机。(8)数据丢失。(9)执行异常操作。
(10)绑架安全软件,杀毒软件、系统管理工具、反间谍软件不能正常启动。
二、典型病毒分析(包括特征、原理及清除办法)
2.1、特洛伊木马——NetBus NetBus是一个和著名网络攻击程序Back Orifice类似的网络特洛伊木马程序。它会在被驻留的系统中开一个“后门”,使所有连接到Internet上的人都能神不知鬼不觉地访问到被驻留机器,然后控制者可以恶作剧地随意控制你的鼠标,在你机器上播放声音文件,或者打开你的光驱等,更危险的当然是删除你的文件,让你的机器彻底崩溃。
NetBus由两部分组成:客户端程序(netbus.exe)和服务器端程序(通常文件名为:patch.exe)。要想“控制”远程机器,必须先将服务器端程序安装到远程机器上(如:通过远程机器的主人无意中运行了带有NetBus的所谓特洛伊木马程序)。
特别是NetBus 1.70,它在以前的版本上增加了许多“新功能”,从而使它更具危险性,如NetBus 1.60只能使用固定的服务器端TCP/UDP端口:12345,而在1.70版本中则允许任意改变端口号,从而减少了被发现的可能性;重定向功能(Redirection)更使攻击者可以通过被控制机控制其网络中的第三台机器,从而伪装成内部客户机。这样,即使路由器拒绝外部地址,只允许内部地址相互通信,攻击者也依然可以占领其中一台客户机并对网中其他机器进行控制。
通常,NetBus服务器端程序是放在Windows的系统目录中,它会在Windows启动时自动启动。该程序的文件名是patch.exe,如果该程序通过一个名为whackamole.exe的游戏安装潜伏的话,文件名应为explore.exe或game.exe。可以检查Windows系统注册表,NetBus会在下面的路径中加入自身启动项项: “HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun” NetBus通过该注册项实现Windows启动时的自动启动。但如果你按Ctrl+Alt+Del组合键,在任务列表中是看不到它的存在的。
有些木马程序在种木马的同时,感染系统文件,所以即使用以上方法去除了木马,系统文件被运行后,会重新种植木马。即使是防病毒软件,也不一定能彻底清除。
上述木马病毒正确的去除方法见下图:
2.2、震荡波病毒(1)病毒描述
Sasser病毒,中文名为“震荡波”病毒,也有人称之为“杀手”病毒,这是一种蠕虫病毒。它利用微软WindowsNT内核平台上的LSASS漏洞,随机的扫描其他网络中计算机的IP端口,然后进行传播。
中毒电脑出现机器CPU资源被消耗殆尽、系统反复重启等症状。震荡波病毒的具体破坏方式是:在本地开辟后门,监听TCP 5554端口,作为FTP服务器等待远程控制命令。病毒以FTP的形式提供文件传送,黑客可以通过这个端口偷窃用户机器的文件和其他信息。病毒开辟128个扫描线程,以本地IP地址为基础,取随机IP地址,疯狂的试探连接445端口,试图利用windows的LSASS中存在一个缓冲区溢出漏洞进行攻击。一旦攻击成功会导致对方机器感染此病毒并进行下一轮的传播,攻击失败也会造成对方机器的缓冲区溢出,导致对方机器程序非法操作以及系统异常等。
(2)病毒清除
第一步:http://www.xiexiebang.com/china/technet/security/bulletin/ms04-011.mspx下载相应的漏洞补丁程序,断网安装。第二步:清除内存中“avserve.exe”的进程。
第三步:清除在系统安装目录(默认为C:WINNT)下avserve.exe的病毒文件和系统目录下(默认为C:WINNTSystem32)_UP.exe的病毒文件。
第四步:删除注册表:HKEY_LOCAL_MACHINESoftwareMicrosoft WindowsCurrentversionRun项中名为“avserve.exe”的病毒键值。第五步:重新启动计算机。
2.3、求职信病毒
(1)特征及原理:Worm.Klez.L是一种蠕虫病毒,病毒体内包含大量加密字符串。由于此病毒能提升自身的运行级别,使得一般程序无法结束或访问它的进程,包括Windows自带的任务管理器。因此无法手工清除此病毒。
病毒在得到运行后,首先提升自身的运行级别,然后将自己复制到Windows系统目录下,文件名总以Wink开头,同时还会放出一个小病毒体(Win32.Foroux.exe),最后分别运行它们并退出。当病毒被自己再次运行时,它会发现自身已处于系统目录下,此时病毒运行线路发生改变,它不再复制自身,而是创建7个病毒线程,并以系统服务的形式驻留内存。
Worm.Klez.L的最大特点在于其抑制杀毒软件的能力大为提高,甚至包括一些著名病毒(它的早期版本),只要是阻碍Worm.Klez.L传播的软件它都不放过。它通过注册表和内存两方面破坏这些软件。
而Worm.Klez.L还把此进程所对应的程序文件也给删除了。由于杀毒软件和某些工具的代码块或数据块中常包含此类字符串。并且病毒每次轮询的间隔只有64毫秒(加上搜索的时间也不过几秒)。在它之后启动的杀毒软件在单击杀毒按钮前就已被干掉,以至于无法带毒杀毒。
(2)清除办法:
在WINDOWS 95/98/ME系统下的清除:先运行在WINDOWS 95/98/ME系统下的安全模式
下,使用注册表编辑工具regedit将网络蠕虫增加的键值删除:HKEY_LOCAL_MACHINESof twareMicrosoftWindowsCurrent VersionRun 和HKEY_LOCAL_MACHINESystemCurrentControlSetServices 要删除的注册表项目是wink——?.exe的键值。
同时还必须相应的将WINDOWS的SYSTEM目录下的该随机文件Wink——?.exe删除,注意 还必须将回收站清空。删除了相应的病毒文件后,可以重新启动计算机,然后,在KVW3 000的安装目录下执行KVD3000.EXE来清除该病毒。注意一些全部是网络蠕虫的程序或者
文件是需要按照提示完全删除的。在Windows 2000/XP系统下的清除: 清除方法基本和Windows 95/98/ME系统下的清除方法相同:先以安全模式启动计算 机,运行注册表编辑工具,同样删除该网络蠕虫增加的键值:HKEY_LOCAL_MACHINESystemCurrentControlSetServices,要删除病毒增加的表项是: wink开头的随机的表项。当然你必须记住该项目的具体名称(虽然是随机的),然后在 系统目录下将该文件删除。注意该文件是隐含的,必须打开显示所有文件的选择项目 才能查看该病毒文件。同样的注册表项还有HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRun 2.4、灰鸽子木马病毒
(1)病毒简介、特征及原理
灰鸽子是国内一款著名后门,其丰富而强大的功能、灵活多变的操作、良好的隐藏性使其他后门都相形见绌。“灰鸽子”自2001年诞生之后,2004年、2005年、2006年连续三年被国内杀毒软件厂商列入10大病毒,甚至有些位居“毒王”。它的真正可怕之处是拥有“合法”的外衣,可以在网络上买到,客户端简易便捷的操作使刚入门的初学者都能充当黑客。
黑客可以通过此后门远程控制被感染的电脑,在用户毫无察觉的情况下,任意操控用户的电脑,盗取网络游戏密码、银行账号、个人隐私邮件、甚至机密文件等。入侵者在满足自身目的之后,可自行删除灰鸽子文件,受害者根本无法察觉。
灰鸽子远程监控软件分两部分:客户端和服务端。黑客操纵着客户端,利用客户端配置生成出一个服务端程序,名字默认为G_Server.exe。G_Server.exe运行后将自己拷贝到Windows目录下(系统盘的windows目录),然后再从体内释放G_Server.dll和G_Server_Hook.dll到windows目录下。G_Server.exe、G_Server.dll和G_Server_Hook.dll三个文件相互配合组成了灰鸽子服务端,有些灰鸽子会多释放出一个名为G_ServerKey.dll的文件用来记录键盘操作。(G_Server.exe这个名称并不固定,它是可以定制的。)
Windows目录下的G_Server.exe文件将自己注册成服务,每次开机都能自动运行,运行后启动G_Server.dll和G_Server_Hook.dll并自动退出。G_Server.dll文件实现后门功能,与控制端客户端进行通信;G_Server_Hook.dll则通过拦截API调用来隐藏病毒,因此中毒后查看不到病毒文件及病毒注册的服务项。随着灰鸽子服务端文件的设置不同,G_Server_Hook.dll有时候附在Explorer.exe的进程空间中,有时候则是附在所有进程中。
(2)病毒的清除
清除灰鸽子的服务。
打开 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices注册表项,查找“game.exe”,可以找到灰鸽子的服务项如Game_Server,删除整个Game_Server项。
删除灰鸽子程序文件。
在安全模式下删除Windows目录下的Game.exe、Game.dll、Game_Hook.dll以及Gamekey.dll文件,然后重新启动计算机。
2.5宏病毒(1)特征及原理:
Word宏病毒是一些制作病毒的专业人员利用MicrosoftWord的开放性即Word中提供的WordBASIC编程接口,专门制作的一个或多个具有病毒特点的宏的集合,这种病毒宏的集合影响到计算机使用,并能通过.DOC文档及.DOT模板进行自我复制及传播。宏病毒与以往的计算机病毒不同,它是感染微软Word文档文件.DOC和模板文件.DOT等的一种专向病毒。宏病毒与以往攻击DOS和Windows文件的病毒机理完全不一样,它以VB(WORDBASIC)高级语言的方式直接混杂在文件中,并加以传播,不感染程序文件,只感染文档文件。也许有人会问:MicrosoftWordforWindows所生成的.DOC文件难道不是数据文件吗?回答既是肯定的又是否定的。.DOC文件是一个代码和数据的综合体。虽然这些代码不能直接运行在x86的CPU上,但是可以由Word解释执行操作,因此他们的结果是一样的。宏病毒是针对微软公司的字处理软件Word编写的一种病毒。微软公司的字处理软件是最为流行的编辑软件,并且跨越了多种系统平台,宏病毒充分利用了这一点得到恣意传播。Word的文件建立是通过模板来创建的,模板是为了形成最终文档而提供的特殊文档,模板可以包括以下几个元素:菜单、宏、格式(如备忘录等)。模板是文本、图形和格式编排的蓝图,对于某一类型的所有文档来说,文本、图像和格式编排都是类似的。
Word提供了几种常见文档类型的模板,如备忘录、报告和商务信件。您可以直接使用模板来创建新文档,或者加
以修改,也可以创建自己的模板。一般情况下,Word自动将新文档基于缺省的公用模板(Normal.dot)。可以看出,模板在建立整个文档中所起的作用,作为基类,文档继承模板的属性,包括宏、菜单、格式等。WORD处理文档需要同时进行各种不同的动作,如打开文件、关闭文件、读取数据资料以及储存和打印等等。每一种动作其实都对应着特定的宏命令,如存文件与FileSave相对应、改名存文件对应着FileSaveAS、打印则对应着Fil_ePrint等。WORD打开文件时,它首先要检查是否有AutoOpen宏存在,假如有这样的宏,WORD就启动它,除非在此之前系统已经被“取消宏(DisableAutoMacros)”命令设置成宏无效。当然,如果Auto Close宏存在,则系统在关闭一个文件时,会自动执行它。
(2)清除方法:
①手工:以Word为例,选取“工具”菜单中“宏”一项,进入“管理器”,选取标题为“宏”的一页,在“宏 有效范围”下拉列表框中打开要检查的文档。这时在上面的列表框中就会出现该文档模板中所含的宏,将不明来源的自动执行宏删除即可。
②使用专业杀毒软件:目前杀毒软件公司都具备清除宏病毒的能力,当然也只能对已知的宏病毒进行检查和清除, 对于新出现的病毒或病毒的变种则可能不能正常地清除,或者将会破坏文件的完整性,此时还是手工清理为妙。
2.6蠕虫病毒(1)特征及原理:
蠕虫病毒不需要将其自身附着到宿主程序,它是一种独立智能程序。有两种类型的蠕虫:主机蠕虫与网络蠕虫。主计算机蠕虫完全包含(侵占)在它们运行的计算机中,并且使用网络的连接仅将自身拷贝到其他的计算机中,主计算机蠕虫在将其自身的拷贝加入到另外的主机后,就会终止它自身(因此在任意给定的时刻,只有一个蠕虫的拷贝运行),这种蠕虫有时也叫“野兔”,蠕虫病毒一般是通过1434端口漏洞传播。蠕虫利用的端口是UDP/1434,该端口是SQL Server Resolution服务。Microsoft SQL Server 2000支持在单个物理主机上伺服多个SQL服务器的实例,每个实例操作需要通过单独的服务,不过多个实例不能全部使用标准SQL服务会话会话端口(TCP 1433),所以SQL Server Resolution服务操作监听在UDP 1434端口,提供一种使客户端查询适当的网络末端用于特殊的SQL服务实例的途径。
当SQL Server Resolution服务在UDP 1434端口接收到第一个字节设置为0x04的UDP包时,SQL监视线程会获取UDP包中的数据并使用此用户提供的信息来尝试打开注册表中的某一键值,如发送x04x41x41x41x41类似的UDP包,SQL服务程序就会打开如下注册表键:HKLMSoftwareMicrosoftMicrosoft SQL ServerAAAAMSSQLServerCurrentVersion攻击者可以通过在这个UDP包后追加大量字符串数据,当尝试打开这个字符串相对应的键值时,会发生基于栈的缓冲区溢出,通过包含“jmp esp”或者“call esp”指令的地址覆盖栈中保存的返回地址,可导致以SQL Server进程的权限在系统中执行任意指令。
蠕虫溢出成功取得系统控制权后,就开始向随机IP地址发送自身,由于这是一个死循环的过程,发包密度仅和机器性能和网络带宽有关,所以发送的数据量非常大。在绿盟科技安全小组的测试中,和被感染机器在同一网段的每一台分析机每秒钟都收到了近千个数据包。
该蠕虫对被感染机器本身并没有进行任何恶意破坏行为,也没有向硬盘上写文件。对于感染的系统,重新启动后就可以清除蠕虫,但是仍然会重复感染。由于发送数据包占用了大量系统资源和网络带宽,形成Udp Flood,感染了该蠕虫的网络性能会极度下降。一个百兆网络内只要有一两台机器感染该蠕虫就会导致整个网络访问阻塞。
(2)清除方法
修补漏洞,安装最新补丁。(请务必安装补丁,避免二次中毒)手动清除方法:
第一步,用任务管理器结束avserve进程
第二步,删除windows目录(WINNT、WINDOWS等)下的avserve.exe;查找是否在系统目录(SYSTEM32、SYSTEM)下存在<随机字符>_UP.EXE的文件,如果有则删除
第三步,删除注册表中的键值
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun“avserve.exe ”=“%WINDOWS%avserve.exe ”
三、结束语
目前计算机病毒种类繁多,而且新的病毒不断出现,本文仅介绍几种常见典型病毒的特征、原理及其清除方法,对于绝大多数病毒我们应严加警惕,实时更新自己的杀毒软件和防病毒工具,只有做到时时预防,时时警惕,才能保证我们的电脑不被攻击。
第三篇:MS08-067病毒分析
MS08-067病毒剖析
【染毒现象】
感染上Worm.Win32.MS08-067.c病毒的机器,其典型的染毒特征是:
1.不断的向外发送垃圾数据包,并以此手段对全网进行传播。
2.在本机的“任务计划”中添加大量以“AT”开头的任务计划,并且启动的时候大都是整
点,如11:00、13:00等。
3.如是域环境,并且设置了域账户登录策略(登录密码输入错误几次之后锁定账户),会
造成域账户经常被锁,因为该病毒会不断的猜测域账户密码。
4.造成无法正常访问瑞星官网和微软官方网站,以及其它部分安全网站。停止或是重启
“DNS Client”服务之后,可以打开上述网站,但重启电脑后又无法打开。
【传播方式】
Worm.Win32.MS08-067.c是一个利用微软系统MS08-067漏洞为主要传播手段的的蠕虫病毒。
另外该病毒亦可通过U盘以自动加载运行的方式进行传播、并且由于病毒自身带一个弱密码表,会猜解网络中计算机的登录密码,如局域网中存在可读写的共享,也会造成该病毒通过局域网共享进行传播。
【病毒分析】
首先病毒会判断系统版本是否是 Win2000或WinXP 以上系统,如果是病毒才继续执行,并且为病毒进程添加 SeDebugPrivilege 权限,对本机计算机名称进行 CRC32 计算,通过得到的 CRC32 值创建病毒互斥量,判断自己是否是 rundll32.exe 程序启动的。如果不是就判断是否能找到“svchost.exe-k netsvcs” 或者explorer.exe 进程,然后将自己的代码加载到这两个进程中的其中一个进程上,最后修改注册表,让系统不显示隐藏文件,从而使病毒可以被系统加载。
该病毒会在%windir%system32目录下释放一个动态库文件,名字随机生成,如XXXXXXX.DLL ;并且会以独占内存的方式存在,需要多次重启才能删除。
针对services.exe、“svchost.exe-k netsvcs”、“svchost.exe-k NetworkService”、进程进行DNS查询以及TCP传输过程拦截,针对杀毒软件关键字进行过滤,其中包含 rising、avast、nod32、mcafee 等等。使当前中毒计算机无法访问安全厂商的网站。
停止 wscsvc、wuauserv、BITS、WinDefend、Windows Defender、ERSvc、WerSvc服务,并且改为手动,避免系统更新以及系统安全检查程序。
枚举网络计算机的用户名和自带的密码表,利用 IPC$ ADMIN$ 共享复制病毒到远程计算机然后通过Rundll32远程启动,枚举驱动器 创建自身到 RECYCLER、System32文件夹下面,尝试访问 http://、http://等等网站得到当前月数。再通过时间经过内置算法计算病毒的升级链接,方便病毒作者更新。
【处理办法】
一、使用专杀处理方式:(推荐)
①首先将瑞星软件升级到最新版本并使用抓包工具确定病毒发包源,染毒机器一般都会通过139、445端口发送大量数据包,特别是在整点时段。
② 确定发包源后,将发包机器断网,进入安全模式之后清空多余的“任务计划”并使用专杀工具查杀,无论是否查出病毒都需重启,进入正常模式后将系统补丁全部打上,尤其是MS08-067补丁,该漏洞在微软上的补丁名称为:KB958644。
③ 确认MS08-067补丁正确打上:打上该补丁之后,在%windir%system32目录下会有一个netapi32.dll文件,并且需要确定该文件的版本是否正确,版本正确才证明正确打上该补丁了,否则需要通过控制面板卸载重装:
windows2000 sp4系统下,此文件的版本应该为:5.0.2195.7203
windows xp sp2/sp3系统下,此文件的版本为:5.1.2600.3462/5694
windows 2003 SP1/SP2系统下,此文件版本为:5.2.3790.3229/4392
windows 2008 vista系统下,此文件版本为:6.0.6000.16764;
6.0.6000.20937;6.0.6001.18157;6.0.6001.22288
④ 使用cmd命令进入命令行模式,使用“net share”命令查看本机共享,至少需要关闭所有读写共享,只读共享可以保留。
⑤ 定期修改系统密码,并需要设置十位以上强密码。尽量不使用域管理员账号在其它非域控机器上登录。
⑥ 最后使用已经升级到最新版的瑞星杀毒软件全盘杀毒,确定本机无病毒之后,再接入网内。
⑦ 所有发包源机器都处理完成之后,再执行全网同时杀毒,确保让病毒无处隐藏。如果有条件的,可以通过防火墙或交换机将135、139和445这三个常见的病毒利用端口屏蔽。
二、手动处理方式:
① 首先通过“文件夹选项”显示出所有隐藏文件,包括受保护的操作系统文件。② 打开%windir%system32目录,将文件按详细信息排列,显示文件属性和创建日期。让文件按照属性排列,查看是否有可疑的DLL文件,并且为隐藏属性,注意创建的时间是否是染毒时间,确认之后在删除的时候提示无法删除。
③ 打开注册表编辑器,定位到HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionSvcHost,双击右侧的netsvcs,查看neisvcs的数值数据,查找其中的可疑项(此操作需要对net svcs的服务熟悉才行,一般可疑项会在wmdmpmsp之后)。
④ 记下此服务名,定位到
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServiceswscServer,尝试删除此项,提示无法删除,查看此项权限,仅有system,且没有读取权限,可以增加权限,点击“高级”,勾选从父项继承和替换到子对象两个勾,提示都点击是和确定即可。操作后,即可删除wscserver项键值;
⑤ 重启计算机,删除一开始在%windir%system32目录下发现的可疑文件,删除HKEY_LOCAL_MACHINESYSTEMControlSet001和
HKEY_LOCAL_MACHINESYSTEMControlSet002下的wscServer键值(避免恢复到上一次正确的配置后再次恢复此键值)即可。
第四篇:个人分享木马病毒查杀总结
一、前言
《病毒木马查杀》系列以真实的病毒木马(或统称为恶意程序)为研究对象,通过现有的技术手段对其分析,总结出它的恶意行为,进而制定出相应的应对方法(如编写专杀工具),对其彻底查杀。当然,本系列更多地是讨论如何应对某一个特定的病毒,而不涉及广义的杀毒软件的编写。因为如今杀软的原理非常复杂,并不是一个人就能够完成的,加之我个人水平有限,因此不会涉及杀软编写的问题。不过,我会在以后的文章中在理论层面对此进行分析。
在本系列的文章中,对于某一个病毒或木马,我可能会从以下三个方面进行查杀:手动查杀、监测恶意行为编写专杀工具或通过逆向分析其反汇编代码进行彻底查杀。这几种方式通过对病毒的不断深入分析,从而更有效地对抗恶意程序。需要说明的是,手动查杀病毒是比较粗浅的,难以彻底清除病毒,但是有些时候却是快速而有效的。而通过行为对恶意程序进行监测,虽说比手动查杀的效果要好很多,但是有些时候往往也会有些遗漏。所以其实最好的还是通过逆向分析来了解恶意程序,只是这样往往耗时较多。希望本系列的文章能够起到科普作用,让大家打消对病毒木马的恐惧感,使得每一位读者都能成为反病毒的专家。
二、病毒分析方法
一般来说,除非是感染型病毒,否则是不需要对病毒进行逆向分析的,只需要对病毒进行行为分析就可以编写专杀工具。而如果是感染型病毒,由于需要修复被病毒感染的文件,那么就不能仅仅简单地分析病毒的行为,而必须对病毒进行逆向分析,从而修复被病毒所感染的文件。因此,实际中的分析方法有以下两种:
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动态地执行一下,该函数的功能往往就能一目了然了。
四、病毒分析的几点补充
我们在病毒分析的过程中,不要过于陷入细节。大多数病毒木马程序是庞大而复杂的,你不可能也没有必要去了解每一个细节。真正需要关注的是恶意程序最关键最主要的功能。在实际分析过程中,当遇到了一些困难和复杂的代码段后,应当在进入到细节之前有一个概要性的了解。另外,在面对不同的工作任务中,应当善于使用不同的工具和方法。不存在通吃的做法。如果在一个点上被卡住了,不要花太长的时间在这个问题上,尝试转移到其他问题,尝试从不同的角度进行分析。最后,病毒的分析工作就如同猫捉老鼠的游戏,正所谓道高一尺魔高一丈,恶意代码分析技术与恶意代码编写技术是对立统一的,二者都在不断地相互促进并发展着。所以我们应当能够认识、理解和战胜这些不断涌现的新技术,并能够快速适应这个领域中的新的变化。也就只有这样,才能够在这个领域有所成就。
第五篇:登革热病毒的分析和相关举措
成绩 |
青岛农业大学课程论文
(2020-2021学年第一学期)
论文题目: 登革热病毒的分析和相关举措
课程名称: 致命的人类病毒
任课教师: 于永乐
班 级: 公管1903
学 号: 20190201295
姓 名: 梁国庆
2020年 12月4日
登革热病毒的分析和相关举措
登革热,又称断骨热,是由登革病毒引起的、经伊蚊传播的急性传染病。【1】在拉丁美洲和东南亚的许多国家,登革热爆发较为常见。非洲、中东部分地区、西太平洋地区、波多黎各等热带和亚热带地区,也存在登革热的流行。我国广东、云南、福建、浙江、海南等南方省份可发生登革热流行,主要发生在夏秋季。
一、病原学
【2】登革热病毒属B组虫媒病毒,现在归入披盖病毒科黄热病毒属。病毒颗粒呈哑铃状(700×20——40nm)、棒状或球形(直径为20——50nm)。髓核为单股线状核糖核酸(RNA)。病毒颗粒与乙型脑炎病毒相似,最外层为两种糖蛋白组成的包膜,包膜含有型和群特异性抗原,用中和试验可鉴定其型别。登革病毒可分为4个血清型,与其他B组虫媒病毒如乙型脑炎病毒可交叉免疫反应。
登革病毒在1~3日龄新生小白鼠脑、猴肾细胞株、伊蚊胸肌及C6/36细胞株内生长良好,并产生恒定的细胞病变。但接种猴子、猩猩和其他实验动物,不产生症状。
登革病毒对寒冷的低抗力强,在人血清中贮存于普通冰箱可保持传染性数周,-70℃可存活8年之久;但不耐热,50℃、30min或100℃、2min皆能使之灭活;不耐酸、不耐醚。用乙醚、紫外线或0.05%福尔马林可以灭活。
二、临床症状
【4】患者被携带病毒的蚊虫叮咬后,通常经过 4~7 天开始出现症状。多数患者病情较轻,尤其是儿童和青少年患者,通常 1~2 周内症状好转,也不会留下后遗症。少数情况下,患者病情严重,发展为登革出血热,引起严重出血和血压降低,进而导致休克或死亡。登革热的症状可轻可重。轻症患者的常见症状有:突发高热,可达 40 ℃ 以上;剧烈头痛;眼睛疼痛;肌肉和关节疼痛(故该病又称“断骨热”);皮疹;恶心、呕吐和食欲减退;轻度淋巴结肿大。发热通常持续一周,也可能间断出现。首次发热后,少数患者可能出现更严重的症状,即登革出血热。出血体征,如皮肤淤青或小红点、口鼻和牙龈出血、呕血、黑色柏油样便;剧烈腹痛;休克迹象,如皮肤湿冷、呼吸急促、脉搏虚弱、意识不清等。
既往罹患过登革热的患者,再次患病时更容易发生登革出血热。
突然起病,迅速发热,24 小时内体温可达 40℃,可伴有怕冷、较剧烈的头痛、眼眶痛、肌肉、关节和骨骼痛及疲乏、恶心、呕吐等症状;发热一般持续 2-7 天,在病程第 3-6 日出现充血性皮疹或针尖样出血点,分布于四肢躯干或头面部,多有痒感,持续 3-5 天。
在早期的时候,与感冒、流感等相似,容易误诊。少数患者会在发病的 3-5 天突然加重,可能出现剧烈头痛、呕吐、狂躁、昏迷、抽搐、大量出汗、血压骤降、颈强直、瞳孔缩小等重症症状。
三、诊断方法
【3】登革热病症的诊断方式有尿常规可有少量蛋白、红细胞、白细胞,有时有管型。病毒分离,取早期患者血液,接种于白纹伊蚊细胞株(C6/36)、分离病毒后须经特异性中和试验或血凝抑制试验加以鉴定。血清免疫学检查,检测患者血清中登革病毒RNA,其敏感性高于病毒分离,可用于早期快速诊断,还有登革热病毒核酸检测。
四、预防和控制措施
登革热病毒的传播主要通过伊蚊(埃及伊蚊和白纹伊蚊)叮咬传播,不会通过人传人传播。目前还没有疫苗用于预防登革热,因此最佳预防措施是灭蚊和防蚊,也就是杜绝蚊虫孳生和做好个人防护。
灭蚊措施:清理家中水缸、盆、罐坛等积水容器,翻盆倒罐清除积水,水养植物 3-5 天要换水或者改为土培,水缸要加盖,垃圾桶要加盖,地漏、下水道等处防止积水,并时常喷点杀虫剂,让伊蚊找不到产卵地点。
防蚊措施:居室内安装纱窗、纱门,和蚊帐。外出涂抹驱蚊液以及驱蚊花露水,正规商场超市里售卖的驱蚊液和驱蚊花露水的有效成分大多为避蚊胺和驱蚊酯,驱蚊的效果都很好。
五、个人体会及感悟
登革热﹝俗称“断骨热”﹞是一种由登革热病毒引起的急性发热传染病,由蚊子传播给人类。病原体为登革热病毒。登革热通过带有登革热病毒的雌性伊蚊叮咬而传染给人类。主要传播媒介为埃及伊蚊、白纹伊蚊。其中白纹伊蚊(俗称“花斑蚊”)在我省分布广泛,主要在清水容器中孳生,大多数在屋外或野外阴暗处流连,但亦会在户内活动。雌蚊嗜吸人血,吸血高峰在日落前两小时(约为下午五、六时),及早上八、九时。感染登革热病毒后,经过3至15天的潜伏期(通常为5至8日),患者多以突然发热为首发症状,持续发热3~5天,严重头痛,四肢酸痛、关节痛、肌肉痛、背痛、后眼窝痛。发病后3、4日出现红疹,恶心、。呕吐,轻微的流牙血和流鼻血。病后有可能出现极度疲倦及抑郁症状,极少数病者会恶化至出血性登革热,并进一步出血、休克,严重时可引致死亡。
虽然我们地处北方,对于登革热病毒离得比较远,但对于登革热病毒的危害,我们是深有感触的,而且现代医学到目前为止并没有一种有效疫苗来预防登革热。预防登革热只能是通过清除积水,防止伊蚊孳生,以避免给蚊子叮咬,有关预防蚊咬的措施如下:到登革热流行区旅游或生活,应穿着长袖衣服及长裤,并于外露的皮肤及衣服上涂上蚊虫驱避药物。如房间没有空调设备,应装置蚊帐或防蚊网。使用家用杀虫剂杀灭成蚊,并遵照包装指示使用适当的份量。切勿向运作中的电器用品或火焰直接喷射杀虫剂,以免发生爆炸。避免在“花斑蚊”出没频繁时段在树荫、草丛、凉亭等户外阴暗处逗留。防止积水,清除伊蚊孳生地:尽量避免用清水养殖植物。对于花瓶等容器,每星期至少清洗、换水一次,勿让花盆底盘留有积水。把所有用过的罐子及瓶子放进有盖的垃圾桶内。将贮水容器、水井及贮水池加盖。所有渠道要保持畅通。将地面凹陷的地方全部填平,以防积水。到东南亚旅游后半个月内如出现发热,应尽早就医治疗,并向医生说明旅行史。
虽然直到如今登革热的疫苗仍然没有研制出来,但只要我们做到这些措施,切断登革热的传播途径。我相信,总有一天,登革热这一道险关一定会的被攻克的!
参考文献:
【1】Science:全球联盟重新绘制登革热病毒图谱,解释二次感染危及生命等问题。Derek Smith 2015年9月期
【2】国外医学(微生物学分册)1979年01期
【3】中国急救复苏与灾害医学杂志
【4】百度百科