那什么,用序号作标题确实不是什么好习惯.


这学期刚开始没多久的时候,我在学校食堂门口看到了一个名为"成骇联盟"的社团的海报,看上去是个研究黑客技术的.周末去社团主页 cflshackers.businesscatalyst.com 看了看(那是旧网站,新的是这个),嗯还不错,于是填了报名表,成为了其中的一员.

确实是个很棒的社团,虽然人少,而且也没有妹子tieba_smilies18,不过每次活动的内容还是很有技术含量的.一学期差不多就快过完了,在社里也混了个脸熟.差不多三个周前,社长问我,有没有什么讲的?(之前的活动基本上都是两个社长讲的)稀里糊涂地就答了句,有啊.于是就决定两周后的下一次社团活动由我讲了.

最开始想了四个内容: WiFi 网络下的 JavaScript 脚本注入,WiFi 网络下的 ADB 远程控制,WireShark 局域网抓包和不知道哪里看来的伪造密钥通过 QQ 空间窃取密码.确实,像 ADB 什么的根本就不算是黑客技术tieba_smilies49至于 JS 注入,因为之前玩过一阵子 dSploit ,所以感觉 Linux 下也应该可以实现(事实是不行,至少我是没找到方法).计划用 Linux 系统进行演(zhuang)示(bi).

因为社团活动是两周一次,所以那时居然感觉时间很宽裕.第一个周末根本没管这事,研究了下新本子的触摸板手势和自适应键区的用法,装了几个缺失的驱动(目的只是去除设备管理器的感叹号而已,毕竟指纹识别器什么的,我也懒得用,至少当时是这样想的).

第一个周末快结束的时候,感觉还是该做点什么,于是安装好了 elementaryOS 0.3, 是之前刻制好的安装盘.至于为什么选择 elementary ,感觉当时真的是被迷惑了,感觉外界评价这么高,截图又这么漂亮,应该是是一款很优秀的操作系统.之前一直用的是 Ubuntu ,确实够丑的,早就想换了.然而 elementary 让我非常失望,软件版本落后不说,光是满天飞的 bug 就让人无法忍受了.实际使用中,一些简单的操作居然还会卡顿,一些按钮点击无响应,另外还有感人的本地化,安装的时候我选的中文,妈的,有几句是中文的?在自己的电脑上实际跑起来根本没有截图上那么"惊艳",一定程度上,有的界面还没 GNOME 3 默认的漂亮(个人感觉).感觉开发团队根本没有用心去做,本来开发周期长,软件包版本旧一点也无可厚非,但这么长的开发周期就做出来这么个翻译都没翻译完的半成品?况且很多东西都是从 Ubuntu 里直接拿过来的,像软件中心.总体来说,很让我失望,目前还不是能够日常使用的操作系统.

第二个周末.因为学校的一些事,这个周末有4天(周四,周五,周六,周日),更加地感觉时间充沛.当时的时间规划是:回家当晚用两小时时间把 elementaryOS 给重新装一遍,因为实在 bug 太多,我天真地认为重装能解决一切问题;然后把无线网卡的 MAC 地址改了.家在学校旁边,收得到学校的 WiFi 信号tieba_smilies50不过学校的 WiFi 有 MAC 地址白名单.主要是上面我说到的四个演示的内容都要用到学校的 WiFi , 另外也想蹭下学校的网(这大概才是主要原因),所以得改 MAC .MAC 地址白名单社长自己扫了一份,之前发给了我.把 MAC 改了之后就下载一些需要的软件,顺便更新下系统.是的,我的计划是,这些应当在最开始的两小时内完成.之后的计划是,每一个小时研究一个内容,共计3小时(第四个内容,就是窃取 QQ 密码的那个,思路太不成熟,打算省略掉).装 elementary 都还顺利,然而问题就出在改 MAC 上.最开始看到的资料是说,英特尔的无线网卡都是把 MAC 写死的,改不了,绝望了一阵子.然而在 Linux 下我又惊奇地发现可以修改 MAC .有两种方式,一种是通用的 ifconfig, 另一种是我的 Network Manager 自带了克隆 MAC 的功能.然而问题就在于改了 MAC 以后仍然连不上学校的 WiFi .之后又在 Windows 7 下尝试,试了各种方法,都以失败告终.英特尔的网卡,高级属性里并没有"硬件地址"这一项,于是尝试了注册表修改,失败.比较玄妙的是,我看到有人说 Windows 7 下改 MAC 只能改为第二位是 2,6,A,E 的地址.开始还以为是骗小白的,后来看到很多资料里面都提及了这一点,知乎上甚至有个自称是微软的工程师的人详细解释了为什么必须是 2,6,A,E, 嗯,看起来是真的了.于是我试了下,把 MAC 改为 020000000000, 居然成功了!于是翻看社长给我的白名单,查找第二位是 2,6,A,E 的 MAC 地址.前后查找了两遍.第一遍用肉眼,看得我快瞎了,第二遍用 Excel, 因为煞笔 Excel 似乎不支持正则表达式匹配,于是用 mid() 函数.是的, mid() 函数两周以前我才在信息技术课上学到,说明这课还是很有用的.然而两次查找,一个符合条件的都没有.Linux 系统下倒没有这个限制,不过就算我改了 MAC ,依然连不上,妈的.

