图书目录

第1章 走近Nmap      1

1.1 Nmap简介      2

1.2 Nmap的下载与安装      3

1.2.1 在Windows系统下安装与下载Nmap      3

1.2.2 在Linux系统下安装Nmap      6

1.3 Nmap的基本操作      6

1.4 扫描范围的确定      7

1.4.1 对连续范围内的主机进行扫描      7

1.4.2 对整个子网进行扫描      8

1.4.3 对多个不连续的主机进行扫描      8

1.4.4 在扫描的时候排除指定的目标      9

1.4.5 对一个文本文件中的地址列表进行扫描      9

1.4.6 随机确定扫描目标      10

小结      10

第2章 活跃主机发现技术      11

2.1 活跃主机发现技术简介      12

2.2 网络协议与主机发现技术      12

2.3 基于ARP协议的活跃主机发现技术      14

2.3.1 ARP协议解析      14

2.3.2 在Nmap中使用ARP协议进行主机发现      16

2.4  基于ICMP协议的活跃主机发现技术      18

2.4.1 ICMP协议解析      18

2.4.2 使用ICMP协议进行主机发现      19

2.5 基于TCP协议的活跃主机发现技术      22

2.5.1 TCP协议解析      22

2.5.2 使用TCP协议进行主机发现      23

2.6 基于UDP协议的活跃主机发现技术      29

2.6.1 UDP协议解析      29

2.6.2 使用UDP协议进行主机发现      30

2.7 基于SCTP协议的活跃主机发现技术      31

2.7.1 SCTP协议解析      31

2.7.2 使用SCTP协议进行主机发现      31

2.8 使用IP协议进行主机地址发现      32

2.9 Nmap活跃主机发现中与DNS协议相关的选项      33

2.9.1 DNS协议解析      33

2.9.2 Nmap中的DNS选项      34

2.10 主机发现技术的分析      36

小结      38

第3章 端口扫描技术      39

3.1 端口的概念      39

3.2 端口的分类      40

3.3 Nmap中对端口状态的定义      41

3.4 Nmap中的各种端口扫描技术      41

3.4.1 SYN扫描      42

3.4.2 Connect扫描      43

3.4.3 UDP扫描      43

3.4.4 TCP FIN扫描      44

3.4.5 NULL扫描      44

3.4.6 Xmas Tree扫描      45

3.4.7 idle扫描      45

3.5 指定扫描的端口      46

小结      48

第4章 远程操作系统与服务检测技术      49

4.1 远程操作系统检测简介      50

4.2 操作系统指纹简介      51

4.3 操作系统指纹扫描作为管理工具      52

4.4 为什么要进行服务发现      57

4.5 如何使用Nmap进行服务发现      60

小结      62

第5章 Nmap的图形化操作工具—Zenmap      63

5.1 Zenmap简介      63

5.2 启动Zenmap      64

5.3 Zenmap扫描操作      68

5.4 使用Zenmap的命令向导来创建命令      69

5.5 对Zenmap的配置进行管理      75

5.6 对Zenmap扫描的结果进行管理和比较      76

5.7 Zenmap中的拓扑功能      82

小结      83

第6章 Nmap的高级技术与防御措施      84

6.1 Nmap的伪装技术      84

6.2 TCP Connect扫描的检测      93

6.3 操作系统扫描的防范      96

6.4 Nmap的格式化输出      96

小结      100

第7章 NSE的基础部分      101

7.1 NSE脚本的运行      102

7.1.1 NSE中脚本的分类      102

7.1.2 NSE脚本的选择      103

7.2 如何向NSE脚本传递参数      105

7.2.1 NSE中传递参数的方式      105

7.2.2 从文件中载入脚本的参数      106

7.2.3 NSE脚本调试      107

7.4 NSE常见脚本的应用      109

7.4.1 信息收集类脚本      109

7.4.2 高级主机发现类脚本      111

7.4.3 密码审计类脚本      112

7.4.4 漏洞扫描类脚本      114

小结      116

第8章 NSE的编写基础      117

8.1 NSE脚本的基本格式      117

8.2 NSE脚本的规则      118

8.3 NSE开发环境的设置      119

8.4 编写简单的NSE脚本      123

8.5 实例应用:垃圾邮件木马的检测      127

小结      128

第9章 Lua语言      129

