nmap使用

Nmap(Network Mapper)是一款用于网络发现(Network Discovery)和安全审计(Security Audting)的安全工具,采用C++语言编写,常用于端口扫描
Nmap软件包带有一个名为GUI的包zenmap,使用Python编写。

安装nmap

1
sudo apt-get install nmap

使用

最简单的形式是只传递地址或域名:

1
2
3
nmap scanme.nmap.org
nmap 74.207.244.221
nmap 192.168.1.200

端口状态

扫描结果中显示的商品状态

状态 说明
open 开放,探测报文到达了端口,端口有响应:我有应用程序监听 - SYN/ACK
closed 关闭,探测报文到达了端口,端口有响应:我没应用程序监听 - RST (复位)
filtered 被屏蔽,探测报文到不了端口,石沉大海
unfiltered 没有被屏蔽,还需要确认,探测报文到达了端口,没响应了
open | filtered 开放或屏蔽,有可能报文过滤器丢弃了探测报文(filtered),或丢弃了端口的响应报文 (open)(原理请往下看 -sN,-sF,-sX)UDP,IP 协议, FIN,Null,和 Xmas 扫描可能把端口归入此类
closed | unfiltered 关闭或屏蔽,IPID+1,但是 closed 和 unfiltered 都可能导致只 + 1,所以就不确定了。只可能出现在 IP ID Idle 扫描中(看下端口 TCP 空闲扫描的原理就知道为什么了)

扫描类型

参数 说明
-sT   TCP 连接扫描,会在目标主机中记录大量的链接请求和错误信息
-sS   SYN 扫描,隐蔽扫描,不创建完整连接,只完成三次握手前两次,很少有系统记入日志,默认使用,需要 root(admin) 权限
-sP   Ping 扫描,默认使用,只有能 Ping 得通才会继续扫描
-P0   扫描之前不需要 Ping,用于绕过防火墙禁 Ping 功能
-sA   高级的扫描方式,用来穿过防火墙的规则集
-sV   服务的详细信息 
-sU   UDP 扫描,扫描主机开启的 UDP 的服务,速度慢,结果不可靠 
-sX -sN    秘密的 FIN 数据包扫描,圣诞树 (Xmas Tree) 和空模式,针对 Unix 和 Linux 主机,系统要求遵循 TCP RFC 文档

扫描参数

参数 说明
-v   显示扫描过程,推荐使用
-h   帮助文档
-p   指定端口号,如 [1-65535],[22,135,1433,3306,] 等格式
-O   探测操作系统,存在误报
-A   全面系统监测,使用脚本检测,扫描等
-T4  针对 TCP 端口禁止动态扫描延迟超过 10ms
-iL   批量扫描,读取主机列表,如 [-iL C:\ip.txt]
-F 快速扫描
-V 确定指定端口对应的服务信息
-eclude 排除IP,多个IP用逗号分隔
-p 指定端口,多个端口用逗号分隔

扫描案例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# 扫描 C 段(局域网)存活主机
nmap -sP www.XXX.com/24
nmap -sP 192.168.1.*
# 主机发现,通过ICMP ECHO扫描子网中的在线主机
nmap -v -sn -PE 192.168.1.1/24
nmap -v -sn -PE 192.168.1.1-5
# 指定商品扫描
nmap -v -p 135 192.168.1.1-5
# 扫描指定 IP 开放端口号
# -p-为全端口扫描,和[1-65535]一样,建议使用,不使用默认Nmap认为危险的100个端口号
nmap -sS -p- -v 192.168.1.100
# 扫描指定 IP 所开端口及对应的服务
nmap -sV -v 192.168.1.100
# 探测主机操作系统以及硬件信息,扫描准确度以百分比显示,未必准确
nmap -O www.XXX.com
# 穿透防火墙扫描
nmap -P0 www.XXX.com
# 全面探测,-A 包含 OS 探测,版本探测,脚本扫描,traceroute
nmap -A www.XXX.com
# 使用脚本扫描,脚本放在Nmap安装目录script下,官网可查各个脚本功能
nmap --script="脚本名称" www.XXX.com
# 如在局域网上扫找 Conficker 蠕虫病毒
nmap -PN -T4 -p139,445 -n -v --script=smb-check-vulns --script-args safe=1 192.168.0.1-254

补充: