网络扫描技术揭秘:原理、实践与扫描器的实现

网络扫描技术揭秘:原理、实践与扫描器的实现

查阅电子书
手机扫码
  • 微信扫一扫

    关注微信公众号

因版权原因待上架

编辑推荐

本书概述了网络扫描技术的概念、原理和分类,并用实例讲解了几种扫描器的设计方法和使用场景。

内容简介

网络扫描技术是一种针对Internet远程目标网络或本地主机进行判断的技术,该技术在主机安全性、漏洞的判断、服务发现、设备监控等领域都有具体的应用。本书概述了网络扫描技术的概念、原理和分类,并用实例讲解了几种扫描器的设计方法和使用场景,例如:TCP/UDP端口、NETBIOS、SNMP、应用服务、ICMP扫描器,最后还给出了防扫描器的研究成果。本书适合网络开发人员、安全技术人员参考,也适合所有想了解网路扫描技术的学生、教师以及安全技术爱好者。

作者简介

作者李瑞民,工学博士,高级工程师,资深网络安全专家兼高级系统架构师。多年来一直专注于网络设备监控与信号监控、计算机安全技术等领域的研究与应用,对计算机监控、设备监控、网络攻防、物联网等领域有深刻的认识。目前拥有发明专利、软件著作权8项,出版和翻译的书籍有《网络扫描技术揭秘》、《设备监控技术》、《HackingExposedWireless》等,发表专业核心论文数十篇。

章节目录

版权信息

前言

第1章 绪论

1.1 网络安全的概念

1.2 网络扫描的概念

1.2.1 服务和端口

1.2.2 网络扫描

1.3 网络扫描原理概述

1.4 扫描编程与客户端编程的区别

1.5 网络扫描的目的

1.6 网络扫描算法

1.6.1 非顺序扫描

1.6.2 高速扫描

1.6.3 分布式扫描

1.6.4 服务扫描

1.6.5 指纹识别算法

1.6.6 漏洞扫描

1.6.7 间接扫描

1.6.8 秘密扫描

1.6.9 认证扫描

1.6.10 代理扫描

1.6.11 手工扫描

1.6.12 被动扫描

1.7 网络扫描器的分类

1.8 网络扫描技术的发展史

1.8.1 手工扫描阶段

1.8.2 使用通用扫描器阶段

1.8.3 设计专用扫描器阶段

1.9 扫描器的限制

1.10 当前网络常见的漏洞

1.10.1 DOS和DDOS

1.10.2 缓冲区溢出

1.10.3 注入式攻击

1.10.4 明文传输

1.10.5 简单密码

第2章 网络协议和网络编程例程

2.1 常用的网络编程

2.1.1 TCP/IP协议编程

2.1.1.1 几个重要的概念

2.1.1.2 Windows Socket结构

2.1.1.3 Windows socket转换类函数

2.1.1.4 Windows Socket通信类函数

2.1.1.5 原始套接字

2.1.2 NetBIOS/NetBEUI协议编程

2.1.2.1 NetBIOS开发简介

2.1.2.2 NetBIOS的调用

2.1.3 Win Inet高层编程

2.1.4 命名管道和邮槽高层编程

2.2 扫描器中公用编程示例

2.2.1 CTreeCtrl控件的应用

2.2.2 CListCtrl控件的应用

2.2.3 INI文件的操作

2.2.4 数据库ADO的简单应用

2.2.4.1 ADO初始化

2.2.4.2 建立数据库连接

2.2.4.3 进行数据读写

2.2.5 IP格式的互换

2.2.6 Windows操作系统类型的判断

2.2.7 多线程的局限性和使用方式

2.2.8 VC++下Windows Socket的使用

2.2.8.1 CSocket的应用

2.2.8.2 Socket2的应用

2.2.8.3 CSocket和Socket2同时使用

2.2.9 网卡的混杂模式

2.2.9.1 混杂模式简介

2.2.9.2 混杂模式的意义

2.3 嵌入外部程序

2.3.1 可执行外部程序的几个函数

2.3.1.1 调用system函数

2.3.1.2 调用WinExec函数

2.3.1.3 调用ShellExecute函数和ShellExecuteEx函数

2.3.1.4 调用CreateProcess函数

2.3.2 编程实例:使用重定向接收外部程序运行结果