9.1 Lua的编程环境      130

9.1.1 在Windows系统上安装Lua编程环境      130

9.1.2 在Linux系统上安装Lua编程环境      130

9.2 第一个Lua程序      131

9.3 Lua流程控制      132

9.4 Lua中的循环结构      133

9.5 Lua数据类型      135

9.6 Lua字符串      136

9.7 Lua文件I/O操作      142

9.8 Lua协同程序      144

9.8.1 什么是协同程序      144

9.8.2 线程和协同程序的区别      144

9.8.3 coroutine基本语法      144

9.9 Lua语言中的注释和虚变量      145

9.9.1 Lua语言中的注释说明      145

9.9.2 Lua语言中的虚变量      145

小结      146

第10章 NSE中的API      147

10.1 Nmap API      147

10.1.1 host table      148

10.1.2 port table      154

10.2 NSE中的异常处理      157

10.3 NSE中的注册表      159

小结      159

第11章 NSE中的库文件      160

11.1 NSE库文件的编写      161

11.2 扩展一个现有NSE库文件的功能      163

11.3 使用C/C++编写的NSE模块      168

11.4 常见的NSE库文件      170

11.4.1 shortport      170

11.4.2 http      173

11.4.3 stdNSE      176

11.4.4 OpenSSL      176

11.4.5 target      177

11.4.6 creds      177

11.4.7 vluns      177

小结      178

第12章 对服务发现功能进行增强      179

12.1 NSE中的服务发现模式      179

12.1.1 服务发现的过程      180

12.1.2 调整版本扫描的级别      180

12.1.3 更新版本侦测探针数据库      181

12.1.4 从版本检测中排除指定端口      181

12.1.5 post-processors简介      182

12.2 自定义版本检测脚本      182

12.2.1 将脚本的分类定义为version检测      182

12.2.2 定义版本检测脚本的portrule      182

12.2.3 更新端口服务版本信息      183

12.3 服务发现脚本的实例      184

12.3.1 modbus-discover      184

12.3.2 ventrilo-info      185

12.3.3 rpc-grind      187

小结      188

第13章 NSE中的数据文件      189

13.1 Nmap中数据文件所在的位置      190

13.2 Nmap中选择数据文件的顺序      190

13.3 暴力穷举时所使用的用户名和密码列表数据文件      190

13.3.1 用户名数据文件      190

13.3.2 密码数据文件      191

13.4 Web应用审计数据文件      191

13.4.1 http-fingerprints.lua      191

13.4.2 http-sql-errors.lst      192

13.4.3 http-web-files-extensions.lst      192

13.4.4 http-devframework-fingerprints.lua      193

13.4.5 http-folders.txt      193

13.4.6 vhosts-default.lst      194

13.4.7 wp-plugins.lst      194

13.5 DBMS-auditing数据文件      195

13.5.1 mysql-cis.audit      195

13.5.2 oracle-default-accounts.lst      196

13.5.3 oracle-sids      196

小结      197

第14章 密码审计脚本的开发      198

14.1 使用NSE库进行工作      199

14.1.1 NSE中brute模式的设定      199

14.1.2 NSE中Driver类的实现      200

14.1.3 NSE中库文件和用户选项的传递      202

14.1.4 NSE中通过Account对象返回有效的账户      203

14.1.5 NSE中使用Error类来处理异常      204

14.2 使用unpwdb NSE库读取用户名和密码信息      204

14.3 对扫描中得到的用户凭证进行管理      205

14.4 针对FTP的密码审计脚本      205

14.5 针对MikroTik RouterOS API的密码审计脚本      208

小结      212

第15章 漏洞审计与渗透脚本的编写      213

15.1 Nmap中的漏洞扫描功能      213

15.2 NSE中的exploit脚本      215

15.3 RealVNC的渗透脚本      217

15.4 Windows系统漏洞的检测      218

15.5 对heartbleed漏洞进行渗透      220

15.6 vulns库中的漏洞功能      224

小结      227

第16章 NSE的并发执行      228

16.1 Nmap中的并发执行      228

16.2 Nmap中的时序模式      229

16.3 Lua中的并发执行      230

16.4 NSE中的并发执行      235

16.4.1 NSE中的线程      236

16.4.2 NSE中的条件变量      236

16.4.3 NSE中的互斥变量      238

小结      239