《网络安全自学教程》- Nmap使用及扫描原理分析

《网络安全自学教程》

在这里插入图片描述

Nmap(Network Mapper)是一款免费的开源网络扫描器,向目标主机发送特定的数据包,根据返回的流量特征,分析主机信息。主要功能有:「端口扫描」「主机探测」「服务识别」「系统识别」

在这里插入图片描述

Nmap使用教程

  • 1、端口扫描
    • 1.1、 指定端口
    • 1.2、 指定扫描方式
      • 1.2.1、 TCP全连接扫描
      • 1.2.2、 SYN半链接扫描
      • 1.2.3、 隐秘扫描
      • 1.2.4、 扫描UDP端口
  • 2、主机发现
    • 2.1、指定主机
    • 2.2、Wireshark抓包分析主机发现原理
      • 2.2.1、局域网外
      • 2.2.2、局域网内
  • 3、服务识别
  • 4、系统识别
  • 5、扫描结果导出
  • 6、NES脚本

kali 自带 nmap 「终端」输入 nmap 可以看到 nmap 的版本,证明 nmap 可用。

在这里插入图片描述

参数:

  • -p 指定端口(端口探测)
  • -sT 指定扫描方式为 TCP全连接
  • -sS 指定扫描方式为 SYN半连接
  • -sF 指定扫描方式为 Fin扫描
  • -sN 指定扫描方式为 Null扫描
  • -sX 指定扫描方式为 Xmas扫描
  • -sU 扫描UDP端口
  • -sP 指定网段(主机探测)
  • -sn 指定网段(主机探测)
  • -sV 识别服务指纹
  • -o 识别操作系统
  • -oN 导出结果为txt
  • -oX 导出结果为xml
  • --script 指定脚本
  • --script-args 指定脚本参数

1、端口扫描

扫描主机的「开放端口」,在nmap后面直接跟主机IP(默认扫描1000个常用端口)

nmap 192.168.31.180

在这里插入图片描述

从上图可以看到:它用1.58秒扫描了1000个端口,其中991个端口关闭,9个端口开放,并列出了开放端口对应的服务。

STATE栏显示「端口状态」

  • open:开放
  • closed:关闭
  • filterd:被过滤,未收到返回报文
  • unfilterd:未被过滤,收到返回报文,但无法确认是否开放
  • opend/unfilterd:开放或未被过滤
  • closed/unfilterd:关闭或未被过滤

1.1、 指定端口

扫描「指定端口」,使用 -p 参数,可以一次扫描单个端口、多个端口、或扫描一个范围的端口

nmap 192.168.31.180 -p 80				# 单个端口
nmap 192.168.31.180 -p 1-80				# 多个端口
nmap 192.168.31.180 -p 80,3389,22,21	# 多个端口
nmap 192.168.31.180 -p 1-65535			# 全端口
nmap 192.168.31.180 -F					# 扫描常见的100个端口
nmap 192.168.31.180 -p-					# 全端口(-p- 等价于 -p 1-65535)
nmap 192.168.31.180 -p ssh				# 扫描指定协议,非默认端口也能识别出来
nmap 192.168.31.180 -p s*				# 扫描s开头的协议
nmap 192.168.31.180 -p $(tr "\n" "," < ports.txt) # 读取文本中的端口

在这里插入图片描述

实际渗透时,扫描全端口可能会对服务器造成压力,尽量扫描指定端口。

1.2、 指定扫描方式

  • 「root身份」运行Nmap,默认使用SYN扫描。
  • 「非root身份」运行Nmap,默认使用TCP全连接扫描。

我们通过kali中的「wireshark」抓包分析不同扫描方式的请求信息,从而判断这些方式的区别。

点开kali的左上角,输入 wireshark 单击打开,选择抓包的网卡(我这里是 eth0 )。

在这里插入图片描述

输入过滤条件ip.addr == 192.168.31.180 and tcp.port == 80后,点击箭头应用。

在这里插入图片描述

这个过滤条件的意思是:过滤IP地址是 192.168.31.180 并且 端口是 TCP的80端口。

设置完过滤条件后,我们在命令行执行扫描命令,然后查看「wireshark」中的请求包。


1.2.1、 TCP全连接扫描

使用 -sT 参数对目标主机的80端口进行TCP全连接扫描。

「全连接扫描」使用完整的三次握手建立连接,能够建立连接就判定端口开放,否则判定端口关闭。

nmap 192.168.31.180 -p 80 -sT

1)如果端口开放,就会进行完整的三次握手,成功建立链接,扫描结果中,STATE字段显示为 open

