第1章 恶意软件事件响应:易失性数据收集与实时Windows系统检查 1
引言 2
建立实时响应工具包 2
测试和验证您的工具 4
易失性数据收集方法 7
易失性数据的保存 8
搜集目标系统详细信息 13
识别登录到当前系统的用户 19
检查网络连接和活动 21
搜集进程信息 27
关联开放端口及其活动进程(和程序) 39
检查服务和驱动程序 43
检查打开的文件 48
收集命令的历史记录 50
识别共享 50
检查计划任务 51
收集剪贴板内容 52
从实时Windows系统收集非易失性数据 54
在实时Windows系统中对存储媒介进行司法复制 55
对实时Windows系统的特定数据进行司法保存 55
适用于Windows的事件响应工具套件 64
Windows Forensic Toolchest 64
从实时Windows系统中检查和提取恶意软件 71
小结 75
第2章 恶意软件事件响应:易失性数据收集与实时Linux系统检查 77
引言 78
易失性数据收集方法 78
Linux上的事件响应工具集 80
实时UNIX系统的完整内存转储 82
在实时UNIX系统上保存进程内存信息 83
获取目标系统的详细信息 84
识别出登录到系统的用户 86
检查网络连接 87
收集进程信息 89
/proc目录中的易失性数据 90
打开的文件和附属资源 92
检查已加载的模块 92
收集命令行历史信息 93
识别出已安装的共享驱动器 93
确定计划任务 94
实时Linux系统中的非易失性数据收集 94
对实时Linux系统中的存储介质的取证拷贝 94
对实时Linux系统中的指定数据进行取证保存 95
评估安全配置 95
评估主机的信任关系 96
收集登录日志和系统日志信息 96
小结 97
第3章 内存取证:分析物理内存和进程内存获取取证线索 101
引言 102
内存取证方法学 104
传统内存分析方法 105
Windows内存取证工具 109
深入分析内存映像 111
活动的、未活动的和隐藏的进程 113
Windows内存取证工具机理 121
虚拟内存地址 121
进程和线程 123
恢复提取可执行文件 126
提取进程内存数据 130
进程内存数据的导出和Windows系统实时分析 130
对实时运行的进程进行安全评估 131
捕获进程并分析内存 131
Linux内存取证分析工具 141
进程元数据 141
Linux内存取证分析工具机理 143
定位内存数据结构 143
进程 145
其他内存数据结构 147
在Linux系统上导出进程内存并进行分析 148
系统上的进程活动 149
用ps搜集进程信息 150
利用lsof识别进程活动 150
在/proc中定位可疑进程 152
从/proc目录拷贝可疑可执行文件 153
捕获并检测进程内存数据 155
用gcore导出核心进程映像 155
用Pcat获取进程内存数据 155
用Memfetch获取进程内存数据 156
用Process Dumper获取进程内存数据 158
其他事项 160
小结 161
第4章 事后取证:从Windows系统中搜索并提取恶意软件以及相关线索 163
引言 164
受害Windows系统的司法检查 164
时间分析:不仅仅只是一个时间轴 164
功能分析:重载一台Windows计算机镜像 166
关系分析 168
关联与重载 169
从Windows系统中发现并提取恶意软件 173
搜索已知的恶意软件 173
检查已安装的程序 176
检查预取文件 177
检查可执行文件 178
检查服务、驱动自启动位置以及计划任务 179
审查日志 179
检查用户账户 182
检查文件系统 184
检查注册表 187
还原点 189
关键词搜索 190
深入的Windows系统中的恶意软件发现与提取技术 191
定制解药 192
小结 193
第5章 事后取证:从Linux系统中搜索并提取恶意软件以及相关线索 195
引言 196
从Linux系统上发现和提取恶意软件 196
搜索已知的恶意软件 197
审查已安装的程序和潜在的可疑可执行文件 198
审查自启动区域、配置文件和计划任务 198
检查日志 199
审查用户账户 200
检查文件系统 201
关键字搜索 208
小结 209
第6章 法律规范 215
引言 216
注意事项 216
调查机构 217
司法机构 217
私人调查机构 219
调查机构的法定约束 220
存储数据 220
实时数据 221
非内容数据 222
受保护数据 223
联邦法律 223
洲际法律 226
数据获取工具 227
跨境获得数据 231
执法部门介入 234
增加被法院受理的机会 236
第7章 文件识别和构型:Windows系统中可疑文件的初步分析 239
引言 240
案例:“Hot New Video!” 240
文件构型过程概述 241
可执行文件分析 243
系统详细信息 246
哈希值 246
文件相似性索引 248
文件特征识别与分类 251
反病毒特征码 259
提取文件嵌入线索:字符串、符号信息,以及文件元数据 265
文件混淆技术:加壳和加密文件的鉴别 286
嵌入线索的再提取 295
小结 314
第8章 文件识别和构型:Linux系统上可疑文件的初步分析 317
引言 318
文件构型过程概述 320
分析Linux可执行文件 321
可执行文件是如何被编译的 321
静态链接vs.动态链接 322
符号和调试信息 322
从可执行文件中“剥离”符号和调试信息 323
获取系统详细信息 323
获取文件详细信息 323
获取Hash值 324
命令行MD5工具 324
GUI MD5工具 326
文件相似性索引 327
文件特征识别和分类 329
文件类型 330
文件特征识别和分类工具 332
反病毒特征码 334
本地恶意软件扫描 334
基于网站的恶意软件扫描服务 337
嵌入线索的提取:字符串、符号信息、文件元数据 342
字符串 343
检查文件依赖:动态链接或静态链接 348
提取符号和调试信息 353
嵌入的文件元数据 366
文件混淆:打包和加密识别 368
加壳软件 369
加密软件 369
包装软件 370
识别经过混淆处理的文件 371
嵌入线索的再提取 375
Elf文件结构 376
使用ELF shell(elfsh) 377
ELF头部(Elf32 ehdr) 377
ELF节头部表(Elf32_shdr) 379
程序头部表(Elf32_Phdr) 385
从符号表中提取符号信息 386
版本信息 394
注释节 394
动态节 395
版本控制信息 405
使用Objdump分析二进制样本 405
小结 408
第9章 Windows平台下可疑软件分析 411
引言 412
目标 412
检测恶意程序的准则 413
建立环境基准 413
主机完整性监控 414
安装监测 415
执行前的准备:系统和网络监控 417
被动的系统和网络监控 417
主动的系统和网络监控 418
执行恶意软件样本 427
系统和网络监测:观察文件系统、进程、网络以及API调用 428
环境仿真和调整 428
使用Netcat监听 430
检查进程活动 430
进程监视:监测API调用 431
“Peeping Tom”:Window Spying 435
文件系统活动 435
注册表活动 435
反混淆 440
通用脱壳工具 440
从内存中获取可疑进程 442
使用OllyDump寻找和提取原始入口点(OEP) 443
重建导入表 447
再次检测人工嵌入的内容 449
在反汇编工具中检测样本程序 451
高级PE分析技术:检查PE资源和依赖信息 454
PE资源检查 454
附属资源再次探查 463
与恶意样本进行交互并对之进行控制 464
探索并证实样本的功能与目的 467
事件重现与回顾:文件系统、注册表、进程、网络活动运行后数据分析 468
主动监控:分析系统变化 468
分析捕获的网络流量 469
分析API调用 472
小结 474
第10章 Linux平台下可疑程序分析 477
引言 478
分析目的 478
检查恶意程序的准则 479
建立环境基准 480
执行前的准备:系统和网络监控 482
被动的系统和网络监控 482
主动的系统和网络监控 482
异常检测和基于事件的入侵检测系统 486
执行可疑程序 488
进程监视:使用Strace、ltrace和gdb监控可疑程序 488
使用Strace捕获系统调用 489
使用ltrace捕获库调用 493
使用gdb检查正在运行的进程 495
进程评估:监测正在运行的程序 498
检查网络连接和开放端口 502
检查打开的文件和网络套接字 502
分析/proc/<pid>目录 503
反混淆:除去样本的壳并继续分析 505
再次分析文件特征:重新检查未加壳样本 506
环境调整 506
像攻击者一样思考 510
控制恶意样本 510
操纵恶意样本 511
探索并验证样本的功能和目的 513
对虚拟受害者主机发起攻击 514
评估其他功能和威胁范围 517
反侦察和操控被感染系统 517
事件重现和痕迹复查 517
分析捕获的网络流量 521
相关思考 530
对受害主机的端口和漏洞扫描:虚拟渗透测试 530
使用Objdump进行反汇编 531
使用GNU Debuger进行反汇编 536
小结 541