计算机安全的几种有趣的理论思路

前几天我在想,计算机安全有哪些有趣的理论思路。你知道,防御通常指的是一些被动的东西:密码、密钥、日志,有时还有“靠隐蔽求安全”(security through obscurity)、防火墙、各种防篡改手段等等。防御通常相当被动:你坐在那里等着,准备充分,随时准备抵御攻击者。但如果稍微换个做法,事情就有趣多了。免责声明:我们只讨论理论上的、守序善良(lawful-good)的做法。
设想以下几种场景:
- 服务器假装攻击已经得手,然后反过来攻击对方。反击可以是钓鱼,骗取攻击者的密码(干脆客客气气地向对方要,或者冒充攻击者那边的 SUDO 提示符,然后也许再 SSH 回去);也可以是迷惑攻击者,逼对方暴露真实 IP(打印一些根本不存在的错误码,让对方去 Google 搜索,再到一份假手册里读到相关说明)。再举个例子:真正的 SSH 用端口敲门(port knocking)的方法藏起来(见 https://en.wikipedia.org/wiki/Port_knocking),而在标准端口上响应的是一个假的 SSH 服务器。这个假服务器能做的事很多:给攻击者提供假信息,透露假的网络细节,还能提供假工具,用来做上面说过的所有这些事。
- 服务器反过来暴力破解对方,让对方难以暴力破解自己。回击时,服务器可以直接用对方暴力破解它时用的那些数据。
- 服务器向攻击者的客户端发起 DDOS 攻击,让对方难以连上自己。
- 服务器上装着定制的 VIM 脚本,让未经授权的人根本没法用 VIM,从而把对方搞糊涂(这事我亲身经历过,只不过我是有授权的:一位队友把自己的 VIM 脚本装到了服务器上,结果我完全没法用 VIM 了。我爱 VIM)
- 可以用机器人在空闲时段把服务器从网络上物理断开
- 空闲时段可以接上一台假服务器
- 服务器上一出现可疑操作,就可以触发机器人
- 可以用机器学习(准确地说,是训练)来识别攻击者(只凭对方在服务器上执行的那串终端命令)。然后照样可以让机器人把服务器物理断开。
- 好吧,也可以不用机器人,直接用防火墙或负载均衡器,但机器人更好玩
- 可以根据攻击者的网络特征来识别对方
- 服务器可以识别出由僵尸机发起的 DDOS,并尝试利用当初被用来劫持这些机器的类似漏洞,只不过目的不是劫持,而是发起一次“杀毒攻击”来治好僵尸机:在攻击服务器的僵尸机上部署并运行杀毒软件。为了让这一条留在善良的一边,我假定我们只治疗属于防御方的僵尸机/电脑。
- 服务器可以显示一条晦涩难懂的 SSH 消息来迷惑攻击者,比如假装自己是台冰箱什么的,还可以借此把攻击者引到网上专门准备好的 man 手册页之类的地方
- 服务器可以时不时地说,它知道你在干坏事,而且“组织”正在审查你。即使根本就没有什么“组织”。
- 服务器可以对攻击者撒谎,假装自己是台假服务器。撒谎没关系,尤其是在有人想抢你的时候。
还有
- 你还可以时不时地打印出 S̡̯̯̺̥̘̫͓̬̟͎͐͂ͥ̿̂̂͋ͭ̓͛̾ͭ̾̅̐ͨͥ͑͂̕C̶͈̳̪̱ͭ͋ͫͭ̀̆̈́̌̅̏̀A̶̎ͮ̐ͫ̃́̅̓̓͑̓̀͏̵̖̥͍̲̠̘̖Rͯ͑͑ͩ͏̢̠̜̜͖͕͚̞̗̘̼̬̣̀͜Y̵̩̱͙̪̲͍̣̖̹̘̲̬̬̭͌̂͗̉͛̈̀͜͞ ̴̸͚͎̯̞̼͇̯̝̣̪͙͑̒ͥͩͯ̈̔̄͋̕ͅṲ͕͍͕͎̘̭̜̲͉̆͑̉ͧ̈́ͥ̄̐ͪ̕͟͝ͅN̶̛̠̖͕̟̹͇̅͑ͮ̑̊͂̃ͦͯ͛ͧͪ̓͗ͪ̽͑͜͢͟Ḯ̴̸̷̶̢̺̼̦̹̩̪̩͚͉̘̬̘̗͍̘͎̮̞̲̐̒̆̀ͭ̾̿̒̓ͣ̉̚C̷̺̭̯̳͎͕͕̻̻̖̺̽̓̒̎̄̆̓̑̉̎̑̌̏͋̔̂ͭ͡O̢ͬͮͣ͋̑ͤ͆̚҉̹͎̱̘̤͔̲̜͔͍͚D̷̙̺̝̫̣̣̞̱͎̫̼͈͚̼ͤ̍̾̒ͣͤͮ͐ͧ̀̀ͥͬ̐́͡ͅḚ̶͙̬̥͙̙̼̥̪̦̤̠̮͐ͮ̎̒ͥ̕͟͡ ̢̢̛̬̫̣͍̇̀ͨ͒͗̔̓M͚̳̱̮̹ͭ̊̈̽̐̅̽̊̊̄̒̽͋̏̚̕͟Ȩ̡͈̬̤̖̜̲̣̠̤̪̣̭͓͈͊͋ͯ̿̋͒̌̏̎ͪ̿ͭ̊͑ͫ͋͡͡S̡̝̟͇͔̺̲͎̝̖͗ͧͦ̍͋̈̑͑̔̃̂̈́́̆̐͊̎̚͜͜͢͝ͅS͕̣̮͍̄͗̓̊͐́̈͐ͫͪ̓̈ͩ̂͆̕͠͠A͗ͩ̀ͥ͊̃̈́̓̀̄ͤ͒ͭ͑̊҉҉͔̭̟̹̯̼̪̱̥̱̪̻͔͍̬͡ͅG̴̡̛͌̋͆̑̓͋̈̿ͬ̌ͨ́ͩ̎҉̠̙̯̥̩̺̟̞̦͎̘̝̣̰ͅẺ̢́̇ͦ͂ͮ́͏͔͚̫̪̯̯̯̼̞̹̖͉̣S̶͈̹̝̦̭͙͖̘̭̥̳̩̟͙̮̩͕̍͋ͣͧͤ̚͟。
原文发表于 Medium:https://medium.com/@nettsundere/funny-approaches-to-the-computer-security-365d331ba2ec