在IIS中还提供了FTP服务,虽然没有Serv-u等FTP服务器功能强大,但使用起来很方便。当客户端使用LeapFTP等连接工具连接FTP服务时,会出现“Microsoft FTP Service”等提示信息,这就说明您使用的是IIS服务器。
实际上,我们完全可以自定义IIS的FTP回应信息,在资源管理器中打 开“C:WINDOWSsystem32inetsrv”文件夹,使用Ultraedir打开其中的“ftpsvc2.dll” 文 件,在Ultraedit窗口中点击“Ctrl+F”键打开寻找窗口,在其中输入“Microsoft FTP Service”,同 时 勾 选“查 找ASCⅡ”项,点击查找按钮,很快就找到了该特征字符串,在Ultraedit的编辑窗口中直接将其修改为自定义内容即可,同时注意在执行上述操作时,应该在CMD窗口中执 行 命 令“iisreset /stop”,停止IIS服务,另外为了防止Windows启用系统文件保护机制自动还原文件,应该将“C:WINDOWSsystem32dllcache”文件夹中的文件彻底删除。
实际上,利用该方法同样可以简单快捷地修改IIS头信息。利用Ultraedit打开上述目录中的“w3svc.dll”文件,查找其中的“Server:”特征字符串,可以很快定位IIS的头信息,将其修改为自定义内容即可。修改完成后执行“iisreset/start”命令重启IIS服务。
在有些Windows服务器上,通常还启用了Telnet服务,可以让远程用户以模拟终端的方式,登录到本服务器上,连接成功之后,就可以像使用自己的电脑一样在服务器上执行各种命令了。当客户端连接到Windows后,Windows会弹出“欢迎使用Microsoft Telnet 服务器”的提示信息,这就等于说明本机使用的是Windows系统,为了防止黑客利用Telnet服务侵入主机,需要对登录脚本进行“伪装”。在系统盘 的“Winntsystem32”文件 夹 中 打 开“Login.cmd”文件,将其中的“echo欢迎使用Microsoft Telnet 服务 器”、“echo Welcome to Microsoft Telnet Server”等信息进行修改,假设修改为“echo Red Hat Linux release 8.0(Psyche)Kernel 2.4.18-14 on an i686”,之后保存文件。这样当黑客连接Telnet服务时,就搞不清您的服务器类型了。
当黑客对选定的服务器进行攻击之前,通常都会用Ping命令对其进行探测,根据返回的TTL信息来判断服务器的类型,一般来说,Linux服务器返回的TTL 值 为“64” 或“255”,Windows NT/2000/XP返回的TTL值为“128”等,为了防止TTL值暴露主机类型,可以将Windows 2000系列的TTL返回值修改成255来伪装操作系统,在注册表编辑器中展开“HKEY_LOCAL_MACHINE|SystemCurrentControlSetServicesTcpipParameters”分支,在右侧窗口中将“DefaultTTL”键值名的数值修改为十进制的“255”即可。
图1 伪装IIS头信息
一般来说,在黑客对您的服务器进行攻击之前,都需要判断Web服务器的类型,最常用的是使用Telnet命令连接服务器的80端口,从返回信息上取得服务器的重要信息。
例如执行命令“telnet 对方 IP 80”, IIS 服务器就会返 回“HTTP/1.1 400 Bad Bequest,Server:Microsoft-IIS/5.0”等IIS头信息,从其中 的“Server:Microsoft-IIS/5.0”中即可判断出对方使用的是IIS服务器,然后黑客即可通过进一步的扫描,搜寻漏洞,溢出攻击等手段侵入您的服务器。
如果对IIS的头信息进行加密伪装,让黑客摸不清服务器的“底细”,那么对方就不敢贸然进攻了。使用ServerMask这款软件,就可以对IIS头信息进行全面伪装,让黑客摸不清您的服务器底细,无从下手进行入侵。
在ServerMask主窗口左侧显示在IIS服务器上安装的所有网站,选择目标网站,在窗口右侧的“Security Profile”列表中提供了多种伪装手段,如果选择“Hide”项,ServerMask即可将您的网站隐藏起来,当攻击者试图向其发送测试连接请求时,ServerMask将拒绝发送任何回应信息,如果该网站消失了一样。如果选择“Emulate”项,表示执行网站仿真功能,当攻击者试图探测本网站的信息时,ServerMask可以将本网站伪装成Apache服务器,并将相关的虚假信息发送给攻击者,让其误以为本机使用的Apache服务器,让其要么知难而退,要么执行错误的攻击操作。如果选择“Randomize”项,表示使用随机伪装信息保护本网站。
实际上,ServerMask可以模拟大量的服务器回应信息,包括Apache对应的Redhat、Unix、Mac、Win32等服务器版本,以及 Oracle 9i、Lotus-Domino、Zeus、IBM_HTTP_Server、SunOS、LiveServer、WebSphere Application Server等40多种服务器的头信息。这样攻击者每次试图探测本网站时,ServerMask可以使用随机的服务器的头信息来“糊弄”攻击者,让其感到本网站“高深莫测”,从而知难而退。
如果您选择“Customize”项,表示自定义伪装信息。在弹出的面板中输入新的伪装项目名称,点击“Headers”按钮,在“Server Header”面板(如图1所示)中勾选“Enable Server header masking”项,激活IIS信息头加密功能,选择“Remove Server header from all HTTP response”项,表示删除IIS信息头。选择“Masquerade in Server header as common non-IIS server”项,表 示 使 用其它服务器的信息头内容替换IISIIS信息头。选择“Randomize Swever header among common non-IIS servers”项,让 ServerMask自动随机改变IISIIS信息头,选 择“Set custom Server header value”项,可以让您自定义IIS信息头内容。在“Add Headers”面板中勾选“Enable Header Add”项,表示允许添加新的IIS信息头。点击“Add”按钮,添加新的IIS信息头即可。
图2 构造虚假的Cookie信息
在配置了IIS的服务器时,除了系统自身提供的IIS头信息之外,在IIS中运行的一些脚本程序环境,一些第三方的IIS增强工具都会产生一些HTTP头信息。当客户端连接服务器时,在IIS的回应包中可能附带有这些相关的HTTP头信息(例如使用FlashGet、迅雷等软件对网站进行探测或者下载文件时,在返回信息中就包含一些IIS的敏感信息),即使您使用上述方法伪装了IIS基本头信息,然而这些第三方的HTTP头信息照样可以暴露您的服务器类型,例如可能在IIS的回应信息中包含“X-Powered-By:PHP/4.0.0”信 息,这表示在您的PHP脚本运行环境中存在错误的配置信息,在IIS头信息中包含“X-AspNet-Version”, 说明您使用了在IIS中运行了ASP.Net脚本程序,在IIS头信息中包含“IISExport”项,表示您使用了IISExport这款IIS信息导出工具等。ServerMask可以让您自由地删除这些第三方的HTTP头信息,让你的IIS服务器更加难以探测。打开“Remove Headers”面板,在其中勾选“Remove all HTTP headers on list”项,表示可以在IIS头信息中删除列表中的第三方HTTP信息。当然,您也可以根据实际需要,添加更多的HTTP信息项,在面板底部的“Header”栏中输入新的HTTP项 目,点 击“Add”按钮完成添加操作。
COOKIE技术在网络编程中使用的很广泛,例如 使 用 ASP、ASP.NET、PHP、JSP、SiteServer、ColdFusion、PHP等脚本设计的网站,当用户访问您的网站时,会在客户机中留下相关的COOKIE信息,通过对这些COOKIE的信息类型进行分析,就可以判断出服务器的类型。ServerMASK可以对COOKIE项目进行伪装,从而在客户端留下谁也看不懂的COOKIE信息,这样就可以有效避免了服务器信息的暴露。
当使用上面的方法,创建了自定义的伪装项目名称,ServerMask会将其添加到窗口左侧的网站列表中。在其中选择对应的自定义伪装项目名称,在窗口右侧点击“Cookies”按钮,在“Cookie Masking”面板中勾选“Mask all session cookie on list”项,表示激活Cookie伪装功能。在Cookie伪装列表左侧的“Cookie name to mask”栏中显示一些常见的Cookie类型,例如ASPSESSIONID、PHPSESSID等。选中这些Cookie项目,在列表右侧的“Masked cookie name”栏中可以根据需要对其进行更改,将其修改为让黑客感到迷茫的名称。如果您不想自行修改,可以点击“Generate”按钮,让ServerMask为其产生随机字符串进行替换。当然,ServerMask预设的Cookie类型毕竟有限,您可以点击“Add”按钮,来添加所需的Cookie名称,并根据实际需要对其进行伪装处理。
除了对真实存在的Cookie项的名称进程伪装外,ServerMASK还能以假乱真的创建一些虚假的Cookie,来更加有效的迷惑入侵者。在“Cookie Decoys”面板(如图2所示)中勾选“Add all decoy cookie in list”项,激活虚假Cookie创建功能。点击“Add”按钮,可以在列表中添加名称为“CookieX”的虚假Cookie项(其中X代表顺序编号),在列表的“Cookie name to add”列中选择新建的虚假Cookie项,可以更改其名称,例如可以为其编造杂乱的名称等。如果您不想费力地自创虚假Cookie,可以点击“Generate”按钮,让ServerMASK随机添加名称随意的Cookie项。在“Randomize decoy cookie value every X seconds”项,可以设置每隔多长时间,自动为这些虚假的Cookie赋予随机数值,默认周期为1200秒。当然,这里的虚假Cookie仅仅用来迷惑入侵者,随着这些Cookie也会被服务器和客户机之间传送和存储,但是这些Cookie并没有实际用途,并不参与和干涉任何实际网络程序的正常活动,不会对其造成任何不良影响。
我们知道,当访问一些不存在的网址时,浏览器会回应HTTP 404等错误提示页面,在其中可能包含一些有可能泄露网站信息的数据。对于黑客来说,通过对该错误回应页面进行分析,可以对网站相关信息进行窥视,为之后的入侵进行必要的“踩点”。使用ServerMASK提供的自定义错误回应页面功能,可以彻底堵住这一潜在的漏洞。
在ServerMASK主 窗口 中 点 击“Errors”按 钮,在“General”面 板 中 勾 选“Enable Custom Errors”项,激活自定义错误回应页面功能。勾选“Replace application layer error(5xx)with non-IIS 404 responses”项,激活应用程序层错误替换功能,当触发HTTP 500以上错误回应事件后,同样可以使用预设的错误信息加以替换。这样,当客户端访问服务器产生错误事件后,ServerMASK会立即拦截该错误事件,并将预设的错误信息发送给客户端,来迷惑入侵者。
在“Error Directory”面板中的“Error Directory Name”栏中输入存储错误提示信息的文件夹名称,默认 为“errors”。 在“Error Directory Search Mode”栏中 选 择“Check Site Root Only for Error Directory”项,表示需要在对应网站根目录下创建上述文件夹(例如“error”文件夹),将包含错误提示信息的文件存放在里面。当触发错误事件后,ServerMASK可以从网站根目录下的“error”文件夹中提取相关文件(名称必须为“404”,例如“404.htm”等),并将其内容作为错误回应信息发送给客户端。选择“Check Requested Directory for Error Directory”项,表 示当客户端发送的错误访问请求触发错误回应事件后,ServerMASK根据提交的网址查询其所属的网站根目录下是否存在上述预设文件夹(例如“error”文件夹),如果存在就从中提取相关文件,将其包含的错误信息发送给客户端。如果网站下包含很多子网站的话,很适合选择该种方法来设定以上文件夹来存储错误提示信息。
我们上面讲过,自定义信息实际上是包含在名称为404的文件中,并存储在预设的文件夹中。ServerMASK支持多种格式的错误信息文件,可以满足各种情况下的实际需要。在“Error Files”面板中的“Static Error Page Files Types”项,点 击“Configure”按钮,可以配置静态格式的错误信息文件。在弹出窗口中可以看到,ServerMASK默认支持htm、html等格式的网页文件。当然,可以点击“Add”按钮,添加新的静态文件格式。之后在网站根目录下进入预设的文件夹(例如“error”文件夹),在其中创建诸如“404.htm、404.html”等名称的文件,在其中编辑所需的错误回应信息。如果勾选“Enable Dynamic Page for 404 Errors”项,点击“Configure”按钮,可以管理和添加动态错误信息文件,例如“asp,aspx,php,cfm 等格式”,之后进入上述预设文件夹,编辑诸如“404.asp,404.php”等文件,在其中编辑所需的错误回应信息。此外,还可以勾选“Enable Image Files for 404 Image Error”项,点击“Configure”按钮,可以将图片文件作为回应错误信息发送给客户端,您可以编辑所需的图片格式,之后按照上述方法编辑图片名称(例如404.jpg等)。
除了使用上述常规伪装方式外,还可以针对一些特殊的情况,使用更加高级的伪装模式。在ServerMASK窗口中点击“Advanced”按钮,在“Emulation”面板中勾选“Emulate common non-IIS server Etag formats”项,激活针对Etag标识的伪装操作,Etag标识存在于网络缓存数据中,这些格式标识可能会暴露IIS服务器的相关信息。在其下的列表中可以选择用于伪装的服务器标识格式,包括 Apache format1、Apache format、Sun format、TomCat等格式信息,ServerMASK使用选定的上述非IIS服务器格式来替换Etag标识格式。如 果 勾 选“Random Etag format”项,标示按照预设周期,动态替换IIS缓存中的Etag格式,默认周期为1200秒。勾选“Emulate Apache Web server HTTP headers order”和“Emulate Apache(ALLOW) header format”项,可以使用Apache服务器的HTTP头的顺序排列信息和格式数据对IIS服务器对应内容进行伪装。
在“File Extension”面板中勾选“Support URLs and HTTP requests without file to mask extension signatures”项,表示当客户端发来的访问地址中包含文件名信息时,ServerMASK可以使用无关的内容对其进行屏蔽,防止黑客通过探测特定的网站文件来刺探虚实。在“Response Code”面板中勾选“Normalize and mask various response code messages and format”项,表示服务器触发200,403.404,501等编号的事件时,对传输给客户端的相关内容定位头 信 息(Content-Location header)中包含的网址进行伪装处理,防止黑客借此分析服务器敏感信息。
如果启用该功能,需要在“IP Mask”面板中勾选“Mask internal IP address in Content-Location header”项,在“Domain Name”栏中输入用于上述伪装的网站,这样一旦ServerMASK发现传输给客户端的相关内容定位头信息包含有网址信息,就会使用预设网址进行替换。