一行简单的管道命令快速创建、原型化复杂的功能
新书速递
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的用法,不仅阐述了技术原理,也提供了具体的代码实例,每章末还提供了练习题以加深读者的理解。
目录
前言1
第一部分 基础
第1章 命令行入门9
1.1 命令行定义9
1.2 为什么选择bash9
1.3 命令行示例10
1.4 在Windows上运行Linux和bash10
1.4.1 Git Bash10
1.4.2 Cygwin11
1.4.3 Linux版Windows子系统11
1.4.4 Windows命令提示符及PowerShell11
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 grep31
3.1.2 grep和egrep32
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 cut48
5.1.2 file49
5.1.3 head50
5.1.4 reg50
5.1.5 wevtutil50
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 awk71
6.1.2 join72
6.1.3 sed73
6.1.4 tail74
6.1.5 tr74
6.2 处理带分隔符的文件75
6.2.1 遍历带分隔符的数据76
6.2.2 按字符位置处理77
6.3 处理XML78
6.4 处理JSON79
6.5 聚合数据81
6.6 总结82
6.7 练习题83
第7章 数据分析84
7.1 使用的命令84
7.1.1 sort84
7.1.2 uniq85
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 crontab112
9.1.2 schtasks113
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 curl131
11.1.2 vi132
11.1.3 xxd133
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 创建Dashboard150
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 base64164
14.1.2 eval165
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章 工具:命令行fuzzer179
15.1 实现180
15.2 总结183
15.3 练习题183
第16章 建立立足点185
16.1 使用的命令185
16.2 单行后门186
16.2.1 反向SSH186
16.2.2 bash后门187
16.3 自定义远程访问工具188
16.4 总结192
16.5 练习题193
第四部分 使用bash进行安全管理
第17章 用户、组和权限197
17.1 使用的命令197
17.1.1 chmod197
17.1.2 chown198
17.1.3 getfacl198
17.1.4 groupadd198
17.1.5 setfacl198
17.1.6 useradd199
17.1.7 usermod199
17.1.8 icacls199
17.1.9 net200
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 eventcreate207
18.1.2 logger208
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 apt216
20.1.2 dpkg216
20.1.3 wmic217
20.1.4 yum217
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 Pwned228
22.2 检查密码是否被泄露228
22.3 检查泄露的电子邮件地址231
22.4 总结234
22.5 练习题235
第23章 结论236
上下滑动查看
编辑推荐
本书是结合网络安全运维介绍bash技术的实用指南。
书中从攻击、防御和分析三个场景介绍bash的用法,详细讲解如何在命令行使用bash shell完成数据收集与分析、入侵检测、逆向工程与管理等工作。
全书共分为四部分
第一部分介绍防御和攻击的原则,命令行和bash基础,以及正则表达式;
第二部分介绍数据收集和分析、实时日志监控和恶意软件分析;
第三部分介绍用于命令行模糊化和远程访问的脚本混淆和工具;
第四部分介绍安全管理知识,涉及用户、组和权限、设备和软件目录等。
实拍图
更多精彩新书
上新 | 零基础想入门PWA?看这本书错不了
上新 | 火币董事长李林推荐,教你从0到1学习区块链技术
上新 | 上新了!国内首本从原理与实践角度全面讲解InfluxDB的宝藏书
上新 | OpenShift : 通往云原生、DevOps、微服务和Serverless的大门
上新 | “计算机伦理学”——计算机科学专业的必修课