Nmap(Network Mapper)
xsobi 2024-12-01 05:40 1 浏览
1. 概述
Nmap是一款开源免费的网络发现(Network Discovery)和安全审计(Security Auditing)工具。Nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统(这是亦称 fingerprinting)。它是网络管理员必用的软件之一,以及用以评估网络系统安全。
2. 基本功能
1)探测目标主机是否在线
2)扫描主机端口,嗅探所提供的网络服务
3)推断主机所用的操作系统
3. 工具安装
1)Windows操作系统Nmap工具安装
在Nmap官网www.nmap.org直接下载安装Nmap工具最新版本,如nmap-7.80-setup.exe,双击进行安装,安装过程中会自动弹出安装npcap-0.9982.exe窗口,点击确认安装,并按照提示一步一步安装完成。
2)Linux操作系统Nmap工具安装
在Nmap官网www.nmap.org直接下载安装Nmap工具最新版本,如nmap-7.80-1.x86_64.rpm,将工具安装包下载到本地,然后使用如下命令安装即可(切换到安装包目录)
安装命令:rpm -ivh nmap-7.80-1.x86_64.rpm
卸载命令:rpm -e nmap-7.80-1.x86_64.rpm
4. 扫描原理
4.1. TCP SYN扫描(-sS)
Nmap默认扫描方式,通常被称为半开放扫描。发送SYN包到目标端口,若收到SYN/ACK回复,则端口被认为开放状态;若收到RST回复,则端口被认为关闭状态;若没有收到回复,则认为该端口被屏蔽。因为仅发送SYN包对目标主机的特定端口,但不建立完整的TCP连接,所以相对比较隐蔽,而且效率比较高,适用范围广。
4.2. TCP connect扫描(-sT)
使用系统网络API connect向目标主机的端口发起连接,如果无法连接,说明该端口关闭。该方式扫描速度比较慢,而且由于建立完整的TCP连接会在目标主机上留下记录信息,不够隐蔽。
4.3. TCP ACK 扫描(-sA)
向目标主机的端口发送ACK包,如果收到RST包,说明该端口没有被防火墙屏蔽;没有收到RST包,说明被屏蔽。该方式只能用于确定防火墙是否屏蔽某个端口,可以辅助TCP SYN的方式来判断目标主机防火墙的状况
4.4. TCP FIN/Xmas/NULL扫描(-sN/sF/sX)
这三种扫描方式被称为秘密扫描,因为相对比较隐蔽。FIN扫描向目标主机的端口发送的TCP FIN 包括Xmas tree包或NULL包,如果收到对方的RST回复包,那么说明该端口是关闭的;没有收到RST包说明该端口可能是开放的或者被屏蔽了。其中Xmas tree包是指flags中FIN URG PUSH被置为1的TCP包;NULL包是指所有的flags都为0的TCP包。
4.5. UDP扫描(-sU)
UDP扫描用于判断UDP端口的情况,向目标主机的UDP端口发送探测包,如果收到回复ICMP port unreachable就说明该端口是关闭的;如果没有收到回复,那说明该UDP端口可能是开放的或者屏蔽的。因此,通过反向排除法的方式来判断哪些UDP端口是可能处于开放状态的。
4.6. 其他方式(-sY/-sZ)
除了以上几种常用的方式外,Nmap还支持多种其他的探测方式。例如使用SCTP INIT/Cookie-ECHO方式是来探测SCTP的端口开放情况;使用IP protocol方式来探测目标主机支持的协议类型(tcp/udp/icmp/sctp等等);使用idle scan方式借助僵尸主机来扫描目标主机,以达到隐蔽自己的目的;或者使用FTP bounce scan,借助FTP允许的代理服务扫描其他的主机,同样达到隐蔽自己的目的
5. 工具使用
1)直接使用Nmap命令行方式
2)使用Zenmap图形界面方式(详见Zenmap工具使用)
3)常见参数解读
-sT TCP connect()扫描,这种方式会在目标主机的日志中记录大批连接请求和错误信息
-sS 半开扫描,很少有系统能把它记入系统日志。不过,需要Root权限
-sP ping扫描,Nmap在扫描端口时,默认都会使用ping扫描,只有主机存活,Nmap才会继续扫描
-sU UDP端口扫描,,但UDP扫描是不可靠的
-sV 探测端口服务版本
-Pn 扫描之前不需要用ping命令,有些防火墙禁止ping命令。可以使用此选项进行扫描
-A 选项用于使用进攻性方式扫描
-T4 指定扫描过程使用的时序,总有6个级别(0-5),级别越高,扫描速度越快,但也容易被防火墙或IDS检测并屏蔽掉,在网络通讯状况较好的情况下推荐使用T4
-v 表示显示详细信息,在扫描过程中显示扫描的细节(如-vv显示更详细的信息)
-p 扫描指定端口(如-p 80)
--script 后面带插件名称,使用相应的插件(如--script ssl-enum-ciphers,扫描SSL/TLS算法套件)
-F 快速模式,仅扫描TOP 100的端口
-oN 标准保存,将扫描结果保存到指定的文件中(如-oN AAA.txt)
-oX xml文件格式保存(如-oX D:\aaa.xml),常用xml文件格式
-oA 扫描结果以标准格式、XML格式和Grep格式一次性保存,分别存放在bbb.nmap,bbb.xml和bbb.gnmap中(如-oA bbb)
-O 远程操作系统检测,存在误报
-h 帮助选项
6. 常见场景扫描
1)A simple subnet scan
nmap <IP>
2)Scan all the TCP ports of a host
nmap -p- <IP>
3)Performing a TCP SYN scan
nmap -sS -p- <IP>
4)Performing a UDP Port scan
nmap -sU -r -v <IP>
7. 扫描结果端口状态
1)open:端口是开放的
2)losed:端口是关闭的
3)filtered:端口被防火墙IDS/IPS屏蔽,无法确定其状态
4)unfiltered:端口没有被屏蔽,但是否开放需要进一步确定
5)open|filtered:端口是开放的或被屏蔽
6)closed|filtered :端口是关闭的或被屏蔽
Zenmap(The GUI version of Nmap)
1. 工具安装
1)Windows系统Zenmap工具安装
无需单独安装,安装Nmap时已经将Zenmap安装,可直接使用。
2)Linux操作系统Zenmap工具安装
先安装nmap,再安装zenmap(或直接安装nmap/zenmap集成包nmap-7.80-1.src.rpm)
安装nmap/zenmap集成包:rpm -ivh nmap-7.80-1.src.rpm
安装Zenmap:rpm -ivh zenmap-7.80-1.noarch.rpm
2. 工具使用
3. 工具默认扫描策略
1)Intense scan(nmap -T4 -A -v)
2)Intense scan plus UDP(nmap -sS -sU -T4 -A -v)
3)Intense scan, all TCP ports(nmap -p 1-65535 -T4 -A -v)
4)Intense scan, no ping(nmap -T4 -A -v -Pn)
5)Ping scan(nmap -sn)
6)Quick scan(nmap -T4 -F)
7)Quick scan plus(nmap -sV -T4 -O -F --version-light)
8)Quick traceroute(nmap -sn --traceroute)
9)Regular scan(nmap)
10)Slow comprehensive scan(nmap -sS -sU -T4 -A -v -PE -PP -PS80,443 -PA3389 -PU40125 -PY -g 53 --script "default or (discovery and safe)")
- 上一篇:黑客必学nmap用法
- 下一篇:每日一个Linux命令解析——nmap
相关推荐
- 好用的云函数!后端低代码接口开发,零基础编写API接口
-
前言在开发项目过程中,经常需要用到API接口,实现对数据库的CURD等操作。不管你是专业的PHP开发工程师,还是客户端开发工程师,或者是不懂编程但懂得数据库SQL查询,又或者是完全不太懂技术的人,通过...
- 快速上手:Windows 平台上 cURL 命令的使用方法
-
在工作流程中,为了快速验证API接口有效性,团队成员经常转向直接执行cURL命令的方法。这种做法不仅节省时间,而且促进了团队效率的提升。对于使用Windows系统的用户来说,这里有一套详细...
- 使用 Golang net/http 包:基础入门与实战
-
简介Go的net/http包是构建HTTP服务的核心库,功能强大且易于使用。它提供了基本的HTTP客户端和服务端支持,可以快速构建RESTAPI、Web应用等服务。本文将介绍ne...
- #小白接口# 使用云函数,人人都能编写和发布自己的API接口
-
你只需编写简单的云函数,就可以实现自己的业务逻辑,发布后就可以生成自己的接口给客户端调用。果创云支持对云函数进行在线接口编程,进入开放平台我的接口-在线接口编程,设计一个新接口,设计和配置好接口参...
- 极度精神分裂:我家没有墙面开关,但我虚拟出来了一系列开关
-
本内容来源于@什么值得买APP,观点仅代表作者本人|作者:iN在之前和大家说过,在iN的家里是没有墙面开关的。...
- window使用curl命令的注意事项 curl命令用法
-
cmd-使用curl命令的注意点前言最近在cmd中使用curl命令来测试restapi,发现有不少问题,这里记录一下。在cmd中使用curl命令的注意事项json不能由单引号包括起来json...
- Linux 系统curl命令使用详解 linuxctrl
-
curl是一个强大的命令行工具,用于在Linux系统中进行数据传输。它支持多种协议,包括HTTP、HTTPS、FTP等,用于下载或上传数据,执行Web请求等。curl命令的常见用法和解...
- Tornado 入门:初学者指南 tornados
-
Tornado是一个功能强大的PythonWeb框架和异步网络库。它最初是为了处理实时Web服务中的数千个同时连接而开发的。它独特的Web服务器和框架功能组合使其成为开发高性能Web...
- PHP Curl的简单使用 php curl formdata
-
本文写给刚入PHP坑不久的新手们,作为工具文档,方便用时查阅。CURL是一个非常强大的开源库,它支持很多种协议,例如,HTTP、HTTPS、FTP、TELENT等。日常开发中,我们经常会需要用到cur...
- Rust 服务器、服务和应用程序:7 Rust 中的服务器端 Web 应用简介
-
本章涵盖使用Actix提供静态网页...
- 我给 Apache 顶级项目提了个 Bug apache顶级项目有哪些
-
这篇文章记录了给Apache顶级项目-分库分表中间件ShardingSphere提交Bug的历程。说实话,这是一次比较曲折的Bug跟踪之旅。10月28日,我们在GitHub上提...
- linux文件下载、服务器交互(curl)
-
基础环境curl命令描述...
- curl简单使用 curl sh
-
1.curl--help#查看关键字2.curl-A“(添加user-agent<name>SendUser-Agent<name>toserver)”...
- 常用linux命令:curl 常用linux命令大全
-
//获取网页内容//不加任何选项使用curl时,默认会发送GET请求来获取内容到标准输出$curlhttp://www.baidu.com//输出<!DOCTYPEh...
- 三十七,Web渗透提高班之hack the box在线靶场注册及入门知识
-
一.注册hacktheboxHackTheBox是一个在线平台,允许测试您的渗透技能和代码,并与其他类似兴趣的成员交流想法和方法。它包含一些不断更新的挑战,并且模拟真实场景,其风格更倾向于CT...
- 一周热门
- 最近发表
-
- 好用的云函数!后端低代码接口开发,零基础编写API接口
- 快速上手:Windows 平台上 cURL 命令的使用方法
- 使用 Golang net/http 包:基础入门与实战
- #小白接口# 使用云函数,人人都能编写和发布自己的API接口
- 极度精神分裂:我家没有墙面开关,但我虚拟出来了一系列开关
- window使用curl命令的注意事项 curl命令用法
- Linux 系统curl命令使用详解 linuxctrl
- Tornado 入门:初学者指南 tornados
- PHP Curl的简单使用 php curl formdata
- Rust 服务器、服务和应用程序:7 Rust 中的服务器端 Web 应用简介
- 标签列表
-
- grid 设置 (58)
- 移位运算 (48)
- not specified (45)
- patch补丁 (31)
- strcat (25)
- 导航栏 (58)
- context xml (46)
- scroll (43)
- element style (30)
- dedecms模版 (53)
- vs打不开 (29)
- nmap (30)
- webgl开发 (24)
- parse (24)
- c 视频教程下载 (33)
- paddleocr (28)
- listview排序 (33)
- firebug 使用 (31)
- transactionmanager (30)
- characterencodingfilter (33)
- getmonth (34)
- commandtimeout (30)
- hibernate教程 (31)
- label换行 (33)
- curlpost (31)