揭秘Nmap:网络扫描神器,一键掌握主机在线状态与服务版本
想要了解网络安全却不知如何开始?不妨关注一下nmap,这是一款非常实用的网络安全工具。它不仅功能全面,而且免费且开源,对于网络安全初学者来说是个好帮手,对经验丰富的用户来说也是不可或缺的。
Nmap的强大功能
Nmap功能丰富。它能检查目标主机是否在线,这对于网络维护人员至关重要,有助于了解网络设备的运行状态。比如,在企业局域网里,若某设备意外离线,Nmap能快速定位。此外,它还能检测主机端口是否开启,比如识别那些在安全检测中需特别注意的高风险端口。
Nmap能够识别主机上运行的服务及其版本。在网络安全领域,了解目标主机所用的服务与版本,对黑客或安全人员来说,能让他们有针对性地查找漏洞或构建防御措施。此外,它还能探测操作系统和设备类型,这对我们全面认识网络状况十分有益。
安装准备
首先需要弄清楚nmap的官方下载网址。接下来,根据所使用的操作系统,下载并安装相应的软件。如果是使用Windows系统,需访问官网,并选择Windows版本的下载。同时,要留意网络状况,以保证下载过程顺畅。
下载完毕后,请点击安装。随后,点击“同意”按钮继续操作。在此过程中,许多人可能忽视了某些细节,例如安装过程中可能出现的插件。若未留意安装,这可能会对nmap的完整功能造成影响。
安装步骤
安装过程有几个重要环节。首先,需要调整安装位置,根据电脑的存储容量挑选合适的硬盘。虽然这一步看似容易,但选择一个恰当的安装位置可以使nmap运行更加顺畅。接着,点击“Install”按钮,继续进行下一步操作。
在操作过程中,可能会有插件需要安装,此时还需留意确保电脑的杀毒软件设置允许安装。若杀毒软件错误地阻止了插件的安装,nmap的功能可能就无法正常发挥。
端口扫描
1、目标说明
扫描整个网段 192.168.1.0/24
扫描域名所在网段 www.baidu.com/24
扫描特定限制地址段 0-255.0-255.77.88
以上方式可以混合使用,之间用空格分隔
-iL 从列表输入目标:nmap -sP -iL i:ip.txt #当需要扫描的地址过多,可以直接通过文件名导入。
-iR 随机选择目标:nmap -sP -iR 10 #后接参数表示随机的个数,0为不限制个数,不合规的IP会自动忽略。
--exclude 排除不需要扫描的主机或段:nmap -sP 192.168.1.0/24 --exclude 192.168.1.1-100,192.168.1.200-254
--exclude #排除的IP地址或段通过文件导入。
2、参数说明
nmap –iflist : 查看本地主机的接口信息和路由信息
-A :选项用于使用进攻性方式扫描
-T4:指定扫描过程使用的时序,总有6个级别(0-5),级别越高,扫描速度越快,但也容易被防火墙或IDS检测并屏蔽掉,在网络通讯状况较好的情况下推荐使用T4
-oX test.xml:将扫描结果生成 test.xml 文件,如果中断,则结果打不开
-oA test.xml: 将扫描结果生成 test.xml 文件,中断后,结果也可保存
-oG test.txt: 将扫描结果生成 test.txt 文件
-sn : 只进行主机发现,不进行端口扫描
-O : 指定Nmap进行系统版本扫描
-sV: 指定让Nmap进行服务版本扫描
-p : 扫描指定的端口
-sS/sT/sA/sW/sM:指定使用 TCP SYN/Connect()/ACK/Window/Maimon scans的方式来对目标主机进行扫描
-sU: 指定使用UDP扫描方式确定目标主机的UDP端口状况
-script : 指定扫描脚本
-Pn :不进行ping扫描
-sP : 用ping扫描判断主机是否存活,只有主机存活,nmap才会继续扫描,一般最好不加,因为有的主机会禁止ping
-PI : 设置这个选项,让nmap使用真正的ping(ICMP echo请求)来扫描目标主机是否正在运行。
-iL 1.txt : 批量扫描1.txt中的目标地址
-sL: List Scan 列表扫描,仅将指定的目标的IP列举出来,不进行主机发现
-sY/sZ: 使用SCTP INIT/COOKIE-ECHO来扫描SCTP协议端口的开放的情况
-sO: 使用IP protocol 扫描确定目标机支持的协议类型
-PO : 使用IP协议包探测对方主机是否开启
-PE/PP/PM : 使用ICMP echo、 ICMP timestamp、ICMP netmask 请求包发现主机
-PS/PA/PU/PY : 使用TCP SYN/TCP ACK或SCTP INIT/ECHO方式进行发现
-sN/sF/sX: 指定使用TCP Null, FIN, and Xmas scans秘密扫描方式来协助探测对方的TCP端口状态
-e eth0:指定使用eth0网卡进行探测
-f : --mtu : 指定使用分片、指定数据包的 MTU.
-b : 使用FTP bounce scan扫描方式
-g:指定发送的端口号
-r: 不进行端口随机打乱的操作(如无该参数,nmap会将要扫描的端口以随机顺序方式扫描,以让nmap的扫描不易被对方防火墙检测到)
-v 表示显示冗余信息,在扫描过程中显示扫描的细节,从而让用户了解当前的扫描状态
-n : 表示不进行DNS解析;
-D : 用一组 IP 地址掩盖真实地址,其中 ME 填入自己的 IP 地址
-R :表示总是进行DNS解析。
-F : 快速模式,仅扫描TOP 100的端口
-S : 伪装成其他 IP 地址
--ttl : 设置 time-to-live 时间
--badsum: 使用错误的 checksum 来发送数据包(正常情况下,该类数据包被抛弃,如果收到回复,说明回复来自防火墙或 IDS/IPS)
--dns-servers : 指定DNS服务器
--system-dns : 指定使用系统的DNS服务器
--traceroute : 追踪每个路由节点
--scanflags : 定制TCP包的flags
--top-ports :扫描开放概率最高的number个端口
--port-ratio : 扫描指定频率以上的端口。与上述--top-ports类似,这里以概率作为参数
--version-trace: 显示出详细的版本侦测过程信息
--osscan-limit: 限制Nmap只对确定的主机的进行OS探测(至少需确知该主机分别有一个open和closed的端口)
--osscan-guess: 大胆猜测对方的主机的系统类型。由此准确性会下降不少,但会尽可能多为用户提供潜在的操作系统
--data-length : 填充随机数据让数据包长度达到 Num
--ip-options : 使用指定的 IP 选项来发送数据包
--spoof-mac : 伪装 MAC 地址
--version-intensity : 指定版本侦测强度(0-9),默认为7。数值越高,探测出的服务越准确,但是运行时间会比较长。
--version-light: 指定使用轻量侦测方式 (intensity 2)
--version-all: 尝试使用所有的probes进行侦测 (intensity 9)
--version-trace: 显示出详细的版本侦测过程信息
nmap 192.168.1.0/24 -exclude 192.168.1.10 #扫描除192.168.1.0外的该网段的其他地址
nmap 192.168.1.0/24 -excludefile f:/1.txt #扫描除给定文件中的地址以外的其他地址
nmap -sF -T4 192.168.1.0 #探测防火墙状态
3、主机发现
-sL: List Scan 列表扫描,仅将指定的目标的IP列举出来,不进行主机发现。
-sP: ping扫描,也叫地毯式ping,发送一个ICMP请求和一个TCP请求到80端口,检测活动主机。同时如果扫描同一局域网的话还会发ARP包进行探测。
-sn: Ping Scan 只进行主机发现,不进行端口扫描。
-Pn: 将所有指定的主机视作开启的,跳过主机发现的过程。
-PS/PA/PU/PY[portlist]: 使用TCP SYN/TCP ACK或SCTP INIT/ECHO方式进行发现。
-PE/PP/PM: 使用ICMP echo、 ICMP timestamp、ICMP netmask 请求包发现主机。
-PO[protocol list]: 使用IP协议包探测对方主机是否开启。
-PR: ARP ping,因为不需要arp 解析,所以会更快更可靠,即使指定了iP的请求方式,也会默认发送ARP探测,局域网内推荐。
-n/-R: -n表示不进行DNS解析;-R表示总是进行DNS解析。
--dns-servers : 指定DNS服务器。
--system-dns: 指定使用系统的DNS服务器
--traceroute: 追踪每个路由节点
4、端口扫描基础
默认扫描主句超过1660个TCP端口
6种端口状态:
open:端口是开放的。
closed:端口是关闭的。
filtered:端口被防火墙IDS/IPS屏蔽,无法确定其状态。
unfiltered:端口没有被屏蔽,但是否开放需要进一步确定。
open|filtered:端口是开放的或被屏蔽,Nmap不能识别。
closed|filtered :端口是关闭的或被屏蔽,Nmap不能识别
5、端口扫描技术
Nmap的端口扫描参数都是"s"开头,第二个字母为技术所选字母大写。
-sS (TCY SYN 扫描)
半开放扫描, SYN/ACK表示端口在监听(开放),而RST (复位)表示没有监听者。如果数次重发后仍没响应, 该端口就被标记为被过滤。如果收到ICMP不可到达错误(类型3,代码1, 2, 3, 9, 10,或者13),该端口也被标记为被过滤。
-sT (TCP connect 扫描)
TCP connect方式使用系统网络API connect向目标主机的端口发起连接,如果无法连接,说明该端口关闭。该方式扫描速度比较慢,而且由于建立完整的TCP连接会在目标主机上留下记录信息,不够隐蔽。所以,TCP connect是TCP SYN无法使用才考虑使用的方式
-sU (UDP 扫描)
UDP扫描用于判断UDP端口的情况,向目标主机的UDP端口发送探测包,如果收到回复ICMP port unreachable就说明该端口是关闭的;如果没有收到回复,那说明该UDP端口可能是开放的或者屏蔽的。因此,通过反向排除法的方式来判断哪些UDP端口是可能处于开放状态的。
-sN (Null 扫描)
如果扫描系统遵循该RFC, 当端口关闭时,任何不包含SYN, RST,或者ACK位的报文会导致一个RST返回,而当端口开放时,应该没有任何响应,只要不包|含SYN, RST,或者ACK,任何其它三种(FIN, PSH, and URG)的组合都行。不设置任何标志位(tcp标志头是0)
-sF (FIN 扫描)
只设置TCP FIN标志位
-sX (Xmas 扫描)
只设置FIN,PSH,和URG标志位
-sA (TCP ACK 扫描)
向目标主机的端口发送ACK包,如果收到RST包,说明该端口没有被防火墙屏蔽;没有收到RST包,说明被屏蔽。该方式只能用于确定防火墙是否屏蔽某个端口,可以辅助TCP SYN的方式来判断目标主机防火墙的状况
-sW (TCP 窗口扫描)
通过检查返回的RST报文的TCP窗口城确定窗口是否关闭,开放端口为正,关团端口为0,但是,这种情况很多系统并不适用,可以作为参考
-sM (TCP Maimon 扫描)
发送的TCP探测报文是FIN/ACK,无论端口开放或者关闭,都应该相应RST
-sO (IP协议扫描)
扫描目标主机开放了哪些协议,而不是端口,扫描会遍历所有IP协议号,并且可以通过-p参数指定要扫描的协议号
-sI (Idlesan)
高级扫描,拖藏自身IP地址,可以指定你以为可能被信任的主机IP进行扫描,参考https://nmap.org/book/idlescan.html
-b (FTP弹跳扫描)
FTP允许用户连接到一台FTP服务器,然后要求文件送到一台第三方服务器,这个特性大多被封禁,但是现在仍可以利用,用来绕过防火墙,因为一般FTP服|务器会有比web服务器更高的内网连通权限
--scanflags(定制的TCP扫描)
可以任意定制TCP标志位,包括: URG, ACK,PSH, RST, SYN,FIN等任意组合,组合顺序不重要,除了设置标志位,还可以指定TCP扫描类型,不指定到默认SYN描
6、端口说明和扫描顺序
默认情况下,Nmap用指定的协议对端口1到1024以及nmap-services文件中列出的更高的端口进行扫描。
-p (只扫描指定的端口)
可以单个端口,也可以1-99的范围端口,开始和结束省略代表1和65535,两端都省略表示扫描所有端口号,在-sO的协议号扫描中-p参数可以指定扫描的协号:当同时扫描TCP和UDP时, nmap-sU -sS -p U:53,137,T:23,3389,80 10.10.172.87,不加端口限制,默认最大
-F(快速扫描)
Fast mode – 快速模式,仅扫描TOP 100的端口
-r (不要按随机顺序扫描端口)
Nmap默认是随机扫描,常用端口会前移,用-r 选项可以强制按顺序扫描端口。
--top-ports
扫描开放概率最高的number个端口(nmap的作者曾经做过大规模地互联网扫描,以此统计出网络上各种端口可能开放的概率。以此排列出最有可能开放端口的列表,具体可以参见文件:nmap-services。默认情况下,nmap会扫描最有可能的1000个TCP端口)
--port-ratio
扫描指定频率以上的端口。与上述--top-ports类似,这里以概率作为参数,让概率大于--port-ratio的端口才被扫描。显然参数必须在在0到1之间,具体范围概率情况可以查看nmap-services文件
7、服务与版本探测
-sV (版本探测)
打开版本探测
-A (操作系统探测)
打开操作系统探测
-sR (RPC 扫描)
和端口扫描结合使用,对发现开放的端口执行命令,确定是否是RPC端口,如里是,打印详细信息。这作为-sV的一部分自动打开。由于版本探测包含它并且全面的多,所以-sR很少被需要。
--allports (不为版本探测排除任何端口)
默认情况下,nmap会跳过9100TCP端口,以为打印机会打印一堆这种扫描请求。用--allports 可以不排除任何端口。
--version-intensity (设置版本扫描强度)
共有0-9个级别的探测强度,默认为7,强度值越高,扫描的越准确,也越慢,当探测报文通过nmap-service-probes port指示符注册到目标端口时,不论什么强度都会默认扫描
--version-light (打开轻量级模式)
扫描强度为2 的别名
--version-all (尝试每个探测)
扫描强度为9的别名
--version-trace (跟踪版本扫描活动)
会同步打印正在扫描的调试信息,是--packet-trace 的所得信息的子集。
8、操作系统探测
nmap 发送大量的查询信息,根据反馈对比自己对于系统描述的数据库,最后确定操作系统类型。
-O (启用操作系统检测)
也可以使用-A来同时启用操作系统检测和版本检测。
--osscan-limit (针对指定的目标进行操作系统检测)
这个选项是只对发现一个打开或者关闭的TCP端口的主机进行操作系统检测,以提高效率,并且只在-O 或者-A 时起作用。
--osscan-guess; --fuzzy (推测操作系统检测结果)
默认开启,是指如果nmap不能确定操作系统,那么会提供一个相近的匹配。
9、时间和性能
nmap 开发的最高优先级是性能,本地网络一个主机的默认扫描是1/5秒。
-T (设置时间模板)
模板化选项,编号0-5, 0-1躲避IDS; 2 降低扫描速度, 节约带宽和目标主机资源;3默认选项;4 假设用户网络健康加速扫描;5极快模式,消耗更多的网络资源,追求速度降低准确性; 2比3要慢10倍;-T4禁止扫描延迟超过10ms的主机, -T5延迟不能超过5ms;0、1、2都不是并行扫描,不适用于大数据量1的扫描
T4选项与--max-rtt-timeout 1250 --initial-rtt-timeout 500等价,最大TCP扫描延迟为10ms。
T5等价于--max-rtt-timeout 300--min-rtt-timeout 50 --initial-rtt-timeout 250--host-timeout 900000,最大TCP扫描廷迟为5ms
--scan-delay
--max-scan-delay (调整探测报文的时间间隔)
对于对扫描有速率或阈值限制的时候,这个选项可以调整扫描的发包间隔,避免被IPS
--host-timeout (放弃低速目标主机)
默认对于扫描超过1800000ms(半个小时)的主机进行忽略,并且在这半个小时中nmap是在同时扫描别的主机,并没有停止,忽略了就不会有结果输出。
--min-hostgroup
--max-hostgroup (调整并行扫描组的大小)
nmap并发扫描是先分组再扫描,所分的组大小大于设定的最小组,小于最天1组,必须是扫描完整个组才会出扫描报告,一般最小组为5,最大为1024,nmap一般采用先小组出结果,然后增加组的大小增快扫描速度。
--min-parallelism
--max-parallelism (调整探测报文的并行度)
指定一个范围,nmap 会根据网络状况和主机性能,自动调整并行报文探测的数量,并行度数量一般是1到几百。
--min-rtt-timeout
--max-rtt-timeout
--initial-rtt-timeout (调整探测报文超时)
nmap会根据上一个探测报文自动计算时值,本地网络max 100ms比较合适,有路由的话可以先ping测试看延迟,然后init是往返时间的2倍, max是3-4倍,通常, max不能小于100ms,不能超过1000ms, min很少使用。
在进行端口扫描的过程中,Nmap会参照nmap-services中的数据包返回结果,识别出特定端口所运行的服务及其版本信息。比如,当检测到端口为TCP时,Nmap会尝试连接该端口以启动服务。众多常见服务,诸如FTP和SSH等,通常会在其欢迎信息中明确标示自身。
常见的Nmap命令:
-A :选项用于使用进攻性方式扫描
-T4:指定扫描过程使用的时序,总有6个级别(0-5),级别越高,扫描速度越快,但也容易被防火墙或IDS检测并屏蔽掉,在网络通讯状况较好的情况下推荐使用T4
-sn : 只进行主机发现,不进行端口扫描
-O : 指定Nmap进行系统版本扫描
-sV: 指定让Nmap进行服务版本扫描
-p : 扫描指定的端口
-sS/sT/sA/sW/sM:指定使用 TCP SYN/Connect()/ACK/Window/Maimon scans的方式来对目标主机进行扫描
-sU: 指定使用UDP扫描方式确定目标主机的UDP端口状况
-script : 指定扫描脚本
-Pn :不进行ping扫描
-v 表示显示冗余信息,在扫描过程中显示扫描的细节,从而让用户了解当前的扫描状态
面试问题
Nmap收到数据后,会将其与存储在Nmap服务探测文件中的约3000个NULL探测标记进行对照。此外,对于已软匹配的服务,Nmap会继续发送探测数据,以识别其版本。
脚本交互
Nmap能够与脚本实现交互,借助Nmap脚本引擎(NSE)以及Lua编程语言。这样,我们就能拓展nmap的功能。我们可以根据自身需求编写脚本,对各类网络环境和目标进行个性化检测与分析。
编写这里的脚本需要具备一定的编程技能,这对初学者来说或许有些挑战。不过,一旦掌握了技巧,就能显著增强nmap工具的运用灵活性。
网络安全学习助力
这里有份特别的礼物等大家,就是282G的《网络安全与黑客技术基础学习套装》。套装内容相当丰富,从网络安全初学者的资料到相关技术的视频教学,一应俱全。
新手若想踏入网络安全领域,已有科学完备的学习路径。考虑到众多人偏好易懂内容,特设了21个章节的视频教学,并附上了SRC技术文献及黑客技术相关资料。这样的学习资源,你感觉是否对你的网络安全学习大有裨益?不妨点赞并分享这篇文章,你的意见也欢迎在评论区留言。
作者:小蓝
链接:https://www.lanmiyun.com/content/5476.html
本站部分内容和图片来源网络,不代表本站观点,如有侵权,可联系我方删除。