扫描技术的原理与应用(Nmap使用)

一、实践内容

  1. TCP connect扫描方式
  2. TCP SYN扫描方式
  3. 操作系统扫描方式
  4. 漏洞扫描

二、实践过程

1.TCP connect扫描方式

1.1 TCP connect

TCP connect扫描是开放扫描的一种,需要扫描方通过三次握手过程与目标主机建立完整的TCP连接。TCP connect利用操作系统提供的connect()系统调用进行扫描,扫描器调用socket的connect()函数发起一个正常的连接,如果connect()连接成功,说明目标端口处于监听状态,若连接失败,则说明该端口是关闭的或者被防火墙等过滤。原理图如下:
在这里插入图片描述

1.2 进行扫描并捕获数据包

Nmap中TCP connect扫描使用的参数为-sT,使用的命令为nmap -sT 192.168.21.1(做该实验时本机的IP地址为192.168.31.24),对目标主机的1000个端口进行扫描,扫描结果和捕获的数据包如图所示。
在这里插入图片描述
在这里插入图片描述
如下图所示,扫描结果中可以看到开放的端口有7个,分别为53(domain)、80(http)、8192(sophos)、8193(sophos)、8383(m2mservices)、8443(https-alt)、8899(ospf-lite)。

在这里插入图片描述直接从诸多数据包中筛选出目标端口为53(开放端口)的数据包,如下图所示。
在这里插入图片描述可以看到,正如课上老师所讲,本地主机通过三次握手成功与目标主机建立TCP连接,并在建立之后发送RST包断开连接,如原理图所示过程。
筛选出目标端口为23(关闭端口)的数据包,如下图所示。可以看到,本地主机发起TCP连接时被目标主机直接拒绝,如上图所示过程。
在这里插入图片描述

1.3 单独扫描某一端口并捕获数据包

使用-p参数可以指定端口进行扫描,通过以上实验,53号端口是开放的,所以使用nmap -sT -p 53 192.168.21.1对53号端口进行扫描,捕获的数据包如下图所示(因为实验时间不同,本地主机分配的IP地址有变动,为192.168.31.188)。
在这里插入图片描述
443号端口是关闭的,所以使用nmap -sT -p 443 192.168.21.1对443号端口进行扫描,捕获的数据包如下图所示。
在这里插入图片描述

2.TCP SYN扫描方式

第一个实验中已经知道目标主机的7个开放端口和其他的关闭端口,因此本节就针对特定端口使用TCP SYN扫描方式进行扫描。

2.1 TCP SYN

TCP SYN扫描是半开扫描(Half-open)的一种,即扫描方不需要建立一个完全的TCP连接。TCP SYN扫描中,扫描程序发送的一个SYN数据包,若返回SYN/ACK数据包,表示目标端口处于监听状态,然后扫描程序必须再发送一个RST信号来关闭这个连接进程,若返回RST数据包则表示端口没有开放。原理图如下:
在这里插入图片描述

2.2 使用Nmap进行扫描并捕获数据包

Nmap中TCP SYN扫描使用的参数为-sS,对80端口进行扫描的命令为nmap -sS -p 80 192.168.31.1,结果如下图所示。80端口开放,本地主机没有和目标主机建立完整的TCP连接,过程示意图见原理图所示。
在这里插入图片描述在这里插入图片描述使用命令nmap -sS -p 21 192.168.31.1对端口21(关闭端口)进行扫描,结果和捕获的数据包如下图所示。本地主机向目标主机发起TCP连接后被对方拒绝,同TCP connect扫描关闭端口的过程相同,过程示意图见原理图所示。
在这里插入图片描述在这里插入图片描述

3.操作系统扫描方式

3.1 操作系统探测

Nmap进行操作系统探测时使用的参数如下表所示:

参数功能
-O启用操作系统检测
-A同时启用操作系统检测和版本检测
–osscan-limit针对指定的目标进行操作系统检测
–osscan-guess; --fuzzy当Nmap无法确定所检测的操作系统时,会尽可能地提供最相近的匹配,Nmap默认进行这种匹配,使用上述任一个选项使得Nmap的推测更加有效。

为了更好的分析和验证操作系统探测的结果,本次目标主机选用两台本地虚拟机Kali(IP:192.168.31.120)和Ubuntu(IP:192.168.31.181)。

3.2 Kali操作系统探测

使用命令nmap -O 192.168.31.120扫描目标虚拟机,结果如下图所示,发现数据包被防火墙过滤,即只有TCP连接请求,没有任何响应。于是使用Wireshark捕获该过程的数据包,结果如图所示所示。
在这里插入图片描述
在这里插入图片描述将Kali的防火墙关闭后(sudo ufw disable),开启ssh服务(这里即开放22号端口),再次进行扫描结果如下图所示,能够成功扫描到目标主机使用操作系统和版本。
在这里插入图片描述

3.3 Ubuntu操作系统探测

使用命令nmap -O 192.168.31.181扫描目标虚拟机,结果和捕获结果如下图所示。可以看到成功探测出目标主机的操作系统的名称和版本号的范围,与真实的OS版本一致。
在这里插入图片描述
在这里插入图片描述

3.4 数据包分析

(1)操作系统探测数据库