于是想到可能还是网卡的问题.第二天早晨,跑了很远,终于在偏街小巷的一家电脑店花 60 元高价买到了一个 USB 无线网卡.真 tm 奸商.回家插上电脑,卧槽这信号还不如我本子自带的网卡,啥都搜不到,失望透顶(后来事实证明是 Linux 自带驱动的锅.在 Windows 下装上它的私有驱动信号有很大改善.不过这垃圾网卡并没有 Linux 的驱动.当时想尝试下 ndiswrapper ,也是遇到了一些奇奇怪怪的问题,不了了之).外接网卡行不通,我打算上直接换本子的内置网卡.去 x 宝看了看,水很深,当时看中 AR5B22 这卡,但是因为我的本子的接口太奇葩,并且装这个卡还要刷写 BIOS ,真的不想尝试.当时已经研究了一天的无线网卡了,对于这些玩意只有厌烦和恶心.

然后看到有另外的方法.一种方法是强制安装旧版本的驱动,比如 Windows XP 的,费了好大劲在驱动之家上找到驱动(英特尔官网上早就没有啦),下载下来,解包怎么都解不开,妈的.然后是 EEUpdate, 通过烧写 EEPROM 硬改 MAC 地址.这玩意需要制作一个 DOS 启动盘,各种尝试,就是没法启动.况且硬改 MAC 风险太大,遂放弃.

当时遇到的困难还不仅仅是无线网卡方面.刚才我提到了, dSploit 里有 JS 注入的功能,我感觉 Linux 下也应该有类似的软件实现这个功能,然而在网上查了很久,又去贴吧问了下,始终没有找到.所以我还必须得弄个 Android 设备来演示 dSploit ?妈的,手里又没有能用的 Android 设备.另外, elementaryOS 的 bug 也是无法忍受.在各种困难和挫折之下,我几乎想放弃,或者是推迟.当时把社团的交流群打开,写了一段长长的文字,说明了我打算推迟到下下次社团活动,为什么要推迟,我遇到了什么问题,我打算如何解决(我也不知道),等等.然后想到 QQ 应该会保持草稿吧,就把聊天窗口关了,想再尝试下,确定没有办法了再发出去.

然而 QQ 没有保存草稿.

好吧,上天也不允许我放弃了.接着战.

终于下定决心,下载了 Fedora 23, 在周末的第三天晚上替换掉了 elementaryOS. 安装过程中才体会到我无比唾弃的 Ubuntu 原来是如此的友好. Fedora 的分区工具,真的是无法形容...再加上联想这煞笔,一个 C 盘,两个隐藏分区,一个扩展分区,好啦,4个主分区齐了,没法再分主分区了.当时我没意识到这一点,Fedora 的安装程序也不会像 Ubuntu 那样自动地从扩展分区的空余空间中建立新分区,自带的分区工具也简直是脑残.当时在分区这里折腾了很久,都有点怀疑自己的智商了,玩 Linux 也有好些时候了,分个区都搞不定tieba_smilies35最后还是靠 GParted 搞定了.

