黑客思维养成记 ——黑客的“小鸡”

 

作者:閦蠱@Duncan SecTeam

0x.00、引言

为了给Duncan SecTeam做一些技术分享,思前想后,我觉得有必要利用假期先分享一些思维方式方面的东西,因此才想写一些关于“黑客思维”方面的文章,于是有了这篇探索性的文章。本文纯属个人经验之谈,尚不成熟,见笑了。

其实,第一次听说“黑客思维”(hacker’s mindset)这个词,是源自TedEx上的一个美国小黑客分享的演讲。透过这些年经历的各种事情,自己关于这个词的思考更为深入,也有了一些自己的看法,然而苦于没有一个好的案例(既能体现思维,又能让初学者体会深刻)。最近,恰逢网络安全教学工作要求,自己又开始琢么着找个好的切入点,把“黑客思维”这个东西说得直白一些,贴切一些,不能向像哲学那么艰涩,但必须包含思维层面的抽象和方法论。经过一段时间的素材搜集和酝酿,自己对“黑客思维”的引入有了些信心,并且希望在Duncan SecTeam的培训中尝试着逐步总结和升华。鉴于自己时间并不充裕,而且自己有很多有意思的点子需要实验验证,因此“黑客思维”培训这个系列文章大概率只能断断续续的延续下去,反正有感而发吧。

 

0x.01、关于黑客的“小鸡”

因为一直在做IoT和Android设备安全性研究,所以自己一直混迹于某宝和咸鱼这个小圈子,目前已经练就了一双火眼金睛,能快速识别专注7天机和洋垃圾翻新的二道贩子。当然,这一切还是N次跳坑和出坑之后总结的经验。某天,发现xx宝上面有些减压游戏,反正刷机和重装系统等得也够烦的,于是就开始了一发不可收拾的养鸡生活。因此,我这里所说的黑客的“小鸡”也就是xx宝里那个一丝不挂的小鸡(过年了,穿的稍微喜庆了一点)。

或许,大家会觉得很搞笑!这“小鸡”除了一丝不挂,一毛不拔之外,还能有啥呢?那么,我就先抛出一些问题,算是博一下诸位的眼球吧:

——1.在一分不出的情况下,一只小鸡一天最多可以获得多少饲料?

——2.小鸡要获得最多饲料的情况下,你所需付出的最小代价是什么?

——3.一只小鸡通过走路的方式一天最多可以获得多少运动币?

——4.一只小鸡获得最多运动币的情况下,你最少要走多少步?

如果你能就以上问题给出很酷的答案,那么恭喜你,你有着与众不同的“黑客思维”!

 

0x.02、“小鸡”,饲料与走路

xx宝的每一只小鸡都隶属于某一个xx宝账号,每一个小鸡都有一个对应的饲料筐,根据小鸡的级别,饲料筐的容量会逐渐增大,直到最大值1800克(已经验证过)。小鸡获得饲料的方法有许多,比如去做一些看似无聊,有时却能让你会心一笑的“课堂”练习,逛一逛“橱窗”等等。

当然,乍一看,我说的这些跟电视上,银幕上酷酷的“黑客”貌似没有一点关系。那好,我就接着说小鸡吧。这个小鸡游戏,如果抛开娱乐的东西来看,它本质上就是一个受限计算平台,跟一个路由器,AP在本质上没有多大的区别,只不过它的输入就是你与小鸡的互动,包括领饲料,喂鸡,收鸡蛋,走走路,慈善捐赠等等。好了,我们再来看看各种“黑客”所做过的那些很酷的事情。1970 年,一个叫做 John Draper 的退伍空军电子技术员,发现Cap’n Crunch早餐麦片附赠的玩具口哨发出的 2600 赫兹声波和电话交换机的频率相同,这意味着可以通过口哨来欺电话系统,让系统误以为通话停止而中断计费,从而达到免费打电话的目的。好了,你们是不是觉得xx宝小鸡和Cap’n Crunch麦片中的口哨有一些共同之处了呢?

既然,我们已经剥离了小鸡自身的娱乐属性,那么我们就来看看,怎样才能做到不花一分钱就获得最多的饲料。作为一位xx宝资深的小鸡游戏玩家,我找到了以下方法:

——“领饲料”

——“运动会”

——好友的捐赠:好友代为养鸡,送小麦等

——xx宝各种节假日的口粮,汤圆,柿饼,节日专供鸡饲料

在不考虑特殊节假日及好友捐赠的情况下,小鸡每天能够获取鸡饲料的途径与饲料重量如下:

