首页 > 其他分享 >内网隐蔽扫描,Nmap高级用法

内网隐蔽扫描,Nmap高级用法

时间:2024-09-18 15:26:24浏览次数:8  
标签:Nmap 主机 扫描 用法 nmap 端口 数据包

image-20240709094802480

前言

Nmap(Network Mapper)是一款开源免费的网络发现和安全审计工具,主要用于扫描目标主机的开放端口、操作系统类型、启用的服务等信息。以下是Nmap的一些常见使用介绍

Nmap的常见使用介绍

  1. 主机发现:Nmap可以通过发送不同类型的探测包(如ICMP echo请求、TCP SYN包等)来检测目标主机是否在线。常用命令如-sn(Ping扫描,只进行主机发现,不进行端口扫描)和-PE/PP/PM(使用ICMP echo、timestamp、netmask请求包发现主机)。
  2. 端口扫描:Nmap支持多种端口扫描技术,包括TCP SYN扫描(-sS)、TCP connect扫描(-sT)、UDP扫描(-sU)等。用户可以根据需要选择适当的扫描方式,以探测目标主机上开放的端口。
  3. 版本探测:Nmap能够探测目标主机上运行的服务及其版本信息。通过发送特定的探测包并分析响应,Nmap可以识别出服务的类型和版本。使用-sV选项可以启用版本探测功能。
  4. 操作系统探测:Nmap还能够尝试识别目标主机的操作系统类型。通过收集目标主机的响应数据包中的指纹信息,并与已知的操作系统指纹库进行比对,Nmap可以推断出目标主机的操作系统。使用-O选项可以启用操作系统探测功能。
  5. NSE脚本引擎:Nmap的强大之处在于其内置的NSE(Nmap Scripting Engine)脚本引擎。用户可以通过编写或运行NSE脚本来扩展Nmap的功能,实现更复杂的网络探测和安全审计任务。
  6. 结果输出:Nmap支持将扫描结果输出到不同的格式,包括文本、XML、Grepable等。用户可以根据需要使用相应的输出选项(如-oN-oX等)来保存扫描结果。

使用教程

一、基本教程(附图文)

1、指定端口

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

image-20240708154236299

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

image-20240708154612266

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 -p-		# -p- 等价于 -p 1-65535

image-20240708154655513

2、主机探测

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

本质上是Ping扫描,能Ping通有回包,就判定主机在线。

nmap -sP 192.168.209.0/24

image-20240708155116858

3、服务识别

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

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

nmap 192.168.209.1 -p 80-1000 -sV

image-20240708155311798

4、系统识别

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

nmap 192.168.209.1 -O

image-20240708155445432

Tips:Nmap扫描出的系统版本并不是完全正确的,仅供参考。

当识别不出具体版本时,Nmap会以概率的形式列举出可能的操作系统,如上图所示。

5、导出扫描结果

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

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

nmap 192.168.209.1 -p 80-1000 -oN result.txt

image-20240708155708758

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

nmap 192.168.209.1 -p 80-1000 -oX result.xml

image-20240708155859661

二、高级用法

扫描绕过安全设备欺骗

发送参杂着假ip的数据包检测

nmap -D 111.111.111.111 192.168.209.1

1、碎片扫描

通过将数据包分割成更小的部分发送,使得防火墙更难识别这些数据包属于一个扫描流量。

nmap -f <目标IP地址>  # 使用随机偏移量的碎片扫描  
nmap -mtu 8 <目标IP地址>  # 指定MTU大小为8的碎片扫描

2、诱饵扫描

在扫描数据包中添加多个诱饵IP地址,使目标防火墙难以判断真正的扫描源,从而增加扫描的隐蔽性。

nmap -D RND:10 <目标IP地址>  # 随机使用10个诱饵IP地址  
nmap -D decoy1,decoy2,decoy3 <目标IP地址>  # 指定具体的诱饵IP地址

3、空闲扫描

利用一台空闲主机(zombie host)作为跳板,通过向空闲主机发送经过特殊构造的数据包,间接地探测目标主机的端口状态,而无需直接向目标主机发送数据包。

nmap -P0 -sI zombie <目标IP地址>  # 使用名为zombie的空闲主机进行扫描

注意:这里的“zombie”应替换为实际的空闲主机地址(简称僵尸机)。

4、随机数据长度

在发送的数据包中填充随机长度的数据,以绕过一些基于数据包长度过滤的防火墙规则。

nmap --data-length 25 <目标IP地址>  # 在每个数据包中填充25字节的随机数据

5、欺骗扫描

通过伪造源IP地址或MAC地址,使防火墙难以追踪真实的扫描源。

nmap --sT -PN --spoof-mac aa:bb:cc:dd:ee:ff <目标IP地址>  # 伪造源MAC地址进行TCP连接扫描  
nmap --badsum <目标IP地址>  # 发送带有错误校验和的数据包,可能绕过某些简单的防火墙规则
nmap -cloak-source <spoofed_ip1>,<spoofed_ip2> <target_ip> # 伪造ip地址进行扫描

6、SYN扫描

虽然SYN扫描本身并不直接绕过防火墙,但它是一种非常隐蔽的扫描方式,因为它只发送SYN包而不完成整个TCP握手过程,从而减少了被防火墙检测到的可能性。

nmap -sS <目标IP地址>  # 使用SYN扫描方式

7、使用特定端口或绕过常用端口

一些防火墙规则基于端口过滤,可以尝试使用特定的源端口来绕过。例如,很多防火墙允许HTTP端口(80)和HTTPS端口(443)通过。