Nmap带有一个数据库,这个数据库用于操作系统的探测,但是它不会自动更新,数据库名称为nmap-os-db,可以在Nmap安装目录下找到它,里面包含了2600多种操作系统与设备的指纹,以Linux Ubuntu 5.X版本的指纹为例,可以在文件中该版本的操作系统指纹,如下图所示。
在这里插入图片描述

(2)系统探测过程

通过查找资料,Nmap进行操作系统扫描时会执行五种不同的测试,每种测试由一个或者多个数据包组成,目标系统对每个数据包做出的响应有助于确定操作系统的类型。
五种不同的测试是:

  1. 序列生成(Sequence Generation)
    序列生成测试由六个数据包组成,这六个包是每隔 100 毫秒分开发送的,且都是 TCP SYN 包。每 个 TCP SYN 包的结果将有助于 NMAP 确定操作系统的类型。如下图所示,Nmap向目标主机唯一 开放的22号端口(ssh服务)大致以时间间隔100ms连续发送了6个TCP SYN。
    在这里插入图片描述

  2. ICMP 回显
    两个有着不同设置的 ICMP 请求包被送到目标系统,由此产生的反应将有助于实现验证操作系统类型。如下图所示,在序列生成测试之后进行两次ICMP数据包请求,两次的ICMP请求设置不同。
    在这里插入图片描述在这里插入图片描述

  3. UDP
    这个测试由一个被发送给一个关闭的端口的数据包组成。如果目标系统上的这个端口是关闭的,而且返回一条 ICMP 端口不可达的信息,那么就说明没有防火墙。如下图所示,Nmap向目标主机的关闭端口42253端口发送UDP数据包,并返回了ICMP端口不可达信息,由此说明目标主机没有防火墙。
    在这里插入图片描述

  4. TCP 显式拥塞通知(Explicit Congestion Notification)
    当生成许多包通过路由器时会导致其负载变大,这称之为拥塞。其结果就是系统会变慢以降低拥堵,以便路由器不会发生丢包。这个包仅为了得到目标系统的响应而发送。因为不同的操作系统以不同的方式处理这个包,所以返回的特定值可以用来判断操作系统。
    如下图所示,Nmap向目标主机发送了一个TCP数据包
    在这里插入图片描述

如下图所示,该TCP数据包的ECN、CWR位被设置为1,标志着接收端被通知路径上发生了拥塞。ECN使用TCP头部来告知发送端网络正在经历拥塞,并且告知接收端发送段已经受到了接收端发来的拥塞通告,已经降低了发送速率。
在这里插入图片描述

  1. TCP
    在这个测试中会发送六个数据包。一些带有特定的包设置的包被发送用来到打开的或关闭的端口。结果也将会因为操作系统的不同而不同。所有 TCP 包都是以如下不同的标志被发送:
    (a)无标志
    (b)SYN、FIN、URG 和 PSH
    (c)ACK
    (d)SYN
    (e)ACK
    (f)FIN、PSH 和 URG
    如下图所示,Nmap按照上述TCP数据包的顺序依次向目标主机发送六个数据包,且前三个数据包被发送至开放端口(22号),后三个数据包发送至关闭端口(1号)。
    在这里插入图片描述

4.使用漏洞扫描扫描目标的漏洞信息

通过采用一定的技术主动地发现系统中的安全漏洞,如,操作系统漏洞、弱口令用户、应用程序漏洞、配置错误等。
Nmap提供的脚本命令行参数如下:

  • –sC: 等价于–script=default,使用默认类别的脚本进行扫描。
  • –script=: 使用某个或某类脚本进行扫描,支持通配符描述

本次实验中使用nmap --script vuln 192.168.31.1对目标主机进行检查是否存在常见的漏洞,结果如下图所示,没有发现常用漏洞。
在这里插入图片描述

此外常用的参数如下表所示。

命令功能
nmap --script discovery [目标主机IP]信息挖掘
nmap --script dos [目标主机IP]进行拒绝服务攻击
nmap --script exploit [目标主机IP]利用已知的漏洞入侵系统
nmap --script external [目标主机IP]利用第三方的数据库或资源进行信息收集或者攻击
nmap --script fuzzer [目标主机IP]进行模糊测试,发送异常的包到目标机,探测出潜在漏洞
nmap --script intrusive [目标主机IP]进行入侵,此类脚本可能引发对方的IDS/IPS的记录或屏蔽
nmap --script malware [目标主机IP]探测目标机是否感染了病毒、开启了后门等信息
nmap --script safe [目标主机IP]对系统进行安全检查
nmap --script vuln [目标主机IP]对目标机进行检查是否存在常见的漏洞
nmap --script version [目标主机IP]负责增强服务与版本扫描(Version Detection)功能的脚本

使用nmap --script vuln 42.193.117.87对目标主机–www.tykd.com进行检查是否存在常见的漏洞,结果如下图所示,发现了一些常用漏洞。
在这里插入图片描述

三、实践总结

通过本次Nmap工具实践,较为系统的掌握了Nmap工具的用法,通过Nmap的使用以及Wireshark数据包捕获和分析,对于扫描技术的原理有了直观的认识,也能够明白信息的收集和获取对于网络攻击的重要意义。

  • 0
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值