恶意代码实战分析-第一章:静态分析基础
来源:互联网 发布:java技术手册 编辑:程序博客网 时间:2024/04/30 22:03
静态分析值的是通过分析程序指令与结构来确定功能的过程。
从可执行文件提取有用的消息有多种方法:
- 使用反病毒软件来确定程序样本的恶意性;
- 使用哈希来识别恶意代码;
- 从文件的字符串列表,函数和头文件信息中发掘有用信息。
1.拿多个反病毒软件扫描这个文件,查看是否有哪个引擎已经能够识别它。
网站http://www.virustotal.com 允许上传一个文件,来生成一个扫描结果。
2.哈希值:恶意代码的指纹
哈希是一种用来唯一标识恶意代码的常用方法。MD5,SHA-1![md5deep使用](http://img.blog.csdn.net/20150426155319688)哈希值可以用来:
- 作为标签使用
- 与其他分析师分享哈希值,帮助识别恶意代码
- 在线搜索这段哈希值,看这个文件是否已经被识别
3.查找字符串
程序中的字符串就是一串可以打印的字符序列,比如“the."。一个程序会包含一些字符串,比如打印出的消息,连接的URL,或是复制文件到某个特定的位置。strings程序可以用来查找字符串(http://technet.microsoft.com/en-us/sysinternals/bb897439 )IntroductionWorking on NT and Win2K means that executables and object files will many times have embedded UNICODE strings that you cannot easily see with a standard ASCII strings or grep programs. So we decided to roll our own. Strings just scans the file you pass it for UNICODE (or ASCII) strings of a default length of 3 or more UNICODE (or ASCII) characters. Note that it works under Windows 95 as well.Using Stringsusage: strings [-a] [-f offset] [-b bytes] [-n length] [-o] [-q] [-s] [-u] <file or directory>Strings takes wild-card expressions for file names, and additional command line parameters are defined as follows:-a Ascii-only search (Unicode and Ascii is default)-b Bytes of file to scan-f File offset at which to start scanning.-o Print offset in file string was located-n Minimum string length (default is 3)-q Quiet (no banner)-s Recurse subdirectories-u Unicode-only search (Unicode and Ascii is default)To search one or more files for the presence of a particular string using strings use a command like this:strings * | findstr /i TextToSearchFor
4.加壳与混淆恶意代码
恶意代码的编写者经常使用加壳或者混淆技术,让他们的文件更难被检测或分析。混淆程序是恶意代码比编写者尝试去隐藏其执行过程的代码。而加壳程序则是混淆程序中的一类。加壳后的恶意程序会被压缩,并且难以分析。合法程序大多数总是包含很多字符串。而由被加壳或者混淆的恶意代码直接分析取到的字符串则很少。当加壳的程序运行时,会首先运行一小段脱壳代码,来解压缩加壳文件,然后运行脱壳后的文件。使用PEiD检测加壳
5.PE文件格式
可移植执行(PE)文件格式是windows可执行文件、对象代码和DLL所使用的标准格式。
6.链接库与函数
对于一个可执行程序,我们可以收集到的最有用信息之一,就是导入表。导入函数是一个程序锁使用的但存储在另一个程序中的那些函数。## 静态链接、运行时链接与动态链接 ##当一个库被静态链接到可执行程序时候,所有这个库中的代码都会被赋值到可执行程序中,这让可执行程序增大许多。运行时链接的可执行文件,只有当需要使用函数时,才链接到库,而不是像动态链接模式那样在程序启动时就链接。一些windows API允许程序员导入并没有在程序的头文件中列出的链接函数。其中,两个最为常见的是LoadLibrary 和 GetProcAddress。LdrGetProcAddress 和LdrLoadDll也会被使用。这些函数的使用意味着,你无法静态分析出可以样本程序中会链接哪些函数。使用Dependency Walker工具探索动态链接函数。(http://www.dependencywalker.com/)需要明白导入表中每个函数的意思,在不断的实践中进步。
PE文件头于分节
使用PEView来分析PE文件(http://wjradburn.com/software/)
PE文件头概述
0 0
- 恶意代码实战分析-第一章:静态分析基础
- 恶意代码分析实战
- 恶意代码实战分析
- 恶意代码分析实战-第二章
- 恶意代码分析实战 Lab16-01
- 恶意代码分析实战 Lab16-02
- 恶意代码--逆向分析基础入门
- 恶意代码逆向分析基础入门
- 恶意代码分析
- 书评第004篇:《恶意代码分析实战》
- 《恶意代码分析实战》课后题 Lab11-01
- 恶意代码分析实战 课后题 Lab11-02
- 恶意代码分析实战课后题 Lab11-03
- 恶意代码分析实战 课后题 Lab12-01
- 恶意代码分析实战 Lab 2 习题笔记
- 恶意代码分析实战 Lab09-01(1)
- 恶意代码分析实战 Lab 4 习题笔记
- 恶意代码分析实战 Lab 8 习题笔记
- Android之AlarmManager(全局定时器/闹钟)指定时长或以周期形式执行某项操作
- 引水入城
- phpmyadmin安装
- 初识hybris
- linux 命令系列之算术运算(50)
- 恶意代码实战分析-第一章:静态分析基础
- Python列表copy
- C++的多态概念:
- mini2440硬件篇之SPI
- boost.asio系列——buffer
- Java第二次作业
- mini2440 256M nand版本使用uboot
- mem info
- MINI2440 下对 NandFlash 烧写 和 裸版程序环境搭建初步