nmap --source-port 80 <目标IP地址>  # 使用HTTP端口作为源端口进行扫描

8、ARP Ping扫描(-PR)

nmap -sn -PR <target_network>
# 或者
nmap -PR <target_network>

Tips:ARP 扫描仅适用于局域网环境,因为它依赖于 ARP 协议,该协议用于在局域网内解析 IP 地址到 MAC 地址。

ARP 扫描可能无法发现配置了 ARP 过滤或 ARP 欺骗防护措施的主机。

总结

Nmap作为一款开源免费的网络发现和安全审计工具,功能强大且多样。

它不仅能够进行主机发现和端口扫描,识别目标主机上的服务及其版本信息,还能尝试探测操作系统的类型。通过内置的NSE脚本引擎,Nmap的功能得到了进一步扩展,可以实现更复杂的网络探测任务。

此外,Nmap支持将扫描结果输出到不同格式的文件中,便于用户保存和分析。高级用法中,Nmap提供了多种扫描策略,如碎片扫描、诱饵扫描和空闲扫描等,以帮助用户绕过安全设备的检测,增加扫描的隐蔽性和灵活性。

自学网络安全,互相交流的同时还能交朋友,和博主一起来交流学习吧

image-20240708183139537

标签:Nmap,主机,扫描,用法,nmap,端口,数据包
From: https://www.cnblogs.com/xiaoyus/p/18418595

相关文章

  • 手把手教你写一个图形化的端口扫描工具
    前言关于学习群,有想要交流学习的朋友们可以在后台菜单栏加群奥~由于我使用masscan进行纯端口扫描的时候,遇到扫描不出结果的情况,我就考虑了自己写一个端口扫描脚本,还挺好用。库介绍1、asyncioasyncio是Python的一个库,用于编写单线程并发代码。使用asyncio,你可以使用异步......
  • Q:LISTAGG()函数用法笔记(oracle)
    .LISTAGG()函数作为普通函数使用时就是查询出来的结果列转为行☆LISTAGG函数既是分析函数,也是聚合函数有两种用法:1、分析函数,如:row_number()、rank()、dense_rank()等,用法相似listagg(合并字段,连接符)withingroup(orderby合并的字段的排序)over(partitionby分组字段)......
  • Pandas中df.drop_duplicates()的用法
    df.drop_duplicates()是Pandas中用于删除重复行的函数。它可以根据特定列或整个数据框中出现的重复值,保留第一项或最后一项,并删除其余的重复项。这个函数很适合用于数据清洗,特别是处理重复数据时。基本语法:DataFrame.drop_duplicates(subset=None,keep='first',inpla......
  • @RequestMapping 和 @GetMapping等子注解的区别及其用法
    常用的请求映射注解介绍@GetMapping用于处理HTTPGET请求。等价于 @RequestMapping(method=RequestMethod.GET)。1@GetMapping("/path")2publicStringhandleGetRequest(){3return"GETrequesthandled";4}@PostMapping用于处理HTTPPOST请求。等价于 ......
  • C# 中 gRPC 的用法详解
    gRPC(GoogleRemoteProcedureCall)是一个高性能的开源RPC框架,它基于HTTP/2协议,支持多种编程语言,非常适合微服务架构。本文将带您了解如何在C#中使用gRPC,构建一个简单的示例服务。一、环境准备安装.NETSDK前往.NET官方下载页面安装最新版本的.NETSDK。安装......
  • 终极震荡指标UOS:抄底逃顶、趋势跟随,一个指标多重用法!
    最近的行情可谓是非常割裂了,上证指数一直比较坚挺,但是赚钱的板块非常少。根据老Q的经验,当绿线的评分处于低位但指数持续上行时,投资宽基指数的体验是明显比投资个股或者板块的体验要好的——毕竟只有少数幸运儿可以在极端行情下压对宝。可能很多朋友已经感受到了,3月份之前,哪......
  • Go 语言中的空白标识符(_)用法详解
    在Go语言中,空白标识符 _ 有着独特的用途,特别是在循环以及其他一些场景中。本文将详细介绍空白标识符在Go语言中的用法,重点围绕其在循环中的应用以及其他常见场景。 一、空白标识符在循环中的应用 (一)忽略索引值 在遍历切片或数组时,如果我们只关心元素本身而不关......
  • MySQL 中的 GROUP BY 和 HAVING 子句:特性、用法与注意事项
    在MySQL数据库的查询操作中,GROUPBY和HAVING子句是非常强大的工具,它们能够帮助我们对数据进行分组和筛选,从而更好地分析和处理数据。今天,我们就来深入了解一下GROUPBY和HAVING子句的特性、用法及注意事项。一、GROUPBY子句的特性与用法特性GROUPBY用于将查询结......
  • 利用 SPAD 阵列探测器推进激光扫描显微技术的发展
    概述单光子雪崩二极管(SPAD)的工作原理是偏压高于其击穿电压的p-n结。在快速、紧凑型探测器阵列的推动下,激光扫描显微镜领域正经历着快速发展。这些探测器凭借其卓越的可靠性、坚固性、易操作性和高探测效率,在显微镜应用中日益突出。异步读出SPAD阵列探测器经过优化,可显著增......
  • 前端工程化学习笔记-02(webpack基础用法)
    前端工程化学习笔记-02(webpack基础用法)webpack基础用法快速搭建一个简易的webpack项目使用npminit初始化一个项目;mkdirwebpack-democdwebpack-demonpminit-y本地安装webpack;npminstallwebpackwebpack-cli--save-dev修改package.json文件#删除"main"......