在这里插入图片描述

2)如果端口关闭,就只能进行一次握手,无法建立连接,扫描结果中,STATE字段显示为 closed

在这里插入图片描述

1.2.2、 SYN半链接扫描

使用 -sS 参数进行SYN半连接扫描,「半链接扫描」只进行两次握手,根据对方的返回信息判断端口状态。

  • 返回确认帧 SYN + ACK 就表示端口开放。
  • 返回Reset RST + ACK 就表示端口关闭。
  • 无响应就重新发送SYN,持续不响应,就表示被防火墙屏蔽了。
nmap 192.168.31.180 -p 80 -sS

1)如果端口开放,就会进行两次握手,扫描结果中,STATE字段为 open

在这里插入图片描述

2)如果端口关闭,就只有一次握手,扫描结果中,STATE字段为 closed

在这里插入图片描述

1.2.3、 隐秘扫描

隐秘扫描,只适用于Linux系统。

「隐秘扫描」向目标主机的端口发送TCP FIN包 或 Xmas tree包 或 Null包,如果收到RST响应包,就判定端口关闭,否则就判定端口开放或被屏蔽(open/filtered)

nmap 127.0.0.1 -p 80 -sF	# Fin扫描
nmap 127.0.0.1 -p 80 -sN	# Null扫描(所有flags都为0的TCP包)
nmap 127.0.0.1 -p 80 -sX	# Xmas扫描(flags的FIN、URG、PUSH都为1的包)

1.2.4、 扫描UDP端口

nmap默认发送TCP报文探测端口,也就是只能扫描TCP端口。

使用 -sU 参数扫描UDP端口,根据对方返回的信息,判断端口状态。

  • 应用返回信息,表示端口开放。
  • ICMP返回端口不可达,表示端口关闭。
  • 无回应,表示端口被过滤。

1)如果端口开放,对应端口的应用就会返回报文,扫描结果中,STATE字段显示open。

在这里插入图片描述

2)如果端口关闭,ICMP就会返回不可达报文,扫描结果中STATE字段显示closed。

在这里插入图片描述
由于UDP是无状态协议,没有ACK或REST这种确认信息,只能等端口对应的服务响应信息,所以需要等待较长的时间,扫描速度比TCP慢很多,建议每次只扫描一个UDP端口。

2、主机发现

扫描网段中有哪些主机在线,使用 -sP-sn参数,不扫描端口,只扫描「存活主机」

nmap -sP 192.168.31.0/24

在这里插入图片描述

从上图可以看到:它用2秒扫描了这个网段的256个IP,其中有3个存活主机。

2.1、指定主机

使用-sP参数,扫描指定主机,可以扫描单个IP、多个IP、IP段。

nmap -sP 192.168.153.242	# 单个IP
nmap -sP 192.168.153.242 192.168.153.243 192.168.153.244	# 多个IP
nmap -sP 192.168.153.0/24	# IP段
nmap -sP -iL iplist.txt		# 指定文件中的IP

在这里插入图片描述

2.2、Wireshark抓包分析主机发现原理

Nmap依次发送「四种不同的报文」,只要收到「其中一个」包的回复,就判断主机存活。

  1. ICMP Echo request
  2. TCP SYN 到443端口
  3. TCP ACK 到80端口
  4. ICMP Timestamp request

发送四个不同的包,是为了防止防火墙「丢包」

如果是局域网的主机,则发送「ARP广播」,收到返回的ARP单播,就判断主机存活。

2.2.1、局域网外

1)ping www.baidu.com,获取百度IP。

2)打开wireshark,开始抓包。

3)执行nmap -sP 百度IP,探测主机是否存活。

在这里插入图片描述

从抓包结果可以看到,Nmap向目标主机依次发送了四个不同类型的包,百度给我们回复了三个。因此,Nmap判断目标主机存活,在终端打印 Host ip up。

2.2.2、局域网内

1)打开wireshark,开始抓包。

2)执行 nmap -sP 局域网IP,探测主机是否存活。

在这里插入图片描述

从抓包结果可以发现,nmap广播了目标主机的ARP请求,收到ARP响应后,判断目标主机存活,在终端上输出 Host is up。ARP响应中携带了目标主机的MAC地址,这里也额外打印出来了。


3、服务识别

Nmap根据服务对应的「默认端口」进行匹配,比如mysql默认使用3306,扫描到3306端口时,就在后面标注服务是mysql,如果目标服务器把服务的默认端口改了,Nmap就测不准了。

扫描端口时,默认显示端口对应的服务,但不显示服务版本。

