本教程展示了30个Nmap使用实例,与以前发表在Linux Hint的文章中解释的主题有关。
例子包括从主机发现到漏洞审计,网络诊断等等。它们中的大多数是在真实或模拟场景中产生的,因此对网络管理员或学生有真正的价值。
实施本教程中描述的例子是非常简单的,就像运行一个命令。
本文涉及的所有主题包括。
- Nmap ping扫瞄例子
- 定义用Nmap扫描的端口
- Nmap NULL扫描例子
- Nmap FIN扫描
- 用Nmap进行Xmas扫描
- Nmap ARP扫描例子
- 更新Nmap NSE (Nmap Scripting Engine)
- 通过SMB协议获取设备操作系统、工作组、域、设备名称
- 为空闲扫描寻找僵尸
- 执行空闲扫描
- 扫描范围内的漏洞
- 扫描smb-vuln-ms08-067漏洞
- 用Nmap NSE对SSH进行暴力攻击
注意: 本教程的最后一次更新是在2021年10月。
用Nmap Ping扫瞄
Ping扫频是一种用来发现网络或范围内的实时主机的技术。
Nmap ping扫频的例子在Nmap ping扫频中得到了深入解释。
要用Nmap执行ping扫频,您需要执行-sP或-sn选项,它们指示Nmap在发现后避免端口扫描。
在下面的例子中,一个通配符被实现,指示Nmap发现所有在线的C类网络主机或设备。
nmap -sP192.168.0.*
在前面的例子中,Nmap只确认主机是活的,没有扫描目标。相反的是 -Pn选项,它指示Nmap开始扫描而不检查主机是否活着。
nmap -Pn192.168.0.2-240
最后,它将打印实时主机的总数,如下面的截图所示。
你可以看到,从239个扫描的地址中,有10个是在线设备。
用Nmap的-p标志定义端口
定义用Nmap扫描的端口很容易,只要在端口后面加上标志 -p后面是端口,或用逗号分隔的端口,如下图所示。
nmap -p 80,22,139,21,23192.168.0.*
在下面的例子中,端口范围用连字符定义,以扫描22到80的Linux提示端口范围。
nmap -p 22-80 linuxhint.com
下面的例子显示Nmap扫描由逗号分隔的两个不同的端口范围。
nmap -p 20-80,100-600 192.168.0.3-14
有许多方法可以指定用Nmap扫描的端口。我们已经发布了一个教程,展示了用Nmap扫描所有端口的不同方法。其中一种扫描目标上所有端口的方法需要实现-p-选项,如下例所示。
nmap -p-linuxhint.com
本节的最后一个例子显示通过Nmap套件的一部分Nping执行的ARP扫描,它继承了Nmap的标志来定制ARP扫描。
nping--arp-typeARP 192.168.1.100-104
如您所见,Nping用适当的MAC地址识别了每个IP。
Nmap FIN扫描例子
下一个例子是对一个端口范围进行积极的FIN扫描。
nmap -sF -T4192.168.0.3-14
这是一个针对单个设备的疯狂的FIN扫描的例子。
nmap -sF -T5192.168.0.3
为了结束FIN扫描的例子,让我们对一个metasploit虚拟设备做一个不太积极的扫描。
nmap -sF -T2192.168.56.1
Nmap NULL扫描例子
下面的例子显示了对linuxhint.com80端口进行的NULL扫描。记住Nmap的NULL、Xmas和FIN扫描在许多情况下不能区分开放和过滤的端口。
sudo nmap -v -sN -p 80linuxhint.com
现在,让我们试试对路由器进行疯狂的扫描。
nmap -sN -T5192.168.56.1
通常NULL、Xmas和FIN扫描在端口开放时无法区分过滤和开放的端口,下一个例子包括了-sV选项来帮助它区分,但加入这个选项会导致扫描不那么隐蔽。
nmap -sN -T2 -sV-p80,22,21,139192.168.56.1
Nmap Xmas扫描例子
用Nmap进行Xmas扫描在这篇文章中已经深入解释了。
下面,您可以看到一个对目标192.168.56.1进行积极的Xmas扫描的例子。
nmap -sX -T4192.168.56.1
现在,对80和22号端口进行一次不太积极的Xmas扫描。
nmap -sX -T2-p80,22192.168.0.3
下面的例子类似于上面的例子,但包括了2级粗暴性。
nmap -sX -T2 -v2-p80,22192.168.0.3
正如你所看到的,最后一个输出显示了比前面的输出更多的信息。
更新脚本数据库
Nmap包含一套具有附加功能的脚本。这个套件被称为NmapNSE。
在使用Nmap NSE之前,通过运行下面的命令更新数据库。
nmap --script-updatedb
一旦更新,您可以继续使用Nmap NSE。
通过SMB协议获取设备操作系统、工作组、域、设备名称
下面的例子使用NSE脚本-script smb-os-discovery(https://nmap.org/nsedoc/scripts/smb-os-discovery.html)对网络172.31.X.X的最后2个八位字节进行搜索
nmap -p 445 --scriptsmb-os-discovery172.31.*.*
正如你在下面的截图中看到的,第一个可能受攻击的目标是一个。
下面的截图显示,发现了一个新的易受攻击的目标。
发现了两台Windows XP电脑,是进行空闲扫描的最佳人选,本教程下文将对此进行解释。
为空闲扫描寻找僵尸
下面的例子显示了如何通过使用NSE脚本ipidseq(https://nmap.org/nsedoc/scripts/ipidseq.html)扫描10.100.100.X网络的最后一个八位数来搜索僵尸候选者来执行空闲扫描。
nmap -p80 --脚本ipidseq 10.100.100.*
另一种方法是找到潜在的僵尸候选人进行空闲扫描。
nmap -Pn -O -v192.168.56.102
执行空闲扫描
使用在上一步找到的候选者运行一个空闲扫描。
nmap -Pn -sI10.100.100.108 -p80,21,22,443172.31.124.141
使用相同的候选人对网关进行另一次空闲扫描。
nmap -Pn -sI172.31.100.108 -p80,21,22,443172.31.99.2
使用Windows 98虚拟设备对路由器的FTP进行空闲扫描。
nmap -Pn -sI192.168.56.102-p21192.168.0.1
漏洞的扫描范围
下面的例子显示了通配符的实现,以扫描整个八位数的范围。
nmap -v --scriptvuln 172.31.100.*
下面,你可以看到一个输出样本。
扫描smb-vuln-ms08-067漏洞
下面的扫描使用NSE脚本smb-vuln-ms08-067(https://nmap.org/nsedoc/scripts/smb-vuln-ms08-067.html),通过实现两次通配符,在网络的最后两个八位数上搜索远程执行漏洞。
nmap -p445 --scriptsmb-vuln-ms08-067172.31.*.*
用Nmap NSE对SSH进行蛮力攻击
Nmap NSE (Nmap Scripting Engine)在Nmap NSE教程中已深入介绍。这个例子显示了如何使用Nmap脚本引擎对目标SSH进行暴力破解。
对于这个攻击,我们将使用NSE脚本,名为ssh-brute.nse。
nmap --scriptssh-brute.nse 192.168.0.3
如你所见,NSE将读取一个包括用户名和密码对的列表。当然,你可以向NSE提供你的自定义列表。
总结
我希望本教程中展示的所有Nmap例子对您有用。Nmap可能是市场上最好的网络扫描器。尽管有更快的解决方案,比如Mass Scan,Nmap以多种功能和附加脚本领先。您也可以写您自己的NSE脚本来和Nmap一起使用。
正如您所看到的,尽管Nmap很强大,但任何Linux级别的用户都可以轻松执行。深入学习Nmap对任何处理网络问题的人都非常有利。
谢谢您阅读这个展示30个Nmap例子的教程。继续关注Linux Hint,了解更多的Linux技巧和教程。