好吧,第七篇社团活动记录,估计也是倒数第二篇了.


本来是上周的活动,今天才有时间写.上个月 24 号,我搞了一次社团活动开放日,当时准备的时候害怕时间讲不满,所以预备了许多内容,结果才发现时间根本不够.所以这一次活动的前 30 分钟(天哪,居然花了这么多时间)是对上一次活动的补充和延伸.

先讲了下如何扩大攻击范围,顺带介绍了社会工程学.提到了我一直以来的一个猥琐想法:把恶意软件的下载链接制作成二维码,打印在贴纸上,然后直接贴到电梯或其它地方的广告海报上,覆盖掉原有的二位码.这种做法,被发现的可能性应该非常低,因为很多人扫码的时候并不会仔细去看二维码有没有什么蹊跷.顺便提到了我的私人网盘 dl.nota.moe, 简单地说明了为什么不应该把恶意安装包放在百度云之类的地方而应该放在自己的服务器上.然后聊了聊勒索软件及其应用.然后解释了开放日那天我为什么差点失败了(详见).然后是如何避免这种破事发生在自己的手机上,建议包括尽量不使用公共 WiFi,不从乱七八糟的地方下载应用和不 root 不越狱.顺便狠狠地抨击了国内畸形发展的 Android 生态系统(详见再见, Nexus.),并再次安利酷安,并解释了 root 和越狱实际上是一回事.然后进入这次活动的主题:进一步研究中间人攻击.


按照社联的规定,在下个周(具体来说, 12 月 23 号)以后本学期的社团活动就停止了.所以这次活动应该是我主持的倒数第二次活动.因为我不打算在最后一次活动上讲技术,所以这就是我最后一次讲技术了.渐渐地发现,最后的这几次活动我都在做着类似于"弥补遗憾"的事情,我的意思是:

我最开始接触的黑客软件之一应该是 dSploit. 当时刚学 JavaScript, 还是条初中狗,被 dSploit 的 JS 脚本注入功能震惊得不行,虽然成功率并不高.后来我一直很疑惑, JS 脚本注入这种爆炸的攻击技巧似乎没被 Linux 上我所知道的任何一款黑客软件所支持,这是为什么?(我当时在网上找了很久也没有发现相关的资料.)我更疑惑的是, dSploit 是如何实现这一功能的?这是第一个谜.第二个谜,之前常常看到有黑客利用抓包工具窃取同局域网下所有人上网所发送和接收的数据(包括 3·15 晚会那次),我敢肯定用的绝对是 Wireshark, 但我用 Wireshark 总是只能抓到自己电脑的数据包,其他设备的则无能为力.网上说的开启网卡混杂模式的办法也无济于事.

我一直很想在社里讲讲 JS 注入和局域网下的窃听,但很遗憾的是,一直未能成功.

但终于,在准备开放日的过程中,我偶然间看到了 ettercap 的教程,才解开了我的疑惑.

经过我的测试,使用 ettercap 对局域网下某一设备进行 ARP 欺骗后, Wireshark 即可抓到该设备的数据包.我推测,原因是: ARP 欺骗使得攻击目标误认为我的电脑是网关,因此它发送和接收的所有数据包都会经过我,再由我转发给真正的网关,而 Wireshark 则可在此过程中抓包.

当我了解了 ettercap 提供的过滤器之后,我的另一个疑惑也烟消云散了. ettercap 的过滤器功能非常多,简单的,可以直接断掉某一目标的网;复杂的,可以替换某一目标所浏览网页上的图片和下载链接,甚至进行 JS 注入(实际上是靠替换 <script> 标签实现的).

好啦,这就是我这一次要讲的内容的一部分了.

此外还会涉及 driftnet 这个大神器(也是久仰大名了).这里有一点需说明,我读到好几篇介绍 ettercap+driftnet 的教程,都是特别说明,在使用 driftnet 前,应在 ettercap 的命令行模式下进行 ARP 欺骗.经我测试,在图形界面模式下使用常规方法进行 ARP 欺骗照样可以.

driftnet 不仅可以抓取网页中的图片,应用中的图片照样可以,比如 QQ 的聊天图片.这点算是意外惊喜,不过也在情理之中.

ettercap 的过滤器规则写好之后要用它自己提供的工具编译成二进制文件.好吧,准备的时候我发现 JS 脚本注入还是失败了.时间紧迫,没空仔细研究原因,就把这一部分略掉吧.

我们学校的 WiFi 目前是没法用了.还好,每台教室里的电脑连接了有线网络,到时候可以依靠共享 WiFi 热点来进行演示.我特意准备了 360 和另外一个 WiFi 共享软件,因为比较担心 360 的共享 WiFi 会不会有中间人攻击方面的保护.此外,开放日那天为了给参加的诸位看到手机上的画面,我用了投影仪,实际效果不佳,投影出来的手机屏幕有如圣光笼罩.这一次我也要用到手机,所以打算解决这个问题.尝试了多种远程桌面/屏幕投射方案,包括 VNC, AirDroid 等等,皆有各种各样的坑,无法使用.最后找到一个叫 BBQScreen 的,勉强能用,但估计是因为 ARP 欺骗干扰了这玩意工作的原因(它的画面传输是通过局域网进行的),在当天社团活动时没法使用,最后还是向投影仪黑恶势力低头.