想要识别具体的「服务版本」,可以使用 -sV 参数。

nmap 192.168.31.180 -p 80 -sV

在这里插入图片描述
扫描结果中,VERSION字段显示服务的详细版本。

4、系统识别

想要识别「操作系统版本」,可以使用 -O 参数。

nmap 192.168.31.180 -p 80 -O

在这里插入图片描述
提示:

  1. Nmap扫描出的系统版本并完全准确,仅供参考。
  2. 当识别不出具体版本时,Nmap会以概率的形式列举出可能的操作系统,如上图所示。

5、扫描结果导出

Nmap的扫描结果可以保存到文件中,比如文本格式、XML格式。

1)将扫描结果导出为「文本格式」,结果原样保存。

nmap 192.168.31.180 -p 80 -oN result.txt

在这里插入图片描述

2)将扫描结果导出为「xml格式」,结果的保存格式会发生变化。

nmap 192.168.31.180 -p 80 -oX result.xml

在这里插入图片描述

6、NES脚本

NES(Nmap Script Engine)Nmap脚本引擎,内置了几百个 lua 编写的「扫描脚本」,脚本存放在 /usr/share/nmap/scripts/ 目录下。

命令格式 : nmap --script 脚本名 110.242.68.4

比如:nmap --script http-headers 110.242.68.4

nmap --script http-headers			# 使用单个脚本
nmap --script="version,discovery"	# 使用多个脚本
nmap --script="not exploit”"		# 除了exploit,其他脚本都使用
nmap --script"(http*) and not (http-slowlors and http-brute)" # 使用所有http*的脚本,除了这两个
nmap --script http-headers --script-args 参数	# 使用脚本时,传入脚本参数

脚本的使用方式,可以到官方文档 https://nmap.org/nsedoc/ 查看

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Linux之实战命令32:chroot应用实例(六十六)

简介&#xff1a; CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布&#xff1a;《Android系统多媒体进阶实战》&#x1f680; 优质专栏&#xff1a; Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a; 多媒体系统工程师系列【…

字节跳动最新音乐生成模型Seed-Music

Seed-Music是一个由字节跳动研发的音乐生成模型&#xff0c;用户可以通过输入多模态数据&#xff08;如文本描述、音频参考、乐谱、声音提示等&#xff09;来生成音乐&#xff0c;并且提供了方便的后期编辑功能&#xff0c;比如修改歌词或旋律。 Seed-Music 结合了自回归语言模…

CentOS快速配置网络Docker快速部署

CentOS裸机Docker部署 1.联通外网 vi /etc/sysconfig/network-scripts/ifcfg-ens33systemctl restart networkip addrping www.baidu.com2.配置CentOS镜像源 参考文章 进入/etc/yum.repos.d目录下找到 CentOS-Base.repo cd /etc/yum.repos.dcp CentOS-Base.repo CentOS-B…

双向广搜 bfs进阶 open the lock——hdu1195

目录 前言 传统bfs 双向广搜 open the lock 问题描述 输入 输出 问题分析 状态转变 去重 单向搜索的bfs 双向广搜 结束条件 输出步数 前言 其实这题数据不算复杂&#xff0c;不用双向广搜也可以完成&#xff0c;仅仅是为了更直观展现双向广搜的编码方式。 传统bfs bfs向来都…

通用文件I/O模型之open

前面介绍了linux系统一切皆文件的概念&#xff0c;系统使用一套系统调用函数open()、read()、write()、close()等可以对所有文件执行I/O操作。应用程序发起的I/O请求&#xff0c;内核会将其转化为相应的文件系统操作&#xff0c;或者设备驱动程序操作。接下来我们一起了解一下o…

电磁兼容(EMC):整改案例(五)EFT测试,改初级Y电容

目录 1. 异常现象 2. 原因分析 3. 整改方案 4. 总结 1. 异常现象 某产品按GB/T 17626.4标准进行电快速瞬变脉冲群测试&#xff0c;测试条件为&#xff1a;频率5kHz/100kHz&#xff0c;测试电压L&#xff0c;N线间2kV。其中频率5kHz时&#xff0c;测试通过&#xff0c;但频…

在Centos中安装、配置与使用atop监控工具

目录 前言1. atop工具的安装1.1 atop简介1.2 atop的安装步骤 2. 安装并配置netatop模块2.1 安装内核开发包2.2 安装所需依赖2.3 下载netatop2.4 解压并安装netatop2.5 启动netatop 3. atop的配置与使用3.1 配置监控周期与日志保留时间3.2 设置定时任务生成日志3.3 启动与查看at…

