浅谈盗号网站实现原理
为什么会被盗号?首先我们看一下这张图片,很多时候盗号不是因为你点开了什么链接,而是因为你傻乎乎地在这个网页上留下了...
扫描右侧二维码阅读全文
02
2018/10

浅谈盗号网站实现原理

为什么会被盗号?

首先我们看一下这张图片,很多时候盗号不是因为你点开了什么链接,而是因为你傻乎乎地在这个网页上留下了你的密码。
IMG_0164.PNG
“好奇心害死猫”的道理大家应该都懂,那么,盗号者是如何实现获取我们的密码的呢?

表层现象分析

当我们收到类似的好友发来的图片时,往往会长按扫描二维码:
IMG_0166.JPG
然后扫出来一个貌似正规的网站。
IMG_0151.PNG

正规到甚至下拉后头部都是腾讯的域名:

网页由ui.ptlogin2.qq.com提供
QQ浏览器X5内核提供技术支持

这时大多数人选择信任此站点并毫不犹豫地留下了密码。结果当然是不言而喻,盗号者通过软件与网站数据库对接可以批量登录被盗账号并辐射式传播盗号链接,其破坏力可想而知,短短几分钟几十个人上当。

深层分析与实现

首先我们来看看我们扫出来的到底是什么?
IMG_0167.PNG

扫描结果:
http://img.yrjxzz.cn/images/A9F4026370810CFF4715CB48A8E5ABAB.jpg

所以,扫码过后按照正常路径会从http://img.yrjxzz.cn/(这显然是不正规的盗号网站)的网站服务器请求到一张图片,但是为什么我们请求到的却是一条网页呢?
判断WEB服务器
IMG_0169.PNG
Apache服务器的rewrite功能应该是很强大的,但是给了这些不法分子利用的机会。

rewrite实现原理:
1.受害者通过扫码请求图片地址
2.服务器处理请求
3.判断受害者访问方式

if 来源=QQ rewrite跳转到1.html
if 来源=Chrome or IE .....  rewrite跳转到正常的QQ空间网站

3.服务器返回rewrite信息,受害者分情况被分配到不同的页面。

如此实现请求jpg图片,但是返回了一个正常的网页,而且完美地解释了为什么QQ上面访问和用电脑浏览器访问出现的结果不同。

如何判断受害者是否是通过QQ进入的钓鱼链接呢?

这里应该用到的是JavaScript判断客户端环境,我们来看一下实现JS判断的原理

var browser={  
    versions:function(){   
        var u = navigator.userAgent, app = navigator.appVersion;   
        return {//移动终端浏览器版本信息   
            trident: u.indexOf('Trident') > -1, //IE内核  
            presto: u.indexOf('Presto') > -1, //opera内核  
            webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核  
            gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, //火狐内核  
            mobile: !!u.match(/AppleWebKit.*Mobile.*/), //是否为移动终端  
            ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端  
            android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android终端或者uc浏览器  
            iPhone: u.indexOf('iPhone') > -1 , //是否为iPhone或者QQHD浏览器  
            iPad: u.indexOf('iPad') > -1, //是否iPad    
            webApp: u.indexOf('Safari') == -1, //是否web应该程序,没有头部与底部  
            weixin: u.indexOf('MicroMessenger') > -1, //是否微信   
            qq: u.match(/\sQQ/i) == " qq" //是否QQ  
        };  
    }()
}

如此实现JS判断受害者的访问机机制是明智的,不法分子这样设计的原理应该也只是想逃避爬虫检测,防止被腾讯管家抓取导致域名被ban。

为什么显示腾讯的域名呢?
这应该是大多数细心的人想要深究的问题,为何在网页下拉后会显示腾讯的域名呢?
博主开始被骗也是出于下拉后看见是腾讯的正规域名,就毫不客气地留下了密码。
当再次思考这种技术的实现,我首先想到的是域名伪造,不过域名伪造真的也是一种几乎不能实现的技术,在handsome售后群中和几位站长讨论了一会儿过后,我们也想到了这应该是ASC转码导致的域名乱显示,也就导致了我们看到的是来自QQ的链接,ASC转码的实现原理大抵是这样的。

