Nmap是目前非常受关注的网络安全审计技术工具,是绝大多数从事网络安全人员的必备工具。本书由一线网络安全教师亲笔撰写,凝聚了作者多年教学与实践开发经验,内容涉及网络安全审计的作用、价值、方法论,Nmap在网络安全管理方面的方法与应用,以及Nmap强大的脚本编写功能等。本书内容并不局限于某个具体功能的使用,而是系统深入地结合Nmap与网络审计原理进行讲解,帮助网络安全人员深入了解使用Nmap进行网络安全审计的相关技术。本书讲解的内容通俗易懂、深入浅出,特别是书中所用示例的设计,它们不仅可以让读者理解某个知识点的用法,更能让读者明白具体知识点所使用的场景,从而更深入地理解具体内容。 本书内容安排合理,架构清晰,注意理论与实践相结合,适合那些希望学习Nmap进行网络安全审计的网络安全渗透测试人员、运维工程师、网络管理人员、网络安全设备设计人员、网络安全软件开发人员、安全课程培训人员、高校网络安全专业方向的学生等阅读。
Nmap是目前非常受关注的网络安全审计技术工具,是绝大多数从事网络安全人员的必备工具。本书由一线网络安全教师亲笔撰写,凝聚了作者多年教学与实践开发经验,内容涉及网络安全审计的作用、价值、方法论,Nmap在网络安全管理方面的方法与应用,以及Nmap强大的脚本编写功能等。本书内容并不局限于某个具体功能的使用,而是系统深入地结合Nmap与网络审计原理进行讲解,帮助网络安全人员深入了解使用Nmap进行网络安全审计的相关技术。本书讲解的内容通俗易懂、深入浅出,特别是书中所用示例的设计,它们不仅可以让读者理解某个知识点的用法,更能让读者明白具体知识点所使用的场景,从而更深入地理解具体内容。本书内容安排合理,架构清晰,注意理论与实践相结合,适合那些希望学习Nmap进行网络安全审计的网络安全渗透测试人员、运维工程师、网络管理人员、网络安全设备设计人员、网络安全软件开发人员、安全课程培训人员、高校网络安全专业方向的学生等阅读。
第1章 走近Nmap 11.1 Nmap简介 21.2 Nmap的下载与安装 31.2.1 在Windows系统下安装与下载Nmap 31.2.2 在Linux系统下安装Nmap 61.3 Nmap的基本操作 61.4 扫描范围的确定 71.4.1 对连续范围内的主机进行扫描 71.4.2 对整个子网进行扫描 81.4.3 对多个不连续的主机进行扫描 81.4.4 在扫描的时候排除指定的目标 91.4.5 对一个文本文件中的地址列表进行扫描 91.4.6 随机确定扫描目标 10小结 10第2章 活跃主机发现技术 112.1 活跃主机发现技术简介 122.2 网络协议与主机发现技术 122.3 基于ARP协议的活跃主机发现技术 142.3.1 ARP协议解析 142.3.2 在Nmap中使用ARP协议进行主机发现 162.4 基于ICMP协议的活跃主机发现技术 182.4.1 ICMP协议解析 182.4.2 使用ICMP协议进行主机发现 192.5 基于TCP协议的活跃主机发现技术 222.5.1 TCP协议解析 222.5.2 使用TCP协议进行主机发现 232.6 基于UDP协议的活跃主机发现技术 292.6.1 UDP协议解析 292.6.2 使用UDP协议进行主机发现 302.7 基于SCTP协议的活跃主机发现技术 312.7.1 SCTP协议解析 312.7.2 使用SCTP协议进行主机发现 312.8 使用IP协议进行主机地址发现 322.9 Nmap活跃主机发现中与DNS协议相关的选项 332.9.1 DNS协议解析 332.9.2 Nmap中的DNS选项 342.10 主机发现技术的分析 36小结 38第3章 端口扫描技术 393.1 端口的概念 393.2 端口的分类 403.3 Nmap中对端口状态的定义 413.4 Nmap中的各种端口扫描技术 413.4.1 SYN扫描 423.4.2 Connect扫描 433.4.3 UDP扫描 433.4.4 TCP FIN扫描 443.4.5 NULL扫描 443.4.6 Xmas Tree扫描 453.4.7 idle扫描 453.5 指定扫描的端口 46小结 48第4章 远程操作系统与服务检测技术 494.1 远程操作系统检测简介 504.2 操作系统指纹简介 514.3 操作系统指纹扫描作为管理工具 524.4 为什么要进行服务发现 574.5 如何使用Nmap进行服务发现 60小结 62第5章 Nmap的图形化操作工具—Zenmap 635.1 Zenmap简介 635.2 启动Zenmap 645.3 Zenmap扫描操作 685.4 使用Zenmap的命令向导来创建命令 695.5 对Zenmap的配置进行管理 755.6 对Zenmap扫描的结果进行管理和比较 765.7 Zenmap中的拓扑功能 82小结 83第6章 Nmap的高级技术与防御措施 846.1 Nmap的伪装技术 846.2 TCP Connect扫描的检测 936.3 操作系统扫描的防范 966.4 Nmap的格式化输出 96小结 100第7章 NSE的基础部分 1017.1 NSE脚本的运行 1027.1.1 NSE中脚本的分类 1027.1.2 NSE脚本的选择 1037.2 如何向NSE脚本传递参数 1057.2.1 NSE中传递参数的方式 1057.2.2 从文件中载入脚本的参数 1067.2.3 NSE脚本调试 1077.4 NSE常见脚本的应用 1097.4.1 信息收集类脚本 1097.4.2 高级主机发现类脚本 1117.4.3 密码审计类脚本 1127.4.4 漏洞扫描类脚本 114小结 116第8章 NSE的编写基础 1178.1 NSE脚本的基本格式 1178.2 NSE脚本的规则 1188.3 NSE开发环境的设置 1198.4 编写简单的NSE脚本 1238.5 实例应用:垃圾邮件木马的检测 127小结 128第9章 Lua语言 1299.1 Lua的编程环境 1309.1.1 在Windows系统上安装Lua编程环境 1309.1.2 在Linux系统上安装Lua编程环境 1309.2 及时个Lua程序 1319.3 Lua流程控制 1329.4 Lua中的循环结构 1339.5 Lua数据类型 1359.6 Lua字符串 1369.7 Lua文件I/O操作 1429.8 Lua协同程序 1449.8.1 什么是协同程序 1449.8.2 线程和协同程序的区别 1449.8.3 coroutine基本语法 1449.9 Lua语言中的注释和虚变量 1459.9.1 Lua语言中的注释说明 1459.9.2 Lua语言中的虚变量 145小结 146第10章 NSE中的API 14710.1 Nmap API 14710.1.1 host table 14810.1.2 port table 15410.2 NSE中的异常处理 15710.3 NSE中的注册表 159小结 159第11章 NSE中的库文件 16011.1 NSE库文件的编写 16111.2 扩展一个现有NSE库文件的功能 16311.3 使用C/C 编写的NSE模块 16811.4 常见的NSE库文件 17011.4.1 shortport 17011.4.2 http 17311.4.3 stdNSE 17611.4.4 OpenSSL 17611.4.5 target 17711.4.6 creds 17711.4.7 vluns 177小结 178第12章 对服务发现功能进行增强 17912.1 NSE中的服务发现模式 17912.1.1 服务发现的过程 18012.1.2 调整版本扫描的级别 18012.1.3 更新版本侦测探针数据库 18112.1.4 从版本检测中排除指定端口 18112.1.5 post-processors简介 18212.2 自定义版本检测脚本 18212.2.1 将脚本的分类定义为version检测 18212.2.2 定义版本检测脚本的portrule 18212.2.3 更新端口服务版本信息 18312.3 服务发现脚本的实例 18412.3.1 modbus-discover 18412.3.2 ventrilo-info 18512.3.3 rpc-grind 187小结 188第13章 NSE中的数据文件 18913.1 Nmap中数据文件所在的位置 19013.2 Nmap中选择数据文件的顺序 19013.3 暴力穷举时所使用的用户名和密码列表数据文件 19013.3.1 用户名数据文件 19013.3.2 密码数据文件 19113.4 Web应用审计数据文件 19113.4.1 http-fingerprints.lua 19113.4.2 http-sql-errors.lst 19213.4.3 http-web-files-extensions.lst 19213.4.4 http-devframework-fingerprints.lua 19313.4.5 http-folders.txt 19313.4.6 vhosts-default.lst 19413.4.7 wp-plugins.lst 19413.5 DBMS-auditing数据文件 19513.5.1 mysql-cis.audit 19513.5.2 oracle-default-accounts.lst 19613.5.3 oracle-sids 196小结 197第14章 密码审计脚本的开发 19814.1 使用NSE库进行工作 19914.1.1 NSE中brute模式的设定 19914.1.2 NSE中Driver类的实现 20014.1.3 NSE中库文件和用户选项的传递 20214.1.4 NSE中通过Account对象返回有效的账户 20314.1.5 NSE中使用Error类来处理异常 20414.2 使用unpwdb NSE库读取用户名和密码信息 20414.3 对扫描中得到的用户凭证进行管理 20514.4 针对FTP的密码审计脚本 20514.5 针对MikroTik RouterOS API的密码审计脚本 208小结 212第15章 漏洞审计与渗透脚本的编写 21315.1 Nmap中的漏洞扫描功能 21315.2 NSE中的exploit脚本 21515.3 RealVNC的渗透脚本 21715.4 Windows系统漏洞的检测 21815.5 对heartbleed漏洞进行渗透 22015.6 vulns库中的漏洞功能 224小结 227第16章 NSE的并发执行 22816.1 Nmap中的并发执行 22816.2 Nmap中的时序模式 22916.3 Lua中的并发执行 23016.4 NSE中的并发执行 23516.4.1 NSE中的线程 23616.4.2 NSE中的条件变量 23616.4.3 NSE中的互斥变量 238小结 239