kali下的网络扫描工具:nmap

一、Nmap

在侦查期间,扫描一直是信息收集的初始阶段。

什么是侦查

侦查是尽可能多收集关于目标网络的信息。从黑客的角度来看,信息收集对于一次攻击非常有用,所以为了封锁恶意的企图,渗透测试者通常尽力查找这些信息,发现后修复这个缺陷。这也被叫做踩点。通过信息收集,人们通常会发现如下类型的信息:

   -  E-mail 地址

   - 端口号/协议

   - 操作系统信息

   - 运行的服务

   - Traceroute 信息/DNS 信息

   - 防火墙标识和绕过

   - 其他

所以对于信息收集,扫面是第一个部分。在扫面阶段,Nmap对于发现开放端口,协议号,操作系统信息,防火墙信息等是一个非常有用的工具。

Nmap 介绍

Nmap (网络映射器)是一个开源工具,它使网络探测和安全审计得以专业化。最初由 Gordon “Fyodor” Lyon 发布。官网官方网站是http://nmap.org. Nmap是一个免费的用来实现网络探测和安全审计的开源程序。许多系统和网络管理员发现它对于一些日常的工作也有帮助。例如查看整个网络的信息,管理服务升级计划以及监控主机和服务的正常运行。

Nmap采用一种新颖的方式利用原始IP包来决定网络上是什么样的主机,这些主机提供什么样的服务(应用程序名和版本),它们运行着什么样的操作系统(操作系统版本)它们使用什么类型的过滤器/防火墙以及许多其他的特征。它虽然被设计用来快速扫描大型网络,但是在单个主机上也会工作的非常好。Nmap可以运行在所有的主流计算机操作系统上,Linux,Windows,Mac OS X都可以找到官方的安装包。


官方中文文档地址:http://www.nmap.com.cn/

主要包含以下功能

  • 主机发现
  • 端口扫描
  • 服务和版本探测
  • 操作系统探测
  • 防火墙/IDS躲避和哄骗
  • 输出

1、扫描目标说明
1)单个ipv4目标:输入一个目标ip地址或主机名
2)批量ipv4目标:使用CIDR标志位:/<numbit>代表批量目录或整个网络相邻主机,如192.168.10.0/24将会扫描192.168.10.0 (二进制格式: 11000000 10101000 00001010 00000000)和192.168.10.255 (二进制格式: 11000000 10101000 00001010 11111111)之间的256台主机。
3)批量ipv4目标:使用八位字节范围标示,如192.168.0-255.1-254,过滤掉0 255广播ip
4)IPv6地址目标:只能用规范的IPv6地址或主机名指定

2、主机发现
使用各种方式发现活动的主机 感兴趣的主机
1)-sL 列表扫描:可以对主机进行反向域名解析,校验ip或域名是否存在
nmap -sL 192.168.2.0/24或www.baidu.com/24
2)-sP ping扫描:使用ping主机,得出可响应的主机列表
nmap -sP 192.168.2.0/24或www.baidu.com/24
3)-P0 (无ping):高强度的扫描时用它确定正在运行的机器, 默认情况下,Nmap只对正在运行的主机进行高强度的探测如 端口扫描,版本探测,或者操作系统探测。
nmap -P0 192.168.8.111
4)-PS [portlist] (TCP SYN Ping):发送一个设置了SYN标志位的空TCP报文,尝试建立连接,成功返回报文up以及运行信息,失败返回down;
nmap -PS 192.168.8.118
5)-PA [portlist] (TCP ACK Ping):发送一个设置了ACK标志位的空TCP报文,尝试建立连接,成功返回报文up以及运行信息,失败返回down;
nmap -PA 192.168.8.118
6) -PU [portlist] (UDP Ping):它发送一个空的UDP报文,返回响应报文up以及运行信息,失败返回down;
nmap -PU 192.168.8.118
7)-PE; -PP; -PM (ICMP Ping Types):发送一个ICMP type 8 (回声请求)报文到目标IP地址, 期待从运行的主机得到一个type 0 (回声响应)报文。
nmap -PE 192.168.8.118
8)-PR (ARP Ping):同一个局域网内,当进行ARP扫描时,Nmap用它优化的算法管理ARP请求。 当它收到响应时, Nmap甚至不需要担心基于IP的ping报文,既然它已经知道该主机正在运行了。 这使得ARP扫描比基于IP的扫描更快更可靠。
nmap -PR 192.168.2.118

