nmap扫描工具
Nmap简介
端口扫描是nmap工具的核心功能,用于确定目标主机tcp/udp端口开放情况。在kali中已经安装。
默认情况下nmap会扫描最有可能开放的tcp端口
nmap通过探测将端口划分为6个状态:
- open端口是开放的
- closed端口是关闭的
- filtered端口被firewall/ids/ips屏蔽,无法确定状态
- unfiltered端口没有被屏蔽,但是否开放无法确定
- open|filtered端口是开放或屏蔽
- closed|filtered端口是关闭或屏蔽
Nmap使用
nmap有四种基本功能:端口扫描、主机探测、服务识别和系统识别
端口扫描
|
指定扫描方式
利用wireshark过滤扫描时的请求包筛选出指定方式的请求例如扫描地址并且端口是tcp的80如下图tcp全连接扫描
使用-sT参数进行tcp全连接扫描(全连接扫描指的是建立完整的三次握手,能够建立则说明端口开放,否则判定端口关闭)nmap 地址 -p 80 -sT
如果端口开放就会进行完整的三次握手成功建立连接扫描结果中的state字段为open
如果端口关闭则只进行一次握手无法建立连接扫描结果中的state字段为closed
- syn半连接扫描
使用-sS参数进行syn半连接扫描(半连接指的是只进行两次握手,对方返回确认帧ack=1说明端口开放否则端口关闭)nmap 地址 -p 80 -sS
如果端口开放则会完成两次握手,扫描结果中的state字段为open
如果端口关闭则,只能进行一次握手,扫描结果state字段显示closed
这里没有进行-sS参数添加是因为nmap默认使用半连接扫描
全连接和半连接
- 隐秘扫描只适用于linux系统
隐秘扫描是向目标主机的端口发送tcp fin包或xmas tree包或null包,如果收到rst响应包则判定端口关闭否则就判定端口开放或屏蔽
|
主机探测
扫描网段中有那些主机在线,使用-sP参数,不扫描端口只扫描存活主机
本质上是使用ping扫描,能ping同有回包则判定主机在线
可以看到扫描了192.168.23.0这个网段的256个ip其中有5个存活
服务识别
扫描端口时,默认显示端口对应的服务,但不显示服务版本,可以使用-sV参数显示服务版本
识别操作系统
可以使用-O参数识别操作系统版本,这里扫描的结果可能不准确,识别不出来会以概率列举操作系统
扫描结果导出
可以导出扫描结果使用-oN导出为文本格式,-oX导出为xml格式
常用参数
-T <0-5>参数指定扫描速度,常用4