Punycode可以让域名由外文组成。Punycode使用ASC++II字符集,可以把外文域名转换成有意义的字符。例如,域名「xn--s7y.co」,会被转换成「短.co」。
在安全角度看,由於Unicode字符与ASC++II字符难以区分,所以注册Unicode域名「xn--pple-43d.com」,会被转换成「apple.com」,乍看下域名没大分别。

但很快,我就发现了猫腻,因为以上属于浏览器漏洞,各大浏览器开发商应该在一年前就已经修复了此漏洞,或者说实现IDN欺骗的方式太复杂了,估计也没有哪个不法分子去尝试。

有兴趣或者希望进一步了解的请移步IDN欺骗详解

于是,我们再次审视这个网站,最终发现了猫腻:不法分子压根就没有用到IDN之类的域名欺骗技术,而是简单地利用到了一个前端开发中的CSS技术,通过插入特定样式的div元素,伪造了一个QQ状态下下拉的视觉效果。这真的是一种很low的技术,但不乏是一种极佳的技术,通过这一方式实现对域名的伪造(或者说域名就没有被伪造)。
欺骗.PNG

不法分子留下的彩蛋

彩蛋.png

后记

不法分子利用这些技术手段来进行钓鱼,从表层上来看可以做到“天衣无缝”,我想这大抵是正确的。杜绝被钓,需要我们每一个用户提高防骗意识。千万千万不要在不正规的网页留下密码,QQ登录尽量选择扫码登录或者一键登录,还有就是设备锁也很重要。

Tips:即使打开了钓鱼网站不要慌,因为单纯打开一个网站,攻击者是无法get到你的信息的,但是,当你输入了你的账号密码并点击确认登录的那一刻,你的QQ号密码就会GET到攻击者那里去了

作为万恶开发者来说,我希望你能够重新审视这一行为并仔细阅读以下内容:

相关法律文件

《中华人民共和国网络安全法》第四十四条:任何个人和组织不得窃取或者以其他非法方式获取个人信息,不得非法出售或者非法向他人提供个人信息。

《中华人民共和国刑法》定义非法获取计算机信息系统数据罪:非法获取计算机信息系统数据罪,是指违反国家规定,侵入国家事务、国防建设、尖端科学技术领域以外的计算机信息系统或者采用其他技术手段,获取该计算机信息系统中存储、处理或者传输的数据,情节严重的行为。犯罪对象仅限于使用中的计算机信息系统中存储、处理、传输的数据,脱离计算机信息系统存放的计算机数据,如光盘、U盘中的计算机数据不是本罪的保护对象。这里的数据,不限于计算机系统数据和应用程序,还包括权利人存放在计算机信息系统中的各种个人信息。

刑法第二百八十五条第二款:违反国家规定,侵入前款规定以外的计算机信息系统或者采用其他技术手段,获取该计算机信息系统中存储、处理或者传输的数据,或者对该计算机信息系统实施非法控制,情节严重的,处三年以下有期徒刑或者拘役,并处或者单处罚金;情节特别严重的,处三年以上七年以下有期徒刑。

现在,在收到大量的用户举报后,腾讯已经受理并将该域名拉入黑名单,但是,不法分子的手段也是会更新的,我们也无法预测在未来会有哪些新奇的手段。所以,唯有用户增加防骗意识,让不法分子无利可图,无漏洞可钻,才能杜绝盗号现象。

对于腾讯的网络空间安全工程师,如何过滤非法内容(前提是不要乱过滤,你们腾讯管家的智能检测我也是呵呵了,真的盗号页面不ban,而正常的网页却频频被ban。对这现象,我只想说:吃着腾讯的工资,你开心就好)并递送到用户面前是一个责无旁贷的问题。对于相关法律制定机关,希望能够大力完善网络安全法,制定更加严厉详尽的惩处措施并对不法分子予以严厉的打击。

我们期待着,未来的中国有一个更加透明安全的网络环境!

浅谈盗号网站实现原理原作者为LFlife,发布于https://www.7ecc.cn/index.php/archives/188/。本文采用知识共享 署名-非商业性使用-禁止演绎 4.0 国际许可协议(CC BY-NC-ND 4.0)进行许可。
您可以自由地转载或分享本文,但不得用于商业用途和/或更改文章内容,并保留原作者署名。

Last modification:October 6th, 2018 at 09:08 am
If you think my article is useful to you, please feel free to appreciate

Leave a Comment