科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航



ZDNet>网络频道>ZD评测>安全扫描工具NMap

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

NMap可以帮助网络管理员确定网络上只有必需的服务在运行,不过有时候它也被用作其它用途。

来源: 2006年11月27日

关键字:漏洞管理 nmap 安全管理

很多年前,人们根本不关心(甚至不知道)互联网上的每台电脑都在运行些什么服务。实际上,在大型机或大量小型机的价格和维护费用都很昂贵时,在一台系统上运行多个服务从而尽量充分的利用系统性能,是必须的也是不得已的。

上面我所说的事实是当我在纽约大学Courant Institute作程序员的时候的经历。那时候几乎互联网上所有的电脑都开放着各种服务供公众使用。当然,那时候的互联网还不是我们现在所说的Internet,而是它的前身ARPAnet,二者网络协议相同,只是规模不同而已。

那时候从网络上找到一种服务很容易(比如远程打印机),只需要在别的网络上闲逛一会儿,就会发现你所需要的服务。当然,我们现在的状况就完全不一样了。

正如我们现在所见到的,如今的互联网远远没有20年前的ARPAnet那么无拘无束。如今的互联网可以说无处不在,它连接了无数性能强大的电脑,就连现在最廉价的电脑,其性能也是20年前难以想到的。另外,各种操作系统提供的服务数量也是以往难以预料到的,同时,也是我们这篇文章要讨论的内容,即大量的电脑在默认情况下都开放着很多服务。

如今,安全已经成为了一种竞争的名字:任何地方,任何内容以及任何可能的硬件、操作系统、软件上,都频繁的出现与安全相关的内容。根据估计,如今一台没有打过补丁的Windows XP系统接入互联网20分钟内,就可以被一些不法分子发现并取得控制权。对于企业来说,确保你的系统和应用程序不暴露在外人眼前,是能够停留在商业领域继续经营的基本条件。在黑客遍布的互联网,任何安全措施都不为过。

安全工具
今天我要介绍的一款软件叫做NMAP。NMap是用来在网络层探测网络中存在的各个系统的软件,它可以发现系统在网络上开放的服务以及所连接的对象,如果可能,还会告诉用户这些系统或服务相关的漏洞。

NMap最初是在Unix系统上运行的,不过现在已经被编译成了多种版本,可以在任何操作系统上运行。软件主要采用命令行方式工作,不过也提供了GUI前端界面,可以兼容大部分系统。

也许你并不是一个网络专家,因此我就简单的介绍一下相关背景知识。每台带有TCP/IP协议栈或者运行了基于TCP/IP协议的应用(如FTP或SSH)的电脑,都可以被某种特殊设计的程序识别出来。系统或服务的某些特征是它区别于其他系统或服务的标志,这很像现实世界中的指纹,因此网络专家可以根据系统或服务的指纹来判断网络环境中有那些系统,以及这些系统上运行了哪些服务。

比如识别TCP/IP协议栈的方法可以查看TCP包的序列号生成方式,或者根据IP协议实现的某种特点来判断。在大多数情况下,简单的判断就可以分辨出目的系统上运行的操作系统是什么类型,这根本不需要网络专家登录到对方系统上。

更高级的协议有时候会出现一些bug,这些bug可以通过不同的方式被远程利用,有些危险性较小的特征则可以让远程用户确认系统的服务类型。有些协议的特殊设计使得它可以对外公布更多的指纹信息,这有时候更利于网络黑客的攻击。比如Sendmail的服务器,当用户连接到25端口后,服务会返回给用户当前操作系统是否正常运行,操作系统的版本号以及邮件服务的版本号。

NMap的作用就是查出一台系统上运行的是何种服务,确认这些服务并告知用户这些服务中是否存在可以被黑客利用的漏洞。

将NMap用于测试
首先忠告大家: NMap 并不是“攻击网络系统”的工具,它是一个分析工具。

