目录
0x01 安装
0x02 端口的状态
0x03 扫描命令
0x04 命令实操
0x01 安装
Mac os:
brew install nmap
Centos:
yum install nmap
Ubuntu:
apt-get install nmap
0x02 端口的状态
状态 | 解释 |
---|---|
open(开放的) | 应用程序正在该端口接受TCP连接或者UDP报文 |
closed(关闭的) | 关闭的端口对于Nmap也是可访问的(它接受Nmap的探测报文并作出响应),但没有应用程序在其上监听 |
filtered(被过滤的) | 由于包过滤阻止探测报文到达端口,Nmap无法确定该端口是否开放 |
unfiltered | 未被过滤状态意味着端口可访问,但Nmap不能确定它是开放还是关闭 |
open/filetered(开放或者被过滤) | 当无法确定端口是开放还是被过滤,Nmap把该端口划分成这种状态 |
closed/filtered(关闭或者被过滤的) | 该状态用于Nmap不能确定端口是关闭的还是被过滤的 |
0x03 扫描命令
语法
nmap [scan type] [option] [target]
命令
命令 | 描述 |
---|---|
-sT |
TCP,
。这种扫描很
到,在目标主机的日志中会记录大批的连接请求以及错误信息 |
-sS |
SYN,同步扫描,
,所以这项技术称为半开放扫描,好处是,
,很少有系统能够把这记录入日志系统,不过需要root权限定制SYN包 |
-sU |
UDP,
|
-sP |
ICMP,
,
|
-P0 |
在扫描之前,
|
-PT |
在扫描之前,使用TCP ping
,不对端口或操作系统探测 |
-PI |
设置这个选项,让namp使用真正的ping(ICMP echo请求)来扫描目标主机是否正在运行 |
-p T:n1,n2… |
扫描开放了哪些TCP端口 |
-PS |
TCP ACK扫描 |
-PA |
TCP SYN扫描 |
-sR |
RPC扫描,和其它不同的端口扫描方法结合使用 |
-sn |
Disable Port Scan |
-sA |
使用tcp的
,
,这项高级的扫描方式通常
|
-sL |
,仅仅列出网络上的每台主机,并不发送任何报文到目标主机 |
-sV |
|
-PB |
这是默认的ping扫描选项,它使用 ACK(-PT) 和 ICMP(-PI) 两种扫描类型并行扫描。如果防火墙能够过滤其中一种包,使用这种方法,你就能够穿过防火墙 |
-sW |
滑动窗口扫描,非常类似于ACK扫描 |
-sN |
|
-PN |
探测防火墙 |
-b |
FTP反弹攻击,连接到防火墙后面的一台FTP服务器做代理,接着进行端口扫描 |
-A |
|
-O |
|
-iflist |
|
-p |
|
-v |
加强扫描,给出
|
-F |
快速扫描 |
-r |
按顺序扫描 |
-I |
打开nmap的反向标志扫描功能 |
-f |
使用
发送 SYN、FIN、XMAS、NULL。包增加包过滤、入侵检测系统的难度,使其无法知道你的企图。 |
-S |
|
-g port |
,如果攻击者把源端口修改为 20 或者 53,就可以摧毁防火墙的防护 |
-M count |
|
-T4 |
指定扫描过程使用的时序,总有
(0-5),
,但也容易被防火墙或IDS检测并屏蔽掉,在网络通讯状况较好的情况下
|
-iR number |
对
|
时间设置
参数 | 描述 |
---|---|
--host_timeout |
,
为单位,
|
--scan-delay |
,
为单位,
|
--max_rtt_timeout |
设置每次探测
,
为单位,
|
--min_rtt_timeout |
每次探测
,以
为单位 |
文件导出
参数 | 描述 |
---|---|
-oN |
将结果
一个可读的文件logfilename |
-oX test.xml |
将扫描结果
,
|
-oA test.xml |
将扫描结果
,
|
-oG test.txt |
将扫描结果
|
多个扫描
命令 | 描述 |
---|---|
namp IP1 IP2… |
扫描多个IP |
namp 192.168.0.1,3,5,7… |
扫描多个IP |
namp 192.168.0. * |
扫描整个子网 |
namp 192.168.1-10. * |
扫描多个子网 |
nmap -iL xxx.txt |
根据文件扫描多个IP |
namp 192.168.0.10-100 |
扫描范围内IP |
0x04 命令实操
-sA
nmap 192.168.52.146 -sA
-sA参数是发送tcp包进行探测,可以探测主机是否存活。
Host is up,意思就是主机是存活的
-sL
nmap -sL 192.168.52.0/24
-sL(
列表发现
)它仅仅列出指定网络上的每台主机,并
不发送任何报文到目标主机
。
使用-sL指令只是简单地扫描指定网络上的所有主机,并不能确定主机是否是存活,所以他的扫描速度很快
-sP
nmap -sP 192.168.52.146
-sP使用ping扫描,然后将对
ping扫描
做出响应的主机,打印出来,并不做进一步测试(如端口扫描或者操作系统探测)
-sS
nmap 192.168.52.146 -sS
-sS:半开放扫描(非3次握手的tcp扫描)
-sS(Tcp SYN Scan)可以说是
使用频率最高
的扫描选项:
SYN扫描
,又称半开放扫描,它不打开一次完全的TCP连接,执行得很快,效率高(一个完整的tcp连接需要3次握手,而-sS选项不需要3次握手)
第1️⃣行:启动nmap,以及启动时间
第2️⃣行:显示的是本次扫描的目标是什么
第3️⃣行:显示该主机已经启动
第4️⃣行:显示有997个端口未开起(并不是真的未开启,而是没有对外开放)
优点 | 缺点 |
---|---|
Nmap发送SYN包到远程主机,但是它不会产生任何会话,目标主机
。(防止对方判断为扫描攻击),扫描速度快,效率高,在工作中
|
它需要root/administrator权限执行 |
-sT
nmap 192.168.52.142 -sT
-sT:3次握手方式tcp的扫描
sT(Tcp connect() scan)和上面的Tcp SYN对应,TCP connect()扫描就是默认的扫描模式。不同于Tcp SYN扫描,Tcp connect()扫描需要完成三次握手,并且要求调用系统的connect()
优点 | 缺点 |
---|---|
不需要root权限。普通用户也可以使用 | 这种扫描很容易被检测到,在目标主机的日志中会记录大批的连接请求以及错误信息,由于它要完成3次握手,所以效率低 |
-sU
nmap 192.168.52.142 -sU
-sU:是udp端口的扫描
sU(Udp scan)顾名思义,这种扫描技术用来寻找目标主机打开的UDP端口,它不需要发送任何的SYN包,因为这种技术是针对UDP端口的。UDP扫描发送UDP数据包到目标主机,并等待响应,
如果返回ICMP不可达的错误消息,说明端口是关闭的,如果得到正确的适当的回应,说明端口是开放的。udp端口扫描速度比较慢。
-sV
nmap 192.168.52.142 -sV
-sV:版本检测(sV),能够用来扫描目标主机和端口上运行的软件的版本,并将它显示出来。