【2023最新版】超详细NMAP安装保姆级教程,Nmap的介绍、功能并进行网络扫描,收藏这一篇就够了

简介

从诞生之初,Nmap就一直是网络发现和攻击界面测绘的首选工具。从主机发现和端口扫描,到操作系统检测和IDS规避/欺骗,Nmap是大大小小黑客行动的基本工具。

为了绘制网络拓扑图,Nmap的发送特制的数据包到目标主机,然后对返回数据包进行分析。Nmap是一款枚举和测试网络的强大工具。

功能

1.主机探测

2.端口扫描

3.版本检测

4.支持探测脚本的编写

安装

首先访问Nmap官网:http://nmap.org,获得windows对应版本的安装包。

图形化:Zenmap

下载对应安装包后,点击安装,根据提示,一直安装即可。

选择并更改安装路径,点击安装

软件主界面

可以看出其内置了很多扫描类型,支持查看多种扫描结果,UI界面比较直观

此外,还可以在linux终端内安装,更加灵活。

Nmap使用

查看linux下nmap的帮助信息。(执行命令nmpa -h)

Nmap 7.80 ( https://nmap.org )
Usage: nmap [Scan Type(s)] [Options] {target specification}

可见nmap指令的一般格式是:nmap \[扫描类型(可叠加)\] \[选项\] \[目标\]

其中目标可以有如下格式:

TARGET SPECIFICATION:

Can pass hostnames, IP addresses, networks, etc.``Ex: scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0.0-255.1-254``-iL <inputfilename>: Input from list of hosts/networks``-iR <num hosts>: Choose random targets``--exclude <host1[,host2][,host3],...>: Exclude hosts/networks``--excludefile <exclude_file>: Exclude list from file

其他可以指定的参数(部分)有:

  • HOST DISCOVERY: 目标勘测的手段

  • SCAN TECHNIQUES: 指定扫描的技术

  • PORT SPECIFICATION AND SCAN ORDER: 指定端口和扫描顺序

  • SERVICE/VERSION DETECTION: 服务/版本 勘测

  • OS DETECTION: 操作系统勘测

参考windows上有UI的nmap版本内置的扫描类型:​​​​​​​

  `Intense scan                  nmap -T4 -A -v www.baidu.com``Intense scan plus UDP         nmap -sS -sU -T4 -A -v www.baidu.com``Intense scan, all TCP ports   nmap -p 1-65535 -T4 -A -v www.baidu.com``Intense scan, no ping         nmap -T4 -A -v -Pn www.baidu.com``Ping scan                     nmap -sn www.baidu.com``Quick scan                    nmap -T4 -F www.baidu.com``Quick scan plus               nmap -sV -T4 -O -F \--version-light www.baidu.com``Quick traceroute              nmap -sn \--traceroute www.baidu.com``Regular scan                  nmap www.baidu.com``Slow comprehensive scan       nmap -sS -sU -T4 -A -v -PE -PP -PS80,443 -PA3389 -PU40125 -PY -g 53 \--script \"default or (discovery and safe)\" www.baidu.com`

利用Nmap实施网络扫描

主机发现

原理

当网络不通时,我们需要ping一下主机,检查网关是否正常,这与主机发现原理一样。当测试目标是一个网络时,在线的主机才是我们的用主机发现的目标,nmap中提供了许多主机发现的方法,大多与TCP/IP协议簇中的协议有关。

1、跳过ping扫描阶段:

nmap进行其他扫描之前都会对目标进行一个ping扫描。如果目标对ping 扫描无反应将结束整个扫描过程。这种方法可以跳过那些没有响应的主机,从而节省大量时间,但如果目标在线只是采用某种手段屏蔽了ping 扫描,从而躲过我们的其他扫描操作,我们可以指定无论目标是否响应ping 扫描,毒药将整个扫描过程完整的参数呈现出来;如 nmap -PN 192.168.169.131。

2、仅使用ping协议进行主机发现:

有时需要对大量的主机扫描,nmap如果对一个目标主机采取各种手段进行扫描会花费大量时间。这时我们只对目标主机进行扫描。如 nmap -sP 192.168.169.131。

3、使用ARP协议进行主机发现:

当目标主机与我们处于同一网段时,使用ARP协议扫描是最佳选择。不仅速度快,扫描结果精准。因为没有任何的安全措施会阻止正常的arp请求。如 nmap -PR 192.168.169.131。

4、使用TCP协议进行主机发现:

TCP协议主要是三次握手构成,主动端发送syn报文,被动端回应syn+ack报文,然后主动端回应ack。利用此过程,nmap向目标发送syn报文,如果对方回应了syn+ack则说明在线。半开扫描,如nmap -sS 192.168.169.131。全开扫描,如nmap -sT 192.168.169.131。

5、使用UDP协议进行主机发现:

UDP相比较TCP简单,但扫描时并不比TCP协议方便,而且花费时间长,因此这种扫描不常用。如nmap -sU 192.168.169.131。

用法

通常主机发现并不单独使用,而只是作为端口扫描、版本侦测、OS侦测先行步骤。而在某些特殊应用(例如确定大型局域网内活动主机的数量),可能会单独专门适用主机发现功能来完成。

HOST DISCOVERY:`  `-sL: List Scan - simply list targets to scan`  `-sn: Ping Scan - disable port scan`  `-Pn: Treat all hosts as online -- skip host discovery`  `-PS/PA/PU/PY[portlist]: TCP SYN/ACK, UDP or SCTP discovery to given ports`  `-PE/PP/PM: ICMP echo, timestamp, and netmask request discovery probes`  `-PO[protocol list]: IP Protocol Ping`  `-n/-R: Never do DNS resolution/Always resolve [default: sometimes]`  `--dns-servers <serv1[,serv2],...>: Specify custom DNS servers`  `--system-dns: Use OS's DNS resolver`  `--traceroute: Trace hop path to each host

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

操作

命令:nmap -sn IP

端口扫描

原理

nmap向目标主机发送报文并根据返回报文从而认定端口的6种状态。(注意:这六种状态只是namp认为的端口状态,例如:有些主机或者防火墙会返回一些不可靠的报文从而妨碍nmap对端口开放问题的确认)。

  • Open(开放的):端口处于开放状态,意味着目标机器上的应用程序正在该端口监听连接/报文;

  • Closed(关闭的):端口处于关闭状态。这里我们值得注意的是关闭的端口也是可访问的,只是该端口没有应用程序在它上面监听,但是他们随时可能开放;

  • Filtered(过滤的):由于包过滤阻止探测报文到达端口, Nmap 无法确定该端口是否开放。过滤可能来自专业的防火墙设备,路由器规则或者主机上的软件防火墙;

  • Unfiltered(未被过滤的):意味着端口可访问,但 Nmap 不能确定它是开放还是关闭。这种状态和filtered的区别在于:unfiltered的端口能被nmap访问,但是nmap根据返回的报文无法确定端口的开放状态,而filtered的端口直接就没能够被nmap访问。端口被定义为Unfilterd只会发生在TCP ack扫描类型时当返回RST的报文。而端口被定义为filtered 状态的原因是是报文被防火墙设备,路由器规则,或者防火墙软件拦截,无法送达到端口,这通常表现为发送NMAP的主机收到ICMP报错报文,或者主机通过多次重复发送没有收到任何回应)。

  • Open|filtered状态:这种状态主要是nmap无法区别端口处于open状态还是filtered状态。这种状态只会出现在open端口对报文不做回应的扫描类型中,如:udp,ip protocol ,TCP null,fin,和xmas扫描类型。

  • Closed|filtered状态:这种状态主要出现在nmap无法区分端口处于closed还是filtered时。

