静态分析基础技术

1、使用反病毒软件来确认程序样本的恶意性

在分析一个可疑的恶意代码样本时,第一步就最好是拿多个反病毒软件扫描下这个文件,看是否有哪个引擎已经能够识别它。反病毒软件是不完美的,它们主要依靠一个已知恶意代码可识别片断的特征数据库,以及基于行为与模式匹配的分析(启发式检测),来识别可疑文件。

一些罕见的恶意代码通常也不会被反病毒软件所识别,因为它们并不在病毒库里。最后,启发式检测,尽管经常也能成功地识别出一些未知恶意代码,但仍然可以被一些新型独特的恶意代码所绕过。

VirusTotal(http://www.virustotal.com),可调用多个反病毒引擎来进行扫描。

2、哈希值:恶意代码的指纹

哈希是一种用来唯一标识恶意代码的常用方法。

将哈希值作为标签使用

与其他分析师分享哈希值,以帮助他们来识别恶意代码

在线搜索这段哈希值,看看这个文件是否已经被识别

3、查找字符串

使用的工具strings

4、加壳与混淆恶意代码

查壳工具:PEID

PE 文件以一个文件头开始,其中包括代码信息、应用程序类型、所需的库函数与空间要求。PE头中的信息对于恶意代码分析师而言,是非常有价值的。

5、链接库与函数

代码库可以被静态链接,也可以运行时链接,或者动态链接。了解代码库如何被链接的,对于我们理解恶意代码来说,是非常关键的,因为我们在PE文件头中可以找到的信息取决于链接了哪些代码库。

6、静态链接、运行时链接与动态链接

在所有链接方法中,动态链接是最常见的,对于恶意代码分析师也是应该关注的。

7、PE 文件中的分节

.text    包含可执行代码

.rdata   包含程序中全局可访问的只读数据

.data   存储程序中都可以访问的只读数据

.idata   有时会显示和存储导入函数信息,如果这个节不存在时,导入函数信息会存储在.rdata节中

.edata   有时会显示和存储导出函数信息,如果这个节不存在时,导出函数信息会存储在.rdata节中

.pdata   只在64位可执行文件中存在,存储异常处理信息

.rsrc   存储可执行文件所需的资源

.reloc  包含用来重定位库文件的资源

使用PEview来分析PE文件。

使用Resource Hacker工具来浏览.rsrc节(资源)。

PEBrowse Professional和PE Explorer 也是分析PE文件的两大工具。

导入函数     恶意代码是用了哪些库中的哪些函数

导出函数     恶意代码期望被其他程序或库所调用的函数

时间戳      程序是在什么时候被编译的

分节       文件分节的名称,以及它们在磁盘与内存中的大小

子系统      指示程序是一个命令行还是图形界面应用程序

资源       字符串、图标、菜单项和文件中包含的其他信息

时间: 2024-10-15 15:52:53

静态分析基础技术的相关文章

恶意代码分析——动、静态分析基础技术

一.静态分析基础技术 1.可通过用软件计算恶意程序MD5值,然后检索该MD5值来获取信息并作为标签使用  [md5deep  winmd5] 2.通过检索恶意代码字符串获得相应的功能调用解释.功能行为及模块调用.当可检索字符串非常少时,有可能被加壳处理,(注意"LoadLibrary"和"GetProcAddress"两个字符串,它们是用来加载或调用其他函数功能的),此时需要用外壳检测工具进行检测.脱壳处理  [字符串检索:Strings  外壳检测:PEiD] 3

.NET基础技术总结

.NET基础技术总结 一.我所认识的.NET 初入.NET时,我还不知道我学习的是.NET 方面的知识,只是觉得是学习一门新的语言C#,在后续的学习当中才知C#语言是微软公司发布的一种面向对象的.运行于.NET Framework之上的高级程序设计语言,总之.NET就是微软公司以Web Service为核心,为信息.人.系统.各种设备提供无缝连接的一组软件产品.技术或服务. 二.C#入门知识 1.C#语句以分号结尾,可以写多行不需要续行符号. 2.单行注释://   多行注释:/*内容*/ 3.

Docker基础技术:Linux Namespace(上)

导读 时下最热的技术莫过于Docker了,很多人都觉得Docker是个新技术,其实不然,Docker除了其编程语言用go比较新外,其实它还真不是个新东西,也就是个新瓶装旧酒的东西,所谓的The New “Old Stuff”.Docker和Docker衍生的东西用到了很多很酷的技术,我会用几篇 文章来把这些技术给大家做个介绍,希望通过这些文章大家可以自己打造一个山寨版的docker.先从Linux Namespace开始. 简介 Linux Namespace是Linux提供的一种内核级别环境隔

Docker 基础技术:Linux Namespace(下)

导读 在Docker基础技术:Linux Namespace(上篇)中我们了解了,UTD.IPC.PID.Mount 四个namespace,我们模仿Docker做了一个相当相当山寨的镜像.在这一篇中,主要想向大家介绍Linux的User和Network的Namespace User Namespace User Namespace主要是用了CLONE_NEWUSER的参数,使用了这个参数后,内部看到的UID和GID已经与外部不同了.默认情况下容器没有的UID,系统自动设置上了最大的UID655

Swift教程_基础技术_获取当前日期时间、日期时间格式化及转换

Swift教程_基础技术_类型转换(父子类转换:Int.Double.String转换) Swift教程_基础技术_获取当前日期时间.日期时间格式化及转换 1.获取当前日期时间 var nowDate = NSDate() var formatter = NSDateFormatter() formatter.dateFormat = "yyyy-MM-dd HH:mm:ss" var dateString = formatter.stringFromDate(nowDate) pri

Docker基础技术:Linux Namespace(下)

在 Docker基础技术:Linux Namespace(上篇)中我们了解了,UTD.IPC.PID.Mount 四个namespace,我们模仿Docker做了一个相当相当山寨的镜像.在这一篇中,主要想向大家介绍Linux的User和Network的Namespace. 好,下面我们就介绍一下还剩下的这两个Namespace. User Namespace User Namespace主要是用了CLONE_NEWUSER的参数.使用了这个参数后,内部看到的UID和GID已经与外部不同了,默认显

2018最新区块链技术,从入门到精通视频教程(比特币基础技术)

2017最新区块链技术,从入门到精通视频教程(视频+源码+工具) 最新整理区块链技术视频包含开发工具,源码,视频教程,从小白到大神,分享给大家学习. 区块链最早是比特币的基础技术,目前世界各地均在研究,可广泛应用于金融等各领域 区块链的基本原理 交易(Transaction):一次操作,导致账本状态的一次改变,如添加一条记录: 区块(Block):记录一段时间内发生的交易和状态结果,是对当前账本状态的一次共识: 链(Chain):由一个个区块按照发生顺序串联而成,是整个状态变化的日志记录. 如果

Java的反射基础技术

今天本人给大家讲解一下Java的反射基础技术,如有不对的或者讲的不好的可以多多提出,我会进行相应的更改,先提前感谢提出意见的各位了!!! 什么是反射? 反射它是根据字节码文件可以反射出类的信息.字段.方法.构造方法等内容,还可以创建对象调用方法,我们称它为反射技术. 如何通过反射获取Class对象了? 它有三种方法,1.通过Class获取类对象 2.通过getClass()方法获取类对象 3.通过Class.forName(“完整类名”)获取类对象 案例:通过反射获得Class对象的3种方法 C

Linux之加密解密基础技术

下文主要介绍了什么是加密解密:为何要用到加密解密技术:加密解密技术能够为我们带来什么样的好处:常见的几种加密解密技术介绍以及Linux中的openssl. 一.什么是加密,解密 加密技术是一种常用的安全保密手段,利用各种技术手段把重要的数据进行加密传送:再用对应的技术手段进行解封,该过程的逆过程就称为解密.这里用一个不太恰当的例子说一下:也就好比你去办一张银行卡,需要你设置一个密码,就可以理解成在为这张银行卡做一个加密的操作:用银行卡到提款机取钱需要你输入密码,这就是一个解密的操作. 二.为什么