Fedora 真是不错,GNOME 3 桌面环境看起来就是舒服.中文字体居然自带思源黑体.另外稳定性要好太多(虽然不知道怎么的,一开机就弹"Oops!"和"SELinux 安全警报").很令我惊喜的一点是,驱动非常全,刚才我说到的 USB 无线网卡,在 WIndows 下要装驱动的,Linux 下无需驱动即插即用(虽然信号稍差),另外我还有一个中国电信的 3G 上网卡,在 Windows 下不仅要驱动,还要用电信自己的一个客户端才行(那个客户端还 tm 要弹广告,简直恶心).Linux 下照样即插即用,自动配置,甚至接入点的密码什么的都自动填好,我只需要无脑下一步就可以用了.(这两个设备,在 elementaryOS 和 Fedora 下都是可以直接驱动的.这也算是 elementaryOS 给我的唯一的惊喜吧)另外我本子的指纹识别器 Fedora 也可以直接驱动(这个 elementaryOS 不行,估计是内核版本号太老).感觉指纹识别器在 Linux 下要比 Windows 下实用得多,Windows 下就只是登录时用一下,而 Linux 在任何需要高权限的地方(也就是需要 root 密码的地方)都可以用指纹识别.想象一下,终端里输入一句炫酷的sudo rm -rf / ,潇洒地一滑手指,一台电脑就成了废铁,真是令人神往tieba_smilies50.

此时已是第三天晚上.我忽然意识到,计划中应当在第一天下午花两小时完成的任务,到现在还没有完成.再这样下去不行了,不能在一棵树上吊死.我梳理了一遍混乱的思路,看来是必须要 dSploit 了,就借社长的 Nexus 7 吧.至于 ADB ,这个不需要外网访问,可以用社长自己的路由器(只有 WiFi 信号,没法上网).WireShark 么?这个必须要外网访问,不然没什么意义.然而外网访问又需要学校的 WiFi ...此时我忽然意识到此前看到的一篇文章说,如果一台设备搜索到两个 SSID 一样的 WiFi 信号,会优先选择信号强的那个.Fedora 自带无线热点功能,又可以直接驱动我的 3G 上网卡......对了!我的电脑通过 3G 上网卡连接外网,然后设置无线热点,SSID 和密码都和学校 WiFi 一致,那么离我较近的设备就会选择我的虚假热点...然后 WireShark 监听网卡,抓包...天才般的设想.

然后开始着手准备用于 JS 注入的代码.如下.

if (!(location.href.indexOf('cflshackers.tk') > -1)) {
	location.href = 'http://www.cflshackers.tk';
}
document.querySelector('div.entry-content.description.clearfix').innerHTML = '<p style="color:red;font-weight:bold;font-size:60px;">Hacked by Nota!</p>';
document.querySelector('#user_pass').onblur = function(){alert('用户名:'+document.querySelector('#user_login').value+'\n密码:'+document.querySelector('#user_pass').value)};

三段代码都是针对我们社团的网站的(多大仇tieba_smilies50).第一段是强制跳转到 cflshackers.tk ,第二段是更改网页内容,第三段是获取 WordPress 登录页输入的用户名和密码,为了为方便演示就直接 alert 出来.可见都没有什么技术含量.(而且为了赶时间,用了 DOM Level 0 事件绑定,实在惭愧)

然后到酷安上一看,真是今非昔比, dSploit 已成明日黄花,早与 zANTI 合并,由 dSploit 衍生出来了新的 cSploit .看了下评论,好像 cSploit 的稳定性不佳,然而出于一些奇怪的心理,我还是选择了 cSploit ,并将它的安装包与那三个 JS 文件一并发给社长(因为到时候要用他的 Nexus 7 )

第四天.社长突然告诉我学校投影仪只有 VGA 接口.妈的,我一台炒鸡本怎么可能有 VGA 那种又厚又丑的接口?至于转接线,也不是太想买,因为要花钱.三天熬夜,可以想象我起得多迟(也可以想象我作业做了多少tieba_smilies35)下午跑去把无线网卡退了,实在没啥卵用.为了成功退货,我给老板说我是高贵的肾果用户,没法装驱动.老板也是够奸商的,说只能换不能退,不如我给你换个鼠标吧?麻痹这种垃圾小店卖的鼠标不知道是什么货色.突然想到 VGA 的事,于是愉快地换到了一根 VGA 转接线.简直日狗,同样的价格我在 x 宝能买到3根一样的转接线.

回家的路上顺便取了个快递.

