漫谈网络安全(连载五)-操作系统安全

admin 2024年5月6日16:10:31评论5 views字数 3684阅读12分16秒阅读模式

刚刚接触计算机的时候,非常羡慕哪些程序员,在键盘上无规律的敲击出一行行指令和代码,然后将核弹系统牢牢掌握在自己的手里,最后就是按一下Enter,这个世界就变成了另外一个模样。

由于受到早期单片机开发的影响,开发者往往更加关注功能的实现,在单片机有限的存储和处理能力下,不可能增加更多的功能之外的控制手段,即使大家知道存在的问题,也只能“视而不见”。但是老一代的开发人员会更加关注代码的缺陷问题,即使当年的代码没有真正讨论安全问题,但是代码的可靠性在当时的技术水平下远高于现在。在我印象中,用标准正版的WPSDOS版本,几乎没有发生过中断或者溢出的现象,但是很多破解版或者非商业版却会屡屡发生程序运行过程中的跳出,这个问题其实就是在破解后所产生的WPSSPDOS/UCDOS在程序运行过程中产生的内存中断所导致的表现,这在当时乃至现在都不会被列入安全问题,而更多的会认为是程序故障。这种思路暂时先留在这里。

当我最初接触计算机的时候,听到有关网络安全问题的第一个谜题就是计算机病毒。如果说磁芯大战[1]作为病毒的雏形,其目的只是一个游戏,那么真正意义的计算机病毒应该算是巴基斯坦兄弟巴斯特及阿姆捷特为打击盗版编写的C-BRAIN,这两兄弟经营一家贩卖计算机的商店,但是软件经常被人盗拷,而且这种风气当地盛行,为了有效的打击盗版,所以编写了C-BRAIN,只要有人盗拷软件,这个病毒就会将盗拷者剩下的硬盘空间吃掉C-BRAIN也被认为是计算机病毒的始祖,最早的电脑病毒由此产生。可能真正意义上我们所宣称的计算机安全产业由此开始。

的确,早期计算机病毒虽然简单,甚至过多的属于娱乐性制,比如:小球病毒,但是黑色星期五带来的危害却是显而易见。计算机病毒成为破坏操作系统的重要来源,而且其显著的特性,这对可执行文件(.EXE.COM.BAT)使其产生的对抗手段往往比病毒本身更广泛;比如:Command病毒,在不同的DOS版本下,Command.com的字节数是不变的,只需要记住他大概的字节数,每次开机,dir查看command.com,比对字节数就能有些识别这种病毒,它往往会把自己加载在文件之后,如果发现感染病毒,直接用干净的软盘启动并替换新的干净文件即可。当然,不是你幸运到每次遇到的都是在这种病毒。但是,在当时有一个最大的优势就是在没有互联网或者任何网络通信的情况下,计算机病毒的导入只有一种机会,利用软盘,直到后来出现了光盘、U盘、网络等等接入模式,才丰富了计算机病毒(后续应该成为恶意代码)的导入途径,使得用户防不胜防。其实直到现在我们都在纠结一个问题,要不要安装杀毒软件。正如前面所说,其实,良好的使用习惯才是对抗各种计算机病毒的最有效手段。就和我们要不要去打预防针,要不要去吃各种补品一样,从哲学角度而言,事务之间本身就是一个矛盾体,失之东隅补之桑榆,当你增加一种新的防护手段的时候,实际上这种手段又会为你带来新的迷茫。

计算机病毒产生将网络安全问题从自主模式转向了非自主模式。也就是说,早期在物理攻击下,攻击者能控制攻击的过程、行为、后果;但是计算机病毒开始,使得攻击本身已经不受病毒制造者的约束,而完全由病毒自我决策。这是一种非常恐怖的行为,随着数字化场景的不断实例化,当人们越来越多的应用数字产品、依赖数字产品时,我们在不知不觉中就已经被更高级的计算机病毒所左右。MOSS不仅仅会发生在《流浪地球》中,也许有一天,MOSS的事实会真实的再现于我们的生活。因为谁都不能预测软件会实现什么,谁都不能去预测具有智慧的数字生命体会做什么,一旦他做什么,谁能控制它的行为?

为什么在这我会提到萌芽中的软件安全问题。人们最初的软件安全开发的动机并不是为了对抗攻击,更多的是为了提升软件质量,可能大家还记得我前面提到的TCSEC,在美国国家安全局为美国DoD开发这套标准的时候主要针对美国军方所使用的操作系统进行了严格的定义,一方面强调软件本身的基础能力问题,一方面针对操作系统的使用能力通过访问控制机制进行了限制,同时特别提到了在B2级中的隐蔽信道保护问题。隐蔽信道时至今日依旧是一个很大的安全隐患,他可能是由于开发人员能力问题产生的,也可能是开发者基于某种特定目的构建的。可能细心的读者会问,为什么没有SDK软件供应链问题,很遗憾,80年代可以使用的SDK微乎其微,那个年代的开发者基本都是靠自己的智慧在搭建代码,而不是Ctrl+C+V。有关TCSECITSECCC个人认为是作为合格的网络安全工作人员必须要知道甚至要能理解的。后来很多国际、地区和国家标准都在此基础上构建甚至是继承。有关这方面的内容太过枯燥,在本版本不做单独累述。

