Nmap, 是 Network Mapper 的缩写,由 Gordon Lyon 维护(更多关于 Mr. Lyon 的信息在这里: http://insecure.org/fyodor/) ,并被世界各地许多的安全专业人员使用。html
这个工具在 Linux 和 Windows 下都能使用,而且是用命令行驱动的。相对于那些使人惧怕的命令行,对于 nmap,在这里有一个美妙的图形化前端叫作 zenmap。前端
强烈建议我的去学习 nmap 的命令行版本,由于与图形化版本 zenmap 相比,它提供了更多的灵活性。linux
对服务器进行 nmap 扫描的目的是什么?很好的问题。Nmap 容许管理员快速完全地了解网络上的系统,所以,它的名字叫 Network MAPper 或者 nmap。shell
Nmap 可以快速找到活动的主机和与该主机相关联的服务。Nmap 的功能还能够经过结合 Nmap 脚本引擎(一般缩写为 NSE)进一步被扩展。安全
这个脚本引擎容许管理员快速建立可用于肯定其网络上是否存在新发现的漏洞的脚本。已经有许多脚本被开发出来而且包含在大多数的 nmap 安装中。服务器
提醒一句 - 使用 nmap 的人既多是善意的,也多是恶意的。应该很是当心,确保你不要使用 nmap 对没有明确获得书面许可的系统进行扫描。请在使用 nmap 工具的时候注意!网络
系统要求app
1).想要有一个好的机器来练习一下,能够了解一下 Metasploitable 2。工具
2).下载 MS2 :Metasploitable2。学习
Kali Linux – 使用 Nmap
使用 nmap 的第一步是登陆 Kali Linux,若是须要,就启动一个图形会话(本系列的第一篇文章安装了 Kali Linux 的 Enlightenment 桌面环境)。
在安装过程当中,安装程序将提示用户输入用来登陆的“root”用户和密码。 一旦登陆到 Kali Linux 机器,使用命令startx就能够启动 Enlightenment 桌面环境 - 值得注意的是 nmap 不须要运行桌面环境。
# startx
在 Kali Linux 中启动桌面环境
一旦登陆到 Enlightenment,将须要打开终端窗口。经过点击桌面背景,将会出现一个菜单。导航到终端能够进行以下操做:应用程序 -> 系统 -> 'Xterm' 或 'UXterm' 或 '根终端'。
做者是名为 'Terminator' 的 shell 程序的粉丝,可是这可能不会显示在 Kali Linux 的默认安装中。这里列出的全部 shell 程序均可用于使用 nmap 。
在 Kali Linux 下启动终端
一旦终端启动,nmap 的乐趣就开始了。 对于这个特定的教程,将会建立一个 Kali 机器和 Metasploitable机器之间的私有网络。
这会使事情变得更容易和更安全,由于私有的网络范围将确保扫描保持在安全的机器上,防止易受攻击的 Metasploitable 机器被其余人攻击。
怎样在个人网络上找到活动主机
在此示例中,这两台计算机都位于专用的 192.168.56.0/24 网络上。 Kali 机器的 IP 地址为 192.168.56.101,要扫描的 Metasploitable 机器的 IP 地址为 192.168.56.102。
假如咱们不知道 IP 地址信息,可是能够经过快速 nmap 扫描来帮助肯定在特定网络上哪些是活动主机。这种扫描称为 “简单列表” 扫描,将 -sL参数传递给 nmap 命令。
# nmap -sL 192.168.56.0/24
Nmap – 扫描网络上的活动主机
悲伤的是,这个初始扫描没有返回任何活动主机。 有时,这是某些操做系统处理端口扫描网络流量的一个方法。
在个人网络中找到并 ping 全部活动主机
不用担忧,在这里有一些技巧可使 nmap 尝试找到这些机器。 下一个技巧会告诉 nmap 尝试去 ping 192.168.56.0/24 网络中的全部地址。
# nmap -sn 192.168.56.0/24
Nmap – Ping 全部已链接的活动网络主机
此次 nmap 会返回一些潜在的主机来进行扫描! 在此命令中,-sn 禁用 nmap 的尝试对主机端口扫描的默认行为,只是让 nmap 尝试 ping 主机。
找到主机上的开放端口
让咱们尝试让 nmap 端口扫描这些特定的主机,看看会出现什么。
# nmap 192.168.56.1,100-102
Nmap – 在主机上扫描网络端口
哇! 这一次 nmap 挖到了一个金矿。 这个特定的主机有至关多的开放网络端口。
这些端口全都表明着在此特定机器上的某种监听服务。 咱们前面说过,192.168.56.102 的 IP 地址会分配给一台易受攻击的机器,这就是为何在这个主机上会有这么多开放端口。
在大多数机器上打开这么多端口是很是不正常的,因此赶快调查这台机器是个明智的想法。管理员能够检查下网络上的物理机器,并在本地查看这些机器,但这不会颇有趣,特别是当 nmap 能够为咱们更快地作到时!
找到主机上监听端口的服务
下一个扫描是服务扫描,一般用于尝试肯定机器上什么服务监听在特定的端口。
Nmap 将探测全部打开的端口,并尝试从每一个端口上运行的服务中获取信息。
# nmap -sV 192.168.56.102
Nmap – 扫描网络服务监听端口
请注意此次 nmap 提供了一些关于 nmap 在特定端口运行的建议(在白框中突出显示),并且 nmap 也试图确认运行在这台机器上的这个操做系统的信息和它的主机名(也很是成功!)。
查看这个输出,应该引发网络管理员至关多的关注。 第一行声称 VSftpd 版本 2.3.4 正在这台机器上运行! 这是一个真正的旧版本的 VSftpd。
经过查找 ExploitDB,对于这个版本早在 2001 年就发现了一个很是严重的漏洞(ExploitDB ID – 17491)。
发现主机上上匿名 ftp 登陆
让咱们使用 nmap 更加清楚的查看这个端口,而且看看能够确认什么。
# nmap -sC 192.168.56.102 -p 21
Nmap – 扫描机器上的特定端口
使用此命令,让 nmap 在主机上的 FTP 端口(-p 21)上运行其默认脚本(-sC)。 虽然它多是、也可能不是一个问题,可是 nmap 确实发如今这个特定的服务器是容许匿名 FTP 登陆的。
检查主机上的漏洞
这与咱们早先知道 VSftd 有旧漏洞的知识相匹配,应该引发一些关注。 让咱们看看 nmap有没有脚原本尝试检查 VSftpd 漏洞。
# locate .nse | grep ftp
Nmap – 扫描 VSftpd 漏洞
注意 nmap 已有一个 NSE 脚本已经用来处理 VSftpd 后门问题!让咱们尝试对这个主机运行这个脚本,看看会发生什么,但首先知道如何使用脚本多是很重要的。
# nmap --script-help=ftp-vsftd-backdoor.nse
了解 Nmap NSE 脚本使用
经过这个描述,很明显,这个脚本能够用来试图查看这个特定的机器是否容易受到先前识别的 ExploitDB 问题的影响。
让咱们运行这个脚本,看看会发生什么。
# nmap --script=ftp-vsftpd-backdoor.nse 192.168.56.102 -p 21
Nmap – 扫描易受攻击的主机
耶!Nmap 的脚本返回了一些危险的消息。 这台机器可能面临风险,以后能够进行更加详细的调查。虽然这并不意味着机器缺少对风险的抵抗力和能够被用于作一些可怕/糟糕的事情,但它应该给网络/安全团队带来一些关注。
Nmap 具备极高的选择性,很是平稳。 到目前为止已经作的大多数扫描, nmap 的网络流量都保持适度平稳,然而以这种方式扫描对我的拥有的网络多是很是耗时的。
Nmap 有能力作一个更积极的扫描,每每一个命令就会产生以前几个命令同样的信息。 让咱们来看看积极的扫描的输出(注意 - 积极的扫描会触发入侵检测/预防系统!)。
# nmap -A 192.168.56.102
Nmap – 在主机上完成网络扫描
注意这一次,使用一个命令,nmap 返回了不少关于在这台特定机器上运行的开放端口、服务和配置的信息。 这些信息中的大部分可用于帮助肯定如何保护本机以及评估网络上可能运行的软件。
这只是 nmap 可用于在主机或网段上找到的许多有用信息的很短的一个列表。强烈敦促我的在我的拥有的网络上继续以nmap 进行实验。(不要经过扫描其余主机来练习!)。
有一个关于 Nmap 网络扫描的官方指南,做者 Gordon Lyon,可从亚马逊上得到。
方便的话能够留下你的评论和问题(或者使用 nmap 扫描器的技巧)。