写在前面的话
在国外,学习和训练如何破解脸书账号是每个网络信息安全新手的必修课。来自英国佛罗里达州的网络黑客GurkiratSingh揭露了一次拒绝服务攻击。根据这种方法,他能够侵入所有目标用户的脸书账户,并获得账户的详细浏览权限。他利用了脸书密码重置系统的系统漏洞,成功侵入了每个人的脸书账户。
为什么GurkiratSingh可以黑进很多脸书账户?
接下来,我们来看看网络攻击是如何完成这类攻击的。在这个阶段,如果用户必须重新设置脸书帐户的登录密码,他们必须首先键入一个六位数字的密码。这意味着六位数密码有106=1,000,000种可能的组合。当用户申请密码重置时,脸书会随机生成一个六位数的密码并发送给用户。然而,用来生成密码的优化算法存在严重的设计缺陷:如果你按照mbasic.facebook.com网页申请密码重置,系统软件仍然会让你显示一个随机密码,但如果你不申请这个登录密码,当你再次申请时,它将保持不变。这就意味着,如果有一百万用户在短时间内申请了密码重置,但这些人并没有使用这个随机密码,那么这1000001人请求的随机密码无疑与之前一百万人中其他人分配的登录密码是一样的。
如果短时间内有超过一百万的用户申请密码重置,那么脸书只有两种选择:
(1)用户指定个人获得的随机密码块书存储在数据库查询中,便于搭配检测;
(2)根据“某种技术”,分配给每个用户的随机密码是唯一的;
因为我不太确定这里的“某种技术”是否有可能完成,所以我更倾向于选项(1)。
于是,网络黑客决定发送总数两倍的邮件,然后祈祷在收到邮件的200万用户中找到那个应用相同随机密码的人,这也是简单的完成了鸽子洞原理。接下来,他需要做的是按照以下选择标准选择一个随机密码:10万以下的整数登录密码概率小,30万到699999或80万到999999之间的整数登录密码概率大。虽然这个简单的标准说白了并不是“黄金标准”,但是在整个测试过程中确实能帮上很大的忙。现在,你可以选择一个随机密码,然后你可能会通过“暴力破解密码”的方法,找出200万用户中,哪个用户的登录密码与你手中的随机密码相同。
有可能你也注意到了,这个系统的漏洞其实并没有那么难理解,只是因为这种攻击性的技术涉及范围比较大,所以完成起来还是有一定难度系数的。
网络攻击可以在短时间内发送200万封密码重置邮件。为什么他的个人行为不容易被系统软件屏蔽?
为了成功发送电子邮件,首先你需要获得这200万用户的脸书用户名,然后就是网页抓取技术“现身”的时候了。整个过程分为四个主要过程:
第一步:
一般脸书的ID长度是十五位数字(数据),所以网络黑客的判定是从ID为10000000000000的用户开始,根据脸书图API检查这个ID是否是合理的用户ID。因为脸书不限制浏览云计算平台的频率,还可以浏览整体目标用户账号的详细姓名和资料照片。但是请等等!脸书图形API似乎只允许授权应用程序抓取脸书用户的用户名,不是吗?不,它是。
确定ID合理后,您只需浏览以下链接:
www.facebook.com/[用户ID]浏览后,该网址的详细地址会自动跳转到其他网站,然后将网址中的ID信息更改为整体目标用户的脸书用户名。接下来,您可以将所有数据转换成JSON文件格式。
注:JSON数据信息中部分素材照片的详细URL地址早已失效。
200万脸书用户名:点击这里免费下载(图片大小:535M)
第二步:
由于我们必须发送200万封密码重置电子邮件,因此只能通过不断向脸书发送请求来完成。但是,这样一来,你的IP地址可能会被脸书列入黑名单。为了更好的避免这种情况,你需要不断的更换你的IP地址。这意味着我们必须使用无数个不同的IP地址来模拟真实的用户情况,用不同的IP地址发送每个请求。现阶段,很多运营商都表现出类似的效果。在每个人描述的攻击场景中,所有的数据流量都必须流经服务器代理,该代理监控所有的HTTP请求,然后为每个请求分配一个IP地址。
第三步:
当请求随机密码时,您必须模拟用户的实际 *** 作。因此,您将不得不使用phantomjs[[下载链接]编写一个线程同步Java脚本,然后使用该脚本为您的JSON文档中的每个脸书用户申请随机密码。
第四步:
申请免费使用GoogleMeasurement模块,然后在vm虚拟机中制作并托管这个脚本。我们可以在四个不同的区域设置八台vm虚拟机(每台配备12核//20GB运行内存),然后每台vm虚拟机将托管180个PhantomJS案例,这样可以提高CPU资源的利用率,实现利润最大化。
原则上我应该把这个vm建成一个分布式计算系统软件,但是时间很宝贵,这不是关键环节。
如下图所示,每个人每秒可以向服务器发送923个HTTP请求:
整个攻击过程很简单的一个环节:按照暴力破解密码的方法,找到一个随机密码。
接下来,我们应用一个六位数据的随机密码(338625),并根据规定的标准找到可以匹配的用户ID。在这里的整个过程中,每个人都必须向服务器发送一个URL请求来暴力破解密码。其中,主参数“u”中的数字用户标识和主参数“n”中的数字随机密码分别为:
www.beta.facebook.com/recover/password?u=…&n…接下来,猜猜发生了什么?我找到了可以和随机密码匹配的用户ID(338625)。下图中,“无效链接”表示用户id和随机密码匹配不成功:
下一步该怎么办?
你一定要再去www.beta.facebook.com/recover/password?。U=[用户id]&N=38625,此时,系统软件可能会将每个人的项目设置到下图所示的网页:
现在,每个人都可以获得这个用户账号的详细浏览权限。
古吉拉特·辛格的感受和总结
首先,我这次拿到的系统漏洞奖励只有500美金。因为脸书认为这个系统漏洞只允许其他人获取一个用户账号的详细访问限制,所以这个系统漏洞并不是高风险的系统漏洞(虽然我不知道他们是怎么想的)。
现在还没决定要不要把攻击脚本的源代码全部发布到我的Github(@destinations)。但我可能会在下一篇文章中分享一些我在其他公司的工作经验。如果读者有兴趣,请关注我的推特(@gurkiratspeca)。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)