欢迎光临
我们一直在努力

恶意软件分析入门

Day 28: 恶意软件分析入门

恶意软件分析是安全研究的重要领域。本章介绍如何安全地分析恶意软件样本,包括环境搭建、静态分析、动态分析和常见恶意行为识别。

⚠️ 警告:恶意软件分析必须在隔离环境中进行。本章内容仅供学习和安全研究使用。


1. 分析环境搭建

1.1 隔离原则

  • 永远不要在物理机上运行恶意软件
  • 使用快照功能,便于恢复
  • 断开网络或使用模拟网络
  • 分析完成后恢复快照

1.2 虚拟机配置

推荐配置:

主机 (Linux/macOS)
└── 分析虚拟机 (Windows 10)
├── 静态分析工具
├── 动态分析工具
└── 网络模拟

网络设置:
– Host-only 网络(隔离)
– 或使用 INetSim/FakeNet 模拟网络服务

1.3 必备工具

静态分析:

  • IDA Pro / Ghidra – 反汇编
  • PE-Bear / CFF Explorer – PE 分析
  • DIE (Detect It Easy) – 壳识别
  • FLOSS – 字符串提取
  • YARA – 规则匹配

动态分析:

  • x64dbg / WinDbg – 调试器
  • Process Monitor – 进程监控
  • Process Hacker – 进程管理
  • Wireshark – 网络抓包
  • API Monitor – API 监控

自动化沙箱:

  • Cuckoo Sandbox – 开源沙箱
  • Any.Run – 在线沙箱
  • Hybrid Analysis – 在线分析
  • VirusTotal – 多引擎扫描

2. 基础信息收集

2.1 文件哈希

# 计算哈希
md5sum sample.exe
sha256sum sample.exe

# Windows PowerShell
Get-FileHash sample.exe -Algorithm SHA256

在 VirusTotal 上搜索哈希,查看是否已有分析报告。

2.2 文件类型识别

# Linux
file sample.exe

# 使用 DIE
diec sample.exe

2.3 字符串提取

# 基础字符串
strings sample.exe

# FLOSS(提取混淆的字符串)
floss sample.exe

关注的字符串类型:

  • URL、IP 地址、域名
  • 文件路径
  • 注册表键
  • API 名称
  • 错误信息
  • 加密相关

2.4 导入函数分析

# Python + pefile
import pefile

pe = pefile.PE('sample.exe')

for entry in pe.DIRECTORY_ENTRY_IMPORT:
print(f"\\n{entry.dll.decode()}")
for imp in entry.imports:
print(f" {imp.name.decode() if imp.name else hex(imp.ordinal)}")

可疑的 API 组合:

功能API 示例
进程注入 VirtualAllocEx, WriteProcessMemory, CreateRemoteThread
键盘记录 GetAsyncKeyState, SetWindowsHookEx
网络通信 WSAStartup, connect, send, recv
文件操作 CreateFile, WriteFile, DeleteFile
注册表 RegOpenKeyEx, RegSetValueEx
反调试 IsDebuggerPresent, CheckRemoteDebuggerPresent

3. 静态分析

3.1 识别加壳

使用 DIE 或 Exeinfo PE 识别壳类型:

常见壳:
– UPX
– MPRESS
– VMProtect
– Themida
– 自定义壳

如果有壳,先脱壳再分析。

