病毒分析师初探-转载

来源:互联网 发布:天津网络危机公关公司 编辑:程序博客网 时间:2024/06/05 10:07

第 1 章病毒分析病毒分析是将病毒行为还原的过程,在此过程中病毒的行为流程将被分解,病毒的每一步操作都有可能影响正常的操作系统配置或文件。病毒分析的基础是依托于逆向工程的基础,所以在做病毒分析工作之前好好学习下逆向工程知识。

如果在实体机里分析病毒的话,会影响到实体机的日常使用,所以我们需要建立虚拟的环境来分析病毒。
1.1 建立病毒分析环境用虚拟环境来分析恶意程序早在2000年就已经开始采用,推荐使用VMware或Virtual PC来建立虚拟环境。操作系统根据病毒运行平台可以建立多个虚拟操作系统,例如:WindowsXP,Windows 2003,Windows Vista,Windows 7,CentOS等。
安装好干净的操作系统之后,做好第一次快照,然后将分析工具配置好,需要的工具可以根据不同的需要随时添加。
1.2 病毒分析工具病毒分析过程中需要用的软件很多,这里只介绍一些常见分析软件。

  1. 1  PEid 侦察程序信息工具
  2.   2 System Safety Monitor(SSM) 系统监控软件
  3.   3  FileMon  文件监控
  4.   4  RegMon 注册表监控
  5.   5 TcpView 网络连接监控
  6.   6  Smsniff  网络数据监控
  7.   7 WireShark 网络数据采集分析
  8.   8  OllyDbg 动态分析工具
  9.   9 IDA 静态分析工具
  10.   10 WinDbg 内核态调试器
  11.   11 eXeScope 资源查看编辑
  12.   12  WinHex  十六进制编辑工具
  13.   13  LoadPE手动脱壳工具
  14. 还有其他一些工具可以按个人的使用习惯选择使用,可以在网上搜索获得。

1.3 病毒分析过程每个专业的病毒分析研究员都有自己的分析习惯,但大致的分析过程是类似的,可以总结概括成两种方式:动态分析和静态分析。
不过在动态或者静态分析之前可以在虚拟机中直接运行病毒样本,通过监控软件观察病毒的大致行为,经验丰富的病毒分析工程师可以直接看出这是什么类型的病毒。
1.3.1 动态分析需要研究病毒的每一个操作,最直观的分析方式就是动态分析。动态分析借助调试工具,将病毒样本加载进内存,通过调试器的命令跑每一条指令,可以看到病毒借助了哪些API执行了哪些恶意行为。
动态分析最常用的工具就是OD,在使用OD之前得学习汇编语言。
动态分析的大致步骤如下:
1) 查看文件信息,是否加壳,是由何种语言编写的;2) 如果加壳则需要脱壳;
3) 寻找Main函数,一般病毒行为都在Main函数里,也就是自己写的代码;
4) 单步调试分析,OD中按F8单步过每条指令,遇到Call函数则F7步入;
5) 记录每个关键行为,如创建文件,拷贝文件,创建服务,启动服务,连接网络等;
6) 如果有释放出来的文件,则需要采集出来进一步分析;
7) 直至Main函数结束,才分析结束。
动态调试分析需要熟悉编程使用到的API,也可以遇到时查询MSDN。动态调试也有很多技巧,如可以直接看导入表中的函数,对一些敏感的API下断点,然后F9跑样本,就可以节省一些分析时间。

1.3.2 静态分析有些病毒样本没法动态分析,例如一些动态链接库(.DLL),缺乏运行库的程序等,由于无法像正常程序一样加载进内存调试,所以只能采用静态分析的方式。
静态分析能力最强的工具非IDA莫属,逆向分析工程师IDA分析能力是必备的。IDA帮逆向工程师解决了很多问题,能显示所有API和编译器代码。同样静态分析对汇编语言的要求也很高,如果看不懂汇编语言就无从谈分析了。
静态分析的大致步骤如下:
1) 用IDA打开要分析的文件,让它自动加载并分析完成;2) 如果是exe程序,则从Main函数开始分析,遇到Call按回车进入;
3) 如果是dll程序,则按Ctrl+E查看导出函数入口;
4) 对每个导出函数进行分析;
5) 按Shift+F12查看字符串,对敏感的字符串双击进去,按X键可以查看哪里在调用;
6) 查看导入函数,对一些敏感的API函数,查看API调用地方的上下文,分析进行了哪些操作;
7) 如果安装F5插件,可以按F5让IDA把汇编还原成源代码,这样查看就明了多了;

