扫描方式

-Pn/-P0:扫描前不用ping测试目标是否可达,默认所有目标端口都可达

-sT:TCP Connect扫描,进行完整的TCP三次握手,该类型扫描已被检测,且会在目标日志中记录大量连接请求和错误信息

-sS:TCP SYN扫描,只会发送SYN包,简称半开扫描。使用者机器发送SYN请求给目标机器,若对方返回SYN|ACK包表明目标端口当前正在监听;若返回RST包表明目标端口未进行监听;后续若使用者机器收到SYN|ACK返回包,使用者机器就会发送RST包断开与目标机器的连接,与-sT比较,-sS只会在目标机器留下很少的日志记录

-sA:ACK扫描,使用者机器发送ACK包给目标机器,若目标机器返回的RST包小于等于64,则表示目标端口开放;反之,表示端口关闭

-sN:NULL扫描,原理是使用者机器发送一个没有设置任何标志位的数据包给目标端口,根据FRC 793要求,正常通信至少要设置一个标志位。若目标机器返回RST包,表明目标端口关闭;若目标机器无任何响应,表明目标端口开放(Windows不遵从RFC 793,因此可探测操作系统版本)

-sF:FIN扫描,使用者机器发送FIN包给目标机器,若目标机器返回RST包,则标识目标端口关闭;若目标机器无任何响应,表示目标端口开放(仅适用于Linux,Windows只会返回RST包,因此可探测操作系统版本)

-sX:Xmas-Tree扫描,使用者机器发送带有URG、PSH、FIN标志位的TCP包给目标机器,若目标机器无任何响应,则表明目标端口开放;若目标机器返回RST包,则表明目标端口关闭(不适用于windows)

-sU:UDP扫描,使用者机器向目标端口发送一个0字节的UDP包,若收到端口不可达的ICMP包,则表示端口关闭;否则表示端口开放(不适用于windows)

指定主机

  1. 单个主机

    直接指定某个IP,如:nmap 192.168.1.2

  2. 多个主机

    -iL inputFileName:从文件中读取

    nmap 192.168.1.0/24:指定IP网段扫描

    nmap 192.168.1.1 192.168.1.2:扫描多个IP

  3. 排除主机

    --exclude=host1,host2:排除指定的主机

    --excludefile=excludeFileName:排除文件中读取的主机

指定端口

  • -p port1,port2,port3:指定单独几个端口
  • -p port1-port2:指定范围内的端口
  • 不加-p,默认指定常见的1000个端口

探测服务版本

-sV:探测协议

探测操作系统

-O:探测操作系统

扫描速度

-T number:number为0到5中的整数,该值越大扫描速度越快

穿墙

  • -S 源IP:伪造源IP
  • -e <eth0>:指定特定网卡接口
  • -g port:使用给定的源端口进行扫描

输出格式

  • -oN:正常输出
  • -oX:XML格式输出
  • -v:输出详情,v越多输出内容越详细,如:-vv -vvv
  • -d:debug级别,d越多输出越多
  • --open:只看已开放端口

端口状态

open

端口处于开放状态,通常是攻击的关注点

closed

端口处于关闭状态,无应用程序在该端口上监听

filtered

端口处于被过滤状态,由于数据包被安全设备过滤或阻止,Nmap无法判断端口是否处于开放状态

unfiltered

端口处于未过滤状态,Nmap可访问该端口,但无法判断其是否开放,通常ACK扫描会产生该种状态,可借助其他扫描,如SYN扫描、FIN扫描辅助判断端口是否开放

open|filtered

Nmap无法判断端口是处于开放状态还是过滤状态,开放的端口不响应就是一个例子,没有响应可能意味着报文过滤器丢弃了探测报文或者它引发的任何响应。因此Nmap无法确定该端口是开放的还是被过滤的,UDP,IP协议, FIN,Null,和Xmas扫描可能把端口归入此类

closed|filtered

Nmap无法判断端口状态是关闭还是被过滤状态,一般出现在IPID Idle扫描

NSE使用

NSE(Nmap Scripting Engine)允许使用者编写自己的脚本完成各种网络扫描任务,其中Nmap内置了很多丰富的NSE脚本,以下讲述如何用NSE检测CVE漏洞,主要是通过nmap-vulnersvulscan这两个脚本检测某些服务(如:SSH、RDP、SMB)的CVE信息

nmap-vulners会查询Vulners exploits数据库,并按照严重程度显示服务对应的CVE信息

vulscan会显示与当前服务相关的其它漏洞

安装NSE脚本(nmap-vulners)

  1. 进入 Nmap脚本目录

    cd /usr/share/nmap/scripts/
  2. 获取nmap-vulners存储库

    git clone https://github.com/vulnersCom/nmap-vulners.git

安装NSE脚本(Vulscan)

  1. 进入 Nmap脚本目录

    cd /usr/share/nmap/scripts/
  2. 获取Vulscan存储库

    git clone https://github.com/scipag/vulscan.git
  3. 更新库

    Vulscan支持多个优秀的漏洞数据库,但仍然可以对当前数据库进行持续更新(实际更新时貌似也没更新任何内容)

    # 进入更新目录
    cd vulscan/utilities/updater/
    # 给updateFiles.sh执行的权限
    chmod +x updateFiles.sh
    # 执行更新程序
    ./updateFiles.sh

使用Nmap-Vulners扫描

-sV是必要的,nmap-vulners需要知道服务版本信息才能进行后续探测

nmap --script nmap-vulners -sV <IP>

使用Vulscan扫描

nmap --script vulscan -sV <IP>

