0

0

细谈网络瑞士军刀-Nmap使用指南

爱谁谁

爱谁谁

发布时间:2025-06-25 10:58:11

|

542人浏览过

|

来源于php中文网

原创

前言

nmap是业内非常知名的网络扫描工具,和netcat齐名为网络瑞士军刀,想必大部分人都看过或者听说过《黑客帝国》,里面的有几个场景使用的是nmap,不妨引用一张电影剧照:

细谈网络瑞士军刀-Nmap使用指南nmap

女主通过nmap扫描开放端口,并通过弱口令拿到主机权限,这不能说明nmap多么强大,因为nmap强大之处不仅仅是扫描端口,只能说明密码复杂度多么重要!nmap常用于漏洞扫描、端口扫描、网络发现等。篇幅有限,本文将从以下五大部分介绍nmap常用用法:

主机发现网络探测指纹识别与探测防火墙/IDS逃逸信息收集暴力穷举

过程中会尽量抓包还原真实场景,用的极少的参数将尽可能忽略不讲,亦可称之为鸡肋,相信熟悉常用参数和用法后,其他鲜为人知的参数到真正需要用到的场景下再翻看man文档也不迟。

一、主机发现

涉及到的参数列表,有些参数不常用,需要时可对照参考:

选项

含义

-sP

Ping扫描

-P0

无Ping扫描

-PS

TCP SYN Ping扫描

-PU

UDP Ping扫描

-PE;-PP;-PM

ICMP Ping Types扫描

-PR

ARP Ping扫描

-n

禁止DNS反向解析

-R

反向解析域名

--system-dns

使用系统域名解析器

-sL

列表扫描

-6

扫描IPv6地址

--traceroute

路由跟踪

-PY

SCTP INIT Ping扫描

-PA

TCP ACK Ping扫描

最简单的扫描,什么参数都不加,默认发SYN探测:

