首页>参考读物>计算机科学与技术>安全

bash网络安全运维
作者 : [美]保罗·特龙科恩(Paul Troncone) 卡尔·阿尔宾(Carl Albing) 著
译者 : 陈晓光 梁彧 石亚彬 何能强 译
出版日期 : 2020-04-30
ISBN : 978-7-111-65403-2
定价 : 89.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 251
开本 : 16
原书名 : Cybersecurity Ops with bash
原出版社: O'Reilly Media, Inc.
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

本书详细介绍如何在命令行使用bash shell完成数据收集与分析、入侵检测、逆向工程与管理等工作。全书共分为四部分,第一部分介绍防御和攻击的原则,命令行和bash基础,以及正则表达式;第二部分介绍数据收集和分析、实时日志监控和恶意软件分析;第三部分介绍用于命令行模糊化和远程访问的脚本混淆和工具;第四部分介绍安全管理知识,涉及用户、组和权限、设备和软件目录等。

图书特色

图书前言

兵之情主速。
—孙武,《孙子兵法》
在当今时代,命令行有时会被忽略。新的网络安全从业人员可能会被具有华丽图形界面的工具所吸引。经验丰富的运维人员可能会忽视或低估命令行的价值。然而,命令行有着丰富的功能,应该成为每个实践者工具包的一部分。例如,看似简单的输出指定文件最后几行数据的tail命令超过了2000行C代码。你当然可以使用Python或其他编程语言创建类似的工具,但是当你从命令行通过简单的调用就可以实现其功能时,为什么要那样做呢?
此外,学习如何在复杂任务中使用命令行可以让你更好地理解操作系统的工作方式。最有能力的网络安全从业人员了解工具在基础原理层面上如何工作,而不仅仅是如何使用它们。
本书将教你如何均衡使用复杂的Linux命令和bash shell来增强你作为安全运维员和实践者的能力。通过学习这些技能,你将能够通过一行简单的管道命令快速地创建和原型化复杂的功能。
尽管bash shell和我们在本书中讨论的命令最初是在Unix和Linux操作系统家族中提出的,但是现在它们已经无处不在了。这些技术很容易在Linux、Windows和macOS环境之间迁移。
本书的读者对象
本书是为那些希望在计算机安全语境下掌握命令行的人编写的。我们的目标不是用命令行脚本替换现有的工具,而是教你如何使用命令行,以便你可以利用它来增强现有的安全功能。
在本书中,我们将重点放在诸如数据收集、数据分析和渗透测试这些安全技术的示例上。这些示例的目的是展示命令行功能,并让你深入了解高级工具使用的一些基本技术。
本书假定读者基本熟悉网络安全、命令行界面、编程概念,以及Linux和Windows操作系统。事先对bash有所了解是有用的,但不是必需的。
本书并不是介绍编程的,尽管在本书第一部分涉及了一些编程的基本概念。
Bash或bash
在本书中,除非指的是Windows程序Git Bash,否则我们均使用bash(首字母小写)来指bash shell。这个约定也是沿袭了Chet Ramey的建议,他是bash软件的当前维护者。有关bash的更多信息,请访问bash网站(http://bit.ly/2I0ZqzU);有关各种bash发布版本、参考文档和示例的更多信息,请访问bash手册的维基网页(http://bit.ly/2FCjMwi)。
脚本的鲁棒性
本书中的示例脚本用于说明和传授概念。这些脚本的设计不够高效或鲁棒,因此不适合企业部署。如果选择在生产环境中使用这些脚本,一定要谨慎。请确保遵循编程最佳实践来进行bash脚本的编写,并在正式部署之前进行充分的测试。
练习题
我们在每章的末尾提供了一些思考题和练习题,以帮助你学习安全性、命令行和bash技巧等方面的知识。你可以在本书配套网站上找到这些练习题的答案和其他资源,网址为https://www.rapidcyberops.com。
本书中使用的约定
本书使用以下排版约定:
斜体(Italic)
表示URL、电子邮件地址、文件名和文件扩展名。
等宽字体(Constant width)
用于程序清单,以及在段落中用于程序元素,如变量、函数名、数据库、数据类型、环境变量、注释说明和关键字。
等宽粗体(Constant width bold)
表示命令或者其他需要用户按照字面要求输入的文本。
等宽斜体(Constant width italic)
表示应该以用户提供的值或由上下文得到的值进行替换的文本。
此元素表示提示或建议。
此元素表示一般说明。
此元素表示警告。
使用代码示例
本书是用来帮你完成工作的。一般来说,你可以在程序和文档中使用本书提供的示例代码。你不需要得到我们的许可,除非你基于我们提供的大部分代码进行了再生产。例如,编写使用本书中几个代码块的程序不需要获得许可,出售或发布O 'Reilly图书中的示例光盘则需要获得许可。通过引用本书和引用示例代码来回答问题不需要获得许可,将本书中的大量示例代码集成到你的产品文档中则需要获得许可。
我们重视但不要求注明版权归属。版权归属通常包括书名、作者、出版商和ISBN。例如:“Cybersecurity Ops with bash by Paul Troncone and Carl Albing (O'Reilly). Copyright 2019 Digadel Corp & Carl Albing, 978-1-492-04131-3.”
如果你觉得自己对代码示例的使用超出了合理使用或上面给出的许可范围,请通过permissions@oreilly.com与我们联系。
O'Reilly在线学习
近40年来,O'Reilly Media致力于提供技术和商业培训、知识和卓越见解,来帮助众多公司取得成功。
我们拥有独一无二的专家和革新者组成的庞大网络,他们通过图书、文章、会议和我们的在线学习平台分享他们的知识和经验。O扲eilly的在线学习平台允许你按需访问现场培训课程、深入的学习路径、交互式编程环境,以及O扲eilly和200多家其他出版商提供的大量文本和视频资源。有关的更多信息,请访问http://oreilly.com。
如何联系我们
对于本书如果有任何意见或疑问,请按照以下地址联系本书出版商。
美国:
O'Reilly Media,Inc.
1005 Gravenstein Highway North
Sebastopol,CA 95472
中国:
北京市西城区西直门南大街2号成铭大厦C座807室(100035)
奥莱利技术咨询(北京)有限公司
我们为这本书提供了一个网页,其中列出了勘误、示例和其他信息。你可以通过http://bit.ly/cybersecurity-ops-bash访问此页面。
要对本书进行评论或提出技术问题,请发送电子邮件至bookquestions@oreilly.com。
有关我们的书籍、课程、会议和新闻的更多信息,请访问我们的网站http://www.oreilly.com。
我们在Facebook上的网页:http://facebook.com/oreilly
我们在Twitter上的网页:http://twitter.com/oreillymedia
我们在YouTube上的网页:http://www.youtube.com/oreillymedia
致谢
我们要感谢两个主要的技术审稿人,他们的洞察力帮助我们确保了本书的准确性和对读者的最大价值。Tony Lee,Cylance有限公司的高级技术总监,一名安全爱好者,主要在LinkedIn和SecuritySynapse网站上分享自己的知识。Chet Ramey,凯斯西储大学信息技术服务部的高级技术架构师,是bash当前的软件维护者。
感谢Bill Cooper、Josiah Dykstra、Ric Messier、Cameron Newham、Sandra Schiavo和JP Vossen的指导与评审。
最后,我们要感谢O'Reilly的整个团队,特别是Nan Barber、John Devins、Mike Loukides、Sharon Wilkey、Ellen Troutman-Zaig、Christina Edwards和Virginia Wilson。
免责声明
本书所表达的观点仅仅是作者自己的观点,并不代表美国政府的观点。

上架指导

计算机\安全

封底文字

如果你希望抵御攻击者的威胁,就应注重网络安全运维的速度和效率。
在危急时刻,掌握标准命令行界面(CLI)是一项非常宝贵的技能,因为没有其他软件应用程序可以与CLI的可用性、灵活性、敏捷性相媲美。本书将向你展示如何使用带有bash shell 的CLI执行数据收集和分析、入侵检测、逆向工程和管理等任务。
作者深入介绍了命令行工具和技术,以帮助安全从业者收集数据、分析日志和监控网络。渗透测试人员将学习如何利用Linux的功能来支持攻击性操作。
在书中包含的四部分内容中,安全从业者、管理者、学生将会看到:
? 基础:防御和攻击原则、命令行、bash基础及常规表达。
? 安全防御操作:数据收集和分析、实时日志监控、恶意软件分析。
? 渗透测试:脚本混淆和命令行模糊及远程访问工具。
? 安全管理:用户、组、权限,以及设备和软件清单。
“ 使用shell构建一个将提高你的安全专业知识的工具包,这个领域还没得到足够重视,本书对此是一个宝贵贡献。”
——Chet Ramey
IT架构师、凯斯西储大学
bash研发人员
Paul Troncone是Digadel公司创始人。他拥有超过15年的网络安全和信息技术经验,曾任美国海军学院的杰出客座教授,在计算机科学系教授安全课程。
Carl Albing博士是一位具有丰富行业经验的教师、研究员和软件工程师。现任海军研究生院数据科学和分析小组教授。

作者简介

[美]保罗·特龙科恩(Paul Troncone) 卡尔·阿尔宾(Carl Albing) 著:保罗·特龙科恩(Paul Troncone)在网络安全和信息技术领域拥有超过15年的经验。2009年,他创立了Digadel公司,在那里他负责独立的网络安全咨询和软件开发。他拥有佩斯大学计算机科学学士学位、纽约大学(前身为纽约理工大学)Tandon工程学院计算机科学硕士学位,并且是一名经过认证的信息系统安全专家。他曾担任过各种角色,包括漏洞分析师、软件开发人员、渗透测试人员和大学教授。

卡尔·阿尔宾(Carl Albing)是一位具有丰富行业经验的教师,研究员和软件工程师。 他是bash Cookbook(O''Reilly出版)的合著者,曾在软件行业大大小小的公司工作过。他拥有数学学士学位、国际管理硕士学位(MIM)和计算机科学博士学位。他最近在美国海军学院计算机科学系担任杰出访问教授,在那里他教授编程语言、编译器、高性能计算和高级shell脚本课程。他目前是海军研究生院数据科学与分析小组的研究教授。

译者序

shell是用户和操作系统之间的桥梁,用户通过命令行或shell脚本在类Unix操作系统中执行各种操作就依赖于shell。作为最常用的shell之一,bash自1989年正式发布以来,广泛应用于多种操作系统,众多Linux发行版和Solaris等系统将其作为默认使用的shell,Windows和macOS等其他系统也支持bash。
bash最初是由Brian Fox为GNU编写的开源shell,用于替代 Bourne shell。BASH是Bourne-Again SHell的缩写,这是一个双关语,其发音与born-again相同,而Bourne则是在向Unix系统Bourne shell的作者 Stephen Bourne致敬。
市面上有很多介绍Linux命令行和shell脚本编程的书籍,其中对从每一个命令参数到系统内核都有详细的说明。也不乏众多优秀的网络安全读物,既有对各类常用黑客工具的全面介绍,也有深入到底层对安全漏洞的分析。而本书则是为数不多的结合网络安全运维介绍bash的技术书籍之一,书中从攻击、防御和分析三个场景介绍了bash的用法,不仅阐述了技术原理,也提供了具体的代码实例,每章末还提供了练习题以加深读者的理解。
大多数互联网服务提供商的服务器都运行于类Unix操作系统之上,由运维团队进行日常维护。运维人员比较擅长处理各种系统和网络层面的故障,但大多对网络安全缺乏深刻的理解。虽然有些工具不要求使用者具备额外的网络安全知识就可以实现网络安全运维的部分功能,但随着互联网深入生活的每一个角落,尤其是5G时代的到来和物联网的飞速发展,来自网络的安全威胁也日趋严峻,因此需要有一本书能够从实战的角度指导网络安全运维。通过学习本书可以使安全运维人员提升技术水平,加深对网络安全的理解。这正是我们在工作之余翻译此书的动力和初衷。作为一家网络安全企业,除了为国家和社会提供网络安全服务之外,我们也希望通过翻译此书来提高行业的整体网络安全运维水平。
为了保证译稿的质量,我们邀请了恒安嘉新智能安全创新研究院的技术骨干参与本书的翻译,并查阅了大量的相关书籍和论文,在此感谢张振涛博士、孔文峰、赵雷博士、张涵丰、蔡立等对翻译本书提供的技术支持。也感谢市场部的句雅楠、芳心蕊等对于本书中晦涩的技术细节提供宝贵的翻译建议。感谢刘晓蔚、傅强、阿曼太等具有多年网络安全经验的公司高层领导对本书的翻译提供的细致帮助和指导。
在本书的翻译过程中,机械工业出版社华章分社的王春华老师给予了我们大力支持,在此对她的悉心指导表示衷心感谢。
虽然参与翻译本书的成员都具有较高的技术水平,但由于都是理科出身,翻译能力和写作功底有限,因此译文中难免会存在一些不尽如人意的地方,希望各位读者能提供宝贵的修改意见和建议。

译者
2019年12月

图书目录

前言 1
第一部分 基础
第1章 命令行入门 9
1.1 命令行定义 9
1.2 为什么选择bash 9
1.3 命令行示例 10
1.4 在Windows上运行Linux和bash 10
1.4.1 Git Bash 10
1.4.2 Cygwin 11
1.4.3 Linux版Windows子系统 11
1.4.4 Windows命令提示符及PowerShell 11
1.5 命令行基础 12
1.5.1 命令、参数、内建指令和关键字 12
1.5.2 标准输入/输出/错误 13
1.5.3 重定向和管道 14
1.5.4 在后台运行命令 15
1.5.5 从命令行到脚本 16
1.6 总结 16
1.7 练习题 17
第2章 bash入门 18
2.1 输出 18
2.2 变量 18
2.3 输入 20
2.4 条件语句 20
2.5 循环 24
2.6 函数 25
2.6.1 函数参数 26
2.6.2 返回值 26
2.7 bash中的模式匹配 27
2.8 编写第一个脚本—检测操作系统类型 29
2.9 总结 29
2.10 练习题 30
第3章 正则表达式入门 31
3.1 使用的命令 31
3.1.1 grep 31
3.1.2 grep和egrep 32
3.2 正则表达式元字符 33
3.2.1 “.”元字符 33
3.2.2 “?”元字符 33
3.2.3 “*” 元字符 33
3.2.4 “+”元字符 34
3.2.5 分组 34
3.2.6 方括号和字符类 34
3.2.7 回调引用 36
3.2.8 量词 37
3.2.9 锚和单词边界 38
3.3 总结 38
3.4 练习题 38
第4章 防御和攻击原则 39
4.1 网络安全 39
4.1.1 保密性 39
4.1.2 完整性 40
4.1.3 可用性 40
4.1.4 不可否认性 40
4.1.5 身份验证 40
4.2 攻击生命周期 40
4.2.1 前期侦察 41
4.2.2 初步入侵 41
4.2.3 建立立足点 42
4.2.4 升级特权 42
4.2.5 内部侦察 42
4.2.6 横向运动 42
4.2.7 维护驻留 43
4.2.8 完成任务 43
4.3 总结 43
第二部分 使用bash进行安全运维防御
第5章 数据收集 47
5.1 使用的命令 48
5.1.1 cut 48
5.1.2 file 49
5.1.3 head 50
5.1.4 reg 50
5.1.5 wevtutil 50
5.2 收集系统信息 51
5.2.1 使用SSH远程执行命令 52
5.2.2 收集Linux日志文件 52
5.2.3 收集Windows日志文件 53
5.2.4 收集系统信息 55
5.2.5 收集Windows注册表 59
5.3 搜索文件系统 59
5.3.1 按文件名搜索 60
5.3.2 搜索隐藏文件 60
5.3.3 按文件大小搜索 61
5.3.4 按时间搜索 62
5.3.5 搜索内容 63
5.3.6 按文件类型搜索 63
5.3.7 按消息摘要值搜索 67
5.4 数据传输 69
5.5 总结 69
5.6 练习题 70
第6章 数据处理 71
6.1 使用的命令 71
6.1.1 awk 71
6.1.2 join 72
6.1.3 sed 73
6.1.4 tail 74
6.1.5 tr 74
6.2 处理带分隔符的文件 75
6.2.1 遍历带分隔符的数据 76
6.2.2 按字符位置处理 77
6.3 处理XML 78
6.4 处理JSON 79
6.5 聚合数据 81
6.6 总结 82
6.7 练习题 83
第7章 数据分析 84
7.1 使用的命令 84
7.1.1 sort 84
7.1.2 uniq 85
7.2 熟悉Web服务器访问日志 86
7.3 数据排序和整理 87
7.4 统计数据出现频次 87
7.5 统计数据总数 91
7.6 用直方图显示数据 93
7.7 发现数据的唯一性 98
7.8 识别异常数据 99
7.9 总结 102
7.10 练习题 102
第8章 实时日志监控 103
8.1 监控文本日志 103
8.2 监控Windows日志 106
8.3 生成实时直方图 106
8.4 总结 111
8.5 练习题 111
第9章 工具:网络监控 112
9.1 使用的命令 112
9.1.1 crontab 112
9.1.2 schtasks 113
9.2 第1步:创建端口扫描程序 113
9.3 第2步:与之前的输出进行比较 115
9.4 第3步:自动化和通知 118
9.4.1 在Linux中安排任务 119
9.4.2 在Windows中安排任务 120
9.5 总结 120
9.6 练习题 121
第10章 工具:文件系统监控 122
10.1 使用的命令 122
10.2 步骤1:对文件系统进行基线化 123
10.3 步骤2:检测基线的变化 124
10.4 步骤3:自动化和通知 126
10.5 总结 129
10.6 练习题 129
第11章 恶意软件分析 131
11.1 使用的命令 131
11.1.1 curl 131
11.1.2 vi 132
11.1.3 xxd 133
11.2 逆向工程 134
11.2.1 十六进制、十进制、二进制和ASCII转换 134
11.2.2 用xxd分析 135
11.3 提取字符串 137
11.4 VirusTotal接口 137
11.4.1 通过哈希值搜索数据库 138
11.4.2 扫描文件 142
11.4.3 扫描URL、域名和IP地址 143
11.5 总结 143
11.6 练习题 144
第12章 格式化和报告 145
12.1 使用的命令 145
12.2 使用HTML格式化显示和打印 146
12.3 创建Dashboard 150
12.4 总结 154
12.5 练习题 154
第三部分 使用bash进行渗透试验
第13章 侦察 157
13.1 使用的命令 157
13.2 网站爬虫 158
13.3 自动化的横幅爬取 159
13.4 总结 163
13.5 练习题 163
第14章 脚本混淆 164
14.1 使用的命令 164
14.1.1 base64 164
14.1.2 eval 165
14.2 语法混淆 165
14.3 逻辑混淆 167
14.4 加密 169
14.4.1 密码学入门 169
14.4.2 加密脚本 170
14.4.3 创建包装器 171
14.4.4 创建自己的加密算法 172
14.5 总结 178
14.6 练习题 178
第15章 工具:命令行fuzzer 179
15.1 实现 180
15.2 总结 183
15.3 练习题 183
第16章 建立立足点 185
16.1 使用的命令 185
16.2 单行后门 186
16.2.1 反向SSH 186
16.2.2 bash后门 187
16.3 自定义远程访问工具 188
16.4 总结 192
16.5 练习题 193
第四部分 使用bash进行安全管理
第17章 用户、组和权限 197
17.1 使用的命令 197
17.1.1 chmod 197
17.1.2 chown 198
17.1.3 getfacl 198
17.1.4 groupadd 198
17.1.5 setfacl 198
17.1.6 useradd 199
17.1.7 usermod 199
17.1.8 icacls 199
17.1.9 net 200
17.2 用户和组 200
17.2.1 创建Linux用户和组 200
17.2.2 创建Windows用户和组 201
17.3 文件权限和访问控制列表 203
17.3.1 Linux文件权限 203
17.3.2 Windows文件权限 204
17.4 进行批量更改 205
17.5 总结 206
17.6 练习题 206
第18章 编写日志条目 207
18.1 使用的命令 207
18.1.1 eventcreate 207
18.1.2 logger 208
18.2 编写Windows日志 208
18.3 编写Linux日志 209
18.4 总结 210
18.5 练习题 210
第19章 工具:系统可用性监控 211
19.1 使用的命令 211
19.2 实现 212
19.3 总结 214
19.4 练习题 214
第20章 工具:软件清单 215
20.1 使用的命令 215
20.1.1 apt 216
20.1.2 dpkg 216
20.1.3 wmic 217
20.1.4 yum 217
20.2 实现 218
20.3 识别其他软件 219
20.4 总结 220
20.5 练习题 220
第21章 工具:验证配置 222
21.1 实现 222
21.2 总结 227
21.3 练习题 227
第22章 工具:账户审核 228
22.1 网站Have I Been Pwned 228
22.2 检查密码是否被泄露 228
22.3 检查泄露的电子邮件地址 231
22.4 总结 234
22.5 练习题 235
第23章 结论 236

教学资源推荐
作者: [美] 威廉·斯托林斯(William Stallings)[澳] 劳里·布朗(Lawrie Brown) 著
作者: [美] 查克·伊斯特姆 (Chuck Easttom)著
作者: [德]罗伯特·施米德(Robert Schmied) 著
参考读物推荐
作者: [美]尤里·迪奥赫内斯(Yuri Diogenes),[阿联酋]埃达尔·奥兹卡(Erdal Ozkaya) 著
作者: 王淑江
作者: (美)Kelley Okolita 著