Malware Analysis 环境构建

1.虚拟机

操作系统:

Windows 7/10/11

REmnux Get the Virtual Appliance - REMnux Documentation

Ubuntu Download Ubuntu Desktop | Download | Ubuntu

2.静态分析

IDA Pro Hex Rays - State-of-the-art binary code analysis solutions (hex-rays.com)

Ghidra NationalSecurityAgency/ghidra: Ghidra is a software reverse engineering (SRE) framework (github.com)

3.动态调试

Windbg

x64dbg x64dbg

​ ScyllaHide Releases · x64dbg/ScyllaHide (github.com)

​ Labeless Releases · a1ext/labeless (github.com)

​ DbgChild therealdreg/DbgChild: Debug Child Process Tool (auto attach) (github.com)

4.PE查看与修复

PEBear:用于修复脱壳后的PE文件,以及查看pe信息

hasherezade/pe-bear-releases: PE-bear (builds only) (github.com)

CFF Explorer
Explorer Suite – NTCore

Pestudio:用于快速获取恶意软件相关信息

Winitor

pe_unmapper:用于完成PE文件映射与非映射状态的转换

libpeconv/pe_unmapper at master · hasherezade/libpeconv (github.com)

5.二进制编辑

010Editor:16进制文本编辑工具

HxD:16进制文本编辑工具

HxD - Freeware Hex Editor and Disk Editor | mh-nexus

XVI32 Hex Editor:16进制文本编辑工具

Freeware Hex Editor XVI32 (handshake.de)

6.样本信息收集

6.1 Malware Bazaar

支持查看样本信息以及根据hash下载样本。常用命令如下:

1
2
3
4
5
6
7
8
9
10
11
12
// 根据hash下载样本
malwoverview.py -b 5 -B hash

// 粗略分析样本行为
malwoverview.py -b 1 -B hash

// 获取Botnet的一些信息
malwoverview.py -x 1 -X hash
malwoverview.py -x 2 -X Triage_ID

// 获取沙箱分析报告
malwoverview.py -x 7 -X Triage_ID

常用命令如下:

-h:查看命令帮助

-c:手动指定API配置文件(.malwapi.conf),模板如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[VIRUSTOTAL]
VTAPI = https://www.virustotal.com/gui/join-us

[HYBRID-ANALYSIS]
HAAPI = https://www.hybrid-analysis.com/signup

[MALSHARE]
MALSHAREAPI = https://malshare.com/doc.php

[HAUSSUBMIT]
HAUSSUBMITAPI =https://urlhaus.abuse.ch/api/#account

[POLYSWARM]
POLYAPI = https://docs.polyswarm.io/consumers

[ALIENVAULT]
ALIENAPI = https://otx.alienvault.com/api

[MALPEDIA]
MALPEDIAAPI =

[TRIAGE]
TRIAGEAPI = https://tria.ge/signup

-o:指定输出信息颜色(0、1)

-o info
0 深色
1 浅色

-b:从MALWARE和THREATFOX中检索信息,-B指定附加参数,可以获得API分析分析报告

-b -B info
1 hash 检索hash信息
2 tag 根据标签获取相关信息以及样本列表
3 imphash 根据imphash样本列表
4 100/time 查询最新的恶意样本
5 hash 下载样本,解压密码:infected
6 days 获取IOC数据集
7 ioc 搜索指定IOC
8 tag 根据指定标签检索IOC
9 family 根据家族检索IOC
10 列出所有可用的家族

-x:从TRIAGE中检索信息,-X指定附加参数,可以获得更详细的分析报告。

-x -X info
1 hash/md5/family/score/tag/url/wallet/ip 获取信息
2 Triage ID 获取报告
3 提交样本进行分析
4 url 提交url进行分析
5 Triage ID 下载Triage ID指定的样本
6 Triage ID 下载pcapng文件
7 Triage ID 获取沙箱动态报告

-d:指定目录进行VT扫描,-D指定api

-d -D info
dir 0 公开api
dir 1 优质api

-v:从VIRUS TOTAL中检索信息,-V指定扫描参数

-v -V info
1 file 获取VT报告
2 file 获取反病毒报告
3 file 获取反病毒报告,包括IAT和EAT
4 file 提取overlay
5 url 获取VT报告
6 ip 获取VT报告
7 file 获取provided domain报告
8 hash 验证指定Hash
9 file(>=20m) 获取VT报告
10 file 从指定文件中验证Hash,使用公开API
11 file 从指定文件中验证Hash,使用优质API
12 file 获取Hash样本行为
13 file(>=32m) 向vt提交超过32MB的文件

-a 从HYBRID中检索信息。-A 指定附加参数

-a -A info
1 hash/file 获取Windows 32位分析报告
2 hash/file 获取Windows32位分析报告,HWP支持
3 hash/file 获取Windows 64位分析报告
4 hash/file 获取Android环境分析报告
5 hash/file 获取Linux 64分析报告
6 hash/file 提交Windows 32位样本
7 hash/file 提交Windows 32位样本,HWP支持
8 hash/file 提交Windows 64位样本
9 hash/file 提交安卓环境样本
10 hash/file 提交Linux 64位样本
11 hash/file 下载Windows 32位样本
12 hash/file 下载Windows 32位样本,HWP支持
13 hash/file 下载安卓环境样本
14 hash/file 下载Linux 64样本

-l:从MALSHARE中检索信息,-L指定附加参数

-l -L info
1 hash 默认下载样本
2 hash PE32
3 hash ELF
4 hash Java
5 hash PDF
6 hash Composite(OLE)

