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:用于快速获取恶意软件相关信息
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 |
|
常用命令如下:
-h:查看命令帮助
-c:手动指定API配置文件(.malwapi.conf),模板如下:
1 |
|
-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 | |
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
将所有的引用处改为如下格式:
修改完成后可以得到正确结果:
7.IDA插件
7.1 Labeless插件
用于实现IDA与x64dbg同步注释
7.1.1 安装
调试机
1.安装python 2.7(x86和x64都要装,x86添加进环境变量)
2.进行如下操作:
1 |
|
3.将插件dll复制进x96dbg的plugins目录
分析机
1.安装python 2.7(x86和x64都要装,x86添加进环境变量)
2.拷贝IDA插件到plugins目录
7.1.2 使用
7.2 ret-sync插件
支持调试器与IDA同步调试,源项目支持为Windbg开启Trace功能,但是不够完善,不支持清除trace痕迹,同时x64dbg不具备trace功能。
7.2.1 windbg添加trace清除
在IDAxx/plugins/SyncPlugin.py中添加如下代码:
在windbg插件项目中sync.cpp文件中添加如下代码来注册命令:
此时只需要在windbg中输入 !bc cls 即可清空当前函数的痕迹。
7.2.2 x64dbg添加trace功能
思路:既然windbg可以使用这个功能,x64dbg只需要改自己的这一部分代码来调用windbg的接口即可。分析windbg命令发包代码,格式如下:
x64dbg中没有bc这个命令,参考其他命令实现来自己添加一个。首先是命令处理函数声明:
为了方便使用,也注册一个help来告诉使用方法:
在初始化函数中添加注册项:
在关闭函数中注册销毁项:
实现一下初始化函数:
发包函数实现如下:
效果如下:
7.2.3 配置与使用
Windbg Preview:
插件目录:
1 |
|
指令:
1 |
|
x64dbg:
指令:
1 |
|
远程调试:
需要在idb所在的目录新建文件 .sync,内容如下:
1 |
|
同时将配置文件拷贝到调试机的C:\Users\用户名\目录下,在使用过程中ida需要一直开着插件窗口。
7.3 Flare Capa Explorer
7.3.1 安装
注:IDA安装目录下的 idapyswitch.exe 可以切换IDA Python版本
1 |
|
7.3.2 使用
Edit -> Plugin -> Flare capa explorer窗口下点击Analyze,选择rules文件夹进行分析。
注:时不时的更新一下rules
7.4 ApplyCalleType and StructTyper plugins
1 |
|
7.5 Findcrypt-yara
1 |
|
7.6 HashDB
1 |
|
-