3.2 IDA/Ghidra 分析

  • 找入口点:从 main 或 DllMain 开始
  • 识别关键函数:通过导入表和字符串引用
  • 理解控制流:函数调用图
  • 重命名和注释:标记已分析的函数
  • 3.3 快速定位关键代码

    技巧:
    1. 搜索可疑字符串的交叉引用
    2. 查看导入函数的调用者
    3. 关注条件跳转(可能是反分析)
    4. 找加密/解密函数(循环 + XOR)


    4. 动态分析

    4.1 Process Monitor

    监控文件、注册表、网络活动:

    过滤条件:
    Process Name is sample.exe
    然后观察:
    – 创建/修改了哪些文件
    – 访问了哪些注册表键
    – 建立了哪些网络连接

    4.2 调试分析

    使用 x64dbg:

  • 设置入口断点
  • 在可疑 API 上设断点
  • 单步跟踪关键流程
  • 观察内存和寄存器变化
  • 常用断点:

    CreateFile
    WriteFile
    RegSetValueEx
    CreateProcess
    VirtualAllocEx
    WriteProcessMemory
    InternetOpenUrl
    send / recv

    4.3 网络流量分析

    1. 配置 FakeNet 或 INetSim 模拟网络服务
    2. 启动 Wireshark 抓包
    3. 运行样本
    4. 分析捕获的流量:
    – DNS 查询
    – HTTP/HTTPS 请求
    – 原始 TCP/UDP 数据


    5. 常见恶意行为

    5.1 持久化机制

    注册表启动项:

    HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run
    HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\Run

    计划任务:

    schtasks /create /tn "MalwareTask" /tr "C:\\path\\malware.exe" /sc onlogon

    服务:

    sc create MalwareService binPath= "C:\\path\\malware.exe"

    WMI 事件订阅:

    # 检查可疑订阅
    Get-WMIObject –Namespace root\\Subscription –Class __EventFilter

    5.2 进程注入技术

    经典注入:

  • OpenProcess – 打开目标进程
  • VirtualAllocEx – 在目标进程分配内存
  • WriteProcessMemory – 写入 shellcode
  • CreateRemoteThread – 执行
  • 其他技术:

    • DLL 注入
    • APC 注入
    • Process Hollowing
    • AtomBombing

    5.3 C2 通信

    常见协议:

    • HTTP/HTTPS – 最常见,混入正常流量
    • DNS – DNS 隧道
    • ICMP – 隐蔽通道
    • 自定义 TCP/UDP

    识别特征:

    • 周期性连接(心跳)
    • 异常的 User-Agent
    • Base64 编码的数据
    • 加密的 payload

    5.4 有效载荷类型

    类型行为
    勒索软件 加密文件,要求赎金
    挖矿木马 占用 CPU/GPU 挖矿
    银行木马 窃取银行凭证
    RAT 远程控制
    信息窃取 收集密码、文档等
    Loader 下载执行其他恶意软件

    6. 报告编写

    6.1 报告结构

    1. 摘要
    – 样本信息(哈希、文件名)
    – 威胁类型
    – 危害等级

    2. 静态分析
    – 基础信息
    – 加壳/混淆
    – 关键字符串
    – 导入函数

    3. 动态分析
    – 文件活动
    – 注册表修改
    – 网络通信
    – 进程行为

    4. 技术细节
    – 持久化方法
    – 通信协议
    – 加密算法

    5. IoC(入侵指标)
    – 文件哈希
    – C2 地址
    – 创建的文件/注册表键

    6. 防护建议

    6.2 IoC 提取

    # IoC 示例
    hashes:
    md5: d41d8cd98f00b204e9800998ecf8427e
    sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

    network:
    – type: domain
    value: malware–c2.example.com
    – type: ip
    value: 192.168.1.100

    files:
    – path: C:\\Users\\Public\\malware.exe
    – path: C:\\Windows\\System32\\malicious.dll

    registry:
    – key: HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run\\MalwareKey


    7. 实践练习

    练习 1:沙箱分析

  • 上传样本到 Any.Run
  • 观察行为报告
  • 提取 IoC
  • 练习 2:静态分析

    使用 Ghidra 分析一个简单的恶意软件样本:

  • 识别主要功能
  • 提取硬编码的 C2 地址
  • 分析加密算法
  • 练习 3:动态分析

    在虚拟机中:

  • 配置 Process Monitor
  • 运行样本(注意安全!)
  • 分析行为日志

  • 8. 学习资源

    样本来源(学习用途)

    • MalwareBazaar – 恶意软件样本数据库
    • VirusShare – 需注册
    • theZoo – GitHub 上的样本集

    练习平台

    • Malware Traffic Analysis – PCAP 分析练习
    • Flare-On Challenge – 逆向挑战赛

    学习资料

    • 《Practical Malware Analysis》 – 入门必读
    • 《Malware Analyst’s Cookbook》 – 进阶技术
    • SANS FOR610 – 专业培训

    本章总结

    恶意软件分析流程:

    1. 环境准备 → 隔离虚拟机
    ↓
    2. 基础信息 → 哈希、文件类型、字符串
    ↓
    3. 静态分析 → 反汇编、识别功能
    ↓
    4. 动态分析 → 监控行为、调试
    ↓
    5. 提取 IoC → 网络、文件、注册表指标
    ↓
    6. 编写报告 → 记录发现

    记住:安全第一,始终在隔离环境中操作。

    赞(0)
    未经允许不得转载:171主机测评 » 恶意软件分析入门
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址