Nmap工具介绍
Nmap是一款开放源代码的网络探测和安全审核工具,它被设计用来快速扫描大型网络、包括主机探测与发现、开放的端口情况、操作系统与应用服务指纹、WAF识别及常见安全漏洞。
它的图形化界面是 Zenmap、分布式框架为 Dnmap
Nmap功能
主机探测:探测网络上的主机,如列出TCP/ICMP请求或开放特别端口的主机。
端口扫描:探测目标主机所开放的端口。
版本检测:探测目标主机的网络服务。判断其服务名称以及版本号。
系统监测:探测目标主机的操作系统以及网络设备的硬件特性。
支持探测脚本的编写:使用 Nmap 脚本引擎和 Lua 编程语言
Nmap安装
下载地址:点击前往
Windows版本直接下载对应版本安装,Linux系统则使用rpm命令进行安装
端口状态识别
Nmap使用参数
使用 “Nmap -h” 获取更多使用参数
重要参数
-sP:ping扫描 (不进行端口扫描)
-sT:进行TCP全连接扫描
-sS:进行SYN半连接扫描
-sF:进行FIN扫描
-sN:进行Null扫描
-sX:进行Xmas扫描
-O:进行探测目标主机版本
-sV:可以显示服务的详细版本
-A:全面扫描
-p:指定端口扫描
-oN:会将扫描出来的结果保存成一个 txt 文件
-oX:会将扫描出来的结果保存成一个 xml 文件
[-T1]–[-T5]:提高扫描速度
常用命令
一般当扫描主机防火墙打开时,是无法直接扫描的
扫描单个目标地址
Nmap 192.168.1.1
扫描多个目标地址
Nmap 192.168.1.1 192.168.1.2
扫描范围内的目标地址
Nmap 192.168.1.1-254
扫描目标地址所在的网段
Nmap 192.168.1.1/24
扫描主机列表 1.txt中所有的目标地址
Nmap -iL 1.txt
扫描除某一目标地址之外的所有目标地址
Nmap 192.168.1.1/24 -exclude 192.168.1.100
扫描除某一文件中的目标地址之外的目标地址
Nmap 192.168.1.1/24 -excludefile targets.txt // targets文件中ip不扫描
扫描某一目标地址(自定义的)端口
Nmap 192.168.1.1 -p 135,445,3389
对目标地址进行路由追踪
Nmap --traceroute 192.168.1.1
扫描目标地址所在C段的在线状态
Nmap -sP 192.168.1.1/24 //-sP(Arp ping)是平扫描
对目标地址的操作系统指纹识别
Nmap -O/-A 192.168.1.1
对目标地址提供的服务版本检测
Nmap -sV 192.168.1.1
探测防火墙状态
Nmap -sF -T4 192.168.1.1
TCP SYN Ping扫描
Nmap -sP -PS 192.168.1.1
//-PS 让nmap使用SYN包而不是ACK包来对目标主机进行扫描。如果主机正在运行就返回一个RST包(或者一个SYN/ACK包)。-PS默认在80端口发送TCP SYN数据包;我们还可以指定端口,例如 -PS 135(指定135)端口。当管理员对TCP SYN数据包中的SYN数据包没有过滤时可绕过。
-PA TCP ACK Ping扫描
Nmap -sP -PA 192.168.1.1
//类比TCP SYN Ping扫描
-Pn 非ping扫描
Nmap -Pn 192.168.1.1 //常与其他命令联合使用
//不执行主机发现,可以跳过防火墙 ( 常用)
-vv 对扫描结果详细输出(vv小写)
Nmap -vv 192.168.1.1
//输出结果里包含了开放端口,扫描方法,端口对应服务协议等
鉴权扫描
Nmap --script=auth 192.168.1.1
//--script=auth 该参数可以对目标主机或目标主机所在的网段进行应用弱口令检测
暴力破解攻击
Nmap --script=brute 192.168.1.1
//--script=brute 可对数据库、SMB、Snmp等进行简单密码的暴力破解
扫描常见漏洞
Nmap --script=vuln 192.168.1.1
Nmap具有漏洞扫描的功能,可以检查目标主机或网段是否存在常见的漏洞
应用服务扫描
Nmap --script=realvnc-auth-bypass 192.168.1.1
Nmap具有常见应用服务的扫描脚本,如vnc服务、mysql服务、telnet服务、rsync服务
探测局域网内更多服务开启情况
Nmap -n -p 445 --script=broadcast 192.168.1.1
Whois解析
Nmap -script external xxx.com
列表扫描
Nmap -sL 192.168.1.1/24
//该命令仅仅列出指定网络上的每台主机,不会向目标主机发送任何报文。
//端口扫描,操作系统探测或者ping扫描,在该命令下不会执行。
识别和绕过防火墙与IDS
主机发现和端口扫描参数区分
一、主机发现
-Pn:只有该命令将指定的主机视作开启,跳过主机发现的过程用作穿透防火墙
-PA/-PS/-PU/-PY:使用TCP ACK/SYN/或SCTP INIT/ECHO方式来发现主机
二、端口扫描
-sS/-sA/-sF:使用TCP SYN/ACK/FIN扫描,比较隐蔽
-sU:使用UDP扫描方式确定目标主机UDP端口情况
-sP:ping扫描,易被发现,可能会漏掉很多实际存活的主机
nmap的脚本
常用的脚本设置:–script=类别 进行扫描
常见的类别如下:
auth:绕过鉴权扫描
例:nmap --script=auth 192.168.11.1
broadcast:在局域网内探查更多服务开启的情况
brute:对常见的HTTP/SMTP等应用协议提供暴力破解
dos:用于拒绝服务攻击
vuln:用于检查目标机是否有常见漏洞
version:负责增强服务与版本扫描的功能的脚本
malware:探测目标机是否感染了病毒,开启后门等信息
fuzzer:模糊测试脚本,发送异常的包到目标机,探测出潜在漏洞
–script-updatedb:脚本更新