2.3.2.1 重定向技术

2.3.2.2 程序主界面

2.3.2.3 程序原理

2.3.2.4 程序代码

2.3.3 编程实例:使用管道接收外部程序运行结果

2.3.3.1 管道技术

2.3.3.2 程序主界面

2.3.3.3 程序代码

第3章 TCP/UDP端口扫描器的设计

3.1 端口扫描的概念

3.1.1 端口的概念

3.1.2 端口扫描原理

3.2 端口扫描技术

3.2.1 网络通信实例分析

3.2.1.1 IP包头数据格式

3.2.1.2 TCP包头数据格式及通信实例

3.2.1.3 UDP包头数据格式及通信实例

3.2.2 TCP扫描

3.2.2.1 TCP connect扫描

3.2.2.2 TCP SYN扫描

3.2.2.3 TCP ACK扫描

3.2.2.4 TCP NULL扫描

3.2.2.5 TCP FIN+URG+PSH扫描

3.2.2.6 TCP FIN扫描

3.2.2.7 TCP反向Ident扫描

3.2.3 UDP扫描

3.2.3.1 普通UDP扫描

3.2.3.2 UDP recvfrom和write扫描

3.2.3.3 高级UDP扫描技术

3.3 手工扫描

3.3.1 检测单主机单端口开与否

3.3.2 检测单主机单端口是否有相应服务

3.3.2.1 端口21

3.3.2.2 端口23

3.3.2.3 端口80

3.3.2.4 端口137、138、139、445

3.3.3 检测多主机或多端口

3.3.3.1 扫描本机正在使用的端口

3.3.3.2 扫描一段主机的特定端口

3.3.3.3 扫描某一指定主机的一段端口

3.3.3.4 扫描一个网段的所有端口

3.4 编程实例:TCP端口扫描器

3.4.1 程序主界面

3.4.2 程序代码

3.4.2.1 CSocket的connect扫描

3.4.2.2 Socket2的connect扫描

3.4.2.3 TCP SYN扫描

3.5 编程实例:UDP端口扫描器

3.5.1 程序主界面

3.5.2 程序代码

第4章 NetBIOS扫描器的设计

4.1 NetBIOS协议的使用

4.1.1 查看和修改NetBIOS配置

4.1.2 查看NetBIOS配置的命令

4.2 IP和主机名的互换

4.2.1 主机名转IP地址

4.2.2 IP地址转主机名

4.3 MAC地址的读取

4.4 本地域名、子网掩码、网卡类型的读取

4.5 用户名、共享目录、组列表的读取

4.5.1 Unicode编程与ANSI之间的互换

4.5.1.1 MultiByteToWideChar函数

4.5.1.2 WideCharToMultiByte函数

4.5.2 用户名列表的读取

4.5.2.1 USER_INFO_0结构

4.5.2.2 USER_INFO_1结构

4.5.2.3 USER_INFO_2结构

4.5.2.4 USER_INFO_3结构

4.5.2.5 USER_INFO_10结构

4.5.2.6 USER_INFO_11结构

4.5.2.7 USER_INFO_20结构

4.5.2.8 PBYTE结构与实际日期的换算公式

4.5.2.9 NetUserEnum函数使用注意事项

4.5.3 共享目录的读取

4.5.3.1 SHARE_INFO_0结构

4.5.3.2 SHARE_INFO_1结构

4.5.3.3 SHARE_INFO_2结构

4.5.3.4 SHARE_INFO_502结构

4.5.3.5 share_info_1结构

4.5.3.6 share_info_50结构

4.5.4 组列表的读取

4.5.4.1 GROUP_INFO_0结构

4.5.4.2 GROUP_INFO_1结构

4.5.4.3 GROUP_INFO_2结构

4.5.5 远端主机时间的读取

4.5.6 远端服务支持类型的读取

4.5.7 主机信息的读取

4.5.7.1 NET_DISPLAY_USER结构

4.5.7.2 NET_DISPLAY_MACHINE结构

4.5.7.3 NET_DISPLAY_GROUP结构

4.6 NetBIOS的安全性

4.7 编程实例:反“IP欺骗”——MAC地址扫描器的设计

4.7.1 反“IP欺骗”的原理

4.7.2 MAC地址扫描器的主界面

4.7.3 程序代码

4.8 编程实例:NetBIOS的通用扫描器

