对于企业网络安全建设工作的质量保障,业界普遍遵循PDCA(计划(Plan)、实施(Do)、检查(Check)、处理(Act))的方法论。近年来,网络安全攻防对抗演练发挥了越来越重要的作用。企业的安全管理者通过组织内部或外部攻击队,站在恶意攻击者的视角,识别自身网络安全建设过程中的防护短板,检验安全应急预案的有效性并持续优化,为业务发展提供更强的保驾护航能力。
本书是企业进行网络安全对抗演练不可多得的参考书,对攻击队和防守队都适用。
本书系统地介绍了安全测试流程的最佳实践和常见误区,围绕Kali Linux这个开源工具,详细阐述了各类测试技术的原理和操作方法。即使是初学者,也可以在本书深入浅出的指引下轻松上手。对于富有经验的渗透测试人员,本书更是提供了进阶实战场景的实用脚本和代码库资源,相信能给读者带来新的启发。
企业攻防对抗演练是攻防双方的思路、策略、技术和情报能力的综合比拼。“敌暗我明”“攻防力量不对称”的情况往往瞬息万变,结果胜负是一时的,过程常态化才是主旋律。在现实的网络空间安全中,这样的常态化每天都在上演,安全团队只有正确制定攻防演练的目标,才能得到企业对安全工作的认可。
如果你是一名渗透测试人员、IT专家或网络安全顾问,希望利用 Kali Linux 的一些高级功能最大限度地提高网络安全测试的成功率,那么这本书就是为你准备的。如果你以前接触过渗透测试的基础知识,将有助于你理解本书内容。
本书的代码包托管在 GitHub 上,链接如下:
https://github.com/PacktPublishing/Mastering-Kali-Linux-for-Advanced-Penetration-Testing-4E
对于更多丰富的代码包和精彩视频,感兴趣的读者可从以下地址获取:
https://github.com/PacktPublishing/
我们还提供了一个 PDF 文档,包含本书中使用的屏幕截图/图表的彩色图像。你可以从以下地址下载:
https://static.packt-cdn.com/downloads/9781801819770_ColorImages.pdf
译者序
前言
关于作者
关于技术审校
第1章 基于目标的渗透测试 1
1.1 恶意威胁者的类型 1
1.2 安全测试概念 2
1.3 漏洞评估、渗透测试和红队演习的
局限性 2
1.4 基于目标的渗透测试概述 3
1.5 测试方法论 4
1.6 Kali Linux的功能介绍 6
1.7 Kali Linux的安装与更新 7
1.7.1 使用便携设备 7
1.7.2 在树莓派4上安装 Kali 8
1.7.3 在虚拟机上安装Kali 9
1.7.4 安装Docker应用 12
1.7.5 在AWS云上启动Kali 13
1.7.6 在GCP上启动Kali 15
1.8 在Android设备(非破解)上运行
Kali 20
1.9 配置 Kali Linux 21
1.9.1 重置默认密码 21
1.9.2 配置网络服务和安全通信 22
1.9.3 调整网络代理设置 23
1.9.4 远程访问安全Shell 23
1.9.5 加速 Kali 操作 24
1.9.6 与主机系统共享文件夹 24
1.9.7 使用Bash脚本自定义Kali 26
1.10 建立一个验证实验室 26
1.11 CloudGoat 36
1.12 使用 Faraday 管理协同的渗透
测试 39
1.13 总结 40
第2章 开源情报与被动侦察 41
2.1 目标侦察的基本原则 41
2.1.1 OSINT 42
2.1.2 进攻性OSINT 43
2.1.3 收集域名信息 43
2.1.4 Maltego 44
2.1.5 OSRFramework 47
2.1.6 网络存档 47
2.1.7 Passive Total 48
2.2 网络爬虫 49
2.2.1 收集用户名和邮件地址 49
2.2.2 获取用户信息 50
2.2.3 在线搜索门户 50
2.2.4 其他商业工具 54
2.3 Google Hacking数据库 54
2.3.1 使用Google Hacking脚本
查询 54
2.3.2 数据转储站点 56
2.3.3 防御性OSINT 56
2.3.4 威胁情报 57
2.3.5 用户密码列表分析 58
2.4 自定义密码破解字典 59
2.4.1 使用CeWL绘制网站地图 59
2.4.2 使用twofi从Twitter提取字典 59
2.5 总结 60
第3章 主动侦察 61
3.1 隐蔽扫描技术 62
3.1.1 调整源IP协议栈和工具识别
特征 62
3.1.2 修改数据包参数 63
3.1.3 使用匿名网络代理 65
3.2 DNS侦察和路由映射 67
3.3 使用集成侦察工具 68
3.3.1 recon-ng框架 69
3.3.2 使用针对IPv6的工具 72
3.3.3 映射目标路由 74
3.4 识别外部网络基础设施 76
3.5 防火墙外的映射 77
3.6 IDS/IPS识别 77
3.7 主机枚举 78
3.8 端口、操作系统和服务发现 79
3.9 使用netcat编写你自己的端口
扫描器 80
3.9.1 对操作系统进行指纹识别 80
3.9.2 确定活跃的服务 81
3.10 大规模扫描 82
3.10.1 DHCP信息 83
3.10.2 内网主机的识别和枚举 83
3.10.3 原生的MS Windows命令 84
3.10.4 ARP广播 86
3.10.5 ping扫描 86
3.10.6 使用脚本将masscan扫描和
nmap扫描结合 87
3.10.7 利用SNMP的优势 89
3.10.8 SMB会话中的Windows账户
信息 90
3.10.9 发现网络共享 91
3.10.10 对活动目录域服务器的侦察 92
3.10.11 枚举微软Azure环境 93
3.10.12 集成侦察工具 95
3.11 利用机器学习进行侦察 96
3.12 总结 98
第4章 漏洞评估 99
4.1 漏洞术语 99
4.2 本地和在线漏洞数据库 100
4.3 用nmap进行漏洞扫描 103
4.3.1 Lua脚本介绍 104
4.3.2 定制NSE脚本 105
4.4 网络应用程序漏洞扫描器 106
4.4.1 Nikto 106
4.4.2 定制Nikto 107
4.4.3 OWASP ZAP 108
4.5 移动应用程序的漏洞扫描器 111
4.6 OpenVAS网络漏洞扫描器 112
4.7 商业漏洞扫描器 114
4.7.1 Nessus 115
4.7.2 Qualys 116
4.8 针对性的扫描器 117
4.9 威胁建模 118
4.10 总结 120
第5章 高级社会工程学和物理安全 121
5.1 掌握方法论和TTP 122
5.1.1 技术 123
5.1.2 针对人的攻击 124
5.2 控制台上的物理攻击 124
5.2.1 samdump2和chntpw 125
5.2.2 粘滞键 128
5.3 创建一个流氓物理设备 129
5.4 社会工程工具包 132
5.4.1 社会工程攻击 134
5.4.2 凭证采集Web攻击方法 135
5.4.3 多重Web攻击方法 137
5.4.4 HTA网络攻击方法 138
5.4.5 使用PowerShell纯字符进行shellcode注入攻击 140
5.5 隐藏可执行文件和混淆攻击者的
URL 141
5.6 利用DNS重定向升级攻击 142
5.6.1 鱼叉式网络钓鱼攻击 143
5.6.2 使用Gophish的电子邮件网络
钓鱼 146
5.7 使用Gophish发起网络钓鱼攻击 147
5.8 利用批量传输作为网络钓鱼来传递
有效负载 151
5.9 总结 151
第6章 无线攻击和蓝牙攻击 153
6.1 无线和蓝牙技术简介 153
6.2 配置Kali进行无线攻击 154
6.3 无线网络侦察 154
6.4 绕过隐藏ESSID 157
6.5 绕过MAC地址认证和开放认证 159
6.6 攻击WPA和WPA2 161
6.6.1 暴力破解攻击 161
6.6.2 使用Reaver对无线路由器进行
攻击 165
6.7 拒绝服务对无线通信的攻击 166
6.8 破坏启用WPA2的企业 167
6.9 使用bettercap 169
6.10 使用Wifiphisher进行Evil Twin
攻击 170
6.11 WPA3 172
6.12 蓝牙攻击 173
6.13 总结 175
第7章 Web漏洞利用 176
7.1 Web应用攻击方法论 176
7.2 黑客思维导图 177
7.3 Web应用/服务漏洞扫描 179
7.3.1 检测Web应用防火墙和负载
均衡器 180
7.3.2 识别Web应用指纹和CMS 182
7.3.3 从命令行镜像网站 184
7.4 客户端代理 184
7.4.1 Burp代理 185
7.4.2 Web抓取和目录暴力攻击 189
7.4.3 Web服务漏洞扫描器 190
7.5 针对特定应用的攻击 190
7.6 浏览器攻击框架 202
7.7 了解BeEF浏览器 206
7.8 总结 211
第8章 云安全漏洞利用 212
8.1 云服务介绍 212
8.2 EC2实例中的漏洞扫描和应用
开发 215
8.2.1 Scout Suite 216
8.2.2 Prowler 218
8.3 测试S3桶的错误配置 225
8.4 利用安全许可的缺陷 228
8.5 混淆CloudTrail日志的内容 236
8.6 总结 236
第9章 绕过安全控制 237
9.1 绕过NAC 237
9.1.1 准入前NAC 238
9.1.2 准入后NAC 240
9.2 绕过应用程序级别的控制 240
9.3 绕过文件查杀 244
9.3.1 使用Veil框架 245
9.3.2 使用Shellter 250
9.4 无文件化和规避杀毒 252
9.5 绕过Windows操作系统控制 253
9.5.1 用户账户控制 253
9.5.2 混淆PowerShell和使用无文件
技术 257
9.5.3 其他Windows特有的操作系统
控制 260
9.6 总结 262
第10章 漏洞利用 263
10.1 Metasploit框架 263
10.1.1 函数库 263
10.1.2 界面 264
10.1.3 模块 265
10.1.4 数据库设置和配置 266
10.2 使用MSF对目标进行攻击 270
10.3 利用MSF资源文件对多个目标进行
攻击 274
10.4 使用公开的漏洞 275
10.4.1 找到并验证公开可用的漏洞 275
10.4.2 编译和使用漏洞 276
10.5 开发一个Windows漏洞利用 278
10.5.1 通过模糊测试识别漏洞 279
10.5.2 调试和复现崩溃的情况 281
10.5.3 控制应用程序的执行 283
10.5.4 识别正确的坏字符并生成shellcode 285
10.5.5 获取Shell 286
10.6 PowerShell Empire框架 288
10.7 总结 290
第11章 目标达成和横向移动 292
11.1 在被入侵的本地系统上活动 292
11.1.1 对被入侵的系统进行快速
侦察 293
11.1.2 寻找并获取敏感数据—掠夺
目标 294
11.1.3 后渗透工具 296
11.2 横向升级和横向移动 302
11.2.1 破坏域信任和共享 303
11.2.2 PsExec、WMIC和其他
工具 305
11.2.3 使用服务的横向移动 309
11.2.4 跳板和端口转发 310
11.3 总结 312
第12章 权限提升 313
12.1 常见权限提升方法 313
12.2 从域用户提升到系统管理员权限 314
12.3 本地权限提升 316
12.4 从管理员提升到系统级别权限 317
12.5 凭证收集和权限提升攻击 320
12.5.1 密码嗅探器 320
12.5.2 Responder 322
12.5.3 对基于TLS的LDAP进行中间
人攻击 324
12.6 活动目录中访问权限的提升 329
12.7 入侵Kerberos—黄金票据攻击 333
12.8 总结 338
第13章 命令与控制 339
13.1 持久化 339
13.2 使用持久化代理 340
13.2.1 使用Netcat作为持久化
代理 340
13.2.2 使用schtasks配置持久化
任务 343
13.2.3 使用Metasploit框架维护
持久化 345
13.2.4 使用Metasploit创建独立的
持久化代理 346
13.2.5 使用在线文件存储云服务进行
持久化 347
13.3 域前置 356
13.4 数据渗出 361
13.4.1 使用现有系统服务(Telnet、RDP和VNC) 361
13.4.2 使用ICMP 362
13.4.3 隐藏攻击的证据 363
13.5 总结 365
第14章 嵌入式设备与RFID攻击 366
14.1 嵌入式系统和硬件架构 366
14.2 固件解包和更新 369
14.3 RouterSploit框架概述 372
14.4 UART 375
14.5 使用ChameleonMini复制RFID 377
14.6 总结 382