Nmap常用命令及扫描原理

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 格式保存输出
namp 2011-06-25 02:13:43| 分类: Linux | 标签:namp |字号大中小 订阅 . 进行ping扫描,打印出对扫描做出响应的主机,不做进一步测试(如端口扫描或者操作系统探测):   nmap -sP 192.168.1.0/24   仅列出指定网络上的每台主机,不发送任何报文到目标主机:   nmap -sL 192.168.1.0/24   探测目标主机开放的端口,可以指定一个以逗号分隔的端口列表(如-PS22,23,25,80):   nmap -PS 192.168.1.234 nmap -PS 127.0.0.1 -p 100-700   使用UDP ping探测主机:   nmap -PU 192.168.1.0/24   使用频率最高的扫描选项:SYN扫描,又称为半开放扫描,它不打开一个完全的TCP连接,执行得很快:   nmap -sS 192.168.1.0/24   当SYN扫描不能用时,TCP Connect()扫描就是默认的TCP扫描:   nmap -sT 192.168.1.0/24   UDP扫描用-sU选项,UDP扫描发送空的(没有数据)UDP报头到每个目标端口:   nmap -sU 192.168.1.0/24   确定目标机支持哪些IP协议 (TCP,ICMP,IGMP等):   nmap -sO 192.168.1.19   探测目标主机的操作系统:   nmap -O 192.168.1.19   nmap -A 192.168.1.19   另外,nmap官方文档中的例子:   nmap -v scanme.   这个选项扫描主机scanme中 所有的保留TCP端口。选项-v启用细节模式。   nmap -sS -O scanme./24   进行秘密SYN扫描,对象为主机Saznme所在的“C类”网段 的255台主机。同时尝试确定每台工作主机的操作系统类型。因为进行SYN扫描 和操作系统检测,这个扫描需要有根权限。   nmap -sV -p 22,53,110,143,4564 198.116.0-255.1-127   进行主机列举和TCP扫描,对象为B类188.116网段中255个8位子网。这 个测试用于确定系统是否运行了sshd、DNS、imapd或4564端口。如果这些端口 打开,将使用版本检测来确定哪种应用在运行。   nmap -v -iR 100000 -P0 -p 80   随机选择100000台主机扫描是否运行Web服务器(80端口)。由起始阶段 发送探测报文来确定主机是否工作非常浪费时间,而且只需探测主机的一个端口,因 此使用-P0禁止对主机列表。   nmap -P0 -p80 -oX logs/pb-port80scan.xml -oG logs/pb-port80scan.gnmap 216.163.128.20/20   扫描4096个IP地址,查找Web服务器(不ping),将结果以Grep和XML格式保存。   host -l | cut -d -f 4 | nmap -v -iL -   进行DNS区域传输,以发现中的主机,然后将IP地址提供给 Nmap。上述命令用于GNU/Linux -- 其它系统进行区域传输时有不同的命令。   其他选项:   -p (只扫描指定的端口)   单个端口和用连字符表示的端口范 围(如 1-1023)都可以。当既扫描TCP端口扫描UDP端口时,可以通过在端口号前加上T: 或者U:指定协议。 协议限定符一直有效直到指定另一个。 例如,参数 -p U:53,111,137,T:21-25,80,139,8080 将扫描UDP 端口53,111,和137,同时扫描列出的TCP端口。   -F (快速 (有限的端口) 扫描)namp 2011-06-25 02:13:43| 分类: Linux | 标签:namp |字号大中小 订阅 . 进行ping扫描,打印出对扫描做出响应的主机,不做进一步测试(如端口扫描或者操作系统探测):   nmap -sP 192.168.1.0/24   仅列出指定网络上的每台主机,不发送任何报文到目标主机:   nmap -sL 192.168.1.0/24   探测目标主机开放的端口,可以指定一个以逗号分隔的端口列表(如-PS22,23,25,80):   nmap -PS 192.168.1.234 nmap -PS 127.0.0.1 -p 100-700   使用UDP ping探测主机:   nmap -PU 192.168.1.0/24   使用频率最高的扫描选项:SYN扫描,又称为半开放扫描,它不打开一个完全的TCP连接,执行得很快:   nmap -sS 192.168.1.0/24   当SYN扫描不能用时,TCP Connect()扫描就是默认的TCP扫描:   nmap -sT 192.168.1.0/24   UDP扫描用-sU选项,UDP扫描发送空的(没有数据)UDP报头到每个目标端口:   nmap -sU 192.168.1.0/24   确定目标机支持哪些IP协议 (TCP,ICMP,IGMP等):   nmap -sO 192.168.1.19   探测目标主机的操作系统:   nmap -O 192.168.1.19   nmap -A 192.168.1.19   另外,nmap官方文档中的例子:   nmap -v scanme.   这个选项扫描主机scanme中 所有的保留TCP端口。选项-v启用细节模式。   nmap -sS -O scanme./24   进行秘密SYN扫描,对象为主机Saznme所在的“C类”网段 的255台主机。同时尝试确定每台工作主机的操作系统类型。因为进行SYN扫描 和操作系统检测,这个扫描需要有根权限。   nmap -sV -p 22,53,110,143,4564 198.116.0-255.1-127   进行主机列举和TCP扫描,对象为B类188.116网段中255个8位子网。这 个测试用于确定系统是否运行了sshd、DNS、imapd或4564端口。如果这些端口 打开,将使用版本检测来确定哪种应用在运行。   nmap -v -iR 100000 -P0 -p 80   随机选择100000台主机扫描是否运行Web服务器(80端口)。由起始阶段 发送探测报文来确定主机是否工作非常浪费时间,而且只需探测主机的一个端口,因 此使用-P0禁止对主机列表。   nmap -P0 -p80 -oX logs/pb-port80scan.xml -oG logs/pb-port80scan.gnmap 216.163.128.20/20   扫描4096个IP地址,查找Web服务器(不ping),将结果以Grep和XML格式保存。   host -l | cut -d -f 4 | nmap -v -iL -   进行DNS区域传输,以发现中的主机,然后将IP地址提供给 Nmap。上述命令用于GNU/Linux -- 其它系统进行区域传输时有不同的命令。   其他选项:   -p (只扫描指定的端口)   单个端口和用连字符表示的端口范 围(如 1-1023)都可以。当既扫描TCP端口扫描UDP端口时,可以通过在端口号前加上T: 或者U:指定协议。 协议限定符一直有效直到指定另一个。 例如,参数 -p U:53,111,137,T:21-25,80,139,8080 将扫描UDP 端口53,111,和137,同时扫描列出的TCP端口。   -F (快速 (有限的端口) 扫描)namp 2011-06-25 02:13:43| 分类: Linux | 标签:namp |字号大中小 订阅 . 进行ping扫描,打印出对扫描做出响应的主机,不做进一步测试(如端口扫描或者操作系统探测):   nmap -sP 192.168.1.0/24   仅列出指定网络上的每台主机,不发送任何报文到目标主机:   nmap -sL 192.168.1.0/24   探测目标主机开放的端口,可以指定一个以逗号分隔的端口列表(如-PS22,23,25,80):   nmap -PS 192.168.1.234 nmap -PS 127.0.0.1 -p 100-700   使用UDP ping探测主机:   nmap -PU 192.168.1.0/24   使用频率最高的扫描选项:SYN扫描,又称为半开放扫描,它不打开一个完全的TCP连接,执行得很快:   nmap -sS 192.168.1.0/24   当SYN扫描不能用时,TCP Connect()扫描就是默认的TCP扫描:   nmap -sT 192.168.1.0/24   UDP扫描用-sU选项,UDP扫描发送空的(没有数据)UDP报头到每个目标端口:   nmap -sU 192.168.1.0/24   确定目标机支持哪些IP协议 (TCP,ICMP,IGMP等):   nmap -sO 192.168.1.19   探测目标主机的操作系统:   nmap -O 192.168.1.19   nmap -A 192.168.1.19   另外,nmap官方文档中的例子:   nmap -v scanme.   这个选项扫描主机scanme中 所有的保留TCP端口。选项-v启用细节模式。   nmap -sS -O scanme./24   进行秘密SYN扫描,对象为主机Saznme所在的“C类”网段 的255台主机。同时尝试确定每台工作主机的操作系统类型。因为进行SYN扫描 和操作系统检测,这个扫描需要有根权限。   nmap -sV -p 22,53,110,143,4564 198.116.0-255.1-127   进行主机列举和TCP扫描,对象为B类188.116网段中255个8位子网。这 个测试用于确定系统是否运行了sshd、DNS、imapd或4564端口。如果这些端口 打开,将使用版本检测来确定哪种应用在运行。   nmap -v -iR 100000 -P0 -p 80   随机选择100000台主机扫描是否运行Web服务器(80端口)。由起始阶段 发送探测报文来确定主机是否工作非常浪费时间,而且只需探测主机的一个端口,因 此使用-P0禁止对主机列表。   nmap -P0 -p80 -oX logs/pb-port80scan.xml -oG logs/pb-port80scan.gnmap 216.163.128.20/20   扫描4096个IP地址,查找Web服务器(不ping),将结果以Grep和XML格式保存。   host -l | cut -d -f 4 | nmap -v -iL -   进行DNS区域传输,以发现中的主机,然后将IP地址提供给 Nmap。上述命令用于GNU/Linux -- 其它系统进行区域传输时有不同的命令。   其他选项:   -p (只扫描指定的端口)   单个端口和用连字符表示的端口范 围(如 1-1023)都可以。当既扫描TCP端口扫描UDP端口时,可以通过在端口号前加上T: 或者U:指定协议。 协议限定符一直有效直到指定另一个。 例如,参数 -p U:53,111,137,T:21-25,80,139,8080 将扫描UDP 端口53,111,和137,同时扫描列出的TCP端口。   -F (快速 (有限的端口) 扫描)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值