早期的操作系统没有访问控制能力,比如:DOS,用户开机直接使用,因此我们会通过硬件的BIOS开机加密的模式进行基础保护,实际上一旦物理主机能够被控制,这种加密基本不会产生太大的作用,用短路法,在BIOS引脚出用小刀快速划过就可以清零BIOS,知道后来,主板使用纽扣式电池时,才可以通过拆除电池的方式放电重置。

即使到了Windows时代,Windows3.2以前的版本没有访问控制能力,Windows959798以及XP SP3以前的版本使用自主访问控制,密码文件写在SAM文件中,但是当时的SAM文件仅仅是一个文本文件,里面保护口令的SHA散列,删除该文件就会重置Administrator口令,而这些操作系统都依赖于DOS平台,因此,DOS启动后进入命令行界面删除文件成功。直到Windows XP SP3以后,SAM变成一个LDAP的轻量级数据库格式,并且将SID作为关键索引关联用户名后,这个问题才得到缓解。此时我们删除该文件后,系统重构的文件中由于缺少SID关联,从而使得所有重构的用户名无效。

此处说明:由于笔者很少使用Linux系列操作系统,因此此处有关此类操作系统的问题不做非专业描述,敬请见谅。

在这个年代实际上产生了另外一个有趣的知识领域,这也是软件安全开发过程需要对抗的一个问题:逆向。其实最终我对逆向这个概念是完全懵懂的。作为非学院派出身的非专业人员而言。90年代我们在玩RPG游戏的时候,为了能够更快的过关,往往会通过存储进度文件利用PCTOOLS工具分析相关参数,比如:攻击力、血量、防御值,找到这些值的断点进行修改,在十六进制中,当然是FFFF为最大了,有些游戏在修改后你会变成天下无敌,但是有些游戏本身设置了内存变量的参数,你的修改会导致游戏直接崩溃。后来游戏设计者为了对抗这种修改,开始使用动态参数的模式,PCTOOLS很难做动态捕捉,于是国内产生很多类似的游戏修改工具,比如:金山游侠。实际上,逆向工程在90年代我们所看到的更多是发挥在软件盗版中,当然,有时候,企业为了对商业软件做二次开发而不想花费额外费用的时候同样会通过逆向反编译程序。

从操作系统开始,人们进入了真正的网络安全初始时代。操作系统安全是整个网络信息安全的灵魂,如果说硬件CPU是人的大脑,操作系统就是整个人的中枢神经,CPU通过运算利用这个中枢神经将指令传递到每一个功能,形成有机的组合,为人的行动提供活动的指引,一旦失去了对操作系统的控制,人本身的能力将会被剥夺。一切应用软件活动都是建立在操作系统基础之上。真正步入网络安全领域应该从操作系统开始,它可以为人机交互提供一种直观的可视化视角去分析ICSIoTAI以及更广义的网络安全领域。

[1]磁芯大战的游戏有多种,例如有个叫爬行者的程序(Creeper),每一次执行都会自动生成一个副本,很快电脑中原有资料就会被这些爬行者侵蚀掉;侏儒Dwarf)程序在记忆系统中行进,每到第五个地址address)便把那里所储存的东西变为零,这会使原本的程序严重破坏;最奇特的就是一个叫印普Imp)的战争程序了,它只有一行指令,那就是“MOV 0,1”,其中MOV“Move”的简写,即移动的意思。它把身处的地址中所载的“0”写(移)到下一个地址中,当印普展开行动之后,电脑中原有的每一行指令都被改为“MOV 0,1”,换句话说,荧光屏上留下一大堆“MOV 0,1”。在那些日子里,电脑都没有连线,是互相独立的,因此病毒瘟疫很难传播。如果有某部电脑受到感染,失去控制,工作人员只需把它关掉便可。但是当电脑连线逐渐成为社会结构的一部分之后,一个或自我复制的病毒程序便很可能带来无穷的祸害了。例如爬行者程序就能够从一台机器到另一台机器中。因此长久以来,懂得玩磁芯大战游戏的电脑工作者都严守一项不成文的规定:不对大众公开这些程序的内容。 1983年,这项规定被打破了。科恩·汤普逊(Ken Thompson)是当年一项杰出电脑奖得奖人。在颁奖典礼上,他作了一个演讲,不但公开证实了电脑病毒的存在,而且还告诉所有听众怎样去写自己的病毒程序。他的同行全都吓坏了,然而这个秘密已经流传出去了。

原文始发于微信公众号(老烦的草根安全观):漫谈网络安全(连载五)-操作系统安全

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年5月6日16:10:31
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   漫谈网络安全(连载五)-操作系统安全http://cn-sec.com/archives/2711044.html

发表评论

匿名网友 填写信息