3、端口扫描

端口扫描
端口状态:扫描之后,你可能会看到一些端口状态如 open(开放的),filtered(被过滤的),closed(关闭的)等等。
- Open(开放的): 应用程序正在这个端口上监听连接。
- Closed(关闭的): 端口对探测做出了响应,但是现在没有应用程序在监听这个端口。
- Filtered(过滤的): 端口没有对探测做出响应。同时告诉我们探针可能被一些过滤器(防火墙)终止了。
- Unfiltered(未被过滤的):端口对探测做出了响应,但是Nmap无法确定它们是关闭还是开放。
- Open/Filtered: 端口被过滤或者是开放的,Nmap无法做出判断。

- Closed/Filtered: 端口被过滤或者是关闭的,Nmap无法做出判断。

1)-sS (TCP SYN扫描): 被称为半开放扫描, 因为它不打开一个完全的TCP连接。 SYN/ACK表示端口在监听 (开放),而 RST (复位)表示没有监听者。

nmap -sS 192.168.2.118

2)-sT (TCP connect()扫描):Nmap通过创建connect() 系统调用要求操作系统和目标机以及端口建立连接,而不像其它扫描类型直接发送原始报文。

3)-sU (UDP扫描):UDP扫描发送空的(没有数据)UDP报头到每个目标端口。 如果返回ICMP端口不可到达错误(类型3,代码3), 该端口是closed(关闭的)。 其它ICMP不可到达错误(类型3, 代码1,2,9,10,或者13)表明该端口是filtered(被过滤的).

4)-sN; -sF; -sX (TCP Null,FIN,and Xmas扫描):



识别系统

Scanning Format:

nmap -O -Pn [IP or domain]

使用 -O 选项,可以获取到被扫描的主机的系统。 -Pn 选项禁用 Nmap 网络发现功能,假定所有系统都是活动的

Timing 模板

timing 参数可以指定 nmap 扫描的速度。其中各个选项如下:

  • T0 => paranoid 慢速网络扫描,串行扫描,两次扫描间隔 5 分钟。扫描速度极慢。
  • T1 => Sneky 慢速网络扫描,串行扫描,两次扫描间隔 15 秒,扫描速度较慢。
  • T2 => Polite 中速网络扫描,串行扫描,两次扫描间隔 400 毫秒,扫描速度慢。
  • T3 => Normal 中速网络扫描,并行扫描,两次扫描间隔 0 秒,扫描速度正常。
  • T4 => Aggressive 快速网络扫描,并行扫描,两次扫描间隔 0 秒,扫描速度较快。
  • T5 => Normal 快速网络扫描,并行扫描,两次扫描间隔 0 秒,扫描速度极快。

Scanning Format:

nmap -T[0-5] [IP or domain]

扫描方式

TCP 扫描

端口扫描中最稳定的,利用的是 TCP 三次握手。TCP 扫描通常用于收集有关目标的更多信息,但是会和目标主机建立一个完成的 TCP 连接。

Scanning Format:

nmap -sT -Pn [IP or domain]

-sT TCP 连接扫描(s ==> 哪种类型扫描;T ==> TCP 类型)

SYN 扫描

TCP 两次握手(隐藏扫描,速度快,nmap 缺省参数)

Scanning Format:

nmap -sS -Pn [IP or domain]

-sS SYN 连接扫描(s ==> 哪种类型扫描;S ==> SYN 类型)

ACK 扫描

ACK 扫描,用于确定 TCP 端口是否被防火墙过滤。

Scanning Format:

nmap -sA -Pn [IP or domain]

-sA ACK 连接扫描(s ==> 哪种类型扫描;A ==> ACK 类型)

UDP 扫描

DHCP,DNS,SNMP,TFTP 等都使用了 UDP 协议;UDP 扫描会评估目标系统上的 UDP 端口,可以确认 UDP 端口是开放还是被防火墙过滤。

