读书笔记1
《基于数据科学的恶意软件分析》
恶意软件的定义
达成恶意目的而编写的可执行程序。尽管一些老练的攻击者有时为逃避恶意软件的监视系统而不使用恶意软件,但在目前的网络攻击中,恶意软件仍然是攻击者使用的主要技术。
恶意软件的静态分析
- 静态分析是对程序文件的反汇编代码、图形图像、可打印字符串和其他磁盘资源进行分析,是一种不需要实际运行程序的逆向工程。
- PE(Portable Executable)文件
作用:
a)告诉Windows如何把程序加载到内存中(header的作用)
b)为运行程序提供在执行过程中可能使用到的媒体
c)提供安全数据 e.g 数字代码签名 - 反汇编方法
即二进制代码----->X86汇编语言的过程。但恶意软件会故意混淆,阻挠反汇编。
e.g.
指令 | 描述 |
---|---|
add ebx, 100 | ebx<—100+ebx |
sub ebx, 100 | ebx<—ebx-100 |
inc ah | ah<—ah +1 |
dec al | al<—al -1 |
mov ebx,eax | ebx<—eax |
mov eax,[0x12345678] | eax<—内容in [0x12345678] |
!!关于X86程序堆栈,它在内存中的地址增长是向下的
限制静态分析的因素
-
加壳
即恶意软件作者压缩、加密或以其他方式破坏恶意程序主题的过程,使得分析师难以理解。 -
资源混淆
混淆程序资源储存在磁盘上的方式,恶意软件运行时再对它们进行还原 -
反汇编技术
向分析师隐藏恶意软件的真实指令 -
动态下载数据
从外部获取数据和代码。对这种情况,静态分析无法发挥作用。