目录
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,基本的TCP扫描方式 。这种扫描很容易被检测 到,在目标主机的日志中会记录大批的连接请求以及错误信息 |
-sS | SYN,同步扫描, 仅发送SYN包 ,所以这项技术称为半开放扫描,好处是,不容易被检测 ,很少有系统能够把这记录入日志系统,不过需要root权限定制SYN包 |
-sU | UDP,扫描开放了哪些UDP端口 |
-sP | ICMP,ping扫描 ,探测哪些主机在线 |
-P0 | 在扫描之前,不ping主机 |
-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的ack包进行探测 ,探测主机是否存活 ,这项高级的扫描方式通常可以用来穿过防火墙 |
-sL | 列表发现 ,仅仅列出网络上的每台主机,并不发送任何报文到目标主机 |
-sV | 查看目标主机和端口上运行的软件的版本 |
-PB | 这是默认的ping扫描选项,它使用 ACK(-PT) 和 ICMP(-PI) 两种扫描类型并行扫描。如果防火墙能够过滤其中一种包,使用这种方法,你就能够穿过防火墙 |
-sW | 滑动窗口扫描,非常类似于ACK扫描 |
-sN | TCP空扫描欺骗防火墙 |
-PN | 探测防火墙 |
-b | FTP反弹攻击,连接到防火墙后面的一台FTP服务器做代理,接着进行端口扫描 |
-A | 扫描操作系统和路由跟踪 |
-O | 探测操作系统 |
-iflist | 显示接口和路由信息 |
-p | 指定端口扫描 |
-v | 加强扫描,给出扫描过程的详细信息 |
-F | 快速扫描 |
-r | 按顺序扫描 |
-I | 打开nmap的反向标志扫描功能 |
-f | 使用碎片 IP 数据包 发送 SYN、FIN、XMAS、NULL。包增加包过滤、入侵检测系统的难度,使其无法知道你的企图。 |
-S | 设置源IP |
-g port | 设置源端口 ,如果攻击者把源端口修改为 20 或者 53,就可以摧毁防火墙的防护 |
-M count | TCP扫描时,最多使用多少个套接字进行并行扫描 |
-T4 | 指定扫描过程使用的时序,总有6个级别 (0-5),级别越高,扫描速度越快 ,但也容易被防火墙或IDS检测并屏蔽掉,在网络通讯状况较好的情况下推荐使用T4 |
-iR number | 对随机生成number个地址进行扫描 |
时间设置
参数 | 描述 |
---|---|
--host_timeout | 扫描一台主机的时间 ,毫秒 为单位,通常选值:18000 |
--scan-delay | 报文时间间隔 ,毫秒 为单位,通常选值:1000 |
--max_rtt_timeout | 设置每次探测等待的时间 ,毫秒 为单位,超过就重传 |
--min_rtt_timeout | 每次探测至少等待的时间 ,以毫秒 为单位 |
文件导出
参数 | 描述 |
---|---|
-oN | 将结果导出到 一个可读的文件logfilename |
-oX test.xml | 将扫描结果生成 test.xml 文件 ,如果中断,则结果打不开 |
-oA test.xml | 将扫描结果生成 test.xml 文件 ,中断后,结果也可保存 |
-oG test.txt | 将扫描结果生成 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),能够用来扫描目标主机和端口上运行的软件的版本,并将它显示出来。