Nmap扫描原理与用法_第1页
Nmap扫描原理与用法_第2页
Nmap扫描原理与用法_第3页
Nmap扫描原理与用法_第4页
Nmap扫描原理与用法_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Nmap 扫描原理与用法 2012年6月16日 1 Nmap介绍 Nmap是一款开源免费的网络发现 Network Discovery Security Auditing 工具 软件名字 Nmap是 Network Mapper的简称 Nmap最初是由 Fyodor在 1997年开 始创建的 随后在开源社区众多的志愿者参与下 该工具逐渐成为最为流行安全必备工具之 一 最新版的 Nmap6 0在 2012年 5月 21日发布 详情请参见 www nmap org 一般情况下 Nmap用于列举网络主机清单 管理服 监控主机或服 状况 Nmap 可以检测目标机是否在线 端口开放情况 侦测运行的服 侦测操作系统与设备类型等信息 Nmap的优点 1 灵活 支持数十种不同的扫描方式 支持多种目标对象的扫描 2 强大 Nmap可以用于扫描互联网上大规模的计算机 3 可移植 支持主流操作系统 Windows Linux Unix Mac OS 等等 源码开放 方 便移植 4 简单 提供默认的操作能覆盖大部分 扫描 nmap A targetip 基本端口扫描 nmap targetip 全面的 5 自由 Nmap作为开源软件 在 GPL License的范围内可以自由的使用 6 文档丰富 Nmap官网提供了详细的文档描述 Nmap作者及其他安全专家编写了 多部 Nmap参考书籍 7 社区支持 Nmap背后有强大的社区团队支持 8 赞誉有 获得很多的奖 并在很多影视作 如黑客帝国 2 Die Hard4 等 9 流行 目 Nmap已经被成千上万的安全专家列为必备的工具之一 1 1 Zenmap Zenmap 是 Nmap 官方提供的图形界面 通常随 Nmap 的安装 Zenmap 是用 Python 语言编写而成的开源免费的图形界面 能够运行在不同操作系统平台上 Windows Linux Unix Mac OS等 Zenmap旨在为 nmap提供更方式 简 单常用的操作profile 用户扫描时选择 profile 即可 可以方便地比较不 同的扫描结果 提供网络拓扑结构 Network Topology 的图形显示 1 23 其中 Profile栏位 用于选择 Zenmap默认提供的 Profile 或 用户创建的 Profile Command栏位 用于显示选择 Profile对应的 Topology选 项卡 用于显示扫描与本机之间的拓扑结构 2 23 1 2 Nmap 1 主机发现 Host Discovery 2 端口扫描 Port Scanning 3 版本侦测 Version Detection 4 操作系统侦测 Operating System Detection 而这四项 又存在大致的依赖关系 通常情况下的顺序关系 但特殊应用另外 考虑 首先需要进行主机发现 随后确定端口状况 然后确定端口上运行具体应用程序与 版本信息 然后可以进行操作系统的侦测 而在四项基本 Nmap提供防火墙 与 IDS Intrusion Detection System 入侵检测系统 的规避技巧 可以综合应用 另外 Nmap提供强大的 NSE Nmap Scripting Language 脚本引擎本 能 脚本可以对基本 3 23 2Nmap基本扫描方法 Nmap主要扫描 主机发现 端口扫描 应用与版本侦测 操作系 统侦测 在详细讲解每个具体 首先可以看看 Nmap的典型用法 2 1 用法引入 2 1 1 确定端口状况 如果直接针对某台计算的 IP地址或域名进行扫描 那么 Nmap对该主机进行主机发现 该方式执行迅速 可以用于确定端口的开放状况 形式 过程 nmap targethost 可以确定目标主机在线情况及端口基本状况 2 1 2 完整全面的扫描 如果希望对某台主机进行完整全面的扫描 那么可以使用 nmap 内置的 A 选项 使用 了改选项 nmap对目标主机进行主机发现 端口扫描 应用程序与版本侦测 操作系统侦 测及调用默认 NSE脚本扫描 nmap T4 A v targethost 4 23 其中 A 选项用于使用进攻性 Aggressive 方式扫描 T4 指定扫描过程使用的时序 Timing 总有 6个级别 0 5 级别越高 扫描速度越快 但也容易被防火墙或 IDS检 测并屏蔽掉 在网络通讯状况良好的情况推荐使用 T4 v表示显示冗余 verbosity 信息 在扫描过程中显示扫描的细节 从而让用户了解当 的扫描状态 例如 扫描局域网内地址为 192 168 1 100的电脑 显而易见 扫描出的信息非常丰富 在对192 168 1 100的扫描报 端口扫描出的结果 有 996个关闭端口 4个开放端口 在未指定扫描端口时 Nmap默认 扫描 1000 个最有可能开放的端口 而版本侦测针对扫描 OS侦测对该目标主机的设备类型与操作系统进行探测 中 以红框圈出 可以看 主机发现的结果 Host is up 探测端口上 运行的具体的应用程序 而绿色框图是 nmap调用 NSE脚本进行进一步的信息挖掘的显示结果 2 2主机发现 主机发现 Host Discovery 即用于发现目标主机是否在线 Alive 处于开 2 2 1 主机发现原理 主机发现发现的原理与 Ping类似 发送探测 如果收 那么 说明目标主机是开 Nmap 支持十多种不同的主机探测方式 比如发送 ICMP 5 23 ECHO TIMESTAMP NETMASK 报 文 发 送 TCP SYN ACK INIT COOKIE ECHO SCTP 目标机 主机发现基本原理 以 ICMP echo方式为例 Nmap的用户位于源端 IP地址 192 168 0 5 向目标主机 192 168 0 3发送 ICMP Echo Request 如果该请求报文没有被防火墙拦截掉 那么目标机会回复 ICMP Echo Reply 回来 以此来确定目标主机是否在线 默认情况下 Nmap会发送四种不同类型的数据 1 2 3 4 ICMP echo request a TCP SYN packet to port 443 a TCP ACK packet to port 80 an ICMP timestamp request 依次发送四个报文探测目标机是否开 只要收 那就证明目标机 开 使用四种不同类型的数据避免因防火墙或丢 2 2 2 主机发现的用法 通常主机发现并不单独使用 而只是作为端口扫描 版本侦测 OS侦测先行步骤 而 在某些特殊应用 例如确定大型局域网内活 可能会单独专门适用主机发现 不管是作为辅还是专门用途 用户都可以使用 Nmap 提供的丰富的选项来定 主机发现的探测方式 sL List Scan 列表扫描 仅将指定的目标的 IP列举出来 不进行主机发现 sn Ping Scan 只进行主机发现 不进行端口扫描 Pn 将所有指定的主机视作开 跳过主机发现的过程 PS PA PU PY portlist 使用 TCP SYN ACK或 SCTP INIT ECHO方式进行发现 PE PP PM 使用 ICMP echo timestamp and netmask 请求 PO protocol list 使用 IP协议对方主机是否开 n R n表示不进行 DNS解析 R表示总是进行 DNS解析 dns servers 指定 DNS服 system dns 指定使用系统的 DNS服 traceroute 追踪每个路由节点 其中 比较常用的使用的是 sn 表示只单独进行主机发现过程 Pn 表示直接跳过主 机发现而进行端口扫描等高级操作 如果已经确知目标主机已经开 可用该选项 n 如果不想使用 DNS或 reverse DNS解析 那么可以使用该选项 6 23 2 2 3 使用演示 探测 scanme nmap org 下面以探测 scanme nmap org 的主机为例 简单演示主机发现的用法 如下 nmap sn PE PS80 135 PU53 scanme nmap org 使用 Wireshark抓 我们看 scanme nmap org 的 IP地址 182 140 147 57发送 了四个探测 ICMP Echo 80 135端口的TCP SYN53端口的UDPDNS domain 而收ICMP Echo的回复与80端口的回复 从而确定了scanme nmap org主机正常在线 探测局域网内活 扫描局域网 192 168 1 100 192 168 1 120范围内IP的主机是活 nmap sn 192 168 1 100 120 7 23 从结果中 可以看IP范围内有三台主机处于活 从 Wireshark抓取的 可以看 在局域网内 Nmap是通过 ARP询问 IP地址上的主机是否活 如果收ARP 回复 那么说明主机在线 例如 某条 ARP回复的报文详细信息如下 2 3端口扫描 端口扫描是 Nmap 最基本最核心的 用于确定目标主机的 TCP UDP 端口的开放 情况 默认情况下 Nmap会扫描 1000个最有可能开放的 TCP端口 8 23 Nmap通过探测将端口划分为 6个状态 1 2 3 4 5 6 open 端口是开放的 closed 端口是关闭的 filtered 端口被防火墙 IDS IPS屏蔽 无法确定其状态 unfiltered 端口没有被屏蔽 但是否开放需要进一步确定 open filtered 端口是开放的或被屏蔽 closed filtered 端口是关闭的或被屏蔽 2 3 1 端口扫描原理 Nmap在端口扫描方面非常强大 提供了十多种探测方式 2 3 1 1 TCP SYN scanning 这是 Nmap默认的扫描方式 通常被称作半开放扫描 Half open scanning 该方式 发送 SYN 如果收SYN ACK回复 那么判断端口是开放的 如果收RST 如果没有收 那么判断该端口被屏蔽 Filtered 因为该 但不建立的完整的 TCP 连接 所以相对比较方式仅发送 SYN 隐蔽 而且效率比较高 适用范围广 TCP SYN探测 TCP SYN探测 2 3 1 2TCP connect scanning TCP connect方式使用系统网络 API connect向目标主机的端口发起连接 如果无法连 接 说明该端口关闭 该方式扫描速度比较慢 而且由于建立完整的 TCP连接会在目标机 上留下记录信息 不够隐蔽 所以 TCP connect是 TCP SYN无法使用才考虑选择的方式 TCP connect探测 9 23 TCP connect探测 2 3 1 3TCP ACK scanning 向目标主机的端口发送 ACKRST 没有收RST 该方式只能用于确定防火墙是否屏蔽某个端口 可以辅 TCP SYN的方式来判断目标主机防火墙的状况 TCP ACK探测 TCP ACK探测 2 3 1 4TCP FIN Xmas NULL scanning 这三种扫描方式被称为秘密扫描 Stealthy Scan 因为相对比较隐蔽 FIN扫描向目 标主机的端口发送的 TCP FINXmas tree NullRST回复 那 open filtered NULL 么说明该端口是关闭的 没有收 RST 其中 Xmas treeflags中 FIN URG PUSH被置为 1的 TCP 10 23 有 flags都为 0的 TCP TCP FIN探测 TCP FIN探测 2 3 1 5UDP scanning UDP扫描方式用于判断 UDP端口的情况 向目标主机的 UDP端口发送探测 如果 ICMP port unreachable 就说明该端口是关闭的 如果没有收 回复 那说明收 UDP端口可能是开放的或屏蔽的 因此 通过反向排除法的方式来断定UDP端口是可 能出于开放状态 UDP端口关闭 UDP端口开放或被屏蔽 11 23 2 3 1 6其他方式 除上述几种常用的方式之外 Nmap 还支持多种其他探测方式 例如使用 SCTP INIT COOKIE ECHO方式来探测 SCTP的端口开放情况 使用 IP protocol方式来探测目标 主机支持的协议类型 TCP UDP ICMP SCTP 等等 使用 idle scan 方式借 zombie host 也被称为 idle host 该主机处于空闲状态并且它的 IPID方式为递增 详细 实现原理参见 http nmap org book idlescan html 来扫描目标在主机 达 目的 或者使用 FTP bounce scan 借 FTP允许的代理服 同样达 隐藏自己的身份的目的 2 3 2 端口扫描用法 端口扫描用法比较简单 Nmap提供丰富的 具体可以参见如下描述 2 3 2 1 扫描方式选项 sS sT sA sW sM 指定使用 TCP SYN Connect ACK Window Maimon scans的方 式来对目标主机进行扫描 sU 指定使用 UDP扫描方式确定目标主机的 UDP端口状况 sN sF sX 指定使用 TCP Null FIN and Xmas scans秘密扫描方式来协 的 TCP端口状态 scanflags 定TCPflags sI 指定使用 idle scan方式来扫描目标主机 zombie host 要 找 sY sZ 使用 SCTP INIT COOKIE ECHO来扫描 SCTP协议端口的开放的情况 sO 使用 IP protocol 扫描确定目标机支持的协议类型 b 使用 FTP bounce scan扫描方式 2 3 2 2端口参数与扫描顺序 p 扫描指定的端口 实例 p22 p1 65535 p U 53 111 137 T 21 25 80 139 8080 S 9 其中 T代表 TCP 协议 U代表 UDP协议 S代表 SCTP协议 F Fast mode 快速模式 仅扫描 TOP 100的端口 r 不进行端口随机打乱的操作 如无该参数 nmap 会将要扫描的端口以随机顺序方 式扫描 以让 nmap的扫描不易被对方防火墙检测 top ports 扫描开放概率最高的 number个端口 nmap的作者曾经做过大 规模地互联网扫描 以此统计出网络上各种端口可能开放的概率 以此排列出最有可能开放 端口的列表 具体可以参见文件 nmap services 默认情况下 nmap 会扫描最有可能的 1000个 TCP端口 port ratio 扫描指定频率以上的端口 与上述 top ports类似 这里以概率作 12 23 为参数 让概率大于 port ratio的端口才被扫描 显然参数必须在在 0 1之间 具体范围 概率情况可以查看 nmap services文件 2 3 3 端口扫描演示 这里 我们以扫描局域网内 192 168 1 100主机为例 nmap sS sU T4 top ports 300 192 168 1 100 参数 sS表示使用 TCP SYN方式扫描 TCP端口 sU表示扫描 UDP端口 T4表示 时间级别配置 4级 top ports 300表示扫描最有可能开放的 300个端口 TCP 别有 300个端口 UDP分 从上图中 我们看 横线处写明有共有 589 端口是关闭的 红色框图中列 举出开放的端口 2 4版本侦测 版本侦测 用于确定目标主机开放端口上运行的具体的应用程序及版本信息 Nmap提供的版本侦测具有如下的优点 高速 并行地进行套接字操作 实现一组高效的探测匹配定义语法 尽可能地确定应用名字与版本名字 支持 TCP UDP协议 支持文本格式与二进 13 23 支持多种平台服 如果检测 SSL 会调用 openSSL 继续侦测运行在 SSL 上的具体协议 如 HTTPS POP3S IMAPS Linux Windows Mac OS FreeBSD等系统 如果检测 SunRPC服 那么会调用 brute force RPC grinder进一步确定 RPC 程序编号 名字 版本号 支持完整的 IPv6 通用平台枚举 TCP UDP 基于 TCP的 SSL CPE 广泛的应用程序数据库 nmap services probes 目 Nmap可以识别几千种服 180多种不同的协议 2 4 1 版本侦测原理 简要的介绍版本的侦测原理 版本侦测主要分为以下几个步骤 1 首先检查 open与 open filtered状态的端口是否在排除端口列表内 如果在排除列 表 将该端口 2 如果是 TCP 端口 尝试建立 TCP 连接 尝试等待片 通常 6 秒或更多 具体 时间可以查询文件 nmap services probes 中 Probe TCP NULL q 对应的 totalwaitms 通常在等待时间内 会接收发送的 Welcome Banner 信息 nmap将接收 Banner与 nmap services probes中 NULL probe中的签 名进行对比 查找对应应用程序的名字与版本信息 3 如果通过 Welcome Banner 无法确定应用程序版本 那么 nmap再尝试发送其 他的探测 即从 nmap services probes中挑选合适的 probe 将 probe得 复数据库中的签名进行对比 如果反复探测都无法得出具体应用 那么打印出 应用返回报文 让用户自行进一步判定 4 如果是 UDP端口 那么直接使用 nmap services probes中探测 根据结果对比分析出 UDP应用服 5 如果探测 SSL 那么调用 openSSL 进一步的侦查运行在 SSL 之上 的具体的应用类型 6 如果探测SunRPC 那么调用 brute force RPC grinder进一步探测 具体服 2 4 2 版本侦测的用法 版本侦测方面的 sV 指定让 Nmap进行版本侦测 version intensity 指定版本侦测强度 0 9 默认为 7 数值越高 探测出的 但是运行时间会比较长 服 version light 指定使用轻量侦测方式 intensity 2 version all 尝试使用所有的 probes进行侦测 intensity 9 version trace 显示出详细的版本侦测过程信息 14 23 2 4 3 版本侦测演示 nmap sV 192 168 1 100 对主机 192 168 1 100进行版本侦测 从结果中 我们可以看 996个端口是关闭状态 对于 4个 open的端口进行版本侦测 图中红色为版本信息 红色线条划出部分是版本侦测得 因为从应用中检测 微软特定的应用服 所以推断出对方运行的 Windows的操作系统 2 5OS侦测 操作系统侦测用于检测目标主机运行的操作系统类型及设备类型等信息 Nmap 拥有丰富的系统数据库 nmap os db 目 可以识别 2600 多种操作系统与设备 类型 2 5 1 OS侦测原理 Nmap 使用 TCP IP 协议栈指纹来识别不同的操作系统 设备 在 RFC 规范中 有些 地方对 TCP IP的实现并没有强 由此不同的 TCP IP方案中可能都有自己的特定方 式 Nmap主要是根据这些细节上的差异来判断操作系统的类型的 具体实现方式如下 Nmap内部 2600多已知系统的指纹特征 在文件 nmap os db文件中 将 此指纹数据库作为进行指纹对比的样本库 分别挑选一个 open closed的端口 向其发送经过精心设计的 TCP UDP ICMP 数据 根据返回的数据系统指纹 15 23 将探测生成的指纹与 nmap os db中指纹进行对比 查找匹配的系统 如果无法匹 配 以概率形式列举出可能的系统 2 5 2 OS侦测用法 OS侦测的用法简单 Nmap提供的 O 指定 Nmap进行 OS侦测 osscan limit 限 Nmap只对确定的主机的进行 OS探测 至少需确知该主机分别有 一个 openclosed的端口 osscan guess 大胆猜测对方的主机的系统类型 由此准确性会下降不少 但会尽可 能多为用户提供潜在的操作系统 2 5 3 OS侦测演示 nmap O 192 168 1 100 从上图中可看 指定 O 选项后先进行主机发现与端口扫描 根据扫描来进行 进一步的 OS侦测 获取的结果信息有设备类型 操作系统类型 操作系统的 CPE描述 操作系统细节 网络距离等 16 23 3Nmap高级用法 3 1 防火墙 IDS规避 防火墙与 IDS 规避为用于绕开防火墙与 IDS 入侵检测系统 的检测与屏蔽 以便能 够更发现目标主机的状况 Nmap提供了多种规避技巧 通常可以从两个方面考虑规避方式 数据变换 Packet Change 与时序变换 Timing Change 3 1 1 规避原理 3 1 1 1 分片 Fragmentation 将可疑的探测处理 例如将 TCPIP 某些简单 的防火墙为了处理速度可能不会进行重组检查 以此避开其检查 3 1 1 2IP诱骗 IP decoys 在进行扫描时 将真实 IP地址 其他主机的 IP地址 其他主机需要在线 否则目标主 机将回复大量数据不存在的主机 从而实质构成了拒绝服 混合使用 以此让目 标主机的防火墙或 IDS 追踪检查大量的不同 IP 地址的数据 降低其追查 注意 某些高级的 IDS系统通过统计分析仍然可以追踪出扫描者真实 IP地址 概率 3 1 1 3IP伪装 IP Spoofing 顾名思义 IP伪装即将自己发送的数据IP地址伪装成其他主机的地址 从而目 标机认为是其他主机在与之通信 需要注意 如果希望接收 那么伪装 的 IP需要位于统一局域网内 另外 如果既希望隐蔽自己的 IP地址 又希望收 的回复 那么可以尝试使用 idle scan或匿名代理 如 TOR 等网络技术 3 1 1 4指定源端口 某些目标主机只允许来自特定端口的数据 例如 FTP 服配置为 允 许源端口为 21号的 TCP防火墙与 FTP服 但是源端口为其他端口的数据 所以 在此类情况下 可以指定 Nmap 将发送的数据 端口 17 23 3 1 1 5扫描延时 某些防火墙针对发送过于频繁的数据 而且某些系统限 产生的频率 例如 Solaris 系统通常会限 每秒钟只能产生一个 ICMP 消息回复给 UDP 扫描 所以 定 络带宽 的频率 发可以降低目标主机的审查强度 节省网 3 1 1 6其他技术 Nmap还提供多种规避技巧 比如指定使用某个网络接口来发送数据 指定发送 最小长度 指定发MTU 指定 TTL 指定伪装的 MAC地址 使用错误检查 badchecksum 更多信息 http nmap org book man bypass firewalls ids html 3 1 2 规避用法 f mtu 指定使用分片 指定数据MTU D 用一组 IP 地址掩盖真实地址 其中 ME填入自己的 IP 地址 S 伪装成其他 IP地址 e 使用特定的网络接口 g source port 使用指定源端口 data length 填充随机数据让数据Num ip options 使用指定的 IP选项来发送数据 ttl 设置 time to live时间 spoof mac 伪装 MAC地址 badsum 使用错误的 checksum来发送数据 正常情况下 该类数据 说明回复来自防火墙或 IDS IPS 如 果收 3 1 3 规避演示 使用 nmap v F Pn D 192 168 1 100 192 168 1 102 ME e eth0 g 3355 192 168 1 1 其中 F表示快速扫描 100个端口 Pn表示不进行 Ping扫描 D表示使用 IP诱骗 方式掩盖自己真实 IP 其中 ME表示自己 IP e eth0表示使用 eth0网卡发送该数据 g 3355表示自己的源端口使用 3355 192 168 1 1是被扫描的目标 IP地址 18 23 我们可以从 Wireshark 中看 对于每个探测 Nmap 都使用 D 选项指定的 IP地址发送不同的数据 从而达 扰乱对方防火墙 IDS检查的目的 更好的 方式 D 选项中嵌入 RND 随机数 这样更具有迷惑性 当探测 80 端口时候 目标主机 向我们回复了 SYN ACK 当然也向其他诱骗的 IP 回复 SYN ACK 收 证明 80端口是开放的 19 23 3 2NSE脚本引擎 NSE脚本引擎 Nmap Scripting Engine 是 Nmap最强大最灵活的 允许用 户自己编写脚本来执行自Nmap的 NSE 使用 Lua 脚本语言 并且默认提供了丰富的脚本库 目 350多个脚本 14 个类别的 NSE的设计初衷主要考虑以下几个方面 网络发现 Network Discovery 更 例如 skype软件 漏洞侦测 Vulnerability Detection 后门侦测 Backdoor Detection 漏洞利用 Vulnerability Exploitation 3 2 1 NSE创建脚本方法 下面以 daytime nse脚本为例说明一下 NSE格式 NSE的使用 Lua脚本 并且配置固定格式 以减轻用户编程负担 通常的一个脚本分 为几个部分 description字段 描述脚本 使用双层方括号表示 comment字段 以 开头的行 描述脚本输出格式 author字段 描述脚本作者 license字段 描述脚本使用许可证 通常配置为 Nmap相同的 license categories字段 描述脚本所属的类别 以对脚本的调用进行管理 rule 字段 描述脚本执行的规则 也就

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论