4.8.1 程序主界面

4.8.2 程序代码

第5章 SNMP扫描器的设计

5.1 SNMP协议

5.1.1 管理信息结构

5.1.2 管理信息库

5.1.2.1 MIB树

5.1.2.2 MIB对象

5.1.2.3 OID值

5.1.2.4 OID全局图

5.1.3 通信协议

5.1.3.1 命令

5.1.3.2 共同体(community)

5.1.3.3 SNMP版本

5.2 SNMP的API

5.2.1 数据类型和常用结构

5.2.1.1 数据类型

5.2.1.2 AsnAny结构

5.2.1.3 RFC1157VarBind结构

5.2.1.4 RFC1157VarBindList结构

5.2.2 管理程序API

5.2.2.1 SnmpMgrOpen函数

5.2.2.2 SnmpMgrClose函数

5.2.2.3 SnmpMgrRequest函数

5.2.2.4 SnmpMgrStrToOid函数

5.2.2.5 SnmpMgrOidToStr函数

5.2.2.6 SnmpMgrTrapListen函数

5.2.2.7 SnmpMgrGetTrap函数

5.2.2.8 SnmpUtilOidCpy函数

5.2.2.9 SnmpUtilOidAppend函数

5.2.2.10 SnmpUtilOidNCmp函数

5.2.2.11 SnmpUtilOidCmp函数

5.2.2.12 SnmpUtilOidFree函数

5.2.2.13 SnmpUtilVarBindListCpy函数

5.2.2.14 SnmpUtilVarBindCpy函数

5.2.2.15 SnmpUtilVarBindListFree函数

5.2.2.16 SnmpUtilVarBindFree函数

5.2.2.17 SnmpUtilPrintAsnAny函数

5.3 SNMP安装和验证

5.4 编程实例:SNMP通用读设工具

5.4.1 程序主界面

5.4.2 程序代码

5.5 编程实例:基于SNMP的主机扫描器

5.5.1 程序主界面

5.5.2 程序代码

第6章 ICMP扫描器的设计

6.1 ICMP协议简介

6.2 ping与tracert命令简介

6.2.1 ping程序使用

6.2.1.1 Windows下ping程序的用法

6.2.1.2 通过TTL值判断对方操作系统的简易方法

6.2.2 tracert程序使用

6.3 ICMP通信实例分析

6.4 ICMP协议内容

6.4.1 目的不可达消息

6.4.2 超时消息

6.4.3 参数问题消息

6.4.4 源拥塞消息

6.4.5 重定向消息

6.4.6 回送请求或回送响应消息

6.4.7 时间戳请求和时间戳响应消息

6.4.8 信息请求或信息响应消息

6.5 ICMP扫描的安全性

6.6 编程实例:快速多IP的ICMP扫描器

6.6.1 程序主界面

6.6.2 程序原理

6.6.3 程序代码

第7章 基于协议的服务扫描器的设计

7.1 WWW服务扫描

7.1.1 WWW服务器架构

7.1.1.1 超文本格式和HTML

7.1.1.2 发布方式

7.1.1.3 HTTP协议

7.1.2 协议消息格式

7.1.2.1 起始行

7.1.2.2 头域

7.1.2.3 空行和实体

7.1.2.4 通信实例

7.1.3 WWW服务器的安装与配置

7.2 编程实例:WWW服务扫描器

7.2.1 扫描原理

7.2.2 程序主界面

7.2.3 程序代码

7.3 FTP服务扫描

7.3.1 FTP简介

7.3.2 FTP服务器的安装与配置

7.4 编程实例:FTP服务扫描器

7.4.1 程序主界面

7.4.2 程序代码

7.5 Telnet服务扫描

7.5.1 Telnet协议简介

7.5.1.1 协议的命令

7.5.1.2 客户端的命令

7.5.2 Telnet的安装与配置

7.6 编程实例:Telnet服务扫描器

7.6.1 程序主界面

7.6.2 程序代码

7.7 Email服务扫描

7.7.1 电子邮件协议简介

7.7.1.1 SMTP协议

7.7.1.2 POP协议

7.7.1.3 IMAP协议

7.7.2 电子邮件服务器的安装与配置

7.8 编程实例:Email服务扫描器

7.8.1 程序主界面

7.8.2 程序代码

