nmap 作用
- 主机发现-识别网络上的主机。例如列出响应TCP和/或ICMP请求或打开特定端口的主机。
- 端口扫描 - 枚举目标主机上的开放端口。
- 版本检测 - 询问远程设备上的网络服务以确定应用程序名称和版本号。
- OS检测 - 确定网络设备的操作系统和硬件特性。
- 软件版本检测脆弱性的漏洞(Nmap的脚本)
0x01 用法
扫描目标
nmap接受的输入可以有单IP,域名,网段和IP列表文件.
1 2 3 4 5 6 7 8 9 10 11 12
| nmap 127.0.0.1
nmap 192.168.2.1-25
nmap 192.168.2.0/24
nmap www.test.com
nmap -iL ips.txt
nmap 192.168.3.0/24 --exclude 192.168.3.1
|
端口选项
默认nmap会扫描1000个端口, 但是可以用过-p参数来设置.
1 2 3 4 5 6
| nmap -F 192.168.3.1
nmap -p 22,23,443 192.168.3.1
nmap -p- 192.168.3.1
|
主机发现
nmap在对主机进行扫描前, 通常会通过ping命令来发现主机是否存活, 主要用来优化扫描速度. 目前很多服务器都屏蔽了ping包, 因此这里可能造成一定的误报.
参数 |
作用 |
-sP |
通过ping来发现主机 |
-sP |
通过ping来发现主机 |
-P0, -Pn |
跳过ping发现过程 |
-PS |
通过TCP SYN ping来发现主机 |
-PA |
通过TCP ACK ping来发现主机 |
-PU |
通过UDP ping来发现主机 |
-PE; -PP; -PM |
通过ICMP ping来发现主机 |
-PR |
通过ARP ping来发现主机 |
端口扫描技术
nmap提供多种端口扫描技术,一般来说一次只能使用一种扫描技术,但是sU可以和其他扫描技术并用.
参数 |
解释 |
-sS |
通过TCP SYN扫描, 也是nmap默认的扫描类型, 也叫做半开放式扫描, 每秒钟可以扫描上千个端口. |
-sT |
通过TCP connect扫描, 当-sS不能使用的时候, nmap将会采用-sT方式来扫描. |
-sU |
通过UDP扫描. 目前有很多服务都使用UDP协议, 但是UDP因为没有常驻监听端口, 所以很多人都会忽略. |
-sN |
通过TCP NULL进行扫描 |
-sF |
通过TCP FIN进行扫描 |
-sX |
通过TCP Xmas进行扫描 |
-sA |
通过TCP ACK进行扫描, 主要用来发现防火墙规则 |
版本和系统指纹探测
当端口连接上后, 通过报文包内容, nmap内置多种匹配规则能够发现目标端口和主机的服务以及系统版本等有效信息.
参数 |
作用 |
-sV |
打开版本探测, 结合-version-intensity 来设置版本探测的强度,0~9可以设置,默认为7 |
-O |
打开操作系统探测 |
-A |
同时打开版本探测和操作系统探测, 因此-A 是上面两个功能的集合. |
总结

输出
nmap主要提供两种输出格式,其中oN是正常的输出,oX是XML格式,可以用于后期程序利用. 为了简化,nmap还提供oA来简化输出选项, 这个可以输出所有格式.
0x02 常用用法
快速全端口扫描
1
| nmap -p 1-65535 -sV -sS -T4 target
|
详细快速扫描
1
| nmap -v -sS -A -T4 target
|
快速扫描指定端口
1
| nmap -sV -p 139,445 -oG grep-output.txt 10.0.1.0/24
|
将扫描结果导出成HTML
0x03 Nmap脚本分类
1 2 3 4 5 6 7 8 9 10 11 12 13
| auth: 负责处理鉴权证书(绕开鉴权)的脚本 broadcast: 在局域网内探查更多服务开启状况,如dhcp/dns/sqlserver等服务 brute: 提供暴力破解方式,针对常见的应用如http/snmp等 default: 使用-sC或-A选项扫描时候默认的脚本,提供基本脚本扫描能力 discovery: 对网络进行更多的信息,如SMB枚举、SNMP查询等 dos: 用于进行拒绝服务攻击 exploit: 利用已知的漏洞入侵系统 external: 利用第三方的数据库或资源,例如进行whois解析 fuzzer: 模糊测试的脚本,发送异常的包到目标机,探测出潜在漏洞 intrusive: 入侵性的脚本,此类脚本可能引发对方的IDS/IPS的记录或屏蔽 malware: 探测目标机是否感染了病毒、开启了后门等信息 safe: 此类与intrusive相反,属于安全性脚本 version: 负责增强服务与版本扫描(Version Detection)功能的脚本 vuln: 负责检查目标机是否有常见的漏洞(Vulnerability),如是否有MS08_067
|
脚本使用示例
1 2
| nmap --script=auth xxx.xxx.xxx.xxx nmap --script=brute xxx.xxx.xxx.xxx
|
0x04 附录
- nmap官方参考指南
- kali的nmap教程
- nmap手册1
- nmap手册2