-j:从URLHaus中检索信息,-J指定附加参数

-j -J info
1 hash 下载样本
2 hash 查询样本信息
3 url 查询url信息
4 tag 根据标签检索恶意url
5 tag 根据标签检索payload
6 检索最近有效载荷的可下载链接列表
7 检索最近的恶意url列表

-p:从POLYSWARM中检索Linux样本相关信息,-P指定附加参数

-y:从Hybrid中检索Android样本相关信息,-Y指定附加参数

-n:从ALIENVAULT中检索信息,-N指定附加参数

-n -N info
1 subscribed pulses 获取subscribed pulses信息
2 ip 获取ip地址信息
3 domain 获取域名信息
4 hash 获取hash信息
5 url 获取url信息

-m:从MALPEDIA中检索家族信息,-M指定附加参数,这个api不好获取

6.2 Malware Bazaar-bug修复

在使用-x命令检索TRIAGE数据库时,需要指定api的同时指定token,而原项目代码中没有提供设置token的接口,执行-x指令会出现如下错误。

报错信息

添加代码从json文件中读取token

添加json解析

将所有的引用处改为如下格式:

修改代码

修改完成后可以得到正确结果:

正确结果

7.IDA插件

7.1 Labeless插件

用于实现IDA与x64dbg同步注释

7.1.1 安装

调试机

1.安装python 2.7(x86和x64都要装,x86添加进环境变量)

2.进行如下操作:

1
2
3
4
5
6
7
8
cd c:\deploy
c:\Python27\python.exe setup_protobuf.py

// 有网络
pip install --upgrade labeless

// 无网络
c:\Python27\Scripts\pip.exe install labeless-1.1.2.65-py2.py3-none-any.whl

3.将插件dll复制进x96dbg的plugins目录

分析机

1.安装python 2.7(x86和x64都要装,x86添加进环境变量)

2.拷贝IDA插件到plugins目录

7.1.2 使用

Labeless

7.2 ret-sync插件

支持调试器与IDA同步调试,源项目支持为Windbg开启Trace功能,但是不够完善,不支持清除trace痕迹,同时x64dbg不具备trace功能。

7.2.1 windbg添加trace清除

在IDAxx/plugins/SyncPlugin.py中添加如下代码:

SyncPlugin.py中添加代码

在windbg插件项目中sync.cpp文件中添加如下代码来注册命令:

修改windbg插件代码

此时只需要在windbg中输入 !bc cls 即可清空当前函数的痕迹。

7.2.2 x64dbg添加trace功能

思路:既然windbg可以使用这个功能,x64dbg只需要改自己的这一部分代码来调用windbg的接口即可。分析windbg命令发包代码,格式如下:

msg封装

x64dbg中没有bc这个命令,参考其他命令实现来自己添加一个。首先是命令处理函数声明:

函数声明

为了方便使用,也注册一个help来告诉使用方法:

注册help

在初始化函数中添加注册项:

init注册

在关闭函数中注册销毁项:

stop注册

实现一下初始化函数:

init实现

发包函数实现如下:

发包函数

效果如下:

x64dbg效果

7.2.3 配置与使用

Windbg Preview:

插件目录:

1
C:\Users\用户名\AppData\Local\Microsoft\WindowsApps

指令:

1
2
3
4
5
6
7
8
.load sync			// 加载64位插件
.load sync32 // 加载32位插件

!sync // 开启同步

!bc on // 开启trace
!bc off // 关闭trace
!bc cls // 清空屏幕中函数
x64dbg:

指令:

1
2
3
4
5
!sync				// 开启同步

!syncbc on // 开启trace
!syncbc off // 关闭trace
!syncbc cls // 清空屏幕中函数

远程调试:

需要在idb所在的目录新建文件 .sync,内容如下:

1
2
3
[INTERFACE]
host = 分析机ip
port = 监听端口

同时将配置文件拷贝到调试机的C:\Users\用户名\目录下,在使用过程中ida需要一直开着插件窗口。

7.3 Flare Capa Explorer

7.3.1 安装

注:IDA安装目录下的 idapyswitch.exe 可以切换IDA Python版本

1
2
3
4
5
6
7
8
// ida 7.7
pip install wheel
python -m pip install git+https://github.com/mandiant/capa

git clone http://github.com/mandiant/capa.git.
git clone https://github.com/mandiant/capa-rules.git

cp capa\capa\ida\plugin\capa_explorer.py IDA Pro7.7\plugins

7.3.2 使用

Edit -> Plugin -> Flare capa explorer窗口下点击Analyze,选择rules文件夹进行分析。

注:时不时的更新一下rules

7.4 ApplyCalleType and StructTyper plugins

1
git clone https://github.com/mandiant/flare-ida

7.5 Findcrypt-yara

1
2
3
4
pip install yara-python
git clone https://github.com/polymorf/findcrypt-yara.git
copy both findcrypt3.py and findcrypt3.rule to IDA’s plugin folder (C:\Program Files\IDA Pro
7.7\plugins)

7.6 HashDB

1
2
3
git clone https://github.com/OALabs/hashdb-ida
copy hashdb.py to IDA’s plugin directory (C:\Program Files\IDA Pro 7.7\plugins)
Attention: as HashDB performs lookup on OALabs server, so you should remember to keep Internet access in your environment

-


Malware Analysis 环境构建
http://helloymf.github.io/2022/10/04/malware-analysis-huan-jing-gou-jian/
作者
JNZ
许可协议