活动当天不可谓不提心吊胆.因为共享 WiFi 不同于无线路由器,我根本没有在这种环境下试过.在 ettercap 扫出来的局域网内主机列表里,我甚至没有看到网关,最后稀里糊涂地选了一个攻击目标,居然成功了.(好吧,估计我选的那个就是网关,只是 IP 比较奇特而已).第一项演示内容是用 Wireshark 获取攻击目标正在浏览的网页 URL, 天哪,死活搞不到,最终发现有个数据包是在请求浏览器自己的一个 API (估计是搜索建议啊,更新检查啊这一类),于是我就浑水摸鱼,指着大屏幕上那个奇异的 API 地址对大家说,你们看,被攻击者浏览的网页,就是这个.(这么说虽然不是很准确,但也没错)

后来分析原因,有可能是 HTTPS 的缘故.我用了一个 Wireshark 的过滤器规则,只显示 HTTP 协议的数据包, TLS 的就自然被略过了.确实,这一次活动的准备过程中,我发现有越来越多的国内网站都用上了 HTTPS, 以至于我还为了找到一个既有知名度又没用 HTTPS 的网站而大伤脑筋(因为我后面准备演示 Wireshark 下的密码窃取和 cookie 窃取,必须要是 HTTP 连接才行,而且 ettercap 的 ssl_strip 插件又不是那么好用).比如豆瓣已经是全站 HTTPS, 微博和 BiliBili 已经在登陆页部署了 HTTPS, 就连百度贴吧的手机版网页都已经是全站 HTTPS. 不得不说,这虽然给我的社团活动带来了很大困难,但看到国内有越来越多的网站意识到 HTTPS 的必要性,我还是很高兴的.(等放寒假了本站也会部署 HTTPS 的)

然后是 driftnet. 还算顺利,(虽然过程中 ettercap 崩了几次).网页图片窃听这方面,我选择的是微博,毕竟我的微博账号关注了一大堆不可描述的东西,而且微博主站是 HTTP. 果不其然,当我在手机上打开微博时, driftnet 上瞬间出现了一大堆不可描述的图片,棒到不行.(现场绝大多数是汉子,我就没那么多顾忌了)(当然,没有触及底线的东西).气氛瞬间变得非常活跃.然后是 QQ 聊天图片的窃取.一打开 QQ, driftnet 中便出现了大量的图片(包括头像),其中有我加的一些奇怪的群的奇怪的聊天图片,也有我的好盆友 @何犀 的头像.

然后是账号窃取.如前所述,我没有找到合适的使用 HTTP 的网站,所以我将对我们社团的网站下手(寄人篱下的服务器,没有弄 HTTPS). 这里我介绍了两种思路.一是用 Wireshark 直接抓登陆表单,像 WordPress 这样的都是直接一个明文的 POST 数据包就把用户名密码发送出去了,非常好抓.二是用 Wireshark 抓 cookie. 因为在座的大部分可能并不了解 cookie, 所以我尽量浅显地介绍了 cookie 的概念,应用和意义,并辅以两个栗子(一是视频网站记录上一次的观看进度,二是是个网站都有的"记住我的登陆状态"功能).在这里我提到了 HTTPS 的意义以及 SSLStrip, 提到了像 QQ 空间这种不使用 HTTPS 而是自己用 JS 实现一个非对称加密的奇葩,并说到了抓登陆表单的方法对 QQ 空间无能为力,自然地过渡到了用 cookie 绕过账号密码直接登入的思路.

当然了,还是用我们社的网站开刀. Cookie 的注入,我是用的 Cookie Injector 这个油猴脚本,简单好用,可以在 GreasyFork 上找到.

时间也差不多了.我的最后一次讲技术的社团活动结束了.后来我的一个同学告诉我,他在下面听的时候有个想法:想拿个手机或者相机把我的社团活动录下来.说实话,这种想法我很早就有了.最近在准备最后一次社团活动的内容,翻看此前的活动记录,真的是感慨万千,庆幸于我记录了大多数活动的内容,日后可供咀嚼回忆,也不谦虚地想,作为中学生能做到这些也实在不容易.加入这个社也有三个学期了,终于到了离开的时候;想想我的 2016 年,在一个冬天被钦点为社长,又在另一个冬天选出了新的下一任社长,整整一年都在为社团忙碌.这些,大概是对于没有什么特别的长处,又不太擅长与人交往的我来说,整个高中最珍贵的记忆吧.

下周是最后一次活动了.加油.

以上.

发表评论

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