用法

扫描方式选项​​​​​​​

SCAN TECHNIQUES:`  `-sS/sT/sA/sW/sM: TCP SYN/Connect()/ACK/Window/Maimon scans`  `-sU: UDP Scan`  `-sN/sF/sX: TCP Null, FIN, and Xmas scans`  `--scanflags <flags>: Customize TCP scan flags`  `-sI <zombie host[:probeport]>: Idle scan`  `-sY/sZ: SCTP INIT/COOKIE-ECHO scans`  `-sO: IP protocol scan`  `-b <FTP relay host>: FTP bounce scan

端口参数与扫描顺序:​​​​​​​

PORT SPECIFICATION AND SCAN ORDER:`  `-p <port ranges>: Only scan specified ports`    `Ex: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9`  `--exclude-ports <port ranges>: Exclude the specified ports from scanning`  `-F: Fast mode - Scan fewer ports than the default scan`  `-r: Scan ports consecutively - don't randomize`  `--top-ports <number>: Scan <number> most common ports`  `--port-ratio <ratio>: Scan ports more common than <ratio>

操作

命令:nmap --sS --sU --T4 --top-ports 300 www.baidu.com

参数:

-sS表示使用TCP SYN方式扫描TCP端口;

-sU表示扫描UDP端口;

-T4表示时间级别配置4级;