第8章 基于应用的服务扫描器的设计

8.1 Win Inet编程接口

8.1.1 CInternetSession类

8.1.1.1 CInternetSession构造函数

8.1.1.2 AfxParseURL函数和AfxParseURLEx函数

8.1.1.3 OpenURL方法

8.1.1.4 GetConnection方法

8.1.1.5 GetHttpConnection方法

8.1.1.6 GetFtpConnection方法

8.1.1.7 QueryOption方法

8.1.1.8 SetOption方法

8.1.1.9 GetCookie方法

8.1.1.10 SetCookie方法

8.1.1.11 Close方法

8.1.2 CInternetConnection类

8.1.2.1 GetSession方法

8.1.2.2 GetServerName方法

8.1.2.3 GetContext方法

8.1.3 CHttpConnection类

8.1.4 CFtpConnection类

8.1.4.1 GetCurrentDirectory方法

8.1.4.2 SetCurrentDirectory方法

8.1.4.3 CreateDirectory方法

8.1.4.4 RemoveDirectory方法

8.1.4.5 Rename方法

8.1.4.6 Remove方法

8.1.4.7 GetFile方法

8.1.4.8 PutFile方法

8.1.4.9 OpenFile方法

8.1.4.10 Close方法

8.1.5 CInternetFile类

8.1.5.1 Read方法

8.1.5.2 Write方法

8.1.5.3 ReadString方法

8.1.5.4 WriteString方法

8.1.5.5 Seek方法

8.1.5.6 Flush方法

8.1.5.7 Close方法

8.1.6 CInternetException类

8.2 编程实例:基于应用的WWW服务扫描器

8.3 编程实例:基于应用的FTP服务扫描器

8.4 网络资源协议

8.4.1 NETRESOURCE结构

8.4.2 WNetOpenEnum函数

8.4.3 WNetEnumResource函数

8.4.4 WNetCloseEnum函数

8.5 编程实例:网络资源扫描器

8.5.1 程序主界面

8.5.2 程序代码

第9章 命名管道扫描器的设计

9.1 命名管道

9.2 命名管道API

9.2.1 命名管道的UNC格式

9.2.2 命名管道编程的API

9.2.2.1 CreateNamedPipe函数

9.2.2.2 WaitNamedPipe函数

9.2.2.3 ConnectNamedPipe函数

9.2.2.4 DisconnectNamedPipe函数

9.2.2.5 CreateFile函数

9.2.2.6 OpenFile函数

9.2.2.7 ReadFile函数

9.2.2.8 WriteFile函数

9.2.2.9 CloseHandle函数

9.3 命名管道编程示例

9.3.1 命名管道服务器端

9.3.2 命名管道客户端

9.4 邮槽

9.4.1 邮槽的UNC格式

9.4.2 邮槽编程的API

9.4.2.1 CreateMailSlot函数

9.4.2.2 GetMailSlotInfo函数

9.4.2.3 SetMailSlotInfo函数

9.5 邮槽编程示例

9.5.1 邮槽服务器端编程

9.5.2 邮槽客户端编程

9.6 编程实例:SQL Server命名管道扫描器的设计

9.6.1 Microsoft SQL Server简介

9.6.2 程序主界面

9.6.3 程序代码

第10章 服务发现扫描器的设计

10.1 服务发现简介

10.2 UPnP协议

10.2.1 寻址

10.2.2 发现

10.2.3 描述

10.2.4 控制

10.2.5 事件

10.2.6 展示

10.3 XML协议

10.4 SSDP协议分析实例

10.4.1 设备类型

10.4.2 协议消息格式

10.4.2.1 设备端:设备在线

10.4.2.2 设备端:设备退出

10.4.2.3 控制点端:发现请求

10.4.2.4 设备端:发现回复

10.5 编程实例:服务发现扫描器

10.5.1 程序主界面

10.5.2 程序代码

第11章 漏洞扫描器的设计

11.1 注入式漏洞扫描器

11.1.1 SQL注入式攻击原理

11.1.2 注入式攻击的局限性

11.1.3 单机模式或C/S模式的攻击

11.1.4 B/S模式下扫描程序设计

11.2 主机弱密码扫描

11.2.1 网络连接的API

11.2.1.1 WNetAddConnection函数

11.2.1.2 WNetCancelConnection函数

