nmap的使用
Nmap
nmap是一款主机发现、端口扫描、服务识别、漏洞扫描的一款强大的信息收集工具
1、主机发现
命令: | 说明 |
---|---|
-sn | 不进行端口扫描 |
--send-ip | 不进行ARP扫描,nmap默认会进行ARP主机发现扫描 |
-PR | 进行ARP存活扫描 |
-PS | 进行TCP SYN 存活扫描 |
-PA | 进行TCP ACK 存活扫描 |
-PU | 进行UDP存活扫描 |
-sP | 进行TCP和ICMP存活存活扫描 |
-PY | 进行SCTP扫描,SCTP是TCP的升级版 |
-PO | 自定义协议扫描 |
-PE | 进行ICMP echo reply扫描 |
-PP | 进行ICMP 时间戳扫描 |
-PM | 进行ICMP 掩码扫描 |
更多详细参数,可以在kali
中使用man nmap
查看nmap
使用手册,是中文的
操作
使用 ARP 协议对 172.16.1 网段进行存活扫描
nmap -sn -PR 172.16.1.0/24
使用 TCP SYN 对 172.16.1进行主机存活扫描
nmap -sn -PS --send-ip 172.16.1.0/24
使用 TCP ACK 对 172.16.1 网段进行主机存活扫描
nmap -sn -PA --send-ip 172.16.1.0/24
使用 UDP 对 172.16.1 网段进行主机存活扫描,UDP扫描相对较慢
nmap -sn -PU --send-ip 172.16.1.0/24
使用 SCTP协议对 172.16.1 网段进行主机存活扫描
nmap -sn -PY --send-ip 172.16.1.0/24
使用 IP 协议对 172.16.1 网段进行主机存活扫描
nmap -sn -PO --send-ip 172.16.1.0/24
使用 TCP 和 ICMP 协议对 172.16.1 网段进行主机存活扫描
nmap -sn -sP --send-ip 172.16.1.0/24
2、端口扫描
命令: | 说明 |
---|---|
-sT | 进行 TCP 全连接端口扫描 |
-sS | 进行 SYN 端口扫描 |
-sA | 进行 ACK 端口扫描 |
-sW | 进行 滑动窗口扫描 |
-sM | 进行 迷你端口扫描 |
-sX | 进行 圣诞树端口扫描 |
-sF | 进行 隐藏端口扫描 |
-sN | 进行 空端口扫描 |
-sU | 进行 UDP 端口扫描 |
-sO | 进行 IP 协议扫描 |
-sV | 进行 端口版本信息扫描 |
--scanflags 标志 | 指定TCP标志进行扫描 |
-Pn | 不进行主机发现 |
操作
TCP全连接端口扫描
可以看到开放端口有21、22、80、111、1002、3306,并通过指纹验证了该端口的服务。
SYN端口扫描
SYN扫描最受欢迎,扫描快、准、狠。
其余端口扫描不在一一叙述,虽然使用方法都一样,但是根据协议,他们的扫描原理是不一样的,各有各的有点,例如sF扫描不容易被发现,sS扫描比较快但是扫描的不是准确,sV能扫描到端口版本信息
3、脚本扫描
namp自带很多脚本呢,在kali
中存放于/var/share/nmap/script
目录中
在我们使用脚本的时候,可以调用一个脚本呢组,或者调用其中一个
指定脚本扫描一个脚本的扫描
对172.16.1.80使用脚本mysql-info进行mysql服务的版本扫描
nmap --script mysql-info -p 3306 172.16.1.80
使用脚本组进行扫描
常用的组有
auth | 认证相关脚本 |
---|---|
broadcast | 通过发送广播消息发现主机 |
brute | 对登录执行暴力密码审计 |
default | 默认脚本,与-sC |
discovery | 检索可访问的信息,例如数据库表和DNS名称 |
dos | 检测易受拒绝服务 ( DoS )攻击的服务器 |
exploit | 尝试利用各种易受攻击的服务 |
external | 使用第三方服务进行检查,例如 Geoplugin 和 Virustotal |
fuzzer | 发起模糊攻击 |
intrusive | 侵入式脚本,例如暴力攻击和利用 |
malware | 扫描后门 |
safe | 不会使目标崩溃的安全脚本 |
version | 检索服务版本 |
vuln | 检查漏洞或利用易受攻击的服务 |
使用默认脚本扫描
nmap -sc 或者 nmap --script=default
使用vuln漏洞扫描
nmap --script=vuln
可以使用ftp*
使用ftp
开头的脚本
nmap --script "ftp*"
--script
后面可以是=
也可以是空格
4、常用其他参数
参数 | 描述 |
---|---|
-n | 不进行DNS查询 |
-R | 所有主机进行反向DNS查找 |
-sn | 不进行端口扫描 |
-p端口,端口 | 指定端口进行扫描 |
-p1-1024 | 对1-1024端口进行扫描 |
-p- | 对所有端口进行扫描 |
-F | 对常用的100个端口进行扫描 |
-r | 按照连续顺序扫描端口 |
-T0-5 | 指定扫描时间,0最慢,5最快 |
--max-rate 50 | 速率 <= 50 数据包/秒 |
--min-rate 15 | 速率 >= 15 数据包/秒 |
--reason | 获取端口开放主机存货原因 |
-v 或 -vv | 查看扫描细节 |
-d 或 -vv | 查看扫描细节(调试) |
-f 或 -ff | 进行IP分段扫描,-f 8个字节,-ff 4个字节 |
--source-port 端口号 | 指定源端口 |
--data-length 数值 | 附加随机数据以达到给定长度 |
-S SPOOFED_IP MACHINE_IP | 欺骗源IP |
--spoof-mac SPOOFED_MAC | 欺骗源 MAC 地址 |
-O | 操作系统扫描 |
--traceroute | 跟踪路由 |
-A | 相当于-sV -O -sC --traceroute |
5、保存输出
无论何时运行 Nmap 扫描,将结果保存在文件中都是合理的。为文件名选择并采用良好的命名约定也很重要。文件的数量会迅速增加并妨碍您查找以前的扫描结果。三种主要格式是:
- 普通的
- Grepable(grep能够)
- XML
普通的
顾名思义,正常格式类似于您在扫描目标时在屏幕上获得的输出。您可以使用 ; 以正常格式保存扫描件-oN FILENAME
;N代表正常。这是结果的示例
Grep able
grepable 格式的名称来自命令grep;grep 代表全局正则表达式打印机。简而言之,它可以高效地过滤特定关键字或术语的扫描输出。您可以使用 将扫描结果保存为 grepable 格式-oG FILENAME
。上面以正常格式显示的扫描输出使用 grepable 格式显示在下面的控制台中。正常输出为21行;然而,grepable 输出只有 4 行。主要原因是Nmap想在用户申请的时候让每一行都有意义和完整grep。结果,在 grepable 输出中,行很长,与正常输出相比不方便阅读
的一个例子grep是grep KEYWORD TEXT_FILE
; 此命令将显示包含提供的关键字的所有行。grep让我们比较一下在普通输出和 grepable 输出上使用的输出。您会注意到前者不提供主机的 IP 地址。相反,它返回了 80/tcp open http nginx 1.6.2,如果您正在筛选多个系统的扫描结果,这将非常不方便。但是,后者在每行中提供了足够的信息,例如主机的 IP 地址,使其完整
可以使用grep
进行筛选关键字
XML
第三种格式是XML。您可以使用 以 XML 格式保存扫描结果-oX FILENAME
。XML格式最便于在其他程序中处理输出。-oA FILENAME
非常方便的是,您可以使用to combine -oN
、-oG
和 for normal、grepable 和XML以所有三种格式保存扫描输出。 -oX
nmap非常的强大,这里只是简单的介绍了其中一些简单的命令。