工具使用-NMAP

nmap 作用

  • 主机发现-识别网络上的主机。例如列出响应TCP和/或ICMP请求或打开特定端口的主机。
  • 端口扫描 - 枚举目标主机上的开放端口。
  • 版本检测 - 询问远程设备上的网络服务以确定应用程序名称和版本号。
  • OS检测 - 确定网络设备的操作系统和硬件特性。
  • 软件版本检测脆弱性的漏洞(Nmap的脚本)

0x01 用法

扫描目标

nmap接受的输入可以有单IP,域名,网段和IP列表文件.

1
2
3
4
5
6
7
8
9
10
11
12
# 扫描单个ip
nmap 127.0.0.1
# 扫描一个ip端
nmap 192.168.2.1-25
# 扫描一个子网段
nmap 192.168.2.0/24
# 扫描一个域名
nmap www.test.com
# 扫描文件列表中IP
nmap -iL ips.txt
# 排除指定ip, 不扫描192.168.3.1
nmap 192.168.3.0/24 --exclude 192.168.3.1

端口选项

默认nmap会扫描1000个端口, 但是可以用过-p参数来设置.

1
2
3
4
5
6
# 扫描常见的100哥端口, 快速扫描模式
nmap -F 192.168.3.1
# 扫描指定端口, 可以使单个也可以是多个
nmap -p 22,23,443 192.168.3.1
# 扫描所有端口1-65535
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

1
nmap -sS -sV -T5 10.0.1.99 --webxml -oX - | xsltproc --output file.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 附录

  1. nmap官方参考指南
  2. kali的nmap教程
  3. nmap手册1
  4. nmap手册2

工具使用-NMAP
https://coutcin-xw.github.io/2022/04/24/工具使用-NMAP/
作者
CoutCin
发布于
2022年4月24日
许可协议