代码语言:txt复制
$ nmap 192.168.1.1Starting Nmap 7.91 ( https://nmap.org ) at 2021-12-25 14:29 CSTNmap scan report for openwrt.linux-code.com (192.168.1.1)Host is up (0.00026s latency).Not shown: 989 closed portsPORT     STATE SERVICE21/tcp   open  ftp22/tcp   open  ssh53/tcp   open  domain80/tcp   open  http81/tcp   open  hosts2-ns139/tcp  open  netbios-ssn443/tcp  open  https444/tcp  open  snpp445/tcp  open  microsoft-ds1234/tcp open  hotline5000/tcp open  upnpMAC Address: 00:0C:29:BE:5A:26 (VMware)Nmap done: 1 IP address (1 host up) scanned in 39.51 seconds$

可以看到列出了192.168.1.1这个IP的开放端口和对应服务信息

常用指令:

代码语言:txt复制
nmap -sP -n 192.168.1.0/24  #列出当前网段下所有存活主机,发送ICMP探测,-n 禁止DNS反向解析,节省扫描时间nmap -PS -n 172.16.0.0/16   #列出当前网段下所有存活主机,发送SYN Ping探测nmap -PR -n 192.168.1.1     #使用ARP Ping扫描nmap --system-dns 119.29.29.29 blog.linux-code.com  #指定DNS地址,将域名解析成IP后再进行端口探测,不常用nmap --traceroute -v blog.linux-code.com #路由跟踪,会列出每一跳的端口开放情况,不常用

反向DNS解析:

代码语言:txt复制
$ nmap -R -sL 192.168.1.0/24 |& grep '(' Starting Nmap 7.91 ( https://nmap.org ) at 2021-12-25 14:33 CSTNmap scan report for openwrt.linux-code.com (192.168.1.1)Nmap scan report for esxi.linux-code.com (192.168.1.10)Nmap scan report for qqdb.linux-code.com (192.168.1.84)Nmap scan report for pan.linux-code.com (192.168.1.95)Nmap scan report for nas.linux-code.com (192.168.1.128)Nmap scan report for node1 (192.168.1.197)Nmap done: 256 IP addresses (0 hosts up) scanned in 0.10 seconds$ 
二、网络探测,细致化扫描

包含的参数如下:

选项

Smodin AI Content Detector
Smodin AI Content Detector

多语种AI内容检测工具

下载

含义

-T

时序选项,范围T0-T5

-p|-F

常用扫描方式

-sS

TCP SYN半开扫描

-sT

TCP连接扫描

-sU

UDP扫描

-sN;-sF;-sX

隐蔽扫描

-sA

TCP ACK扫描

-sW

TCP窗口扫描

-sM

TCP Maimon扫描

--scanflags

自定义TCP扫描

-sI(大写字母i)

空闲扫描

-sO

IP协议扫描

-b

FTP Bounce扫描

常用命令:

1.按时序扫描(-T0~-T5)代码语言:txt复制
$ nmap -T4 192.168.1.1

-T为时序扫描,分为-T0~-T5六个等级,数字越大速度越快越不精准,慢扫描多用于IDS逃逸,常用-T4;配合-F使用可提高扫描速度及效果,-F会尽量少的扫描端口,不会把默认端口全扫一遍

2.指定端口或端口范围:(-p)代码语言:txt复制
$ nmap -p 80 blog.linux-code.com  #只扫描80端口$ nmap -p 80,443 -n 192.168.1.1   #80,443,-n不做DNS反解$ nmap -p 445-1023 192.168.1.1    #445-1023$ nmap -p 80,443,445-1000 -n 192.168.1.1  #字面意思

如果既想扫TCP又想扫UDP,可以在端口前加"T:"或"U:",代表TCP和UDP,必须指定-sU(UDP扫描类型)且需要指定一个TCP扫描类型(如-sS、-sF、-sT等)

代码语言:txt复制
$ nmap -sU -p U:53,T:80,22 -sT -n 192.168.1.1Starting Nmap 7.91 ( https://nmap.org ) at 2021-12-25 14:37 CSTNmap scan report for 192.168.1.1Host is up (0.00037s latency).PORT   STATE         SERVICE22/tcp open          ssh80/tcp open          http53/udp open|filtered domainMAC Address: 00:0C:29:BE:5A:26 (VMware)Nmap done: 1 IP address (1 host up) scanned in 0.53 seconds$
3.nmap的6种端口状态Open开放状态Closed关闭状态;当然不一定是真的关闭,不排除对方系统做了一定的安全防护从而忽略nmap的探测报文Filtered被过滤;对方主机可能存在防火墙设备将nmap包阻隔,也可能是网络拥塞造成的,如遇到此状态建议在不同时间段再次扫描Unfiltered未被过滤;证明端口可以访问,但无法判断是Open还是Closed,当使用ACK扫描才会呈现该状态,这时建议换一种扫描方式Open|Filtered不确定态;可能受到专业设备的阻挡,nmap发出去的报文没有得到响应,可更换扫描方式再次尝试Closed|Filtered不确定是关闭还是被过滤,只出现在IPID Idle扫描中,不常用4.SYN半开扫描(-sS)

此选项常用,不会和对方主机进行三次握手,只发送SYN报文,之后断开连接,很难被防火墙或管理员检测到;结合前面所述,如果端口处于不确定态,可使用该选项进行扫描。

代码语言:txt复制
$ nmap -sS -p 22,80 -n 192.168.1.1Starting Nmap 7.91 ( https://nmap.org ) at 2021-12-25 14:39 CSTNmap scan report for 192.168.1.1Host is up (0.00030s latency).PORT   STATE SERVICE22/tcp open  ssh80/tcp open  httpMAC Address: 00:0C:29:BE:5A:26 (VMware)Nmap done: 1 IP address (1 host up) scanned in 0.34 seconds$
细谈网络瑞士军刀-Nmap使用指南

每次发完SYN后,不接受第二次握手直接RST掉对端主机的SYN包,因为从对方发送第二次握手包时nmap就已经能判断端口是否有开放。

5.TCP连接扫描(-sT)

顾名思义,建立在三次握手的基础上;当SYN半开扫描不能用的时候才考虑用它,同时也是端口扫描中最基础、最稳定的扫描方式。

代码语言:txt复制
$ nmap -sT -p 22,80 -n 192.168.1.1 Starting Nmap 7.91 ( https://nmap.org ) at 2021-12-25 14:43 CSTNmap scan report for 192.168.1.1Host is up (0.00028s latency).PORT   STATE SERVICE22/tcp open  ssh80/tcp open  httpMAC Address: 00:0C:29:BE:5A:26 (VMware)Nmap done: 1 IP address (1 host up) scanned in 0.26 seconds$
细谈网络瑞士军刀-Nmap使用指南

完成建联后紧接着断开连接。

6.UDP扫描(-sU)

使用UDP报文探测,扫描速度较慢,通过ICMP不可达判断端口开放情况;以下通过-p指定端口大大缩短扫描耗时:

代码语言:txt复制
$ nmap -sU -p 53,80 -n 192.168.1.1  Starting Nmap 7.91 ( https://nmap.org ) at 2021-12-25 14:45 CSTNmap scan report for 192.168.1.1Host is up (0.00028s latency).PORT   STATE         SERVICE53/udp open|filtered domain80/udp closed        httpMAC Address: 00:0C:29:BE:5A:26 (VMware)Nmap done: 1 IP address (1 host up) scanned in 1.52 secondss$
细谈网络瑞士军刀-Nmap使用指南
7.隐蔽扫描(-sN;-sF;-sX)

-sN为Null扫描,通过发送非常规TCP通信数据对计算机进行探测,若目标主机相应端口是关闭的,会响应一个RST数据表,若端口开放则不会响应任何信息。

代码语言:txt复制
$ nmap -sN -p 22,80 -n 192.168.1.1     Starting Nmap 7.91 ( https://nmap.org ) at 2021-12-25 14:49 CSTNmap scan report for 192.168.1.1Host is up (0.00026s latency).PORT   STATE         SERVICE22/tcp open|filtered ssh80/tcp open|filtered httpMAC Address: 00:0C:29:BE:5A:26 (VMware)Nmap done: 1 IP address (1 host up) scanned in 1.52 seconds$
细谈网络瑞士军刀-Nmap使用指南

-sF为FIN扫描,不需要完成TCP握手,只向目标端口发送一个FIN包,如果收到目标响应的RST包,则说明端口开放,否则视为关闭或者被拦截的(不确定态),因为目标主机对于此类无意义请求可以选择RST也可以选择不响应。

代码语言:txt复制
$ nmap -sF -p 22,80 -n 192.168.1.1 Starting Nmap 7.91 ( https://nmap.org ) at 2021-12-25 14:52 CSTNmap scan report for 192.168.1.1Host is up (0.00024s latency).PORT   STATE         SERVICE22/tcp open|filtered ssh80/tcp open|filtered httpMAC Address: 00:0C:29:BE:5A:26 (VMware)Nmap done: 1 IP address (1 host up) scanned in 1.59 seconds$
细谈网络瑞士军刀-Nmap使用指南

-sX为Xmas扫描,数据包的FIN、PSH和URG标志位置打开,即标志为1,如果目标主机端口开放则会响应一个RST包,否则判断位不确定态。

代码语言:txt复制
$ nmap -sX -p 22,80 -n 192.168.1.1Starting Nmap 7.91 ( https://nmap.org ) at 2021-12-25 14:57 CSTNmap scan report for 192.168.1.1Host is up (0.00030s latency).PORT   STATE         SERVICE22/tcp open|filtered ssh80/tcp open|filtered httpMAC Address: 00:0C:29:BE:5A:26 (VMware)Nmap done: 1 IP address (1 host up) scanned in 1.54 seconds$
细谈网络瑞士军刀-Nmap使用指南

相关专题

更多
c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

226

2023.09.22

java中null的用法
java中null的用法

在Java中,null表示一个引用类型的变量不指向任何对象。可以将null赋值给任何引用类型的变量,包括类、接口、数组、字符串等。想了解更多null的相关内容,可以阅读本专题下面的文章。

428

2024.03.01

tcp和udp的区别
tcp和udp的区别

TCP和UDP的区别,在连接性、可靠性、速度和效率、数据报大小以及适用场景等方面。本专题为大家提供tcp和udp的区别的相关的文章、下载、课程内容,供大家免费下载体验。

114

2023.07.25

udp是什么协议
udp是什么协议

UDP是OSI参考模型中一种无连接的传输层协议。本专题为大家带来udp是什么协议的相关文章,免费提供给大家。

264

2023.08.08

tcp和udp有什么区别
tcp和udp有什么区别

tcp和udp的区别有:1、udp是无连接的,tcp是面向连接的;2、udp是不可靠传输,tcp是可靠传输;3、udp是面向报文传输,tcp是面向字节流传输。想了解更多tcp相关的内容,可阅读本专题下面的相关文章。

339

2024.11.14

JavaScript ES6新特性
JavaScript ES6新特性

ES6是JavaScript的根本性升级,引入let/const实现块级作用域、箭头函数解决this绑定问题、解构赋值与模板字符串简化数据处理、对象简写与模块化提升代码可读性与组织性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

0

2025.12.24

php框架基础知识汇总
php框架基础知识汇总

php框架是构建web应用程序的架构,提供工具和功能,以简化开发过程。选择合适的框架取决于项目需求和技能水平。实战案例展示了使用laravel构建博客的步骤,包括安装、创建模型、定义路由、编写控制器和呈现视图。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1

2025.12.24

Word 字间距调整方法汇总
Word 字间距调整方法汇总

本专题整合了Word字间距调整方法,阅读下面的文章了解更详细操作。

2

2025.12.24

任务管理器教程
任务管理器教程

本专题整合了任务管理器相关教程,阅读下面的文章了解更多详细操作。

2

2025.12.24

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Django 教程
Django 教程

共28课时 | 2.4万人学习

ASP 教程
ASP 教程

共34课时 | 2.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号