——逛“小鸡橱窗”:180g

——“小鸡课堂”:30g | 180g

——“运动会”:
—>“星星球”:0g | 60g | 120g | 180g
—>“登山赛” :0g | 60g | 120g | 180g

因此,在不花一分钱的情况下,你的小鸡每天最多可以获得720g饲料。

当然,你可以通过慈善捐款(至少0.01元),额外获得180g饲料;通过向“余额宝”发起一次转款(至少0.01元),你可以再获得180g饲料;如果,你刚好需要点个外卖或则点个下午茶,你又可以额外获得180g饲料;当然,你在实体店支付一笔钱,你还可以获得180g饲料。这样算下来,当你付出一个外卖点单+一次0.01元起的慈善捐款+一次实体店付款+一次线上支付,你每天可以累积获得1440g饲料,当然前面的条件是你需要为此付出的最小代价。

仔细琢磨一下,这与Cap’n Crunch口哨之间貌似还是有些关联的。对于电讯产业初期以及互联网初期的黑客,我个人是很推崇的,他们的技术更多是直接来源于Cap’n Crunch麦片这样的生活点滴,没有过多地(甚至可以说,几乎完全没有)商业或者利益的掺杂,没有黑产和灰产,没有网络暴力和犯罪,一切都是纯粹的技术。当然,技术并非是惟一的,还有就是这些黑客技术背后基于兴趣的不断尝试,探索,总结和改进,推动技术不断向前发展。

 

0x.03、“小鸡”与运动币

前面一个案例,我们明白了xx宝小鸡的本质就是一个受限计算平台,也就是说只能通过特定的受限操作与小鸡互动,从而使游戏产生有利于自己或者几乎受控于自己的结果。接下来,这个案例则是一个高阶版的,更能体现黑客思维的案例——小鸡走路。

玩这个游戏的初衷其实很简单,我觉得让全国各地贫困地区的小朋友拥有一个塑胶足球场很酷(想想国家男足这些年的表现,我觉得这游戏简直酷毙了)。一开始,我觉得每天捐步一次,就可以获得一个随机的奖励值,一般是0-3个运动币(不知道是不是基于xx宝区块链来实现的)。那么,为什么会是0呢?其实,这个0值并不准确,因为0代表的是一个“变身卡”奖励,可以将小鸡的头像更改为仙人掌,洋葱头等等(特别丑的形象)。那么,在总结到这个规律后,我们可就不满足了,毕竟黑客都是“贪婪”的,黑客都是“懒惰”的,我们希望用更有创造力的方法去解决哪怕是同一个问题。

那么,我们能不能多戳几次小鸡,让它每天多跑几趟呢?答案是肯定的,只要你愿意走路,小鸡就可以反复跑。于是,我尝试在一天不同时候去走路,得出的结论是:每一次走路,得到的奖励基本上都是与前面的规则吻合的,只是偶尔会在晚上的时候,出现一些金色的奖牌。

那么,为什么会有这些奖牌呢?为什么晚上才会有这些奖牌呢?这些奖牌的奖励额度是按照什么规则设置的呢?那么,我们需要设计一系列的测试,并且做好相应的记录,这样能够在不购买测试设备的情况下就完成这些实验。

在每天晚上,我会有意识的打开小鸡走路,观察时间,当天走路的总步数以及当前可以走的步数,注意这三个就是在小鸡走路这个受限计算平台上的输入变量。通过多次实验,我发现奖励与具体的时间点没有直接联系,能够开启奖牌奖励的关键变量是当前累积走路的步数,确切的说,当天累积不行总数超过1万步以后,每次走路都能触发奖牌奖励。由于奖牌奖励的临界值是1万,因此这会让人产生一种错觉,只有在晚上的时候才会触发奖励机制。毕竟,大多数用户很难在早上或者傍晚之前走到1万步。其实,这就是黑客思维的一种体现,观察到一个有趣的现象,思考可能的原因,设计一系列的实验,完成验证实验,分析并找出原因。

在得到1万步这个奖励临界值之后,我们可以做进一步的实验,比如每天最多能领到几次奖牌?每次至少做多少步才能触发奖牌奖励机制?每一次的奖牌奖励的运动币大概在哪个范围?这里,我就不细说了,有些乐趣是需要大家躬身实践才能得到满足的,晒几张图,算是抛砖引玉吧。