11.2.1.3 WNetAddConnection2函数

11.2.1.4 WNetCancelConnection2函数

11.2.1.5 WNetAddConnection3函数

11.2.2 密码穷举分析

11.2.3 程序主界面

11.2.4 程序代码

11.3 DOS/DDOS攻击

11.3.1 程序主界面

11.3.2 程序代码

11.4 明文密码嗅探

11.4.1 程序主界面

11.4.2 程序代码

11.5 端口对照

11.5.1 程序主界面

11.5.2 程序代码

第12章 扫描防范技术的研究

12.1 更换端口

12.2 预留陷阱技术

12.3 基于哨兵的端口扫描监测

12.3.1 程序主界面

12.3.2 程序代码

12.4 基于嗅探的端口扫描监测及DDOS拒绝服务监测

12.4.1 程序主界面

12.4.2 程序代码

12.5 实时监测本地所有TCP/UDP连接及端口

12.5.1 程序主界面

12.5.2 结构与函数API

12.5.2.1 GetTcpTable函数

12.5.2.2 GetUdpTable函数

12.5.2.3 GetTcpEntry函数

12.5.3 程序代码

12.6 如何关闭端口

12.6.1 FTP端口

12.6.2 WWW端口

12.6.3 Telnet端口

12.6.4 NetBIOS端口

附录A 本书容易混淆概念解析

A.1 同名不同义概念

A.2 同义不同名概念

A.3 易混概念

附录B Windows Socket错误返回码

附录C Win Inet错误返回码

附录D HTTP错误返回码

参考文献

后记

光盘内容

网络扫描技术揭秘:原理、实践与扫描器的实现是2012年由机械工业出版社华章分社出版,作者李瑞民。

得书感谢您对《网络扫描技术揭秘:原理、实践与扫描器的实现》关注和支持,如本书内容有不良信息或侵权等情形的,请联系本网站。

购买这本书

你可能喜欢
软件定义网络核心原理与应用实践 电子书
本书分为核心原理和应用实践两大部分,对软件定义网络(SDN)技术进行了全面剖析和深入解读。第一部分首先阐述了SDN的设计思想与体系架构,详细分析了软件定义网络的控制转发分离和可编程性两个突出属性,其次介绍了以OpenFlow为代表的SDN南向接口协议,以及北向和东向接U协议,接下来根据SDN的层次化架构,依次介绍了SDN数据平面、控制平面以及SDN应用案例,最后梳理总结J,SDN标准化进展以及学术
网络空间测绘—原理、技术与应用 电子书
本书全面介绍了网络空间测绘领域中的主要理论、技术体系和应用问题,围绕网络空间测绘技术体系中的资源探测层、资源表示层、映射与定位层、绘制与可视化层等关键研究内容展开,具体包括网络空间表达模型与资源描述、网络空间资源探测及服务发现与识别、网络空间实体连接关系与网络拓扑发现、IP地理定位、网络空间测绘可视化以及网络空间测绘应用等,此外本书还专门介绍了面向IPV6的网络空间测绘的初步研究成果及面临的挑战。
MarTech 营销技术:原理、策略与实践 电子书
本书共分十章,内容包括:营销技术(MarTech)概述、营销技术顶层架构完全解析、营销自动化、营销数据中台、营销测量、程序化广告、第三方数据服务、营销人工智能、基于社交媒体的客户关系管理系统。
Flink内核原理与实现 电子书
《Flink内核原理与实现》既讲解了Flink的入门、安装、流计算开发入门、类型和序列化系统、监控运维、安全管理配置等基础知识,又讲解了Flink的时间概念、Window的实现原理及其代码解析,Flink的容错机制原理,Flink容错的关键设计、代码实现分析,FlinkJob从源码到执行整个过程的解析,FlinkJob的调度策略、资源管理策略、内存管理、数据交换的关键设计和代码实现分析,Flink
vBRAS原理、实现与部署 电子书
本书介绍了BRAS的技术背景和传统BRAS的基本原理,从而介绍vBRAS的基本原理和相关关键技术,包括SDN、NFV、云计算使能技术,软、硬件加速技术,以及主要的接口协议和开源控制器。探讨了vBRAS设备实现、主要应用场景以及vBRAS的组网技术和组网模式,最后列举了基于OpenBRAS开源社区的vBRAS开源情况。