网络技术是从1990年代中期发展起来的新技术,它把互联网上分散的资源融为有机整体,实现资源的全面共享和有机协作,使人们能够透明地使用资源的整体能力并按需获取信息。资源包括高性能计算机、存储资源、数据资源、信息资源、知识资源、专家资源、大型数据库、网络、传感器等。 当前的互联网只限于信息共享,网络则被认为是互联网发展的第三阶段。 计算机系统中,用户在一般情况并不直接与内核打交道,中间还有一层应用层作为接口在用户与内核之间相互作用着,但这种设计能够保护内核不会被用户肆意修改窥测,但也随之带来了安全问题,由于应用层并不是能完全信任之的,因此在操作系统安全功能中,往往会提供可信路径这一功能[这也是橘皮书 B2 级的安全要求]。可信路径[trusted path]是怎么样的概念?顾名思义,它就是这么一种功能的实现:避过应用层,在用户与内核之间开辟一条直接的可信任的交互通道。真的有必要那么麻烦,不得不在进行高风险操作时使用可信路径与内核互动吗?遗憾地告诉你:确实是!有经验的系统管理员普遍都很清楚来自网络的威胁有多么严重。黑帽子们能使用特洛伊木马[Trojan horse],记录你在登陆及其它敏感操作时的行动,从而窃取你的宝贵口令。 你一定对"ctrl + alt + del"三键序列极有印象,在DOS年代,我们用它快速重启机器,并称之为"热启动",而在WINDOWS 9X时代,我们则用它查看进程,不过也许你没有注意到,在WINDOWS9X 向WINNT过渡后,我们的PC也运行着NT内核的WIN2000/XP时,事实上"ctrl + alt + del"三键的职能已经有了些微改变,微软在它的官方文档中,称"ctrl + alt + del"为SAS[Secure Attention Sequence],并且将之列为安全功能-可信路径的构成部分,而在linux下,也有着类似的按键序列可用。 Linux 环境下的安全留意键—— SAK[Secure Attention Key],这个SAK是一组键, 在我们常见的X86平台下,它是"alt+sysrq+k",而在SPARC下,SAK则是"alt+STOP+k", SAK默认不打开,需要用 echo "1" > /proc/sys/kernel/sysrq 这条命令激活,当然,你也可以将它写进登录脚本中,这样就不必每次麻烦了。对SAK实现有兴趣的朋友,可以参考参考 linux/drivers/char/sysrq.c和 linux/drivers/char/tty_io.c::do_SAK "sa'K' (Secure Access Key) is usefull when you want to be 这段话正是SAK的功能写照:SAK对你确定在登陆时没有试图窃取密码的特洛伊木马程序运行在当前控制台上,它能杀死当前控制台上的全部应用程序,以此令你确信看到的登陆画面来自init,而非木马程序。当你按下这组键时,也就是引发了这一特定事件,那么按照设计的流程,系统陷入核心状态,这时你将可以直接与内核沟通,也就是说,出现在你的“理应”是如假包换的真实登陆提示信息,为什么是理应?我们下文分析:-> 在讨论SAK的脆弱点之前,我们先来看看当你按下SAK时,系统发生了什么事情吧,当系统处在正常状态下时,用户按下键盘时,此事件将进入核心以解释,若其扫描码对应为SAK,则内核将找出引发此SAK的终端,之后为了创建可信路径,则需要杀死所有非核心进程,也就是说在此时,任何此终端上用户建立的进程都将死亡,当然,可能存在的木马进程也被杀死了,系统最后将重新打开登陆进程,使用户获得放心的交互。 注意: 刚刚我们已经了解了linux操作系统下的可信路径的相关知识,但是我想已经有不少朋友更想了解在WINDOWS NT/2000/XP下的可信路径的情况,Now,let's go. 在NT系列windows操作系统中的可信路径的引发方法是把 ctrl+alt+del这三个键同时按下,这称为标准SAS[Secure Attention Sequence],当系统检测到一个标准SAS序列的扫描码时,将由winlogon 进程将系统设置为已注销、已登陆、已锁定三种不同状态,然后切换当前桌面到 Winlogon 桌面。不过要注意到,WINDOWS中的可信路径的实现似乎与linux下大不一样。比如在WIN2000下,按下ctrl+alt+del,切换到winlogon桌面,但是当前用户的进程并没有在这个时候被杀死,比如你可以听着mp3按ctrl+alt+del,这样做你将在winlogon桌面下,照样听mp3,如果其意义是需要注销再登陆,那自然的,注销的时候,当前用户的进程都会被杀死,不过那样的操作从开始菜单中的关机命令有什么区别,并且,我们也可以在winlogon桌面上边改密码边听着mp3,不会有木马在后台偷偷地记录吗?对,用户进程并不是像在 linux 下那样被简单地杀死,事实上,在winlogon 桌面初始化过程中,创建了三个桌面:应用程序桌面(\Windows\WinSta0\default)、Winlogon桌面(\Windows\WinSta0\Winlogon)和屏幕保护桌面(\Windows\WinSta0\ScrenSaver)。而在安全策略上,只有winlogon进程可以访问到winlogon桌面,其它两个桌面才允许用户及其所属进程访问,因此虽然用户进程在SAS激发后并不会被杀死,但它们也不能访问winlogon桌面以偷窃用户口令,这就是“Windows特色的可信路径实现道路” :-> 等等,你也许会想到GINA木马,它不就是伪造的登陆窗口吗?在登陆到windowsNT时,我们按下ctrl+alt+del这个所谓的可信路径时,怎么没有将它杀掉?事实上,GINA木马并不是直接击败可信路径这一功能,而是破坏了可信路径下层的TCB,改变了TCB中软件结构的一部分!现在我们来回忆一下GINA木马的一些细节,还记得吧? GINA[GINA: Graphical Identification and Authentication,图形身份验证 ] 在windows中,缺省的GINA就是msgina.dll ,它是运行在winlogon.exe的进程空间中的,由注册表中\HKEY_LOCAL_MACHINE\Softwar NT系列windows操作系统的启动过程中关于SAS的定义过程是:
可信路径这一安全机制在现代操作系统的发展上,已经是看的见风景的房间,虽然现在并没有什么程序或方法能直接击败它,但这并不说明它就是绝对安全的,从橘皮书的角度来看上,现在WINDOWS和UNIX两大主流操作系统中,在定义层面上对它的实现还不严格,我们不妨翘首以待可信路径这一机制的实现越来越安全。 网络的神奇作用吸引着越来越多的用户加入其中,正因如此,网络的承受能力也面临着越来越严峻的考验―从硬件上、软件上、所用标准上......,各项技术都需要适时应势,对应发展,这正是网络迅速走向进步的催化剂。 |
温馨提示:喜欢本站的话,请收藏一下本站!