【2024年最新】基于springboot+vue的垃圾分类网站lw+ppt

作者&#xff1a;计算机搬砖家 开发技术&#xff1a;SpringBoot、php、Python、小程序、SSM、Vue、MySQL、JSP、ElementUI等&#xff0c;“文末源码”。 专栏推荐&#xff1a;SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;Java精选实战项…

Facebook脸书投放目录guanggao(更适合独立站)操作步骤教学

Facebook guanggao是企业进行品牌推广、产品销售和营销转化的有效工具。在Facebook guanggao中创建目录可以帮助企业更好地展示产品&#xff0c;提高guanggao效果。以下是创建目录的详细步骤&#xff1a; 登录Facebook Business Manager&#xff08;BM业务管理器&#xff09;&a…

yolo 11从原理、创新点、训练到部署(yolov11代码+教程)

YOLO&#xff08;You Only Look Once&#xff09;系列模型以其高效的目标检测能力在计算机视觉领域取得了显著的成果。YOLOv11 作为 YOLO 系列的最新进展&#xff0c;进一步提升了模型的性能和实用性。本文将从 YOLOv11 的原理、创新点、训练到部署进行详细介绍&#xff0c;并附…

【写个本地的html】写个本地的html文件,做个demo,直接用浏览器打开

需求:需要给甲方发个html文件版本的demo,本地打开,如图所示 ui给了6张图片,写6个按钮点击更换背景图片 代码没写完,但是基础结构都有,供大家参考: 创建一个文件夹,用vscode打开,创建index.html index.html代码如下 <!DOCTYPE html> <html> <head&g…

【含开题报告+文档+PPT+源码】基于springBoot+vue超市仓库管理系统的设计与实现

开题报告 随着电子商务的快速发展和物流行业的日益壮大&#xff0c;超市仓库管理系统的重要性也日益凸显。传统的超市仓库管理方式存在许多问题&#xff0c;比如人工操作繁琐、数据统计不准确、管理效率低下等。因此&#xff0c;需要设计和实现一个高效、智能的超市仓库管理系…

Vite + Vue3 使用 cdn 引入依赖,并且把外部 css、js 文件内联引入

安装插件 pnpm i element-plus echarts axios lodash -S在 vite.config.js 引用 注意事项&#xff1a;element-plus 不能在 vite.config.js 中使用按需加载&#xff0c;需要在 main.js 中全局引入&#xff1b; import { resolve } from path import { defineConfig } from v…

.NET 回顾 | 一款反序列化漏洞的白名单工具

01阅读须知 此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等&#xff08;包括但不限于&#xff09;进行检测或维护参考&#xff0c;未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失&#xf…

Linux 安装 NVM 并配置 npm 加速,开发 node 项目不再愁

由于需要在 linux 机器上完成 node 项目的构建&#xff0c;需要安装 nodejs, 想着不同项目需要使用不同的版本&#xff0c;索性安装一下 nvm 吧&#xff0c;因为之前在 windows 上已经安装过 nvm-windows, 应该很容易上手&#xff0c;我尝试了官网提供的几种方式&#xff0c;最…

基于springboot vue在线学籍管理系统设计与实现

博主介绍&#xff1a;专注于Java&#xff08;springboot ssm 等开发框架&#xff09; vue .net php python(flask Django) 小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设&#xff0c;从业十五余年开发设计教学工作 ☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找…

Nexpose 6.6.271 发布下载,新增功能概览

Nexpose 6.6.271 for Linux & Windows - 漏洞扫描 Rapid7 Vulnerability Management, release Sep 26, 2024 请访问原文链接&#xff1a;https://sysin.org/blog/nexpose-6/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.or…

RAG(Retrieval-Augmented Generation,检索增强生成)

简介&#xff1a;个人学习分享&#xff0c;如有错误&#xff0c;欢迎批评指正。 RAG&#xff08;Retrieval-Augmented Generation&#xff09;是一种结合信息检索与生成式模型的混合架构&#xff0c;旨在提升自然语言生成任务的准确性、丰富性和知识覆盖范围。它通过在生成过程…

基于SpringBoot+Vue的Cosplay交流论坛系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

【Java程序设计】动态规划算法专题(六):回文串问题

目录 1、回文子串&#xff08;"引子题"&#xff09; 1.1 算法原理 1.2 算法代码 2、最长回文子串 2.1 算法原理 2.2 算法代码 3、分割回文串 IV&#xff08;hard&#xff09; 3.1 算法原理 3.2 算法代码 4、分割字符串 II&#xff08;hard&#xff09; 4…