构建高安全级别的主机系统的时候,对于NT系统往往有一个很尴尬的地方就是IIS的返回BANNER会很容易的泄露当前主机上NT的版本。比如我们可以简单的TELNET到对方的80端口用GET命令来查看下结果:
HTTP/1.1 400 Bad Request
Server: Microsoft-IIS/5.0
Date: Wed, 31 Dec 1997 20:37:29 GMT
Content-Type: text/html
Content-Length: 87
<html<head<titleError</title</head
<bodyThe parameter is incorrect. </body
</html
又或者FTP过去看到:
Connected to 127.0.0.1.
220 sql Microsoft FTP Service (Version 5.0).
User (127.0.0.1:(none)):
TELNET到对方的25 端口去发信的时候,会出现:
220 sql Microsoft ESMTP MAIL Service, Version: 5.0.2195.4453 ready at
Thu, 1 Ja
n 1998 04:47:48 +0800
看到没有服务器会很老实的告诉我们它是IIS5.0,结果全世界都知道它是WIN2000了。也许你很费力安装防火墙然后禁止了ICMP的数据包,但IIS的WEB FTP SMTP NNTP还是会很轻易的把秘密给泄露出去。讨厌的是现在很多漏洞扫描和安全评估系统也会根据服务器所返回的标志来自动判断服务器的版本,然后从后台调用相应的漏洞资料数据库来调整下一步的扫描策略,最后在报告里还要说上一句告诉我们这是属于低风险的安全漏洞,实在是可恶。
其实虽然在IIS的管理器里面并没有提供给我们修改和隐藏BANNER的工具,但我们还是可以通过修改相应的DLL文件来实现的,当然这需要一点小技巧,可是并不复杂。
首先我们需要知道存放IIS BANNER的DLL文件都是放在C:WINNTSYSTEM32INETSRV 目录下面的,其中对应关系是:
WEB是:C:WINNTSYSTEM32INETSRVW3SVC.DLL
FTP是: C:WINNTSYSTEM32INETSRVFTPSVC2.DLL
SMTP是:C:WINNTSYSTEM32INETSRVSMTPSVC.DLL
我们可以用UltraEdit将他们打开,然后查找我们想要找的BANNER的关键字,例如IIS的WEB就是要找:Microsoft-IIS/5.0 。
然后直接修改成我们想要修改成的样子,这个可以随你高兴了:)然后保存就好,但需要注意的地方就是:
1 在修改的时候请停止IIS的服务,可以用iisreset /stop 。
2 由于2000系统后台的文件保护机制的作用,当系统一旦发现重要的DLL文件被修改后就会尝试用%SYSTEMROOT%system32dllcache 目录下的备份文件来进行恢复,所以在修改前我们还需要事先删除%SYSTEMROOT%system32dllcache目录下的同名文件。
当然除了以上的手动修改以外,其实还有人写过一个相应的小工具来完成这件事情的,使用和操作上就更简单了,下面给大家介绍下:
注意的是一样先要自己事先停止IIS服务,删除DLLCACHE里的备份文件。
完成后WINDOWS会出来一个对话框告诉你,系统文件被更改需要安装光盘恢复,不用理它点取消就好了。
修改以后的BANNER成了这个样子:
HTTP/1.1 400 Bad Request
www.isfocus.net
Date: Wed, 31 Dec 1997 21:11:41 GMT
Content-Type: text/html
Content-Length: 87
<html<head<titleError</title</head
<bodyThe parameter is incorrect. </body
</html
可以发现修改后的BANNER已经不再出现Microsoft-IIS/5.0的字样了。
不过老实说,想要完全隐藏还是不太现实,就我来看IIS和APACHE返回的代码格式实在是差的太远了。
APACHE是这个样子的:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"
<HTML<HEAD
<TITLE501 Method Not Implemented</TITLE
</HEAD<BODY
<H1Method Not Implemented</H1
get to /dd.htm not supported.<P
Invalid method in request get /dd.htm<P
<HR
<ADDRESSApache
/1.3.14 Server at localhost Port 8080</ADDRESS
</BODY</HTML