作者:黄远维
一:什么是信息搜集
中国有句古话叫做:“知己知彼,百战不殆!”。因此,黑客们或者是入侵者都在默默的遵守着这条规则:从不进入自己不了解情况的主机,因为你不会知道管理员是真的白痴还是伪装成白痴的高手。作为一个基本的准则,信息搜集技术在这种没有硝烟的战争中,显得格外的重要。一个成功的黑客不仅要掌握大量的计算机网络技术、编程技术等,在某些时候还要懂得社会工程学基础。只有完美的利用这些东西,充分发挥你的聪明才智,才能了解到更多的情报,以增加入侵的成功率。
信息搜集就是对目标主机及其相关设施、管理人员进行公开非公开的检测、了解,用于对攻击目标安全防卫工作的掌握,比如目标主机的操作系统鉴别等。这是黑客们发起攻击的前奏,也是发起攻击的基础。内容包括系统、网络、数据及用户活动的状态及其行为,而且,有时还需要在计算机网络系统中的若干不同关键点,比如不同网段和不同主机,来搜集我们所需要和感兴趣的信息。
二:信息搜集的步骤
信息搜集大致可以分为两步:
1. 制定目标:
这里我们所说的目标通常分为两种,一是有着明显的攻击目的、明确的攻击目标,比如中美黑客大战时我们指定的美国段IP;二是随机扫描,事先并没有明确的攻击意识,后来由于某些原因(如网站自身的缺陷等)所制定的目标,比如我们在浏览某个网站时,感觉网站做的不错,然后做为自己的攻击目标。
2.具体信息搜集:
大概又可以分两个方面,一是使用功能强大的系统安全检测软件对目标系统实施多方位安全检测,如使用流光,Nmap等检测工具,获取信息后经分析然后制定有效的攻击策略;二是使用社会工程学原理,按照事先制定的目标进行入侵前的信息搜集,这个往往能起到意想不到的效果,但是这种方法要求比较高,也比较困难,需要良好的思维能力和处理能力。
三:如何反信息搜集
既然信息搜集会给黑客提供很多系统的信息,那么我们怎么来反信息搜集呢?如何来制造假的信息欺骗入侵者呢?
1:修改TTL值
我们知道,黑客在简单鉴别对方主机操作系统的时候,可以利用windows自带的ping程序来进行检测,比如下面的情况,我们可以通过TTL值来判断该主机为WindowsNT/2K系统。
C:>ping www.longker.com
Pinging www.longker.com [218.5.79.99] with 32 bytes of data:
Reply from 218.5.79.99: bytes=32 time<10ms TTL=128
Reply from 218.5.79.99: bytes=32 time<10ms TTL=128
Reply from 218.5.79.99: bytes=32 time<10ms TTL=128
Reply from 218.5.79.99: bytes=32 time<10ms TTL=128
Ping statistics for 218.5.79.99:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms;
因为WINDOWS NT/2K默认的TTL值为 128 ,如果主机没有过滤ICMP,那么对方只要 PING 一下,就大概知道你的系统了。下面我们自己来修改吧,就可以起到简单的欺骗达到保护的目的了。
我们以改成UNIX类的255为例,把下面的内容存成.reg文件,双击导入即可:
————Cut Here————
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters]
"DefaultTTL"=dword:000000ff
————Cut Here————
下面是相对应的TTL值:
十进制——十六进制
255---FF,128---80,64----40,32----20。
2:修改默认Banner信息
入侵者可以telnet主机web端口然后用get命令来获取主机版本,以下是我们得到的反馈信息:
C:>telnet www.Target.com 80 然后输入get,得到如下信息:
HTTP/1.1 400 Bad Request
Server: Microsoft-IIS/5.0
Date: Sat, 19 Jul 2003 11:24:10 GMT
Content-Type: text/html
Content-Length: 87
<html><head><title>Error</title></head><body>The parameter is incorrect.
</body>
</html>;
服务器乖乖返回了目标主机web系统是IIS/5。0,操作系统为windows系统。
如果对方开了ftp服务,我们在命令行下连接对方主机:
C:>ftp
ftp> open www.longker.com
Connected to www.longker.com.
220 Microsoft FTP Service (Version 5.0).
User (www.longker.com:(none)):
是微软自带的ftp服务器,可以判定主机系统为windows系统。
那么如何来修改这些默认的Banner信息呢?首先我们需要知道存放这些Banner信息的文件都是放在%syetemroot%system32inetsrv目录下面的,他们的对应关系是这样的:
WEB是:%syetemroot%system32inetsrvw3svc.dll
FTP是:%syetemroot%system32inetsrvftpsvc.dll
SMTP是:%syetemroot%system32inetsrvsmtpsvc.dll
然后我们可以用记事本将他们打开,查找我们想要找BANNER的关键字,例如IIS的WEB就是要找:Microsoft-IIS/5.0然后直接修改成我们想要修改成的样子,这个可以随实际需要了,我们可以改成Apache的web服务器,也可以是未知的web服务系统,随你高兴了,然后保存就好。注意点有二:
1 )在修改的时候请先停止IIS的服务,可以用iisreset /stop或者是net stop w3svc.
2 )由于Windows系统后台的文件保护机制的作用,当系统一旦发现重要的DLL文件被修改后就会尝试用%syetemroot%system32dllcache目录下的备份文件来进行恢复,所以在修改前我们还需要事先删除%syetemroot%system32dllcache目录下的同名文件,或者是修改该文件。其他FTP和SMTP的修改部分是一样,这里就不再多说了。
入侵者还可以通过telnet你的23端口来获取系统版本,当然前提是你开放了telnet服务,那么如何来修改默认banner来迷惑入侵者呢?就win2k来说,我们可以在winntsystem32文件夹下找到login.cmd文件,这个是默认的telnet登陆脚本,内容如下:
@echo off
rem
rem Telnet 服务器的默认全局登录脚本
rem
rem 在默认安装中,调用最初的命令外壳时,这个命令
rem 脚本将得到执行。反过来,这个命令脚本会试图调用
rem 单个用户的登录脚本。
rem
echo *===============================================================
echo 欢迎使用 Microsoft Telnet 服务器。
echo *===============================================================
cd %HOMEDRIVE%%HOMEPATH% /d
当我们成功telnet进去时,就显示“欢迎使用 Microsoft Telnet 服务器”,然后出现命令行。这里我们可以修改成自定义的,比如:
Red Hat Linux release 8.0 (Psyche) Kernel 2.4.18-14 on an i686
这样一来,对方可能就糊涂了,可能他不知道怎么入侵*nix,所以就放弃了。当然你也可以用别的语言去吓吓他的,那就看你的想象力了。
至于*nix的telnet默认banner,一般是存放在/etc/issue里的,cat下看看就知道了,自己去修改吧,可以把你的SunOs系统改成Redhat,因为sunos漏洞比较多,还是改成redhat比较安全些,当然这只是迷惑对方了,要真正安全,还是需要更好的安全意识的。
四:总结
通过这样的修改之后,在一定程度上减少了受攻击的可能。在现实中也取得了很好的效果。但是话又说回来了,毕竟我们是心虚的,要真正的安全,还是要从底层抓起,一步步来做好。
个人意见难免有错误,如果你有什么更好的经验,可以与我交流。