病毒分析
加壳验证工具
所谓病毒加壳,是指经过系列数学运算,将可执行程序文件或动态链接库文件的编码进行改变(目前还有一些加壳软件可以压缩、加密驱动程序),以达到缩小文件体积或加密程序编码,从而使病毒文件逃过杀毒软件的查杀。查看文件是否加壳最常用的工具是PEiD。
PEiD(PE Identifier)是一款著名的查壳工具,其功能强大,几乎可以侦测出所有的壳,其数量已超过470 种PE 文档 的加壳类型和签名。其使用界面如下所示:
PEiD可以显示文件的入口点、EP段、文件偏移地址、首字节、连接器版本、子系统等相关信息,其中红色圈出的地方就是查壳结果,如图所示结果为未加壳所以直接显示程序所用的编程语言为VB。
如上图所示结果显示文件存在加壳行为,需要进行脱壳处理,才能继续分析工作。
脱壳工具
软件脱壳,顾名思义,就是对软件加壳的逆操作,把软件上存在的壳去掉。对于病毒文件来说,脱壳的目的在于能对病毒文件进行下一步的分析,了解其运行机制和恶意行为。
为了分析加壳文件,常常需要用到病毒脱壳工具,常用的脱壳工具有upx脱壳工具、UPXsehll等。UPX (the Ultimate Packer for eXecutables)是一款先进的可执行程序文件压缩器,压缩过的可执行文件体积缩小50%-70% ,这样减少了磁盘占用空间、网络上传下载的时间和其它分布以及存储费用。 通过 UPX 压缩过的程序和程序库完全没有功能损失和压缩之前一样可正常地运行,对于支持的大多数格式没有运行时间或内存的不利后果。 UPX 支持许多不同的可执行文件格式 包含 windows 95/98/ME/NT/2000/XP/CE 程序和动态链接库、DOS 程序、 linux 可执行文件和核心。
Upx一般是命令行使用,使用界面如下:
在命令行中将需要脱壳的文件使用如下命令进行脱壳:
upx.exe –o 别名 –d 现名
脱壳成功后会在该病毒文件同级目录下产生一个脱壳后的文件,继续分析脱壳后的文件可以得到更多相关信息。
静态信息查看工具
使用一些工具可以查看病毒文件的编译方式、编译日期、特殊的字符串、导入导出函数、相关的依赖dll函数等,常使用的工具有PEview、Dependency Walker、IDA Pro等;
PEview是一款可以用来查看PE文件详细结构的工具,其使用界面如下:
通过使用PEview我们可以清晰地了解病毒文件的文件结构、dll文件、编译时间等相关信息。
Dependency Walker是一个免费的实用程序,可以扫描任何32位或64位Windows模块(exe,dll,ocx,sys等),并构建所有相关模块的分层树形图。对于找到的每个模块,它列出了该模块导出的所有函数,以及其他模块实际调用了哪些函数。另一个视图显示所需文件的最小集合,以及每个文件的详细信息,包括文件的完整路径,基本地址,版本号,机器类型,调试信息等。其使用界面如下:
对于病毒文件通过使用Dependency Walker,可以详细地查看所有依赖的dll函数,并且点击每个dll函数,可以清晰地了解所有导入导出函数,根据导入导出函数,可以分析病毒文件可能存在的恶意行为。
IDA Pro是一款交互式的,可编程的,可扩展的,多处理器的,交叉Windows或Linux wince MacOS平台主机来分析程序,操作者可以通过对IDA的交互来指导IDA更好地反汇编,IDA并不自动解决程序中的问题,但它会按用户的指令找到可疑之处,用户的工作是通知IDA怎样去做。比如人工指定编译器类型,对变量名、结构定义、数组等定义等。这样的交互能力在反汇编大型软件时显得尤为重要。多处理器特点是指IDA支持常见处理器平台上的软件产品。IDA支持的文件类型非常丰富,除了常见的PE格式,还支持Windows,DOS,UNIX,Mac,java,.NET等平台的文件格。Ida使用界面如下:
ida有很多功能,可以使用字符串查看功能查看病毒文件特殊的字符串:
可以分别查看病毒文件的导入导出函数,分析其可能存在的恶意行为:
可以以函数调用结构图的形式查看病毒文件的函数调用关系,也可以单独查看每一个函数的汇编代码:
也可以配合Hex-Rays Decompiler插件,对程序的汇编代码进行初步的反汇编。
还有很多其他功能,比如查看病毒文件的十六进制编码、结构体和枚举字符等:
进程监测工具
当病毒文件运行的时候需要监测其相关操作,比如创建文件、删除文件、创建注册表值、删除注册表值等,这个时候需要用到进程监测工具Process monitor、Process explorer。
Process Monitor一款系统进程监视软件,总体来说,Process Monitor相当于Filemon+Regmon,其中的Filemon专门用来监视系统 中的任何文件操作过程,而Regmon用来监视注册表的读写操作过程。 有了Process Monitor,使用者就可以对系统中的任何文件和 注册表操作同时进行监视和记录,通过注册表和文件读写的变化, 对于帮助诊断系统故障或是发现恶意软件、病毒或木马来说,非常有用。其使用界面如下:
当监测到的无关信息较多时,可以使用过滤功能,过滤想要的进程或操作:
Process explorer让使用者能了解看不到的在后台执行的处理程序,能显示目前已经载入哪些模块,分别是正在被哪些程序使用着,还可显示这些程序所调用的 DLL进程,以及他们所打开的句柄。Process Explorer最大的特色就
是可以终止任何进程,甚至包括系统的关键进程。其运行界面如下:
注册列表监测工具
绝大多数病毒文件运行的时候都会造成注册列表值的变化,所以需要用到注册列表快照工具,最常用的工具是Regshot。
RegShot 是一种注册表比较工具,它通过两次抓取注册表而快速地比较出答案。它还可以将注册表以纯文本方式记录下来,便于浏览;还可以监察 Win.ini,System.ini 中的键值;还可以监察 Windows 目录和 System 目录中文件的变化,为手工卸载某些软件创造条件。其运行界面如下:
使用的时候在病毒文件之前做一次注册列表快照A,病毒文件运行之后再做一次注册列表快照B,运行之后的结果可以保存为html的形式,快照变化结
果如下:
查看导出的报告就可以看出病毒文件运行所改变的注册列表的值,为清除恶意文件提供依据。
网络连接监测工具
有的病毒文件运行时会存在连接恶意网路地址的行为,这个时候需要用到网络连接监测工具来监测网络连接情况,常用的工具有apateDNS、Wireshark.
apateDNS可以用来查看病毒文件运行时的恶意DNS连接情况,其使用界面如下所示:
将回传地址设置成本机ip,当恶意文件运行时可以监测到DNS连接情况。
Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。其运行界面如下:
可以使用上图标注出的过滤框进行TCP、UDP等协议的过滤,使用wireshark可以较为详细的监测病毒文件运行时的网络连接情况。
ollydbg
当需要深入分析病毒文件时,就需要用到ollydbg,ollydbg是一个新的动态追踪工具,将IDA与SoftICE结合起来的思想,Ring 3级调试器,非常容易上手,己代替SoftICE成为当今最为流行的调试解密工具了。同时还支持插件扩展功能,是目前最强大的调试工具。Ollydbg可以动态的显示病毒文件运行时的内存变化,同时可以设置断点,一步步运行分析病毒文件的恶意操作,其运行界面如下:
运行界面分为五个主要窗口,每个窗口功能如下:
反汇编窗口:显示被调试程序的反汇编代码,标题栏上的地址、HEX 数据、反汇编、注释可以通过在窗口中右击出现的菜单 界面选项->隐藏标题 或 显示标题 来进行切换是否显示。用鼠标左键点击注释标签可以切换注释显示的方式。
寄存器窗口:显示当前所选线程的 cpu 寄存器内容。同样点击标签 寄存器 (FPU) 可以切换显示寄存器的方式。
信息窗口:显示反汇编窗口中选中的第一个命令的参数及一些跳转目标地址、字串等。
数据窗口:显示内存或文件的内容。右键菜单可用于切换显示方式。
堆栈窗口:显示当前线程的堆栈
OllyDBG 有三种方式来载入程序进行调试,一种是点击菜单 文件->打开 (快捷键是 F3)来打开一个可执行文件进行调试,另一种是点击菜单 文件->附加 来附加到一个已运行的进程上进行调试。载入一个文件之后ollydbg的显示界面如下:
具体分析的时候ollydbg一般是结合ida pro来使用的,ollydbg有很多快捷键,整理如下表:
快捷键 |
功能 |
F2 |
设置断点 |
F8 |
单步步过 |
F7 |
单步步入 |
F4 |
运行到选定位置 |
F9 |
运行 |
CTR+F9 |
执行到返回处 |
ALT+F9 |
执行到用户代码 |
相关阅读
大多费尔公用模块都需要连接互联网,但有时可能因为网络问题而无法正常连接,这时可以尝试使用代理服务器。但首先您必需知道代理服务
上个月的一天,接
点击段落旁边的小按钮,然后选择制表位,先设置居中的制表位:制表位位置写上多少多少字符,对齐方式选择居中, 然后同理设置右对齐的制表
A5创业网(公众号:iadmin5)12月4日消息,今天火绒安全实验室发布预警称,“微信支付”勒索病毒正在快速传播,感染的电脑数量越
@property (nonatomic,strong)UISegmentedControl *segControl;-(UISegmentedControl *)segControl { if (!_segControl) {