第一章:赌场黑客轻取百万美金
一.故事经过:
20世纪90年代 Alex及他的三位技术大牛朋友过着慵懒和乏味的生活,于是他们决定去赌场寻找一些刺激…如何用技术去变现让他们赢的更多获得更大的成就感成为他们破解“老虎机”并入侵赌场的原动力。
Alex一行四人各怀绝技,分工协作:购买老虎机->拆解老虎机->提取二进制程序->逆行分析汇编代码;等一些列分析、研究的过程,让他们找到了老虎机洗牌、发牌等核心工作流程中的脆弱性:不安全的随机数算法。
不安全的随机数生成算法,使得Alex他们能够预测下一个随机数,即能帮忙预测到他们想要的牌面如:同花顺何时到来,这样就让赌博变为稳赢不赔的买卖。
Alex利用这样的漏洞,入侵赌场,相互协作让他们赚的彭满钵满。同时不忘优化入侵流程。将需要“打电话”沟通当前随机数位置这样的繁琐操作,逐步工具化进一步让他们的利益扩大化。
贪婪最终使得他们的行为暴露,但4位黑客身上的品质和成事的经历给了作为安全从业人员有着不小的启示。
二.故事涉及的安全知识点:
Donald Kunth 的伪随机数算法的脆弱性:
该伪随机数生成器并不能真正产生随机数。相反它仅仅是将一串数字任意的排好序。这里可能是 2的32次方,即40亿个数。随机数算法生成数字时是从数据列表中任意一个位置开始,依次取列表中的数据。因此是可预测的。
(不可预测性,是当前密码学算法的基本要求)
三.故事的启发:
a.犯罪动机与安全风险:
黑客的犯罪动机无非两种:经济利益或装B ,系统的的攻击面往往大于你所能投入的安全治理资源。那么从黑客的视角出发,重点关注与“钱”相关的业务是合理的。作为渗透或蓝军相关工作的同学,持续为自己找到前进的动力也非常重要。
比如持续SRC挖掘高价值漏洞,赢取死工资之外的奖励就是持续学习的很高的内驱力来源。
b.渗透测试团队的建设:
渗透测试是一个对于技术深度、广度要求都比较高的工作。测试团队的建设应该遵循团队木桶效应,即各怀绝技但团队无短板的原则。文章中:Mike:擅长硬件;Alex擅长密码学;Larry擅长组织;Macro擅长程序。这才是的4人团队在入侵中大获全胜。
c.工程师的坚韧与执着:
购买老虎机->拆解老虎机->提取二进制程序->逆行分析汇编代码;等一些列分析、研究的过程,在当时互联网还不够发达、程序分析工具匮乏的年代是相当不易的、图书馆查阅资料、晦涩难懂的汇编逐步抽丝剥茧分析出程序的核心脆弱性是相当有韧性的。
有了成稳定的赌场分工与协作技术和流程之后,他们还不忘迭代和优化,逐步将一些繁杂的“打电话”的流程进行优化、工具化这种“不满足”的精神十分难能可贵。
d.测试人员的思维和心理学:
《软件测试的艺术》这边书中第一次提到“测试心理学”这样的一个概念;如果你认为这个系统是健壮的、优秀的你多半无法发现Bug或漏洞;反之你坚信这个系统必然是存在缺陷的,你会积极的去思考可能存在问题的场景或者测试数据并付之于行动。结果自然也决然不同。
文中Alex对于老虎机存在不安全伪随机数算法的大胆猜测,并不断的编写代码进行测试,并最终获得成功。正好印证了“测试心理学”的重要性。