产品特色
编辑推荐
介绍众多Python开源工具使用方法,立足入侵事故一线应对业务需求。
涵盖大量静态/动态分析示例,轻松掌握并快速应用。
以内存分析为代表讲解分析技巧,实现各领域实操。
内容简介
恶意代码分析过程中,重要的是掌握恶意代码的特征,此时需要灵活运用线上服务的快速分析数据和主要恶意代码的数据库。《利用Python开源工具分析恶意代码》从应对入侵事故一线业务人员角度出发,介绍了分析恶意代码时的Python 等众多开源工具的使用方法,也给出了可以迅速应用于实际业务的解决方案。
作者简介
赵涏元(chogar@naver.com)
目前在KB投资证券公司负责安全工作,管理安全防范项目组(http://www.boanproject.com)。在A3 Security公司做过5年渗透测试咨询顾问,在渗透测试项目管理、网络应用开发、源代码诊断等多种领域执行过漏洞诊断。之后在KTH安全团队负责移动服务和云服务安全、应对侵权事故等业务。与人合著《Kali Linux & BackTrack渗透测试实战》《Android恶意代码分析与渗透测试》等,现与安全防范项目组成员一起活跃在各个领域。
崔祐硕
目前在(株)韩国信息保护教育中心(KISEC,Korean Information Security Education Center)f-NGS研究所负责安全及相关领域研究,并在此基础上举办讲座,不断发表分析报告书。主要研究恶意代码分析及发布、开源工具应用、Web黑客攻防等,致力于技术与人文的结合。曾在(株)Tricubelab分析恶意代码发布、研究多种方法,构建并测试恶意代码相关开源工具,在此过程中积累创意和经验。负责安全防范项目组的恶意代码及漏洞部分研究,与人合著《Kali Linux & BackTrack渗透测试实战》,管理Hakawati Lab(www.hakawati.co.kr)博客。
李导炅
曾在三星SDS负责4年Web漏洞诊断业务,现在NSHC Red Alert团队担任恶意代码分析研究员,同时负责教育内容开发业务。在安全防范项目组负责恶意代码分析项目,关注并研究开源分析与开发。
郑智训
计算机信息通信工程专业在读,曾任蔚山大学信息安全兴趣小组UOU_Unknown组长,目前依然参与小组活动。在安全防范项目组以恶意代码分析项目起步,负责恶意代码分析相关开源工具分析与研究项目。正在研究利用开源工具开发简单高效的恶意代码分析自动化系统。
目录
1 开源软件与Python环境 1
1.1 关于开源软件 2
如果管理人员熟悉开源软件 2
1.2 Python简介 3
1.3 搭建Python环境与程序发布 3
1.3.1 在Windows下搭建Python环境 3
1.3.2 使用Eclipse与PyDev搭建Python开发环境 7
1.3.3 使用pyinstaller发布程序 12
1.4 从Github站点下载开源工具 15
1.5 安装Python模块 17
1.6 小结 19
2 通过peframe学习PE文件结构 20
2.1 PE文件结构 21
2.1.1 DOS Header结构体 23
2.1.2 DOS Stub Program 26
2.1.3 IMAGE_NT_HEADER结构体 26
2.2 分析peframe工具 28
2.2.1 IMPORT模块 29
2.2.2 预处理部分 30
2.2.3 分析main函数 35
2.2.4 peframe中的函数 40
2.3 恶意代码的特征因子 136
2.3.1 杀毒结果 136
2.3.2 散列值 137
2.3.3 加壳器 138
2.3.4 节区名与熵 139
2.3.5 API 141
2.3.6 字符串 143
2.3.7 PE元数据 144
2.4 小结 145
3 恶意代码分析服务 146
3.1 恶意代码分析环境 147
3.1.1 自动分析服务种类 147
3.1.2 恶意代码分析Live CD介绍 148
3.1.3 收集恶意代码 151
3.2 线上分析服务 166
3.2.1 VirusTotal服务 166
3.2.2 应用VirusTotal服务API 173
3.2.3 使用URLquery查看感染恶意代码的网站 188
3.2.4 使用hybrid-analysis分析恶意代码 190
3.3 小结 192
4 使用Cuckoo Sandbox 193
4.1 Cuckoo Sandbox定义 195
4.2 Cuckoo Sandbox特征 196
4.3 安装Cuckoo Sandbox 197
4.3.1 安装Ubuntu 14.04 LTS 199
4.3.2 安装VMware Tools 203
4.3.3 镜像站点 205
4.3.4 安装辅助包与库 206
4.3.5 安装必需包与库 207
4.3.6 设置tcpdump 213
4.4 安装沙箱 214
4.4.1 安装沙箱 214
4.4.2 安装增强功能 218
4.4.3 安装Python与Python-PIL 219
4.4.4 关闭防火墙与自动更新 220
4.4.5 网络设置 221
4.4.6 设置附加环境 223
4.4.7 安装Agent.py 224
4.4.8 生成虚拟机备份 228
4.4.9 通过复制添加沙箱 229
4.5 设置Cuckoo Sandbox 232
4.5.1 设置cuckoo.conf 232
4.5.2 设置processing.conf 236
4.5.3 设置reporting.conf 238
4.5.4 设置virtualbox.conf 239
4.5.5 设置auxiliary.conf 242
4.5.6 设置memory.conf 243
4.6 运行Cuckoo Sandbox引擎 247
4.6.1 Community.py 248
4.6.2 使用最新Web界面 250
4.6.3 上传分析文件 252
4.6.4 调试模式 255
4.6.5 使用经典Web界面 256
4.7 Cuckoo Sandbox报告 257
4.7.1 JSONdump报告 257
4.7.2 HTML报告 258
4.7.3 MMDef报告 259
4.7.4 MAEC报告 260
4.8 Api.py分析 262
4.8.1 POST-/tasks/create/file 263
4.8.2 POST-/tasks/create/url 264
4.8.3 GET- /tasks/list 264
4.8.4 GET-/tasks/view 266
4.8.5 GET- /tasks/delete 267
4.8.6 GET-/tasks/report 267
4.8.7 GET-/tasks/screenshots 269
4.8.8 GET-/files/view 269
4.8.9 GET-/files/get 270
4.8.10 GET-/pcap/get 270
4.8.11 GET-/machine/list 270
4.8.12 GET-/machines/view 272
4.8.13 GET-/cuckoo/status 272
4.9 Cuckoo Sandbox实用工具 273
4.9.1 clean.sh 273
4.9.2 process.py 274
4.9.3 stats.py 274
4.9.4 submit.py 275
4.10 分析结果 275
4.10.1 Quick Overview 276
4.10.2 Static Analysis 279
4.10.3 Behavioral Analysis 280
4.10.4 Network Analysis 281
4.10.5 Dropped Files 282
4.11 使用Volatility的内存分析结果 282
4.11.1 Process List 283
4.11.2 Services 284
4.11.3 Kernel Modules 285
4.11.4 Device Tree 285
4.11.5 Code Injection 286
4.11.6 Timers 286
4.11.7 Messagehooks 287
4.11.8 API Hooks 287
4.11.9 Callbacks 288
4.11.10 Yarascan 288
4.11.11 SSDT 288
4.11.12 IDT 289
4.11.13 GDT 289
4.12 Admin功能 290
4.13 比较功能 290
4.14 小结 292
5 恶意代码详细分析 293
5.1 查看Cuckoo Sandbox分析结果 294
5.2 线上分析报告 295
5.3 手动详细分析 296
5.4 小结 323
6 其他分析工具 324
6.1 使用viper分析与管理二进制文件 325
6.1.1 安装viper 325
6.1.2 使用viper 326
6.1.3 viper命令 327
6.1.4 模块 337
6.2 使用ClamAV对恶意代码分类 354
6.3 使用pyew管理与分析恶意代码 363
6.3.1 查看帮助 365
6.3.2 查看导入表 368
6.3.3 在VirusTotal中检测文件 370
6.3.4 查看URL信息 371
6.3.5 检测PDF文件 373
6.4 使用pescanner检测恶意代码 379
6.4.1 使用Yara签名进行检测 381
6.4.2 检测可疑API函数 383
6.4.3 查看熵值 385
6.5 使用PEStudio分析可疑文件 385
6.6 分析网络包 388
6.6.1 使用captipper分析网络包 388
6.6.2 使用pcap-analyzer分析网络包 390
6.6.3 使用net-creds获取重要信息 393
6.7 使用各种开源工具分析恶意代码文件 395
6.8 使用Docker容器 402
6.8.1 Docker定义 402
6.8.2 关于Docker Hub 403
6.8.3 使用REMnux Docker镜像 405
6.9 小结 408
7 利用内存分析应对入侵事故 409
7.1 Volatility简介与环境搭建 410
参考社区(维基页面) 415
7.2 使用Volatility分析恶意代码 416
7.3 开源工具:TotalRecall 424
7.4 使用Redline分析内存 433
7.5 Volatility插件使用与推荐 441
7.6 使用Rekall进行内存取证分析 445
7.7 使用VolDiff比较内存分析结果 462
7.8 使用DAMM比较内存分析结果 471
7.9 恶意代码内存分析示例 474
7.10 通过攻击模拟了解内存转储用法 477
7.11 小结 482
《Python实战:数据科学与机器学习应用》 内容简介 《Python实战:数据科学与机器学习应用》是一本旨在帮助读者掌握Python在数据科学和机器学习领域核心应用的书籍。全书围绕实际项目,循序渐进地引导读者理解并运用Python强大的库生态来解决真实世界的数据挑战。我们不涉及恶意代码分析,而是将焦点完全置于数据驱动的决策和智能模型的构建上。 本书的开篇,我们将首先为你奠定扎实的Python基础,但不同于传统的编程入门,这里的Python介绍将紧密结合数据科学的需求。你将学习如何安装和配置必要的开发环境,包括Anaconda发行版,它集成了Python解释器以及众多科学计算库,如NumPy、Pandas、Matplotlib和Scikit-learn。我们将深入讲解Python的核心数据结构,如列表(lists)、元组(tuples)、字典(dictionaries)和集合(sets),并展示它们在处理和组织数据时的效率和灵活性。特别是,我们将详细介绍NumPy库,它是Python科学计算的基石。你将学习如何创建和操作多维数组(ndarrays),理解向量化操作的优势,并掌握切片、索引、重塑和合并数组等高级技巧,这些都是进行高效数值计算的基础。 紧接着,我们将引入Pandas库,这是Python数据分析的另一项核心利器。Pandas提供了两个关键的数据结构:Series(一维带标签数组)和DataFrame(二维带标签表格型数据结构)。我们将花费大量篇幅讲解如何使用Pandas读取不同格式的数据文件,如CSV、Excel、JSON和SQL数据库,并深入探讨数据清洗的各个环节。这包括处理缺失值(NaN),例如使用填充、删除或插值的方法;识别和处理异常值,通过统计方法或可视化手段;以及数据类型转换,确保数据的准确性和一致性。你还将学习如何使用Pandas进行数据筛选、排序、分组(group by)和聚合,这些操作是探索数据模式、提取关键信息的重要手段。此外,我们还会讲解如何合并(merge)、连接(join)和拼接(concat)多个DataFrame,以构建更复杂的数据集。 在掌握了数据处理的基础之后,本书将转向数据可视化,这是理解数据、沟通洞察的关键环节。我们将重点介绍Matplotlib和Seaborn这两个强大的可视化库。Matplotlib作为Python最基础的绘图库,我们将学习绘制各种基本图表,如折线图、散点图、柱状图、饼图和直方图,并精通如何自定义图表的各个元素,包括标题、轴标签、图例、颜色、线型和标记。Seaborn则是在Matplotlib基础上构建的高级可视化库,它提供了更美观、更具统计意义的图表,如箱线图、小提琴图、热力图、计数图和分布图。我们将演示如何利用Seaborn快速生成揭示变量之间关系和分布的图表,并讲解如何结合使用这两个库来创建复杂、信息丰富的可视化作品。 本书的核心部分将聚焦于机器学习。我们将从机器学习的基本概念入手,解释监督学习、无监督学习和强化学习的区别,以及它们的应用场景。对于监督学习,我们将深入介绍回归和分类问题,并详细讲解几种经典的算法。在回归方面,我们将讲解线性回归,包括其原理、模型评估指标(如均方误差MSE、R²分数)以及正则化技术(如Lasso和Ridge回归)如何防止过拟合。在分类方面,我们将深入讲解逻辑回归、支持向量机(SVM)及其核函数的使用、决策树及其剪枝策略,以及随机森林(Random Forest)集成学习方法。对于无监督学习,我们将重点讲解聚类算法,如K-Means,以及降维技术,如主成分分析(PCA)。 为了让读者更好地理解这些算法,我们将详细介绍Scikit-learn库,这是Python中最流行、最全面的机器学习库。你将学习如何使用Scikit-learn的API来加载数据集、预处理特征(如标准化、归一化)、训练模型、进行预测,以及评估模型性能。我们将讲解交叉验证(cross-validation)的重要性,以获得对模型泛化能力的可靠估计,并演示如何使用网格搜索(Grid Search)或随机搜索(Random Search)来调优模型超参数,以找到最佳的模型配置。 本书还将引入深度学习的基础概念,但我们将主要侧重于使用Keras和TensorFlow的API来构建和训练神经网络。我们将从最简单的感知器模型开始,逐步构建多层感知器(MLP),并介绍激活函数(如ReLU、Sigmoid)、损失函数(如交叉熵)和优化器(如Adam、SGD)的概念。你将学习如何构建卷积神经网络(CNN)来处理图像数据,理解卷积层、池化层和全连接层的作用;以及如何构建循环神经网络(RNN)和长短期记忆网络(LSTM)来处理序列数据,如文本。我们将通过实际例子,如图像分类、文本情感分析等,来演示这些深度学习模型的构建和应用。 为了使理论知识更具实践性,本书的每一章都包含精心设计的代码示例和实践练习。这些示例将从简单的数据操作开始,逐步过渡到构建复杂的机器学习模型。我们鼓励读者动手实践,修改代码,探索不同的参数组合,并尝试将学到的技术应用到自己的数据集中。每个章节末尾都会提供思考题和项目建议,帮助读者巩固所学知识,并激发进一步探索的兴趣。 《Python实战:数据科学与机器学习应用》的目标读者包括但不限于:对数据分析、机器学习和深度学习感兴趣的初学者,希望将Python应用于数据科学领域的学生和研究人员,以及需要提升Python在数据处理和建模能力的软件工程师和数据科学家。本书假定读者具备一定的Python编程基础,但不需要深入的数学背景。我们将尽量在书中解释必要的数学概念,以便读者能够理解算法的原理。 总之,本书将是一次充实而富有成效的学习旅程,你将在这段旅程中掌握利用Python进行数据科学研究和机器学习应用的关键技能。我们将带你从数据的获取、清洗、探索,到可视化,再到构建和评估各种机器学习模型,最终触及深度学习的奥秘。这本书不是关于揭示代码的隐藏威胁,而是关于解锁数据中蕴含的巨大潜力,以及利用智能模型来驱动创新和解决问题。