计算机病毒实践总结一:简单静态分析
2016-04-02 21:05
453 查看
本文是基于计算机病毒课程实践部分的总结,这些实践是自主尝试学习分析恶意代码的过程,如有疏漏不妥之处,还请不吝赐教!
读书部分:《恶意代码分析实战》读书笔记 入门与基础
确认程序恶意性
判断程序主要行为
简单信息分析
可利用的一些网站
virustotal(360浏览器无法正常打开?)
VirSCAN
Jotti的恶意软件扫描程序
调用多个反病毒引擎进行扫描。
扫描结果提供了各个引擎对样本的识别情况。
加壳程序特点:至少会有两个函数
使用PEiD工具
检测加壳的类型和所用编译器的类型,简化加壳分析的过程。
查看PE文件的分节
查看导入函数
存在问题:许多PEID插件会运行恶意代码可执行文件,注意在虚拟机的环境下运行。
静态链接与动态链接
库与程序静态链接时,库中的所有代码都会复制到程序中,程序增大很多,常见于UNIX和Linux系统中。
Windows中多为动态链接,只有在程序运行时才链接到库。
DLL文件:动态链接库文件。可执行文件常被分成这样的一个个具有相对独立功能的dll文件。
使用Dependency Walker工具
模块依赖关系、导入导出函数、模块列表、日志
PI(Parent Import Function List View):从哪些其他文件中调用了函数。
E(Export Function List View):提供了哪些接口,让其他的程序调用。
常见的DLL程序:
PE文件中常见的分节:
使用PEview工具
在这里或许可以找到有关恶意代码行为的线索。
编译信息:
入口信息:在
我的相关博客
实践部分:计算机病毒实践汇总一:简单静态分析(分析程序)读书部分:《恶意代码分析实战》读书笔记 入门与基础
恶意代码简单静态分析实践总结
1. 目标
静态分析技术是研究恶意代码的第一步,通过各种工具尽可能多的搜集其信息并找到进一步分析的思路。
确认程序恶意性
判断程序主要行为
简单信息分析
2. 反病毒扫描
利用一些网站集合的病毒文件特征库进行恶意代码特征片段的匹配,为判断程序恶意性提供参考。
可利用的一些网站
virustotal(360浏览器无法正常打开?)
VirSCAN
Jotti的恶意软件扫描程序
调用多个反病毒引擎进行扫描。
扫描结果提供了各个引擎对样本的识别情况。
3. 加壳与混淆后的恶意代码
加壳后的恶意程序会被压缩或加密处理,混淆技术则隐藏了执行的过程。
加壳程序特点:至少会有两个函数
LoadLibrary和
GetProcAddress用来加载和使用其他函数。
使用PEiD工具
检测加壳的类型和所用编译器的类型,简化加壳分析的过程。
查看PE文件的分节
查看导入函数
存在问题:许多PEID插件会运行恶意代码可执行文件,注意在虚拟机的环境下运行。
4. 链接库与导入导出函数
分析恶意代码,可以其链接库和导入导出函数了解程序的行为。
静态链接与动态链接
库与程序静态链接时,库中的所有代码都会复制到程序中,程序增大很多,常见于UNIX和Linux系统中。
Windows中多为动态链接,只有在程序运行时才链接到库。
DLL文件:动态链接库文件。可执行文件常被分成这样的一个个具有相对独立功能的dll文件。
使用Dependency Walker工具
模块依赖关系、导入导出函数、模块列表、日志
PI(Parent Import Function List View):从哪些其他文件中调用了函数。
E(Export Function List View):提供了哪些接口,让其他的程序调用。
常见的DLL程序:
Kernal.dll 包含系统的核心功能,访问和操作内存,文件,硬件 WININET.dll 联网操作 包含了FTP HTTP NTP等协议 User.dll 包含了用户界面组件,控制响应用户操作的组件 Ntdll.dll 是Windows内核的接口 通常由Kernal间接导入,一些隐藏功能和操作进程会使用这个接口。 Advapi32.dll 提供了对核心Windows组件的访问 ,比如服务管理器和注册表 Gdi32.dll 提供图形显示和操作的函数
5. PE文件头与分节
PE是指Windows系统下32位可执行文件,以一个文件头开始,其中包括代码信息,应用程序类型,所需的库函数与空间要求。
PE文件中常见的分节:
.text:包含了CPU的执行指令,正常是唯一包含代码的节。 .rdata:通常包含导入导出的函数信息,还可以存储程序中的其他只读数据。 .data:包含了程序的全局数据 (本地数据并不存储在这里)。 .rsrc:包含可执行文件使用的资源,内容并不执行,例如图标、菜单项、字符串等 .reloc:包含用于重定位文件库的信息 .pdata:只在64位可执行文件中存在,存储异常处理信息
使用PEview工具
在这里或许可以找到有关恶意代码行为的线索。
编译信息:
IMAGE_NT_HEADERS中的映像文件头
IMAGE_FILE_HEADER中“Time Date Stamp”可以获取可执行文件是什么时候编译的。
入口信息:在
IMAGE_OPTIONAL_HEADER中第七个成员“AddressOfEntryPoint“,它持有OEP(程序的入口点)的RVA(相对虚拟地址)。
6. 综合分析
(1)整合线索
- 有着相同编译时间的动态链接库 - 有特定行为的关键导入导出函数 - 分节中的信息
(2)联系实际
- 能与系统实际文件相关的线索 - 与端口号相关的线索 -> 特定的服务 - 与某个网络地址相关的线索
(3)做出推断
- 是否是恶意代码? - 它做了什么? - 主机已经感染的特征?
相关文章推荐
- HTTP状态码大全
- 【费用流】【网络流24题】【cogs 739】运输问题
- Android网络与数据存储_学习笔记_第五周
- android ListView下拉刷新拉取网络数据
- 数据结构 - ★★知识点
- httpClient post请求设置
- 网络通信框架Volley使用详细说明
- 软考网络工程师
- 计算机视觉 Introduction
- u-boot网络启动分析(二) 驱动注册
- LSTM神经网络Demystifying LSTM neural networks
- 深度信念网络Deep Belief Networks
- 神经网络,流形和拓扑Neural Networks, Manifolds, and Topology
- Android 网络通信框架Volley的二次封装
- 对TCP/IP网络协议的深入浅出归纳
- 四棱柱的体积表面积
- 角色问题析构
- 时间问题3
- HTTP协议
- 时间问题2