网络惊魂记
今天中午正在休息,女友突然发一邮件,内附一行地址:
http://www.lol.dk/lol/jscript/fucked/ihackedyou.jpg
还说看到了我硬盘上有好多东西。
我带着好奇点了一下这个地址,哇,差点没把我吓得跳起来:这个图上明明白白显示着我C盘里的东西!
由于我的电脑兼做服务器,这一惊非同小可。我自忖自己平时也十分小心,怎么竟然着了别人的道?
别急别急,我安慰自己。
我深吸一口气,开始了反黑之旅。
首先打开Web Server的日志,一条一条查看过去。有很多类似与“GET /scripts/..%255c../winnt/system32/cmd.exe?/c+dir HTTP/1.0”这样的记录让我倒吸了不知几口凉气。这是对方在试图使用UNICODE漏洞攻击我的电脑。但后面的404标志明明白白告诉我,他们的企图都没有成功。这也难怪,用IIS的方法对付我的Apache服务器,自然会无功而返。检查我的IIS日志,没有发现类似的记录。我放下心来,这种笨笨的重复攻击想必又是我周围那些不知名服务器上的红色代码病毒的杰作了。不过既然没有让他们得逞,我就不再深究。
再扫描自己的端口,没有发现陌生端口。
再查进程,也没有发现可疑进程。
查Windows共享,也没有可疑的连接。
我不禁奇怪起来,难道现在的黑客已经高明到不依靠任何木马和额外连接悄悄连到我的电脑上还不被人发现?不放心,继续查。
又仔细看了一眼那张图,标题栏的一行字引起了我的注意:“Remote controle by Q-Rious(Connected)download at www.lol.dk”
看来可以从www.lol.dk这个网站入手。
于是满怀信心的在浏览器中输入:“www.lol.dk”。结果却是“网页无法显示”几个字等待着我。
又打开google,搜索“Q-Rious”,结果却让我大跌眼镜:这是一种儿童智力玩具的名字,似乎没有任何跟黑客有关联的地方。不过还是出现了一点线索:在一个中国的安全论坛上,有人也公布了他的被入侵记录,并且也提到了这种黑客软件;在金山毒霸的网站上,也有人提到这个软件。这让我的心再一次的紧张起来。但仔细看了又看,却没有进一步的信息。
到现在为止,我能想到的方法几乎全部都用完了,却没有一点线索。难道真是高手中的高手在作弄我?
怀着绝望的心情,我下意识的在google中输入了“www.lol.dk”,一个个的看着结果。突然!…………
我在一个BBS中又发现了那个熟悉的网址:“http://www.lol.dk/lol/jscript/fucked/ihackedyou.jpg”! 怎么会?怎么会?难道……?我的脑子里灵光一闪。
先验证一下再说!我于是在另一台电脑上输入了这个网址。果然!浏览器中也出现了那台电脑C盘的内容。
谜底全部解开了!
事实证明:我是被那个后缀“.jpg”迷惑住了。其实,这个根本不是一个图片文件,而是一个货真价实的网页文件。点击“查看源文件”,我们可以清楚的看到它的内容:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#FFFFFF" text="#000000" onload="crap.style.display=''" onmousedown="return false" onmousemove="return false" ondragstart="return false" onselec="return false" onselectstart="return false" ondragstart="return false" style='overflow:hidden'>
<div id="crap" style='display:none'>
<img src="./hacked2.jpg">
<div style='width:520;height:380;position:absolute;left:118;top:170'>
<iframe src="C:\" width="520" height="380" style="z-Index:1"></iframe>
</div>
<div id='hehe' style='font-family:MS Sans Serif;font-size:15px;position:absolute;top:56px;left:155px'>
</div>
<script src="hac.asp"></script>
</div>
<div id="mousefuck" style='position:absolute;top:0;left:0;height:3;width:1;z-Index:100000;overflow:hidden'><iframe src='d.asp' width=100 height=100 frameborder=0 scrolling=no></iframe></div>
<div id="fuckup" onresize="c()"></div>
<script language="javascript">
function c(){
mousefuck.style.left = event.x-2
mousefuck.style.top = event.y-3
}
setInterval("fuckup.style.width=Math.round(Math.random()*10)",1)
</script>
</body></html>
注意其中的<img src="./hacked2.jpg">和<"iframe src="C:\">这两句。其实它的核心方法就是:先载入一张程序界面的图片,然后在特定的地方嵌入一个iframe(内嵌框架),这个iframe的内容就是你的C盘。所以,无论是谁,看到这个网页的时候,都会看到自己C盘的内容。当然,这是Windows用户才能看到的东西。
另两个层:mousefuck和fuckup用途不详。hac.asp和d.asp用途也不详,但估计是让这个效果更真实所用。(估计是动态生成一幅图片覆盖在iframe上面所用)
那么,为什么“.jpg”里面可以隐藏程序代码呢?以下是我的猜想,如有错误,请大家指正:
我们知道,我们在IE地址栏中输入地址,然后按回车,其实质是向Web Server发送一个请求。Web Server收到这个请求后,根据其后缀名判断自己该做的操作(比如IIS遇到.asp的后缀就会调用VBScript解释器来执行代码,然后将结果送回客户端(IE),而遇到普通文件,就将文件本身编码后送给客户端)。而Jpg、Gif等图片文件和网页文件对于服务器来说,操作方法恰恰是相同的(将文件本身编码后送给客户端),所以即使你送一个.jpg请求给服务器,它也仅仅是简单的将该文件编码后送回给你,而并不关心该文件的格式。
客户端则相反,因为客户端(IE)是按数据流的方式接受数据的(这就是为什么网页没有完全下载完也可以显示其中一部分的原因。)所以客户端并不关心文件名,它只关心收到的数据的数据格式。如果是一个html文本,那么就用html解析器来解析,如果是一个图像,那么就用图像解码器解码。所以,正由于客户端不关心文件名,所以完全可以用.jpg文件隐藏程序代码。
现在,你还相信“图片里不可能存在病毒”的说法吗?至少用浏览器查看图片的时候,你要小心了!