Scanning Format:

nmap -sU -Pn [IP or domain]

-sU UDP 连接扫描(s ==> 哪种类型扫描;U ==> UDP 类型)
-sV UDP 扫描中添加版本扫描信息(V ==> 版本信息)

不存在 -Pn 参数(从 UDP 协议去理解,你发了就 ok 管他收没收到)

扫描 IP 段

For Example:

nmap 192.168.1.1-255    # 扫描 192.168.1.1-192.168.1.255 所有 IP
nmap 192.168.1.1/24     # 扫描 192.168.1.1-192.168.1.255 所有 IP
nmap -iL IPL.txt        # 扫描 IPL.txt 中保存的所有 IP

输出保存选项

  • -oN => 保存为文本文件
  • -oX => 保存为 XML 文件
  • -oG => 保存为 GREPable 输出
  • -oS => 脚本输出

其他更详细的扫描

Nmap 扫描策略

# 适用所有大小网络最好的 nmap 扫描策略

# 主机发现,生成存活主机列表
nmap -sn -T4 -oG Discovery.gnmap 192.168.56.0/24
grep "Status: Up" Discovery.gnmap | cut -f 2 -d ' ' > LiveHosts.txt

# 端口发现,发现大部分常用端口
# https//nmap.org/presentations/BHDC08/bhdc08-slides-fyodor.pdf
nmap -sS -T4 -Pn -oG TopTCP -iL LiveHosts.txt
nmap -sU -T4 -Pn -oN TopUDP -iL LiveHosts.txt
nmap -sS -T4 -Pn --top-ports 3674 -oG 3674 -iL LiveHosts.txt

# 端口发现,发现全部端口,但 UDP 端口的扫描会非常慢
nmap -sS -T4 -Pn -p 0-65535 -oN FullTCP -iL LiveHosts.txt
nmap -sU -T4 -Pn -p 0-65535 -oN FullUDP -iL LiveHosts.txt

# 显示 TCP\UDP 端口
grep "open" FullTCP|cut -f 1 -d ' ' | sort -nu | cut -f 1 -d '/' |xargs | sed 's/ /,/g'|awk '{print "T:"$0}'
grep "open" FullUDP|cut -f 1 -d ' ' | sort -nu | cut -f 1 -d '/' |xargs | sed 's/ /,/g'|awk '{print "U:"$0}'

# 侦测服务版本
nmap -sV -T4 -Pn -oG ServiceDetect -iL LiveHosts.txt

# 扫做系统扫描
nmap -O -T4 -Pn -oG OSDetect -iL LiveHosts.txt

# 系统和服务检测
nmap -O -sV -T4 -Pn -p U:53,111,137,T:21-25,80,139,8080 -oG OS_Service_Detect -iL LiveHosts.txt

# 扫描 B 段的存活主机
nmap -v -sn -PE -n --min-hostgroup 1024 --min-parallelism 1024 172.16.0.0/16 | grep -v down | grep "172.16."

 


Nmap 躲避防火墙

# 分段
nmap -f

# 修改默认 MTU 大小,但必须为 8 的倍数(8,16,24,32 等等)
nmap --mtu 24

# 生成随机数量的欺骗
nmap -D RND:10 [target]

# 手动指定欺骗使用的 IP
nmap -D decoy1,decoy2,decoy3 etc.

# 僵尸网络扫描, 首先需要找到僵尸网络的IP
nmap -sI [Zombie IP] [Target IP]

# 指定源端口号
nmap --source-port 80 IP

# 在每个扫描数据包后追加随机数量的数据
nmap --data-length 25 IP

# MAC 地址欺骗,可以生成不同主机的 MAC 地址
nmap --spoof-mac Dell/Apple/3Com IP
LANG-BASH | COPY

Nmap 进行 Web 漏洞扫描

