如何隐藏服务和版本信息 减少攻击线索

大家都知道,在黑客对某个目标发动攻击前,要花大量的时间和精力来收集有关目标的各种信息。这些信息从最基本的企业IT人员姓名(潜在的社交工程攻击)到企业服务器或Web站点可以采用何种类型的攻击方式。

从文本写作的目的出发,我们假设此时黑客打算直接入侵企业服务器,而不是采用其他社交工程手段,或者拒绝服务攻击。

有很多地方会暴露企业IT架构方面的信息,其中最严重也是最常见的就是企业网站的Contact Us 和 Staff部分,以及通过Whois 获得的查询记录,而要了解服务器相关信息,就需要使用系统扫描工具了。一些网络扫描工具,比如Nmap 和Ncat(下面会提到)可以提供大量有关服务器操作系统和服务器上运行何种服务的信息。大多数情况下,这种扫描行为并不违法,但是在很多国家,拥有和传播这类扫描工具确实是违法的。因此,如果你要使用这类工具,一定要确保符合当地的法律规定。

如果黑客知道了你企业的服务器所采用的操作系统,他就里成功近了一步,知道系统上运行了哪些服务,会更近一步。黑客每多了解一点有关目标服务器的信息,就会离成功更近一点。这就好像银行卡盗用,Pin码只有四位数,犯罪分子只知道密码的第一位,和知道密码的前三位,成功率相差很大。只知道第一位密码,需要很长时间去尝试不同的密码,犯罪分子一般都会放弃,或者卡片直接被ATM机吞掉,而如果知道了前三位密码,通过猜测进入用户账户就容易多了。而本文中所谓的密码前三位,就是服务器的操作系统,所运行的服务名称和服务版本。

如果你也认同这个观点,认为将服务器信息泄漏出去会给系统安全带来隐患,那么我们接下来就要看看如何知道自己的服务器正在泄漏关键信息,以及该如何消除这种隐患。

下面我们来看看用Ncat 扫描到的服务信息:

正如大家看到的,只要简单的使用Ncat输入目标服务器的IP地址和端口,就能得到该端口运行的服务的精确版本信息。现在,如果黑客查询漏洞数据库,或者简单的用Google搜索一下这个版本的服务程序的漏洞,就可以发现很多信息,其中甚至可能直接发现明确的漏洞信息以及相关的攻击工具。而接下去发生的情况肯定是所有企业的IT管理员都不愿意看到的。当然,黑客的智商也各不相同,如果没有发现与服务程序版本相对应的攻击工具,有些黑客就会放弃攻击,但是如果你的服务程序中存在漏洞,就算没有现成的攻击工具,有些聪明的黑客还是会利用漏洞发动进攻的。因此,我们要尽量避免将服务器系统上的各种服务信息透露给任何潜在的攻击者。

减少威胁

下面我们就来看看最常被利用和攻击的服务:简单邮件传输协议SMTP。

我们所使用的扫描工具是Ncat,以前叫做Netcat。这个工具由于具有强大的扫描功能而被认为是TCP/IP扫描方面的瑞士军刀。Ncat 在Netcat的基础上实现了多平台支持,可运行在Linux, Windows, 以及 Mac OS系统上。虽然拥有类似功能的扫描工具还有不少,但是能够支持多平台的并不多。

那么,我们接下来就要用Ncat的最基本的扫描功能来扫描测试用服务器的SMTP端口,看看能返回什么信息。我们可以从服务器本身来运行这个扫描工具,扫描本地IP地址,也可以在内网或外网主机运行Ncat。这里我再次提醒一下,使用这类工具在某些国家和地区属于违法行为。另外,根据你所处的位置不同,以及扫描对象的防护技术不同(比如是否有防火墙),你可能也需要改变扫描技术。Ncat的命令格式很简单:

nc 或 ncat <目标IP地址> <目标端口号>

上图的例子里,我们扫描了测试服务器的SMTP端口(25)。从返回的结果中我们能看到,这个SMTP Mail 服务版本号为5.0.2172.1。如果扫描后没有返回任何结果,可以尝试使用以下命令格式-vv (vv参数表示获取详细信息,如 nc -vv x.x.x.x 25)

正如我们前面所提到的,有了服务版本信息,黑客可以很快对你的服务器漏洞进行评估。那么我们该怎么消除服务版本信息呢?

注意: 下面我将使用MetaEdit来去除windows 服务器中的服务版本信息。这个工具是针对 Windows Server 2000/2003的,不过Windows Server 2008也能用。类似的工具和去除服务版本信息的方案还有很多,由于篇幅限制,本文只介绍这一种方案。在你对自己的服务器进行扫描后,可以根据扫描结果查看是否存在安全漏洞,在为服务器上的各种漏洞打好补丁后,可以尝试消除服务版本信息,不给黑客留下任何可趁之机。

下面我们来去除SMTP服务的版本信息。首先是下载MetaEdit (可以从微软官方下载)并进行安装。安装后,只需要启动MetaEdit,然后展开LM文件夹,接下来展开 SMTP,展开1并点击1。我们可以在这个位置输入一个新的版本号,比如我们可以在右上方输入36907,在下方数据区域输入希望显示给扫描软件的版本信息,本例中我们输入“This is a new banner for port 25”。之后点击OK,并退出MetaEdit。现在我们重启SMTP服务,并使用Ncat重新扫描端口25,看看这次会有什么结果。

如上图所示,新的版本信息已经代替了真正的SMTP服务版本信息,这使得攻击者无法通过这种扫描方式获取确切的SMTP服务版本,从而降低了被攻击的潜在风险。

IIS可以通过IIS lockdown工具实现这种功能,IIS6.0版本以下的用户可以免费下载这个工具,而且之后版本的IIS已经集成了IIS lockdown功能。

每个企业的服务器上可能都在运行多种服务,我们也不可能让每个服务的版本信息都隐藏起来,但是对一些关键服务的信息进行必要的隐藏是应该的。通过评估系统反馈的服务版本信息,你可以更好的考察每个服务是否存在明显的安全漏洞,并且这个工作能够帮助你更清晰的认识到该如何保护你的系统安全。