nmap 扫描原理及操作

功能架构图

在这里插入图片描述

检测活在网络上的主机(主机发现)
检测主机上开放的端口(端口发现或枚举)
检测到相应的端口(服务发现)的软件和版本
检测操作系统,硬件地址,以及软件版本
检测脆弱性的漏洞(Nmap的脚本)

一些常用命令

nmap 192.168.0.10-20  扫描范围IP地址

nmap 192.168.0.1/24  扫描IP所在网段

nmap -iL 绝对路径  将多个IP放入文本中进行扫描,要跟绝对路径

nmap 192.168.0.10/24 -exclude 192.168.0.11  扫描 除192.168.0.11之外的其他IP

nmap 192.168.0.10 -p 21,22  扫描指定端口

nmap 192.168.0.10 --top-ports 1000 扫描钱一千个端口

nmap --traceroute 192.168.0.10  对目标地址进行路由跟踪

扫描选项

******

-sT  当不能进行SYN扫描时,TCP连接扫描是默认扫描类型。

-sS  此标志是SYN扫描,是扫描时默认选项,相对隐蔽的扫描类型,不完成TCP三次握手,只发送SYN包。

-sU  UDP扫描,向每个目标端口发送UDP数据包来工作。

-sV  版本扫描,探测目标端口正在运行的特定应用程序或服务的版本。

-O  探测目标主机操作系统

******

-Pn  不进行ping主机,假设目标已启动。跳过主机发现。

-PB  默认探测,扫描80443向目标发送ICMP协议

 -Pe    使用ICMP协议来探测目标

-PP   使用ICMP时间戳请求

*****

-sC  使用默认脚本对目标进行扫描,相当于--script = default

--script = vuln  扫描常见漏洞

nmap --script=auth  进行弱口令扫描

-----------------------------------------------------------------------------------------------------------------------------------

主机发现原理

主机发现发现的原理与Ping命令类似,发送探测包到目标主机,如果收到回复,那么说明目标主机是开启的

用法

-sn: Ping Scan 只进行主机发现,不进行端口扫描。

-Pn: 将所有指定的主机视作开启的,跳过主机发现的过程。

-n/-R: -n表示不进行DNS解析;-R表示总是进行DNS解析。

比较常用的使用的是-sn,表示只单独进行主机发现过程;-Pn表示直接跳过主机发现而进行端口扫描等高级操作(如果已经确知目标主机已经开启,可用该选项);-n,如果不想使用DNS或reverse DNS解析,那么可以使用该选项。


端口扫描

端口扫描是Nmap最基本最核心的功能,用于确定目标主机的TCP/UDP端口的开放情况。

默认情况下,Nmap会扫描1000个最有可能开放的TCP端口。

Nmap通过探测将端口划分为6个状态:

open:端口是开放的。

closed:端口是关闭的。

filtered:端口被防火墙IDS/IPS屏蔽,无法确定其状态。

unfiltered:端口没有被屏蔽,但是否开放需要进一步确定。

open|filtered:端口是开放的或被屏蔽。

closed|filtered :端口是关闭的或被屏蔽。

端口扫描原理

1、TCP SYN scanning
通常被称作半开放扫描(Half-open scanning)。该方式发送SYN到目标端口,如果收到SYN/ACK回复,那么判断端口是开放的;如果收到RST包,说明该端口是关闭的。如果没有收到回复,那么判断该端口被屏蔽(Filtered)。因为该方式仅发送SYN包对目标主机的特定端口,但不建立的完整的TCP连接,所以相对比较隐蔽,而且效率比较高,适用范围广。

2、TCP connect scanning
tcp全连接。该方式扫描速度比较慢,而且由于建立完整的TCP连接会在目标机上留下记录信息,不够隐蔽。所以,TCP connect是TCP SYN无法使用才考虑选择的方式。

3、TCP ACK scanning
向目标主机的端口发送ACK包,如果收到RST包,说明该端口没有被防火墙屏蔽;没有收到RST包,说明被屏蔽。该方式只能用于确定防火墙是否屏蔽某个端口,可以辅助TCP SYN的方式来判断目标主机防火墙的状况。

4、UDP scanning
向目标主机的UDP端口发送探测包,如果收到回复“ICMP port unreachable”就说明该端口是关闭的;如果没有收到回复,那说明UDP端口可能是开放的或屏蔽的。因此,通过反向排除法的方式来断定哪些UDP端口是可能出于开放状态。


确定端口状况
只列出端口情况 nmap默认发送一个ARP的PING数据包,来探测目标主机1-10000范围内所开放的所有端口

nmap targethost

完整全面的扫描

nmap –T4 –A –v targethost

其中-A选项用于使用进攻性(Aggressive)方式扫描;-T4指定扫描过程使用的时序(Timing),总有6个级别(0-5),级别越高,扫描速度越快,但也容易被防火墙或IDS检测并屏蔽掉,在网络通讯状况良好的情况推荐使用T4


版本侦测原理

版本侦测主要分为以下几个步骤:

1、首先检查open与open|filtered状态的端口是否在排除端口列表内。如果在排除列表,将该端口剔除。

2、如果是TCP端口,尝试建立TCP连接。尝试等待片刻(通常6秒或更多,具体时间可以查询文件nmap-services-probes中Probe TCP NULL q||对应的totalwaitms)。通常在等待时间内,会接收到目标机发送的“WelcomeBanner”信息。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进一步探测具体服务。

OS侦测原理

Nmap使用TCP/IP协议栈指纹来识别不同的操作系统和设备。在RFC规范中,有些地方对TCP/IP的实现并没有强制规定,由此不同的TCP/IP方案中可能都有自己的特定方式。Nmap主要是根据这些细节上的差异来判断操作系统的类型的。

具体实现方式如下:

1、Nmap内部包含了2600多已知系统的指纹特征(在文件nmap-os-db文件中)。将此指纹数据库作为进行指纹对比的样本库。

2、分别挑选一个open和closed的端口,向其发送经过精心设计的TCP/UDP/ICMP数据包,根据返回的数据包生成一份系统指纹。

3、将探测生成的指纹与nmap-os-db中指纹进行对比,查找匹配的系统。如果无法匹配,以概率形式列举出可能的系统。

OS侦测用法

OS侦测的用法简单

-O: 指定Nmap进行OS侦测。

–osscan-limit: 限制Nmap只对确定的主机的进行OS探测(至少需确知该主机分别有一个open和closed的端口)。

–osscan-guess: 大胆猜测对方的主机的系统类型。由此准确性会下降不少,但会尽可能多为用户提供潜在的操作系统。

资料:
https://www.e-learn.cn/content/qita/2645559
https://blog.csdn.net/qq_34398519/article/details/89055991
绕过防火墙的的扫描方式:
https://blog.csdn.net/qq_29277155/article/details/51175015

https://www.freebuf.com/sectool/101335.html

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值