默认情况下vulscan会查询vulscan支持的所有数据库,如此一来,要查询的信息会相当庞大,因此可直接指定数据库进行查询

db_name为数据库的名称,如:scipvuldb.csv cve.csv osvdb.csv securityfocus.csv securitytracker.csv xforce.csv expliotdb.csv openvas.csv

nmap --script vulscan --script-args vulscandb=db_name -sV <IP>

合并扫描

nmap --script nmap-vulners,vulscan --script-args vulscandb=scipvuldb.csv -sV <IP>

Nmap详解的更多相关文章

  1. Python之NMAP详解

    一.NMAP简介 NMap,也就是Network Mapper,最早是Linux下的网络扫描和嗅探工具包. nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端.确定哪些服务运行在哪些连 ...

  2. nmap详解之原理与用法

    前言 nmap是一款开源免费的网络发现(Network Discovery)和安全审计(Security Auditing)工具.软件名字Nmap是Network Mapper的简称.Nmap最初是由 ...

  3. nmap详解之基础示例

    扫描主机target.example.com的所有TCP端口 nmap -v target.example.com 发起对target.example.com所在网络上的所有255个IP地址的秘密SY ...

  4. nmap详解之选项说明

    功能选项 功能选项可以组合使用.一些功能选项只能够在某种扫描模式下使用.nmap会自动识别无效或者不支持的功能选项组合,并向用户发出警告信息. 如果你是有经验的用户,可以略过结尾的示例一节.可以使用n ...

  5. nmap详解之基础概述

    概述 nmap是一个网络探测和安全扫描程序,系统管理者和个人可以使用这个软件扫描大型的网络,获取那台主机正在运行以及提供什么服务等信息.nmap支持很多扫描技术,例如:UDP.TCP connect( ...

  6. nmap常用参数详解

    nmap常用参数详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 借用英雄联盟的一个英雄赵信的一句话:“即使敌众我寡,末将亦能万军丛中取敌将首级!”.三国关羽,万军丛中斩了颜良, ...

  7. Linux nmap命令详解

    nmap,也就是Network Mapper,是Linux下的网络扫描和嗅探工具包. nmap是在网络安全渗透测试中经常会用到的强大的扫描器.功能之强大,不言而喻.下面介绍一下它的几种扫描命令.具体的 ...

  8. Nmap扫描教程之基础扫描详解

    Nmap扫描教程之基础扫描详解 Nmap扫描基础扫描 当用户对Nmap工具了解后,即可使用该工具实施扫描.通过上一章的介绍,用户可知Nmap工具可以分别对主机.端口.版本.操作系统等实施扫描.但是,在 ...

  9. Nmap在实战中的高级用法(详解)

    @ 目录 Nmap在实战中的高级用法(详解) Nmap简单的扫描方式: 一.Nmap高级选项 1.查看本地路由与接口 2.指定网口与IP地址 3.定制探测包 二.Nmap扫描防火墙 1.SYN扫描 2 ...

随机推荐

  1. spring-boot-route(二十)Spring Task实现简单定时任务

    Spring Task是Spring 3.0自带的定时任务,可以将它看作成一个轻量级的Quartz,功能虽然没有Quartz那样强大,但是使用起来非常简单,无需增加额外的依赖,可直接上手使用. 一 如 ...

  2. 记录Spring Boot 2.3.4.RELEASE版注解方式实现AOP和通知的执行顺序

    1.advice 按照以下的顺序执行 输出结果:(正常和异常) 说明:Spring boot 2.3.4.RELEASE 版本使用的AOP是spring-aop-5.2.9.RELEASE,AOP的通 ...

  3. 3. Distributional Reinforcement Learning with Quantile Regression

    C51算法理论上用Wasserstein度量衡量两个累积分布函数间的距离证明了价值分布的可行性,但在实际算法中用KL散度对离散支持的概率进行拟合,不能作用于累积分布函数,不能保证Bellman更新收敛 ...

  4. Vue基础(2)

    fetch与axios请求数据 fetch基本语法: fetch(url,{parmas}).then(res=> res.json()  //返回promise对象 ).then(data=& ...

  5. mininet实践应用

    目录 mininet的安装和基本指令的了解 安装过程 拓扑类型和基本指令 mininet拓扑实战 拓扑的创建和编辑 对自定义拓扑一些简单的测试. 测试总结 mininet的安装和基本指令的了解 安装过 ...

  6. 脑桥Brain-Pons

    date: 2014-02-01 15:30:11 updated: 2014-02-01 15:30:11 [一] "2025.7.3.Brain-Pons?Expeiment?Under ...

  7. Flask 中的MTV架构之Models

    Flask 中的MTV架构之Models 1.Models(数据模型) 1.1 flask-sqlalchemy(数据库) ​ 说明:提供了大多数关系型数据库的支持,而且提供了ORM # 安装: pi ...

  8. CSP-S 2020模拟训练题1-信友队T1 四平方和

    题意简述 \(n\)是正整数,其四个最小的因子分别为\(d_1,d_2,d_3,d_4\). 求对于所有的\(n \le m\)满足 \[d_1^2+d_2^2+d_3^2+d_4^2=n \] 的\ ...

  9. Java_数组, 懒得整理了 ---------------------> 未完, 待续

    待续 public class TestArray { public static void main(String[] args) { String[] s1 = {"双儿", ...

  10. Java安全之JNDI注入

    Java安全之JNDI注入 文章首发:Java安全之JNDI注入 0x00 前言 续上篇文内容,接着来学习JNDI注入相关知识.JNDI注入是Fastjson反序列化漏洞中的攻击手法之一. 0x01 ...