静态分析基础技术

静态分析基础技术

原文链接:https://hvnt3r.top/2019/01/静态分析基础技术/

知识点

我觉得安全圈的思路都是差不多的,跟渗透测试一样,对一个恶意软件的分析也需要前期的信息收集阶段来帮助我们对目标有一个大致的了解和认识,方便确定下一步工作的方向。

**Virus Total:**首先,拿到一个恶意软件如果不涉密的话可以直接上传到VT上看一下,这样差不多能确定此恶意软件的最早爆发日期和各种关键的信息。

哈希值:hash值就相当于恶意软件的指纹,是一个很重要的信息。

**关键字符串:**可以使用IDA Pro或者Strings软件来查看程序中关键的字符串。

**加壳与代码混淆:**一般来说,对软件加壳可以压缩软件代码占用的磁盘空间,使软件体积更小,另一方面,有的壳可以加密程序自身信息,是得程序难以通过逆向手段来对程序进行分析,是对程序本身的一种保护,大部分形况下加壳技术用来保护程序版权,但是恶意软件使用加壳方式来隐藏恶意代码,使得代码逻辑难以分析,这时候就需要我们使用已有的脱壳软件或者自己写脱壳脚本对软件进行脱壳还原。

使用PEview查看IMAGE_SECTION_HEADER.text节头部信息,如果虚拟大小比原始大小大得多,意味着这个程序在内存中占用的空间比在磁盘上多得多,那么这个程序很可能是加壳的程序,.data节是例外。

**PE文件格式:**PE文件格式就不多说了,网上有很多资料,要熟悉PE格式,方便后面的学习。

**静态链接|动态链接|运行时链接|链接库与函数:**程序的导入表和导出表和一些用到的库对我们而言十分重要,静态链接由于重复占用内存因而不常见,运行时链接在正常的程序中一般见不到,但是在恶意软件中可能会出现,至于当需要用到函数的时候才会使用链接,增强了隐蔽性。另外一些Windows API允许调用者导入没有在程序头文件中导入的函数,最常见的两个是LoadLibraryGetProcAddress,有时还可能会出现LdrGetProcAddressLdrLoadDll,当程序中出现这些函数库时,安全人员无法通过静态分析的手法来分析程序链接的函数。

Dependency Walker: 一款可以查看可执行文件动态链接函数的程序,下载链接。

**Resource Hacker:**使用此工具来产看程序的资源节。

导入函数和导出函数是为了提高代码复用性的一种手段,导出函数通常出现在dll文件中,而exe文件中一般没有导出函数,如果发现一个exe文件有很多导出函数的话我们就需要多多留意。

**编译时间:**使用Delphi语言编写的程序有着统一的编译时间:1992年6月19日,所以说,如果有一个程序的编译时间为1992年6月19日,那么这个程序很可能是用Delphi编写的

课后练习

Lab1-1

这个实验使用Lab01-01.exe和Lab01-01.dll文件,使用本章描述的工具和技术来获取关于这些文件的信息。

1.将文件上传至VT进行分析并产看报告,文件匹配到了已有的反病毒文件特征了吗?

按照题目要求上传至VT查看结果即可。

2.这些文件是什么时候编译的?

其实VT上已经显示了此程序的MetaData即元信息:

CodeSize	4096
EntryPoint	0x1820
FileType	Win32 EXE
FileTypeExtension	exe
ImageFileCharacteristics	No relocs, Executable, No line numbers, No symbols, 32-bit
ImageVersion	0.0
InitializedDataSize	8192
LinkerVersion	6.0
MIMEType	application/octet-stream
MachineType	Intel 386 or later, and compatibles
OSVersion	4.0
PEType	PE32
Subsystem	Windows command line
SubsystemVersion	4.0
TimeStamp	2010:12:19 17:16:19+01:00
UninitializedDataSize	0

这里已经显示了程序的编译时间为2010:12:19,另外可以通过软件PEexplore来查看时间戳:

3.这两个文件中是否存在迹象说明他们是否被加壳或者混淆了?如果是,这些迹象在哪里。

VT上显示的结果为此程序加壳,壳是穿山甲(Armadillo)

Packers
PEiD	Armadillo v1.71

但实际山此程序并没有加壳,可能是由于VT是采用机器学习来判断程序是否加壳存在一定的误判率。

.text节表信息:

Name Virtual Address Virtual Size Raw Size Entropy
.text 4096 2416 4096 4.45

PEiD查看查壳发现程序无壳。

4.是否有导入函数显示出这个恶意代码是做什么的?如果是,是哪些导入函数。

我个人习惯直接用IDA Pro查看导入函数:

Lab01-01.exe:

Address	Ordinal	Name	Library
00402000		CloseHandle	KERNEL32
00402004		UnmapViewOfFile	KERNEL32
00402008		IsBadReadPtr	KERNEL32
0040200C		MapViewOfFile	KERNEL32
00402010		CreateFileMappingA	KERNEL32
00402014		CreateFileA	KERNEL32
00402018		FindClose	KERNEL32
0040201C		FindNextFileA	KERNEL32
00402020		FindFirstFileA	KERNEL32
00402024		CopyFileA	KERNEL32
0040202C		malloc	MSVCRT
00402030		exit	MSVCRT
00402034		_exit	MSVCRT
00402038		_XcptFilter	MSVCRT
0040203C		__p___initenv	MSVCRT
00402040		__getmainargs	MSVCRT
00402044		_initterm	MSVCRT
00402048		__setusermatherr	MSVCRT
0040204C		_adjust_fdiv	MSVCRT
00402050		__p__commode	MSVCRT
00402054		__p__fmode	MSVCRT
00402058		__set_app_type	MSVCRT
0040205C		_except_handler3	MSVCRT
00402060		_contr
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值