Nmap常用命令及扫描原理

2023-05-16

Nmap常用参数

-sS TCP SYN扫描

-sU UDP扫描

-sA ACK扫描

-sW 窗口扫描

–scanflags RSTSYNFIN 自定义扫描

-O 检测目标操作系统类型

-sV 检测目标上运行服务的版本

-v 增加输出信息的详细程度

-vv 增加输出详细程度为2

-oA 将nmap输出保存为三种主要格式

-oN 将nmap输出保存为正常格式

-A 全部扫描 激进模式

-T<1-5> 扫描速度 扫描速度越快会被发现的几率就会越高

-p<1-65535> 扫描端口

-p- 扫描所有端口

–script 激活脚本

–script=vuln 激活vuln类别中的所有脚本

-F 100 个最常见的端口

–max-rate 50 速率 <= 50 包/秒

–min-rate 15 速率 >= 15 包/秒

–min-parallelism 100 至少 100 个并行探头

–reason 提供有关其推理和结论的更多详细信息

Nmap主机扫描

如果想使用 Nmap 来发现在线主机而不需要对实时系统进行端口扫描,可以使用nmap -sn TARGETS

扫描类型示例命令
ARP扫描sudo nmap -PR -sn MACHINE_IP/24
ICMP 回波扫描sudo nmap -PE -sn MACHINE_IP/24
ICMP 时间戳扫描sudo nmap -PP -sn MACHINE_IP/24
ICMP 地址掩码扫描sudo nmap -PM -sn MACHINE_IP/24
TCP SYN Ping 扫描sudo nmap -PS22,80,443 -sn MACHINE_IP/30
TCP ACK Ping 扫描sudo nmap -PA22,80,443 -sn MACHINE_IP/30
UDP Ping 扫描sudo nmap -PU53,161,162 -sn MACHINE_IP/30

Nmap端口扫描类型

