Nmap,是 Network Mapper 的缩写,由 Gordon Lyon 维护(更多关于作者 Mr. Lyon 的信息可以访问这个网页: http://insecure.org/fyodor/) ,并被世界各地许多的安全专业人员使用。它被默认安装于我们的kali系统中,无需另外安装,使用起来非常方便,再因其功能的强大,深受网络安全有关从业人员的喜爱。
其实有关Nmap还有一个图形化界面的前端版本,名为Zenmap,Zenmap是Nmap的GUI版本,由Nmap官方提供,通常随着Nmap安装包一起发布。Zenmap是用Python语言编写的,能够在Windows、Linux、UNIX、Mac OS等不同系统上运行。开发Zenmap的目的主要是为Nmap提供更加简单的操作方式。
但是在我还是由衷的建议大家学习命令行版本的Nmap,首先做主要的原因还是我个人认为命令行版本的Nmap使用起来比Zenmap更灵活,其次作为一名网络相关行业的人员,命令行(还有掉发…)是一个无法绕开的经历,如果你是老手了,命令行自然不会陌生,也没有难度,那么为什么不选择更灵活的Nmap呢?而如果你是一个新手,那么使用Nmap能帮助你更快熟悉Kali系统的使用,帮助你迅速进阶!
Nmap的基本功能主要有4个;
1、主机发现(Host Discovery)
2、端口扫描(Port Scanning)
3、版本侦测(Version Detection)
4、操作系统侦测(Operating System Detection)
Nmap的功能十分强大,内含的各种参数也比较多,大家可以使用 nmap -h 查看详细操作说明
nmap -h
#查看Nmap操作说明
结合我们的日常使用,在此我只列举些常用的参数供大家使用和参考:
参数 | 注释 |
---|---|
-p | 指定扫描的端口号 |
-v | 显示扫描过程 |
-F | 执行快速扫描 |
-n | 禁止反向域名解析 |
-R | 反向域名解析 |
-6 | 启动ipv6扫描 |
-Pn | 跳过主机发现的过程进行端口扫描 |
-A | 全面扫描,该命令会扫描ip/域名的操作系统信息,版本信息,路径跟踪等等的内容,不过扫描速度嘛…,dddd |
-sS | TCP SYN扫描 |
-sU | UDP扫描 |
-sT | TCP扫描 |
-sV | 扫描系统版本可程序版本号检测 |
–script=vuln | 全面的漏洞扫描 |
-PA/-PS/-PR | 扫描局域网下包含的主机 |
在渗透前期,我们首先先要确定在对应目标网段目前有多少的主机还"活着",以方便我们寻找目标,在这里由于我们是以演示为目的,我们的目标主机为我的Metasploitable 2,这里我们可以使用 nmap <目标ip> <参数> 的方式对我们的目标进行扫描
nmap 192.168.254.0/24
#对192.168.254.0/24网段内所有ip地址进行扫描
可以看见,我们在这个网段里共扫描出了4个在活动的主机,其中包括了这个主机正在开放的服务、端口、IP地址等等信息,非常的详细。
但是在日常的渗透测试中我们会发现,许多的操作系统都会对端口扫描流量进行处理,这将会导致我们出现下面这种情况
什么主机都扫不出来
所以,我在此分享一下日常使用的一个小技巧,我们可以添加 -sn 参数,禁用 nmap 对主机端口扫描的默认行为,让 nmap 只尝试 ping 主机,这样就可以扫描出来了,用这样的方式进行扫描相比于什么参数都不加,首先就是可以速度上有优势,其次就是防止主机对端口扫描数据进行处理导致我们什么都扫不出来这种现状。
nmap 192.168.254.0/24 -sn
#对192.168.254.0网段的所有IP地址,跳过端口扫描功能,直接ping主机
欸嘿,查询的结果一下就出来了。
现在我们可以确定我们的目标主机就是192.168.254.129,那么现在我们就可以加参数 -sV 扫描特定的主机,并获取它所开放的服务和端口,同时尝试确定它所开启的服务的版本号
nmap -sV 192.168.254.129
#扫描192.168.254.129端口信息和服务版本号
可以看到我们的扫描非常的成功,黄色方框部分是是目标主机的操作系统和主机名,而红色方框部分就是我们本次扫描重点了!
我们可以看到我们成功扫描出了目标主机所开启服务的版本号,有了版本号那就好办了,在这里我教大家两种比较有代表性的方法,以ftp服务为例,我们可以看到,根据Nmap的说法,vsftpd 2.3.4正在这台主机上运行。
方法一:我们可以直接去ExploitDB(网址在这:https://www.exploit-db.com/)去搜索这个vsftpd2.3.4版本的漏洞和利用方法,在弹出的结果中,选择自己需要的方法进行利用就可以了。
但是这种方法虽热搜索出来的比较全面,但是毕竟是要转用外部浏览器,稍微有点麻烦,所以咱们也可以选择偷懒一点,直接使用使用kali系统自带的searchsploit漏洞查找工具。
方法二:来到我们的工具菜单栏,找到searchsploit,点击运行
按照searchsploit工具的提示,我们可以可以直接输入searchsploit <关键词> 进行漏洞的搜索
searchsploit vsftpd 2.3.4
#查找有关vsftpd 2.3.4版本的漏洞
返回两个结果,我们可以根据右边的路径,利用less查看这些漏洞的利用方法
less /usr/share/exploitdb/exploits/unix/remote/49757.py
#查看有关vsftpd2.3.4的漏洞利用方法
一目了然,非常的方便!
继续回到我们的Nmap,我们可以使用Nmap加 -p 参数加 -sC 参数对指定端口运行Nmap默认脚本。
Nmap -sC 192.168.254.129 -p 21
#对ip为192.168.254.129的主机的21端口运行Nmap默认脚本
通过返回的结果,我们可以很明显的看到这台主机的ftp服务是允许匿名登陆的,看到这里,这就已经可以给我们无限的想象空间了。所以,这就应该引起管理员的重视了。
上面由于是使用默认脚本进行的扫描,互联网千变万化,为了进一步扫描,我们可以查找一下Nmap有没有对应服务的扫描脚本
locate .nse | grep ftp
#查找有关ftp的脚本
有!让我们来看看这个脚本这个脚本能为我们干些什么,我们可以继续通过less查看对应文件的描述
less /usr/share/nmap/scripts/ftp-vsftpd-backdoor.nse
#查看对应文件
通过描述我们可以看到,很明显,这个脚本可以用来试图查看这个特定的机器是否容易受到先前识别的 ExploitDB 问题的影响,而注意该脚本下面的内容,正是我们之前在3.3章节提到的漏洞使用方法!
那么现在脚本已经找到,也知道了它的使用原理和内容了,我们现在就可以开始尝试对目标主机使用这个脚本了
nmap --script=ftp-vsftpd-backdoor.nse 192.168.254.129 -p 21
#对ip地址为192.168.254.129的主机的21端口执行指定脚本
nice!Nmap返回的报告中告诉了我们非常多的信息,比如红框中提示的,vsftpd 2.3.4版本后门状态是非常脆弱的,还有后续内容包括,漏洞被发现的日期,使用方法,后果等,非常的详细,安全人员就可以根据这一份报告进行维护,同样的,那些不怀好意的人自然也将可以跟着这一份报告进行渗透。这值得我们引起必要的关注。
还是那句老话:kali学得好,牢饭少不了。不得不说Nmap确实是一个非常不错的漏洞扫描工具,它便携,它使用方便,它灵活,它功能全面,它具有极高的选择性,非常平稳。 到目前为止已经做的大多数扫描, nmap 的网络流量都保持适度平稳。但是就如同我上一章所说,这个工具既然可以帮助安全从业人员完善自己的服务,同样的也能帮助到那些不怀好意的人。工具是无罪的,好与坏取决于使用它的人,此片文章仅作学习交流之用,欢迎各位看官留言或私信交流,但切记学习之余,慎用!!!