cd /usr/share/nmap/scripts/
wget https://www.computec.ch/projekte/vulscan/download/nmap_nse_vulscan-2.0.tar.gz && tar xzf nmap_nse_vulscan-2.0.tar.gz
nmap -sS -sV --script=vulscan/vulscan.nse target
nmap -sS -sV --script=vulscan/vulscan.nse –script-args vulscandb=scipvuldb.csv target
nmap -sS -sV --script=vulscan/vulscan.nse –script-args vulscandb=scipvuldb.csv -p80 target
nmap -PN -sS -sV --script=vulscan –script-args vulscancorrelation=1 -p80 target
nmap -sV --script=vuln target
nmap -PN -sS -sV --script=all –script-args vulscancorrelation=1 target

Nmap 端口扫描

# 使用诱饵隐蔽扫描 nmap -D RND:10 [target] (生成随机数量的诱饵)
# fargement
# data packed – like orginal one not scan packet
# 使用 auxiliary/scanner/ip/ipidseq 来在僵尸网络中查找IP并使用这些IP进行扫描 — nmap -sI ip target
# nmap –source-port 53 target

nmap -sS -sV -D IP1,IP2,IP3,IP4,IP5 -f –mtu=24 –data-length=1337 -T2 target (随机使用不同的IP进行扫描)
nmap -Pn -T2 -sV –randomize-hosts IP1,IP2
nmap –script smb-check-vulns.nse -p445 target (使用 NSE 脚本)
nmap -sU -P0 -T Aggressive -p123 target (攻击式扫描 T1-T5)
nmap -sA -PN -sN target
nmap -sS -sV -T5 -F -A -O target (版本检测)
nmap -sU -v target (Udp)
nmap -sU -P0 (Udp)
nmap -sC 192.168.31.10-12 (全部使用默认配置)

示例扫描

示例一:SYN 扫描

For Example:

nmap -sS -T5 192.168.199.133
LANG-BASH | COPY

Namp

示例二:基础信息扫描

For Example:

nmap -O 192.168.199.133
LANG-BASH | COPY

Namp

示例三:详细信息扫描

For Example:

nmap -A 192.168.199.133
LANG-BASH | COPY

Namp

Namp

Namp

示例四:网段扫描

For Example:

nmap -T5 192.168.1.103-110
LANG-BASH | COPY

Namp

Namp


# 适用所有大小网络最好的 nmap 扫描策略

# 主机发现,生成存活主机列表
nmap -sn -T4 -oG Discovery.gnmap 192.168.56.0/24
grep "Status: Up" Discovery.gnmap | cut -f 2 -d ' ' > LiveHosts.txt

# 端口发现,发现大部分常用端口
# https//nmap.org/presentations/BHDC08/bhdc08-slides-fyodor.pdf
nmap -sS -T4 -Pn -oG TopTCP -iL LiveHosts.txt
nmap -sU -T4 -Pn -oN TopUDP -iL LiveHosts.txt
nmap -sS -T4 -Pn --top-ports 3674 -oG 3674 -iL LiveHosts.txt

# 端口发现,发现全部端口,但 UDP 端口的扫描会非常慢
nmap -sS -T4 -Pn -p 0-65535 -oN FullTCP -iL LiveHosts.txt
nmap -sU -T4 -Pn -p 0-65535 -oN FullUDP -iL LiveHosts.txt

# 显示 TCP\UDP 端口
grep "open" FullTCP|cut -f 1 -d ' ' | sort -nu | cut -f 1 -d '/' |xargs | sed 's/ /,/g'|awk '{print "T:"$0}'
grep "open" FullUDP|cut -f 1 -d ' ' | sort -nu | cut -f 1 -d '/' |xargs | sed 's/ /,/g'|awk '{print "U:"$0}'

# 侦测服务版本
nmap -sV -T4 -Pn -oG ServiceDetect -iL LiveHosts.txt

# 扫做系统扫描
nmap -O -T4 -Pn -oG OSDetect -iL LiveHosts.txt

# 系统和服务检测
nmap -O -sV -T4 -Pn -p U:53,111,137,T:21-25,80,139,8080 -oG OS_Service_Detect -iL LiveHosts.txt

# 扫描 B 段的存活主机
nmap -v -sn -PE -n --min-hostgroup 1024 --min-parallelism 1024 172.16.0.0/16 | grep -v down | grep "172.16."