–top-ports 300表示扫描最有可能开放的300个端口(TCP和UDP分别有300个端口)。

从上图中,我们看到扫描结果,在扫描的300个端口中,有298个是关闭的;开放的 分别是80和443端口。

版本侦测

原理

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

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

如果是TCP端口,尝试建立TCP连接。尝试等待片刻(通常6秒或更多,具体时间可以查询文件nmap-services-probes中Probe TCP NULL q||对应的totalwaitms)。通常在等待时间内,会接收到目标机发送的"WelcomeBanner"信息。nmap将接收到的Banner与nmap-services-probes中NULL probe中的签名进行对比。查找对应应用程序的名字与版本信息。

如果通过"Welcome Banner"无法确定应用程序版本,那么nmap再尝试发送其他的探测包(即从nmap-services-probes中挑选合适的probe),将probe得到回复包与数据库中的签名进行对比。如果反复探测都无法得出具体应用,那么打印出应用返回报文,让用户自行进一步判定。

如果是UDP端口,那么直接使用nmap-services-probes中探测包进行探测匹配。根据结果对比分析出UDP应用服务类型。

如果探测到应用程序是SSL,那么调用openSSL进一步的侦查运行在SSL之上的具体的应用类型。

如果探测到应用程序是SunRPC,那么调用brute-force RPC grinder进一步探测具体服务。

用法​​​​​​​

SERVICE/VERSION DETECTION:`  `-sV: Probe open ports to determine service/version info`  `--version-intensity <level>: Set from 0 (light) to 9 (try all probes)`  `--version-light: Limit to most likely probes (intensity 2)`  `--version-all: Try every single probe (intensity 9)`  `--version-trace: Show detailed version scan activity (for debugging)

操作

命令:nmap --sV www.baidu.com

从图中可知,本次一个扫描了1000个端口,其中有998个是关闭的。

对开开放的两个端口上的服务进行版本侦测的结如方框内显示。

OS侦测

原理

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

具体实现方式如下:

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

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

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

用法​​​​​​​

OS DETECTION:``-O: Enable OS detection``--osscan-limit: Limit OS detection to promising targets``--osscan-guess: Guess OS more aggressively

操作

命令:nmap --O 127.0.0.1

从上图中可看到,指定-O选项后先进行主机发现与端口扫描,根据扫描到端口来进行进一步的OS侦测。获取的结果信息有设备类型,操作系统类型,操作系统的CPE描述,操作系统细节,网络距离等。

最后综合上述命令,对www.baidu.com执行一次加强的快速扫描:

命令:nmap -sV -T4 -O -F --version-light www.cug.edu.cn

通过上述结果,可以看出:

本次侦测共用时5.38s。扫描了一个IP的100个端口,该主机在线。

扫描出5个运行中的服务,类型如上图。

暂时无法准确判断操作系统的类型,但是最有可能是FreeBSD和PC-BSD,对应的概率如上图所示。

黑客学习资源免费分享,保证100%免费!!!

需要的话可以点击**【282G】网络安全&黑客技术零基础到进阶全套学习大礼包,免费分享! **

👉网安(黑客)全套学习视频👈
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。
在这里插入图片描述

在这里插入图片描述

👉网安(黑客红蓝对抗)所有方向的学习路线👈
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
在这里插入图片描述

👉黑客必备开发工具👈
工欲善其事必先利其器。学习黑客常用的开发软件都在这里了,给大家节省了很多时间。