在我们如今的时代,在互联网上随意扫描一台并不属于你的系统,发现其中的漏洞,并不像以前那么无拘无束了。实际上,在美国做这种事情等同于试图入室偷窃。在一些国家,NMap这样的工具本身就是违法的(对于这样的法律条款的争议很多,并不是本文讨论的重点)。总之,任何时候运行NMap,都必须征得被扫描对象的网络/系统管理者的同意才可以。吓过你之后,我们就开始看看如何使用NMap。

NMap有多种运行模式
  • TCP/UDP Probe Mode——主要用来发现运行的服务和开放的端口

  • Host Sweep Mode_——主要用来发现子网中的各种设备和系统以及系统的版本号

  • SYN/FIN Probe Mode——主要用来发现IP堆栈中的已知漏洞

    NMap有三种主要的运行模式,首先要说的是最常用的模式TCP/UDP探测。在这种模式下,你可以发现目的系统的全部开放端口。这种模式的作用很多,首先它会告诉你为了实现系统安全,应该关闭哪些端口。其次可以帮你确定哪些端口是激活的(比如有一个活动的网络连接),但是运行了一个位置的协议。这可以让你发现是否有人在你的网络上运行某种后门程序来窃取系统中的信息。我曾经用这种模式在一家银行的网络中发现了一名员工私自运行的非法文件共享程序(doh!!),这使得该员工很快加入了失业大军。

    NMap的另一个常用模式是“ping sweep”模式。这种模式也相当实用,它可以让你快速扫描整个子网,发现子网中的所有设备。主机、服务器、路由器、打印机,各种设备都可以被快速发现并列出。大多数网络工具,比如网络分析器,都是被动模式的,即它们都是坐等网络设备与它们进行联系,然后它们才能识别出这些设备。而NMap在这种模式下会主动ping整个子网,然后利用它的识别系统对返回的信息进行识别。

    最后一种模式可以探测到系统的IP协议中是否存在已知的漏洞,可以被网络上的不法分子利用来攻击系统。

    不论是通过命令行方式还是通过GUI界面使用NMap,软件都为你提供了大量的参数设置,可以调整你的扫描工作。你可以向某个特定端口发送特定数据,察看该系统端口的反应,你也可以试着发送大量请求,让某个服务超过负载,以便检验服务器负载能力。你还可以缩小端口扫描范围,只对感兴趣的端口进行扫描,或者让NMap不断的扫描全部有效端口。

    为正确的工作选择正确的工具
    NMap是一款用于网络探测和保护系统安全的强大工具。它不但可以快速检测网络中的主机和各种设备,还可以检测出它们所使用的操作系统版本,可用的服务,以及哪些端口在开放(包括那些实际服务与通常认知的端口号不相符的服务,比如在某个常见端口上运行的文件共享服务)。

    虽然NMap本身就是一款很强大的工具,但是它也和其他很多工具一样有自己的一套生态系统。通过围绕在它周围的一系列工具,NMap可以变得更加强大。在本文的最后,我就向大家介绍一些NMap的插件以及支持工具,它们都可以进一步提升NMap的扫描和分析能力。

    NMap无疑是一款确保系统执行正确服务的最佳工具,不过正如我们上面介绍的,强大的功能也使得它成为了一些不法分子用来攻击他人系统的工具。因此在使用NMap时,你应该确保:1.获得被扫描系统的管理人员的同意,2.不要造成目标系统或网络的任何破坏或服务的中断。

    相关资源

  • NMap Audit 这是一套 Perl 脚本,可以实现自动扫描以及自动生成制定格式的扫描报表。

  • Remote NMap 这是一款客户机/服务器模式的程序,可以在服务器上集中化的进行扫描。

  • PHP NMap 是一款基于Web的NMap 扫描器前端界面。

  • Qpenmapfe 是一款可以运行于基于Linux的手持设备(如HP (Compaq) Ipaq 或 Sharp Zaurus)的NMap程序。它可以用来检查无线网络中的主机系统,察看主机上的服务通过无线接口实现的效果。

    (责任编辑:陈毅东

    查看本文的国际来源

  • 推广二维码
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题