# 适用所有大小网络最好的 nmap 扫描策略

# 主机发现,生成存活主机列表
nmap -sn -T4 -oG Discovery.gnmap 192.168.56.0/24
grep "Status: Up" Discovery.gnmap | cut -f 2 -d ' ' > LiveHosts.txt

# 端口发现,发现大部分常用端口
# https//nmap.org/presentations/BHDC08/bhdc08-slides-fyodor.pdf
nmap -sS -T4 -Pn -oG TopTCP -iL LiveHosts.txt
nmap -sU -T4 -Pn -oN TopUDP -iL LiveHosts.txt
nmap -sS -T4 -Pn --top-ports 3674 -oG 3674 -iL LiveHosts.txt

# 端口发现,发现全部端口,但 UDP 端口的扫描会非常慢
nmap -sS -T4 -Pn -p 0-65535 -oN FullTCP -iL LiveHosts.txt
nmap -sU -T4 -Pn -p 0-65535 -oN FullUDP -iL LiveHosts.txt

# 显示 TCP\UDP 端口
grep "open" FullTCP|cut -f 1 -d ' ' | sort -nu | cut -f 1 -d '/' |xargs | sed 's/ /,/g'|awk '{print "T:"$0}'
grep "open" FullUDP|cut -f 1 -d ' ' | sort -nu | cut -f 1 -d '/' |xargs | sed 's/ /,/g'|awk '{print "U:"$0}'

# 侦测服务版本
nmap -sV -T4 -Pn -oG ServiceDetect -iL LiveHosts.txt

# 扫做系统扫描
nmap -O -T4 -Pn -oG OSDetect -iL LiveHosts.txt

# 系统和服务检测
nmap -O -sV -T4 -Pn -p U:53,111,137,T:21-25,80,139,8080 -oG OS_Service_Detect -iL LiveHosts.txt

# 扫描 B 段的存活主机
nmap -v -sn -PE -n --min-hostgroup 1024 --min-parallelism 1024 172.16.0.0/16 | grep -v down | grep "172.16."

# 适用所有大小网络最好的 nmap 扫描策略

# 主机发现,生成存活主机列表
nmap -sn -T4 -oG Discovery.gnmap 192.168.56.0/24
grep "Status: Up" Discovery.gnmap | cut -f 2 -d ' ' > LiveHosts.txt

# 端口发现,发现大部分常用端口
# https//nmap.org/presentations/BHDC08/bhdc08-slides-fyodor.pdf
nmap -sS -T4 -Pn -oG TopTCP -iL LiveHosts.txt
nmap -sU -T4 -Pn -oN TopUDP -iL LiveHosts.txt
nmap -sS -T4 -Pn --top-ports 3674 -oG 3674 -iL LiveHosts.txt

# 端口发现,发现全部端口,但 UDP 端口的扫描会非常慢
nmap -sS -T4 -Pn -p 0-65535 -oN FullTCP -iL LiveHosts.txt
nmap -sU -T4 -Pn -p 0-65535 -oN FullUDP -iL LiveHosts.txt

# 显示 TCP\UDP 端口
grep "open" FullTCP|cut -f 1 -d ' ' | sort -nu | cut -f 1 -d '/' |xargs | sed 's/ /,/g'|awk '{print "T:"$0}'
grep "open" FullUDP|cut -f 1 -d ' ' | sort -nu | cut -f 1 -d '/' |xargs | sed 's/ /,/g'|awk '{print "U:"$0}'

# 侦测服务版本
nmap -sV -T4 -Pn -oG ServiceDetect -iL LiveHosts.txt

# 扫做系统扫描
nmap -O -T4 -Pn -oG OSDetect -iL LiveHosts.txt

# 系统和服务检测
nmap -O -sV -T4 -Pn -p U:53,111,137,T:21-25,80,139,8080 -oG OS_Service_Detect -iL LiveHosts.txt

# 扫描 B 段的存活主机
nmap -v -sn -PE -n --min-hostgroup 1024 --min-parallelism 1024 172.16.0.0/16 | grep -v down | grep "172.16."




猜你喜欢

转载自blog.csdn.net/xianjie0318/article/details/81030523