这份完整版的网络安全(黑客)全套学习资料已经上传至CSDN官方,朋友们如果需要点击下方链接即可前往获取【保证100%免费】。
需要的话可以点击【282G】网络安全&黑客技术零基础到进阶全套学习大礼包,免费分享! 也可以VX扫描下方二维码,加我免费领取(记得备注好来意哦~)
在这里插入图片描述

以上就是本文的全部内容了,希望能对你有所帮助!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/143583.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Amazon】AI 代码生成器—Amazon CodeWhisperer初体验 | 开启开挂编程之旅

使用 AI 编码配套应用程序更快、更安全地构建应用程序 文章目录 1.1 Amazon CodeWhisperper简介1.2 Amazon CodeWhisperer 定价2.1 打开VS Code2.2 安装AWS ToolKit插件 一、前言 1.1 Amazon CodeWhisperper简介 1️⃣更快地完成更多工作 CodeWhisperer 经过数十亿行代码的训…

目标检测如何演变:从区域提议和 Haar 级联到零样本技术

目录 一、说明 二、目标检测路线图 2.1 路线图&#xff08;一般&#xff09; 2.2 路线图&#xff08;更传统的方法&#xff09; 2.3 路线图&#xff08;深度学习方法&#xff09; 2.4 对象检测指标的改进 三、传统检测方法 3.1 维奥拉-琼斯探测器 (2001) 3.2 HOG探测器…

为什么u盘在mac上显示不出来

插入U盘是个看似简单的操作&#xff0c;但有时候在Mac电脑上却出现了无法显示U盘的情况。这样的问题是非常让人头疼的&#xff0c;特别是当你急需使用U盘中的文件时。那么&#xff0c;究竟为什么U盘在Mac上会显示不出来呢&#xff1f;今天就让我们一起来深入了解一下这个问题&a…

编程新时代:Amazon CodeWhisperer 助您轻松驾驭代码世界

文章目录 一、什么是 Amazon CodeWhisperer&#xff1f;二、个人无限免费使用三、安装配置3.1 手把手教你在pycharm配置3.2 同理在VSCODE安装 三、Pycharm上测试3.1 根据注释写代码3.2 检查修复代码错误3.3 构建一个简单爬虫 四、 VSCODE上测试4.1 个性化体验4.2 系统兼容性4.3…

【再识C进阶3(下)】详细地认识字符分类函数,字符转换函数和内存函数

前言 &#x1f493;作者简介&#xff1a; 加油&#xff0c;旭杏&#xff0c;目前大二&#xff0c;正在学习C&#xff0c;数据结构等&#x1f440; &#x1f493;作者主页&#xff1a;加油&#xff0c;旭杏的主页&#x1f440; ⏩本文收录在&#xff1a;再识C进阶的专栏&#x1…

vuereact质检工具(eslint)安装使用总结

1、ESLint ESLint工具主要类似java中的checkStyle和findbugs&#xff0c;是检查代码样式和逻辑规范的工具。 1.1、ESLint安装流程 打开VSCode软件&#xff0c;打开扩展中心&#xff0c;下载ESLint插件 图1.1 点击后面的install按进行安装&#xff0c;如图1.2所示&#xff1…

黑马VUE3视频笔记

目录 一、使用create-vue创建项目 二、setup选项 三、reactive和ref函数 1.reactive() 2.ref() 三、computed 四、watch ​五、生命周期函数 六、父传子、子传父 父传子defineProps 子传父defineEmits 七、模板引用 ref defineExpose 八、跨层传递普通数据 prov…

SpringBoot 学习(二)配置

2. SpringBoot 配置 2.1 配置文件类型 配置文件用于修改 SpringBoot 的默认配置。 2.1.1 properties 文件 **properties ** 是属性文件后缀。 文件名&#xff1a;application.properties 只能保存键值对。 基础语法&#xff1a;keyvalue namewhy注入配置类 Component //…

百度SEO优化不稳定的原因分析(提升网站排名的稳定性)

百度SEO优化不稳定介绍蘑菇号-www.mooogu.cn SEO不稳定是指网站在搜索引擎中的排名不稳定&#xff0c;随着时间的推移会发生变化。这种情况可能会出现在网站页面结构、内容质量、外链质量等方面存在缺陷或不合理之处。因此&#xff0c;优化SEO非常重要&#xff0c;可以提高网站…

