目录
整理一下在实际工作中常用的nmap命令,拒绝单纯的知识罗列、花里胡哨
端口状态
nmap扫描的端口有以下状态
- open: 开放
- closed: 关闭
- filtered: 端口被防火墙/IDS/IPS屏蔽,无法确定其开放状态。
- unfiltered: Nmap能够访问这个端口,但是不清楚这个端口打开的状态
若主机没有开启防火墙,则会显示:Not shown: 995 closed ports
若主机没有开启防火墙,则显示: Not shown: 995 filtered ports,而且值显示了很少的一部分端口
端口扫描
以下为防火墙关闭的状态下进行的扫描
常规扫描
#常规扫描,这种扫描方式以及-sP 扫描,检测网络上哪些主机正在运行,通过向指定的IP地址发送ICMP echo请求数据包,收到一个RST包,就表示主机正在运行。一般当扫描主机防火墙打开时,是无法直接扫描的
nmap 192.168.110.128
#扫描所有端口
nmap 192.168.110.128 -p-
Nmap默认扫描从1到1024再加上nmap-services列出的端口。nmap-services是一个包含大约2200个著名的服务的数据库,Nmap通过查询该数据库可以报告那些端口可能对应于什么服务器,但不一定正确。所以,如果端口号为一个很随机的端口号,那么此方法则扫描不出来,因为此扫描常见的一些端口。
-F 快速扫描
执行一次快速扫描,仅扫描列在nmap-services文件中的端口而避开所有其它的端口。和常规扫描差不多
nmap -F ip
-Pn 非ping扫描,不执行主机发现,可以跳过防火墙 ( 常用)
常与其他命令联合使用
-p 指定端口扫描
如下,扫描所有开放的端口
nmap -p0-65535 192.168.110.128
-v 端口服务及版本扫描
nmap -sV 192.168.110.128
此会在常规扫描的基础上,增加对端口服务的版本做进一步探测。如果我们需要对端口对应的是什么服务需要做进一步了解的话
如下,加了sV参数后,就探测出了版本,没加就显示未知
操作系统版本探测
nmap -A ip
在 -sV的基础上,还增加对其所在的操作系统类型和版本进行探测
-sS 半开放扫描(隐秘)
nmap -sS ip
这是一种秘密的扫描方式之一,因为在SYN扫描中Client端和Server端没有形成3次握手,所以没有建立一个正常的TCP连接,因此不被防火墙和日志所记录,一般不会再目标主机上留下任何的痕迹,防止对方判断为扫描攻击,扫描速度快,效率高,在工作中使用频率最高。扫描出来的结果和常规的扫描一样。
常规默认扫描为TCP(-sT)扫描,这种扫描方法的特点是:扫描的速度快,准确性高,对操作者没有权限上的要求,但是容易被防火墙和IDS(防入侵系统)发现,运行的原理为通过建立TCP的三次握手连接来进行信息的传递
以上这些基本能满足常规的测试要求,但是,我们做渗透测试的时候,目标肯定都是开着防火墙的,所以来探讨下防火墙开启的状态下如何进行端口扫描
nmap ip ,显示端口被过滤,一个端口都没扫描出来
在开启防火墙的状态下,想要扫描出原本被屏蔽的端口,暂未发现可行的方法!!
实例
存活主机探测
nmap -sn -PE -T4 172.16.80.0/24
nmap -sn -PE -T4 172.16.80.0/24 | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' #只显示ip地址
- -sn:只进行主机发现,不进行端口扫描
- -PE:使用ICMP Echo扫描方式
- -T4:有<0-5>,数字越大扫描越快
只显示ip地址
常用端口扫描
#快速进行全端口扫描
nmap -Pn -p- -T4 --open 192.168.110.199