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复制
<code class="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$</code>

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

常用指令:

代码语言:txt复制
<code class="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 #路由跟踪,会列出每一跳的端口开放情况,不常用</code>

反向DNS解析:

代码语言:txt复制
<code class="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$ </code>
二、网络探测,细致化扫描

包含的参数如下:

选项

Sora
Sora

Sora是OpenAI发布的一种文生视频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复制
<code class="txt">$ nmap -T4 192.168.1.1</code>

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

2.指定端口或端口范围:(-p)代码语言:txt复制
<code class="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  #字面意思</code>

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

代码语言:txt复制
<code class="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$</code>
3.nmap的6种端口状态Open开放状态Closed关闭状态;当然不一定是真的关闭,不排除对方系统做了一定的安全防护从而忽略nmap的探测报文Filtered被过滤;对方主机可能存在防火墙设备将nmap包阻隔,也可能是网络拥塞造成的,如遇到此状态建议在不同时间段再次扫描Unfiltered未被过滤;证明端口可以访问,但无法判断是Open还是Closed,当使用ACK扫描才会呈现该状态,这时建议换一种扫描方式Open|Filtered不确定态;可能受到专业设备的阻挡,nmap发出去的报文没有得到响应,可更换扫描方式再次尝试Closed|Filtered不确定是关闭还是被过滤,只出现在IPID Idle扫描中,不常用4.SYN半开扫描(-sS)

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

代码语言:txt复制
<code class="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$</code>
细谈网络瑞士军刀-Nmap使用指南

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

5.TCP连接扫描(-sT)

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

代码语言:txt复制
<code class="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$</code>
细谈网络瑞士军刀-Nmap使用指南

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

6.UDP扫描(-sU)

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

代码语言:txt复制
<code class="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$</code>
细谈网络瑞士军刀-Nmap使用指南
7.隐蔽扫描(-sN;-sF;-sX)

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

代码语言:txt复制
<code class="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$</code>
细谈网络瑞士军刀-Nmap使用指南

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

代码语言:txt复制
<code class="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$</code>
细谈网络瑞士军刀-Nmap使用指南

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

代码语言:txt复制
<code class="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$</code>
细谈网络瑞士军刀-Nmap使用指南

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

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

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

254

2023.09.22

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

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

1089

2024.03.01

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

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

126

2023.07.25

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

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

302

2023.08.08

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

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

399

2024.11.14

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

69

2026.03.11

Go高并发任务调度与Goroutine池化实践
Go高并发任务调度与Goroutine池化实践

本专题围绕 Go 语言在高并发任务处理场景中的实践展开,系统讲解 Goroutine 调度模型、Channel 通信机制以及并发控制策略。内容包括任务队列设计、Goroutine 池化管理、资源限制控制以及并发任务的性能优化方法。通过实际案例演示,帮助开发者构建稳定高效的 Go 并发任务处理系统,提高系统在高负载环境下的处理能力与稳定性。

37

2026.03.10

Kotlin Android模块化架构与组件化开发实践
Kotlin Android模块化架构与组件化开发实践

本专题围绕 Kotlin 在 Android 应用开发中的架构实践展开,重点讲解模块化设计与组件化开发的实现思路。内容包括项目模块拆分策略、公共组件封装、依赖管理优化、路由通信机制以及大型项目的工程化管理方法。通过真实项目案例分析,帮助开发者构建结构清晰、易扩展且维护成本低的 Android 应用架构体系,提升团队协作效率与项目迭代速度。

82

2026.03.09

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

97

2026.03.06

热门下载

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

精品课程

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

共48课时 | 10.5万人学习

Git 教程
Git 教程

共21课时 | 4.2万人学习

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

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