静态分析需要熟悉病毒的行为,有经验的分析师可以很快的根据API就能猜测出是什么类型的病毒。IDA功能十分强大,可以学习一些书籍来挖掘它的强大之处。
1.4 病毒行为鉴定如果鉴定样本是否为病毒,是通过行为来判断的,大多数病毒的行为有一下几种:
1) 拷贝自身文件到系统目录下,如system目录,system32目录,windows目录等;2) 释放*.DLL文件到系统目录下;
3) 释放物的取名于系统文件名类似,如svch0st.exe,winlogin.exe等;
4) 注入进系统进程,如svchost.exe,explorer.exe,iexplore.exe等;
5) 创建服务,服务的执行路径为病毒文件,大多用来作为自启动;
6) 病毒文件被设置为隐藏属性;
7) 设置键盘钩子或鼠标钩子,监视正常用户的操作;
8) 替换系统文件;
9) 感染可执行文件;
10)设置注册表键值,自启动或隐藏;

11)连接远程地址,下载恶意文件并执行;
12)开启本地端口,接受来自远程的控制;
13)修改病毒本身后缀名,如cc3,jpg,tmp等;
14)创建很隐蔽的路径释放病毒文件。
15)修改HOST文件;
16)释放驱动.sys文件篡改系统IDT表等;
1.5 注意事项• 虚拟机断网;
• 虚拟机中不能只有C盘;
• 样本不要以.exe形式保存在本机;
• 释放出来的文件也很重要;
• 不要遗漏.doc,.pdf,.xls等后缀的文件
------------------------------------------
第 2 章样本提取一个反病毒工程师不仅应该会分析已有的病毒样本,还应对系统中的异常对象有敏锐的嗅觉,通过专业的手段将病毒样本提取出来。
2.1 发现经常有人觉得自己的系统有异常,但不知道如何查找问题的所在。即使没有发现系统有异常,也应该时常关注下系统是否有被植入病毒。接下来介绍下挖掘的方法。
2.1.1 网络数据包挖掘可以安装防火墙软件,推荐comodo防火墙。可以查看系统正在连接的远程地址,查看是否有异常的连接。例如:
1) 未知程序连接了远程的某个IP地址;2) 系统程序连接了远程的某个IP地址,重点查看svchost.exe进程的连接;
3) 访问异常域名;
4) 有连入的远程地址;
5) 如果访问一堆诡异的域名,那很可能中了蠕虫病毒;
6) 有规律性的连接某个IP地址或域名;
通过以上特征可以初步判断系统是否存在异常。

2.1.2 系统运行程序挖掘查看正在运行的程序,可以借助ARK工具查看,推荐XueTr。
1) 查看所有正在运行的程序,检测其路径是否正确;2) 检测运行程序的数字签名;
3) 检测运行程序所属厂家;
4) 检测运行程序的加载模块,是否有异常的加载项;
5) 检测系统驱动程序是否有异常,重点检测没有数字签名的程序。
6) 检测系统环境变量是否被篡改;
通过以上特征可以大致判断系统是否存在木马病毒文件。

2.1.3 系统启动项挖掘病毒一般都会有自启动项来保证系统重启之后继续运行,还是借助ARK工具。
1) 查看注册表启动项;2) 查看随机启动的服务项目;
3) 查看自启动目录下的文件;
4) 查看计划任务;
启动项相对比较难判断,因为系统一般都有很多随机启动的项目,尽量将不熟悉或未知的启动项禁止。

2.2 提取样本提取的难易是相对病毒的猥琐程度而言的,没有做保护的病毒样本可以通过复制粘贴拷贝出来,但有很多样本是无法直接拷贝的,例如有多个进程的守护,注入进系统的进程,有驱动保护等等。
这里介绍两种提取方式:
l 解锁提取
可以通过Unlocker软件将样本解锁,拷贝出来。
l 内存提取
可以通过WinHex获取系统内存数据,复制内存中的文件镜像。
提取出来的样本,不要用.exe后缀存放,一般改后缀为.v。这样是防止因为误操作双击了样本,导致本机被感染。
2.3 检测提取出来的样本可以通过杀毒软件来检测,这里推荐两个网站,可以将样本上传上去,会反馈出世界上著名的杀软的查杀信息:

http://www.virustotal.com

http://www.virscan.org

个人觉得要学会病毒分析,主要有两个方面:
A: 病毒行为 B: 逆向分析
首先要具备A,再进行B
不要一开始就去看一些带有反汇编分析的病毒分析文,那只会让你迷茫。
首先下载一些病毒样本,在虚拟机里跑一下,利用监控工具看它的行为。

0 0
原创粉丝点击