Cruise 的界面和模型文件路径介绍

文章目录 打开 Cruise自带模型所在路径自带模型分类Cruise 中的模型路径解析打开用户手册建模界面介绍打开模型 打开 Cruise 最新的几个 Cruise 软件都是集成到一个平台上的&#xff0c;名为 AVL Advanced Simulation Desktop。 自带模型所在路径 User 选项卡下的模型&#x…

Spring实现简单的Bean容器

1.BeanDefinition&#xff0c;用于定义 Bean 实例化信息&#xff0c;现在的实现是以一个 Object 存放对象 public class BeanDefinition {/*** bean对象*/private Object bean;/*** 存放 &#xff08;定义&#xff09;Bean 对象*/public BeanDefinition(Object bean) {this.bea…

关于TUM数据集

2、验证回环检测算法&#xff0c;需要有人工标记回环的数据集。然而人工标记回环是很不方便的&#xff0c;我们会考虑根据标准轨迹计算回环。即&#xff0c;如果轨迹中有两个帧的位姿非常相近&#xff0c;就认为它们是回环。请根据TUM数据集给出的标准轨迹&#xff0c;计算出一…

怎么选择伪原创工具?伪原创工具推荐

什么是伪原创工具&#xff1f;伪原创工具是一种可以将已有文本进行修改、改写或重新组合&#xff0c;生成新的文本内容的工具。 伪原创工具的作用 节省时间和精力&#xff1a;手工创作内容需要耗费大量时间和精力&#xff0c;而伪原创工具可以在短时间内生成大量内容&#xf…

嵌入式中如何用C语言操作sqlite3(07)

sqlite3编程接口非常多&#xff0c;对于初学者来说&#xff0c;我们暂时只需要掌握常用的几个函数&#xff0c;其他函数自然就知道如何使用了。 数据库 本篇假设数据库为my.db,有数据表student。 nonamescore4嵌入式开发爱好者89.0 创建表格语句如下&#xff1a; CREATE T…

C++中实现雪花算法来在秒级以及毫秒及时间内生成唯一id

1、雪花算法原理 雪花算法&#xff08;Snowflake Algorithm&#xff09;是一种用于生成唯一ID的算法&#xff0c;通常用于分布式系统中&#xff0c;以确保生成的ID在整个分布式系统中具有唯一性。它的名称来源于雪花的形状&#xff0c;因为生成的ID通常是64位的整数&#xff0…

【数据结构】哈希表(详)

文章目录 前言正文一、基本概念二、基本原理1.哈希函数1.1直接定址法&#xff08;常用&#xff09;1.2除留余数法&#xff08;常用&#xff09;1.3 平方取中法&#xff08;了解&#xff09;1.4 折叠法(了解)1.5 随机数法(了解)1.6数学分析法(了解) 2.哈希冲突2.1 平均查找长度2…

QT配置MySQL数据库 ninja: build stopped: subcommand failed

QT配置MySQL数据库 我当前的软件版本&#xff1a;QT Creator 10.0.2 (community)&#xff0c;MingW 6.4.3 (QT6)&#xff0c;MySQL 8.0。 MySQL不配置支持的数据库有QList("QSQLITE", "QODBC", "QPSQL")&#xff0c;这个时候是不支持MYSQL数据…

No127.精选前端面试题,享受每天的挑战和学习

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…

箱讯科技成功闯入第八届“创客中国”全国总决赛—在国际物流领域一枝独秀

添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 2023年9月26日&#xff0c;第八届“创客中国”数字化转型中小企业创新创业大赛决赛在贵州圆满收官。 经过初赛、复赛、决赛的激烈角逐&#xff0c;箱讯科技与众多强劲对手同台竞技&#xff0c;最终凭借出…

Android gradle dependency tree change(依赖树变化)监控实现

文章目录 前言基本原理执行流程diff 报告不同分支 merge 过来的 diff 报告同个分支产生的 merge 报告同个分支提交的 diff 报告 具体实现原理我们需要监控怎样的 Dendenpency 变化怎样获取 dependency Treeproject.configurations 方式./gradlew dependenciesAsciiDependencyRe…