这里,可以插入一个关于庞帝雅克汽车和“香草冰淇淋”的故事。一天,一个客户写信给美国通用汽车公司的庞帝雅克部门,抱怨道:他家习惯每天在饭后吃冰淇淋。最近买了一部新的庞帝雅克后,每次只要他买的冰淇淋是香草口味,从店里出来车子就发动不着。但如果买的是其它口味,车子发动就很顺利。庞帝雅克派一位工程师去查看究竟,发现确是这样。这位工程师当然不相信这辆车子对香草过敏。他经过深入了解后得出结论,这位车主买香草冰淇淋所花的时间比其它口味的要少。原来,香草冰淇淋最畅销,为便利顾客选购,店家就将香草口味的特别分开陈列在单独的冰柜,并将冰柜放置在店的前端;而将其它口味的冰淇淋放置在离收银台较远的地方。在一番调查之后发现,庞帝雅克汽车的确对冰淇淋的口味不敏感,问题是出在“蒸汽锁”上。当这位车主买其它口味时,由于时间较长,引擎有足够的时间散热,重新发动时就没有太大的问题。由于买香草冰淇淋花的时间更短,引擎还无法让“蒸汽锁”有足够的时间散热。仔细想想,要找个Bug还挺难的,不喜欢香草口味的冰淇淋能找到这么奇葩的bug吗,没有庞帝雅克汽车能找到这不够吗,更别说那种百万美元级的“大洞”了。其实,IoT安全和智能终端设备安全的确面临这种很实际的问题,需要有一定的“实力”才能进行相关的研究,这一点很像互联网初期的黑客(如有大厂的朋友关注文章的话,希望可以捐赠我们一些工程机(新机当然更好啦)用来研究,我们一定投桃报李)。

言归正传,既然我们知道了,当天累积步数超过1万步时,可以触发系统奖励机制。那么,回过头来想想,一定要在每天的不同时段才能让小鸡走路吗?小鸡走路的限制是不是也受制于每次可走步数的多少呢?每次走路只要达到了最低可走步数就能得到运动币吗?如果不是的话,每次至少走多少步才能保证获得运动币呢?

那么,我们又可以来设计一系列的实验,比如100步走一次,200步走一次,300步走一次,400步走一次,500步走一次等等。当然,也可以通过有名的二分法,快速收敛,找到每次走得获得运动币所需走得最少步数。乘着过年,大家可以出门走动走动,一方面,可以验证我得到的结论是否正确,小鸡走路的时候是否还有其它的隐藏关口等等;另一方面,过年期间,蛋白质和脂肪摄入量相对于平时大大增加,多走路,有助于消化,保持身心健康。

我比较懒,采用的是间歇性“2分法”(很难在一天内坚持做完这个实验)。我发现,1000步以上必然可以得到0~3个运动币;当单次可走步数在[500,1000)这个区间时,同样可以获得0~3个运动币;当单次可走步数在[100, 500)时,不会有任何运动币奖励,哪怕是“变身卡”。由于我采用的是“间歇性2分法”,我的确节约了一些时间,但是也因此付出了更多的时间,因为必须在500步这个临界值上进行多次实验。

接下来,我们再来看看前面的问题。一天之内,黑客的小鸡最多能够获得多少运动币呢?

按照下面这个思维导图,我们可以推算出,运气糟透了和运气爆棚的时候,小鸡可以单日可以获得的最多运动币分别为:0个运动币和57个运动币。

同样,要想在单日内获得最多的运动币,你至少需要走完11500步。

当然,有些情况我并没有考虑在内的,比如:

——某一次走路时,刚好完成了某一条走路的线路,这时会获得线路奖励的运动币和变身卡。

——在测试过程中,我发现当日累积步数在9800步左右时,如果下次走路能够突破1万步,那么系统会给予单次步数奖励和奖牌奖励。在这种临界条件下,此次获得的奖牌奖励是否会计算在单日3次奖牌奖励中,还没能完全证明。

 

0x.04、“小鸡”与“黑客思维”

黑客的“小鸡”应该算是一个不错的引子,希望通过这个例子以一种另类的方式与大家分享“黑客思维”。在我看来,“黑客思维”应该有这么几个特征(见笑了):

——保持对技术的兴趣和敏锐,总是能发现生活中那些有趣的技术问题。

——善于总结经验,但却不完全依赖于经验,敢于说“不”,善于从非常规的角度看待问题,或许这与安全圈很多大佬所谓的“发散思维”有些相似吧。

——拥有理性的思维,保持理性思考的习惯,这能使得你更快的解决问题,看到问题背后隐藏的本质。

——敢于突破,能够打破“受限计算平台”的各种限制和束缚,最大化利用你所想要pwn的平台。

(完)