在使用nmap进行端口扫描时,有三种基本的扫描类型:

  • TCP连接扫描(-sT
  • SYN半开扫描(-sS
  • ACK扫描 (-sA
  • UDP扫描(-sU
  • TCP窗口扫描 (-sW

此外,还有三种不太常见的端口扫描类型(用于绕过防火墙):

  • TCP NULL扫描(-sN
  • TCP FIN扫描(-sF
  • TCP Xmas扫描(-sX

TCP连接扫描原理

TCP扫描与目标执行完整的三次握手

image-20220415121757125

如果Nmap发送一个带有SYN标志的TCP请求到关闭的端口,目标服务器将相应一个带有RST(重置)标志的TCP数据包,通过这个响应,Nmap可以确定端口已经关闭。

如果请求被发送到一个开放的端口,目标将响应一个设置了 SYN/ACK 标志的TCP数据包。Nmap 然后将此端口标记为打开

许多防火墙被配置为简单地丢弃传入的数据包。Nmap 发送一个TCP SYN 请求,但什么也没有收到。这表明该端口受到防火墙的保护,因此该端口被视为已过滤

SYN扫描原理

SYN扫描有时被称为半开扫描或隐形扫描

SYN 扫描在收到来自服务器的 SYN/ACK 后发回一个 RST TCP 数据包

image-20220415121730323

如果使用sudo运行Nmap,Nmap的默认扫描类型是SYN扫描,否则默认使用TCP连接扫描

UDP扫描原理

当一个数据包被发送到一个开放的UDP端口时,应该没有响应。发生这种情况时,Nmap 将端口称为 is open|filtered。换句话说,它怀疑端口是开放的,但它可能被防火墙了。如果它得到一个UDP响应(这是非常不寻常的),那么该端口被标记为open。更常见的是没有响应,在这种情况下,请求会再次发送以进行双重检查。如果仍然没有响应,则将该端口标记为open|filtered

当一个数据包被发送到一个关闭的UDP端口时,目标应该用一个 ICMP (ping) 数据包来响应,其中包含一个端口不可达的消息。这清楚地标识了关闭的端口。

通常UDP扫描非常慢 启用--top-ports <number>可以获得可接受的扫描时间

ICMP网络扫描

Ping扫描

Nmap 向指定网络的每个可能的 IP 地址发送一个 ICMP 数据包。当它收到响应时,它会将响应的 IP 地址标记为活动的。

执行ping扫描 将-sn和IP范围结合使用,ip范围用字符-或者CIDR表示法指定。例如

nmap -sn 192.168.0.1-254

nmap -sn 192.168.0.0/24

Nmap服务检测

namp -sV 将收集和确定开放端口的服务和版本信息

-sV将强制 Nmap 继续进行TCP 3 次握手并建立连接

可以控制强度

--version-intensity <0-9>

-sV --version-light强度为 2,

-sV --version-all强度为 9.

NSE脚本

使用Lua语言编写

脚本类别

  • safe:- 不会影响目标

  • intrusive:- 不安全:可能影响目标

  • vuln:- 扫描漏洞

  • exploit:- 尝试利用漏洞

  • auth:- 尝试绕过正在运行的服务的身份验证(例如匿名登录FTP服务器)

  • brute:- 尝试暴力破解运行服务的凭据

  • discovery:- 尝试查询正在运行的服务以获取有关网络的更多信息(例如查询 SNMP 服务器)。

    可以在此处找到更详尽的列表。

如果运行该命令--script=safe,则将针对目标运行任何适用的安全脚本

要运行特定脚本,我们将使用--script=<script-name>,例如--script=http-fileupload-exploiter

多个脚本可以以这种方式同时运行,方法是用逗号分隔它们。例如:--script=smb-enum-users,smb-enum-shares

某些脚本需要参数,可以通过--script-args给出

例如:

nmap -p 80 --script http-put --script-args http-put.url='/dav/shell.php',http-put.file='./shell.php'

Nmap 脚本带有内置的帮助菜单,可以使用nmap --script-help <script-name>

搜索脚本

Nmap 将其脚本存储在Linux上的/usr/share/nmap/scripts

/usr/share/nmap/scripts/script.db这实际上并不是一个数据库,而是一个包含每个可用脚本的文件名和类别的格式化文本文件。

可以通过grep来查找脚本

grep "ftp" /usr/share/nmap/scripts/script.db

ls命令查找脚本

ls -l /usr/share/nmap/scripts/*ftp*

相同的技术也可用于搜索脚本类别

grep "safe" /usr/share/nmap/scripts/script.db

绕过防火墙

典型 Windows 主机将使用其默认防火墙阻止所有 ICMP 数据包

Nmap 为此提供了一个选项:-Pn它告诉 Nmap 在扫描主机之前不要打扰它。这意味着 Nmap 将始终将目标主机视为活动的,有效地绕过 ICMP 块。

以下参数对绕过防火墙很有用:

  • -f:- 用于对数据包进行分段(即,将它们拆分成更小的部分),从而降低防火墙或IDS检测到数据包的可能性。
  • 提供对数据包大小的更多控制:--mtu <number>,接受用于发送的数据包的最大传输单元大小。这必须是 8 的倍数。
  • --scan-delay <time>ms:- 用于在发送的数据包之间添加延迟。如果网络不稳定,这非常有用,但也可以用于规避任何可能存在的基于时间的防火墙/IDS 触发器。
  • --badsum:- 这用于为数据包生成无效校验和。任何真正的 TCP/IP 堆栈都会丢弃此数据包,但是,防火墙可能会自动响应,而无需检查数据包的校验和。因此,此参数可用于确定防火墙/IDS 的存在。

保存输出

-oN以正常格式保存输出
-oG以 grepable 格式保存输出
-oX以XML格式保存输出
-oA以普通、XML和 Grepable 格式保存输出
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Nmap常用命令及扫描原理 的相关文章

  • Ubuntu18.04 VINS-Mono & Fast-Planner

    Ubuntu18 04 VINS Mono amp Fast Planner 官方GIthub 安装依赖 span class token comment 额外ros包 span span class token function sudo
  • Autoware Docker 安装

    1 Ubuntu20 04 Docker 官方教程安装 Docker 官方教程安装 2 安装 nvidia container runtime Access an NVIDIA GPU 官方参考 span class token comme
  • 卡尔曼滤波公式理解

    卡尔曼滤波 卡尔曼滤波适用于线性高斯系统 xff0c 即系统满足叠加性 齐次性 xff0c 噪声满足正态分布 其使用上一次的最优结果预测当前的值 xff08 先验估计 xff09 xff0c 同时使用观测值修正当前值 xff0c 得到最优结
  • 学习编程,API很重要么?

    学习编程 xff0c API的重要性几何 xff1f 在培训中 xff0c 很多人问到了 xff0c 学习Java xff0c 是否需要学习那些大量API的用法 xff0c 从而成为一个精通Java编程开发的coder xff1f 首先 x
  • App 后台架构设计方案 设计思想与最佳实践

    CSDN 2016博客之星评选结果公布 系列直播 零基础学习微信小程序 xff01 我的2016 主题征文活动 博客的神秘功能 App 后台架构设计方案 设计思想与最佳实践 标签 xff1a App后台架构设计用户验证方案后台架构的演进架构
  • 语音信号处理算法

    EQ DRC AEC NS
  • uIP与LWIP的区别

    uIP是专门为8位和16位控制器设计的一个非常小的TCP IP栈 完全用C编写 xff0c 因此可移植到各种不同的结构和操作系统上 xff0c 一个编译过的栈可以在几KB ROM或几百字节RAM中运行 uIP中还包括一个HTTP服务器作为服
  • C++基础用法—冒号的用法

    C 43 43 基础用法 冒号的用法 一 用法一 xff1a 继承1 1用法 xff1a 用在class或struct后面1 2示例代码 二 用法二 xff1a 赋值1 1用法 xff1a 用在成员函数 构造函数后面1 2示例代码1 2 1
  • 路由器相关开发流程

    路由器相关开发流程 宽带上网已经不是什么新鲜事 情 xff0c 人们对相关的网络器件已经不再陌生 xff0c 比如说常见的路由器 对于一般的网络用户 xff0c 他们能知道怎样使用路由器来上网 玩游戏等就已经感到很满足了 xff0c 通常情
  • 将Ubuntu终端的输出信息保存到log中

    参考website xff1a http www linuxidc com Linux 2011 04 34543 htm 执行以下命令 xff0c 开启保存 xff1a sudo script screen log 之后你在终端输入的相关
  • 《芯片介绍系列》之MT7628芯片详细介绍(MT7628平台处理器)

    有的家庭路由器拆开 xff0c 里面最显眼的芯片型号是 xff1a MT7628KN MT7628系列产品是新一代2T2R 802 11n Wi Fi AP 路由器 系统单芯片 xff08 摘自百度 xff09 更多介绍见此 xff1a M
  • python:函数传参是否会改变函数外参数的值

    参考链接 xff1a https blog csdn net u012614287 article details 57149290 https blog csdn net qq915697213 article details 66972
  • Catkin创建工程

    介绍 catin make编译过程 xff0c cmake指令依据你的CMakeLists txt 文件 生成cmakefiles和makefile文件 make再依据此cmakefiles和makefile文件编译链接生成可执行文件 ca
  • ros中使用serial包实现串口通信

    一 Ubuntu下的串口助手cutecom 1 安装cutecom并打开 xff1a sudo apt get install cutecom sudo cutecom 2 查看电脑链接的串口信息 xff08 名称 xff09 xff1a
  • 构造函数后冒号的作用

    构造函数后面的冒号起分割作用 xff0c 是类给成员变量赋值的方法 xff0c 初始化列表 xff0c 更适用于成员变量的常量const型 struct XXX XXX y 0xc0
  • 字节序(byte order)和位序(bit order)

    字节序 byte order 和位序 bit order 在网络编程中经常会提到网络字节序和主机序 xff0c 也就是说当一个对象由多个字节组成的时候需要注意对象的多个字节在内存中的顺序 以前我也基本只了解过字节序 xff0c 但是有一天当
  • __thread关键字

    thread是GCC内置的线程局部存储设施 xff0c 存取效率可以和全局变量相比 thread变量每一个线程有一份独立实体 xff0c 各个线程的值互不干扰 可以用来修饰那些带有全局性且值可能变 xff0c 但是又不值得用全局变量保护的变
  • SCRUM框架包括3个角色、3个工件、5个活动、5个价值

    转自http www scrumcn com agile scrum knowledge library scrum html SCRUM 是一个用于开发和维持复杂产品的框架 Scrum 是一个用于开发和维持复杂产品的框架 xff0c 是一
  • Hadoop伪分布式安装步骤

    Hadoop伪分布式安装步骤 目录 Hadoop伪分布式安装步骤 一 永久关闭防火墙 二 配置主机名 1 编辑network文件 xff1a vim etc sysconfig network 2 将HOSTNAME属性改为指定的主机名 x
  • MPU6050的一些问题及解决办法

    最近做的项目要用到MPU6050 xff0c 出现了以下这些问题 xff1a 当然 xff0c 也有一些奇怪的事 xff0c 我是在淘宝上买的现成的模块 xff0c 那个ADO无论接地还是高电平 xff0c MPU的地址都是用0xD0 xf

随机推荐

  • 程序员的期望与现实

    来自 xff1a 程序员最幽默 xff08 ID xff1a humor1024 xff09 0 我期望的代码 VS 实际代码的工作方式 1 我认为我的代码 VS 项目经理看到的代码 2 我心里想做的架构 VS 我真正写出来的架构 3 开发
  • PixHawk Bootloader

    在https github com PX4这里下载的Bootloader代码 xff0c 编译TARGET HW PX4 FMU V2这个版本的 xff0c 然后将代码烧录到STM32F4探索者这块开发板上 xff0c 代码能够正常运行 x
  • 解决Ubuntu 显卡驱动升级导致的 显卡驱动和内核版本不匹配的问题

    解决Ubuntu 显卡驱动升级导致的 显卡驱动和内核版本 xff08 同时内核存在问题 xff09 不匹配的问题 不要轻易升级显卡驱动版本 xff01 xff01 xff01 xff01 xff01 xff01 xff01 xff01 xf
  • NVIDIA Jetson Xavier NX入门(1)——镜像烧写

    NVIDIA Jetson Xavier NX入门 xff08 1 xff09 镜像烧录 1 准备SD卡并且格式化 推荐使用SD Card Formater软件进行SD卡格式化 xff0c SD Card Formater软件下载地址 界面
  • NVIDIA Jetson Xavier NX入门(2)——系统设置;环境搭建

    NVIDIA Jetson Xavier NX入门 xff08 2 xff09 系统设置 环境搭建 1 NVIDIA Jetson Xavier NX连接显示器 键盘 鼠标 xff1b 2 Jetson Xavier NX连接电源后 xff
  • NVIDIA Jetson Xavier NX使用UART进行串口通信

    NVIDIA Jetson Xavier NX使用UART进行串口通信 一 NVIDIA Jetson Xavier NX的40pin接口 NVIDIA Jetson Xavier NX开发板俯视图 xff1a 2 开发板上打印出的UART
  • 远程服务器时Ubuntu报错:qt.qpa.xcb: could not connect to display

    远程服务器时Ubuntu报错 xff1a qt qpa xcb could not connect to display 远程服务器时Ubuntu报错 xff1a qt span class token punctuation span q
  • linux下USB设备编号固定

    linux下USB设备插入时系统自动分配编号 xff0c 多个相同设备时 xff0c 按插入顺序分配编号 以串口为例 xff0c 插入的USBtoSerial顺序不一样时 xff0c 系统分配的设备号是不一样的 但是每个USB接口对设备来说
  • Java进阶书籍推荐

    学习Java xff0c 书籍是必不可少的学习工具之一 xff0c 尤其是对于自学者而言 废话不多说 xff0c 下边就给大家推荐一些Java进阶的好书 第一部分 xff1a Java语言篇 1 Java编程规范 适合对象 xff1a 初级
  • GitHub+Docker Hub自动构建镜像

    一 什么是Dockerfile xff1f Dockerfile是一个包含用于构建镜像的命令的文本文档 可以使用在命令行中调用任何命令 Docker通过读取Dockerfile中的指令自动生成镜像 它们简化了从头到尾的流程并极大的简化了部署
  • 前端工程化 - 剖析npm的包管理机制(完整版)

    导读 现如今 xff0c 前端开发的同学已经离不开 npm 这个包管理工具 xff0c 其优秀的包版本管理机制承载了整个繁荣发展的NodeJS社区 xff0c 理解其内部机制非常有利于加深我们对模块开发的理解 各项前端工程化的配置以加快我们
  • GPRS模块开发初步(软件)

    文章来源 xff1a http blogold chinaunix net u1 56388 showart 1121149 html 1 AT 指令简介 AT 指令集一般指专门用来控制调制解调器的指令集 该指令集最初由美国 Hayes 公
  • 【安装库】matlab2020b安装及百度网盘提速

    安装库 matlab2020b安装及百度网盘提速 matlab2020b安装 一 xff0c 下载 百度网盘 链接 xff1a https pan baidu com s 18iLFaAbWt8IntUefX3eWfA 提取码 xff1a
  • FreeRTOS系统中CPU使用率统计方法分析

    FreeRTOS系统中CPU使用率统计方法分析 基本概念 操作系统中CPU使用率是在软件架构设计中必须要考虑的一个重要性能指标 它直接影响到程序的执行时间以及优先级更高的任务能否实时响应的问题 而CPU使用率也不能过高 xff0c 避免资源
  • NVIDIA GeForce 940M 设备是不可移动的,无法弹出或拔出问题解决办法

    上个月在新入手的笔记本上安装了一个CUDA的开发环境 xff0c 并选择安装了GeForce Experience工具 xff0c 前两天打开GeForce Experience工具浏览时 xff0c 工具提醒可以更新NVIDIA显卡驱动
  • 大学生职业规划要穿“营销三点式”

    我们现在就是这样的环境 xff0c 这样的 教育 xff0c 这样的模式 xff0c 这一切是无法改变的 xff0c 那你适应它吗 xff1f 不是 xff0c 你若适应它 xff0c 你只能茫然 xff01 为什么 xff1f 因为你适应
  • 网络与串口调试工具TCPCOM

    TCPCOM xff0c 网络与串口二合一调试助手 xff0c 将网络调试助手与串口调试助手合二为一 xff0c 绿色软件 xff0c 简单高效 软件特色 1 支持中英文双语言 xff0c 自动根据操作系统环境选择系统语言类型 xff1b
  • Cmake以及CmakeLists

    CMake使用 CMake1 gcc make和CMake的关系2 CMake一般使用流程2 1 生成构建系统2 2 执行构建 xff08 比如make xff09 xff0c 生成目标文件 xff1b 2 3 执行测试 安装或打包 3 C
  • 卡尔曼滤波公式及其详细推导(不涉及矩阵求导)

    卡尔曼滤波公式及推导 1 前言 卡尔曼滤波 Kalman Filter 是一种关于线性离散系统滤波问题的递推算法 其使用递推的形式对系统的状态进行估计 xff0c 以测量中产生的误差为依据对估计值进行校正 xff0c 使被估计的状态不断接近
  • Nmap常用命令及扫描原理

    Nmap常用参数 sS TCP SYN扫描 sU UDP扫描 sA ACK扫描 sW 窗口扫描 scanflags RSTSYNFIN 自定义扫描 O 检测目标操作系统类型 sV 检测目标上运行服务的版本 v 增加输出信息的详细程度 vv