回家之后把 ADB 要用的的一些命令打印出来备忘.应该说很久以前就知道 ADB 能通过 WiFi 连接设备了,一直想当然地认为借此就可以在同一局域网下的所有 Android 设备上为所欲为.然而事实是,远程连接需要 Android 设备开放 5555 端口,几乎没有哪台 Android 设备会默认开放此端口,而且手动开放还需要 root 权限...简单地说这根本就说不上是什么攻击手段.另外为了模拟真实的攻击环境,我显然不可能在被攻击设备上查看它的 IP 地址,所以还了解了下 nmap 的使用.

然后研究了下 Fedora 的无线热点,惊讶地发现这玩意的密码是随机生成的,而且 SSID 和密码都不!能!改!我的天,这样还怎么伪造热点?!上网找了下方法,有一个针对21以前版本的改配置文件的方法似乎可行,然而 Fedora 23 已经没有此文件了.另外找到了一个用 KDE 的 Network Manager 的方法,像 Ubuntu 这种立场不坚定的发行版tieba_smilies50,软件中心里直接可下载,而 Fedora 源里根本没有此软件包.至于编译安装什么的,确实没时间折腾.还有一种自己实现一个热点功能的方法,还需要折腾 iptables 设置动态 IP 分配,妈的,真的没时间了.

然后就该回学校了.日狗的一个周末结束了.

记得我之前写 ThinkPad X1 Carbon 到手啦~的时候是对这台新本子不太满意的.然而此时我再一次体会到炒鸡本的魅力.轻松塞进书包不说,背在肩上几乎不感觉沉重(我的包里还有一堆书和作业).此外惊人的续航也在几天以后的演示中帮了我的忙(至少可以少插一根线).

到学校之后,室友自然会来围观.令人感动的是一位同学当得知这是低电压处理器后,竟问我性能有没有 A9 强.我刚开始还以为他是农企信仰粉,想用 APU 与我一战.但思考后发现 AMD 并没有叫 A9 的 APU. 然后才意识到他指的是苹果的 A9.嗯,果粉虽然无知,但他们有信仰,就这一点来说,我还是很羡慕他们的.tieba_smilies50

本来定于周二中午的社团活动因为社联那边的一些事而推迟到周四.此外社长告诉我 cSploit 在他的 Android 6.0 系统上存在问题,他打算降级系统.当时我并没有意识到问题严重性.

于是到了 12 月 24 日,周四.跑去小卖部吃了些垃圾食品,然后回寝室拿电脑包,然后到预定的社团活动地点高二3班.时间尚早,只有两个社员到.于是开机,惊奇地发现热点已经如我之前设置的那样,SSID 和密码都与学校 WiFi 一致.然而关闭并再次开启热点后又变为随机生成的密码.想想还是算了,实在不稳定,以后有机会再演示 WireShark 吧.

这时社长二人到了,告诉我他们的路由器被锁在某处了.于是考虑换地点,去学校的数理探究实验室.此前并没有去过,只是听说里面的电脑配置不错,环境很好,而且常有人在里面写代码,估计是竞赛的.这时候有个社员走来看到我打印的 ADB 命令,突然问我,是不是要演示 Android 的远程调试?妈的,心中一惊,正如上文所述,这根本就不算是什么能登大雅之堂的攻击手段,到时候估计还得在社长的 Nexus 7 上做些手脚才能黑得进去(不算是什么"黑"),然而社里还真的有内行,艹,别拆台啊~

社长告诉我他降级到 Android 4.4 , 才装的系统,啥都没有.并未在意.到了实验室,问题更加复杂.因为我需要我的电脑,实验室的电脑,和一台 Nexus 7 都能投影到大屏幕上,而视频输入接口实在是有限.然后折腾这个问题花了大把的时间,为了使 Nexus 7 能够投影还尝试了 VNC 这种奇技淫巧,不过还是没法正常投影,最后选择了展示台(那玩意确切地叫什么我也不知道,就是把书或者试卷放上去就能投影出来的那个平台).两台电脑,一台展示台,一个 VGA 集线器,你叫我来接线绝对接不好.还是非常感谢两位社长帮忙tieba_smilies44.

直到把线接好,局域网弄好,已经过去20分钟了.(好像也没有什么问题,WireShark 取消之后我就只剩下两个内容了(而且稍后还出现了突发情况),花不了太多时间(事实证明到最后我都是在磨时间))

然后在小激动中开始了我的演示.第一个内容是 cSploit , 之前设想中还打算说下它的前辈 dSploit 的辉煌历史,管他的呢,一笔带过.然后进入 cSploit ,先随便讲了讲 cSploit 其它的一些攻击方式,像什么会话劫持,DNS 劫持之类,然后转入正文——脚本注入.先把我的 3 个 JS 文件投影出来给大家看了看,然后注入第一个脚本(用处是强制跳转到 cflshackers.tk)然后在被攻击设备上访问百度,网页还没加载完就直接跳到 cflshackers.tk 去了.从攻击的角度讲是成功的,然而演示效果并不好,因为实在太快了...然后是第二个脚本.突发情况出现了,预期中的网站内容被篡改并没有发生,我意识到不好,摁 F12,有个 warning:

Uncaught TypeError: Cannot set property 'innerHTML' of null

妈的!未找到元素!艹!当时我还以为是网站更新了,旧的选择器获取不到元素.然后换第三个脚本,仍然失败.此时我终于意识到问题所在:脚本注入的位置太靠前,执行之时页面还没有渲染完成!卧槽,这个问题我此前研究过,用变动观察器或者 CSS 动画事件都能解决,或者简单地加个 setTimeout() 也行,然而准备脚本的时候确实是赶时间,没考虑到这一点.Nexus 7 新装的系统,文件管理器都没有tieba_smilies31天,我想临时修改文件还得下个 Root Explorer! 还好社长给我解围,给其他社员安抚情绪tieba_smilies35不过因为浪费的时间太多,最终还是放弃了,转向下一个内容:ADB.

成功连接上了被我动过手脚的 Nexus 7 ,还好其它社员没发现异样.(后来我才知道当时在场的就有一个玩 Android 开发的,当时他正在 Android Studio 里写代码.惊出一身冷汗)然后我才回想起社长说过这是新装的系统,妈的, /data 下面毛都没有,我的设想中, /data/data 目录下应该充斥着几百 MiB 的隐私文件,然后我当众逐一翻看,像我知道的,有的浏览器把历史记录明文保存在 .db 数据库文件下,这种数据库一张表一张表地看肯定爽,而且我还连着投影仪的tieba_smilies50(当然这些是经过社长允许了的).然而此时的我看着空旷的 /data/data 目瞪口呆.

去 /system 转了圈,好像也没啥有趣的东西,把 build.prop 弄出来看了看,也就那样.

然后是 /sdcard ,首先是被我寄予厚望的 /sdcard/DCIM/Camera 目录,这个目录下存储的是拍摄的照片.我的设想中应当是有数不胜数的照片,然后 adb pull 命令全部扒下来,然后逐一观看,与众同享.然而 cd 进去,就一张照片,拉下来一看,妈的,全黑,随后社长才告诉我这可能是误操作拍下的.你能想象我当时那种心情?

然而为了我的演示能够顺利进行,社长当场使用 Nexus 7 制造隐私文件供我窃取,也是感人肺腑.于是有了下面这张照片(本次演示最有价值的战利品):

100

嗯,当场抓拍的我们另一个社长伟岸的背影.

然后大家集思广益,思考哪里会存在隐私文件.最终选择 Music 目录,嗯,很多子目录啊,去 Maroon 5 文件夹看看?屏幕上只显示出一个文件,仔细一看,嗯, This Summer's Gonna Hurt Like a Motherfucker. 好评如潮,全场沸腾.

扒下来一听,妈的还是未和谐版.tieba_smilies50

然后就完全是磨时间了,因为,真的,没什么给我窃取的了.果然,空的钱包不怕小偷啊.

所以这次演示并没有达到我预期的效果,总结起来,有这些原因:准备仓促,考虑不周,像 setTimeout() 那个 bug ,真的是非常可惜.另外过于标新立异,如果我当时选择我熟悉的 dSploit 也许就可以在社长的 Nexus 7 的 Android 6.0 上运行,可以窃取的东西自然要比一台刚刚装完新系统的设备要多得多.另外,因为经验不足,开始的时候插线浪费了太多时间.只能期望下次还能有机会(那大概是下学期的事了)的话,把那两个失败的脚本重新注入一遍,再尝试下 WirsShark 吧.

不过作为我的第一次尝试,应该说是还是很不错的tieba_smilies44.加油.

顺便:新年快乐!这是 2015 年的最后一篇文章.

>> EOF

One thought on “

发表回复

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