翻译:中国科学技术大学信息安全专业老师 有许多附加的Unx安全产品来管理安全特性和检查当前安全状态。两个流行的检查工具是COPS[54](还有[50 和 SATAN。它们搜索已知的安全漏洞,比如弱口令、文件和目录的不安全许可设置,或者有毛病的配置文件。系统 管理员可以使用这些工具来检测他们管理的系统中的漏洞。不过,这种做法不太普遍,因为它们可以被攻击者用来实 现几乎一样的目的 进一步的阅读 这一章对Unⅸx安全进行了概览。如果你想要进行更深的了解,关于这方面有很多书籍,比如[36,50,55162]。SRl 的Unx安全技术报告在 http://www.sriuclac.be/sri/DocuMentS/unix-secure 如果你需要有关特定Unix版本的信息,请垂询制造商提供的文档和系统提供的在线文档。本章给出的大部分例 子已经在一个 DEC-Unix机器上进行了测试,在不同的Unix版本上,也许需要修改。Linu是一个免费的Unix。 Linux 上安全信息的一个来源是 http://bach.cistempleedu/linux/linux-security/ 不同安全层次(多级安全, multi-level security)的Unⅸx系统在[132中进行了讨论。计算机紧急事件响应小组CERT 定期发布安全产品的报告。一般信息请浏览他们的主页: http:/info.cert.org 对于CERT的用户/订阅者也可以从他们的FTP服务器上下载报告: ftp: //info. cert. org/pub/cert advisories/ Wietse Venema的主页: ftp: //ftp win. tue. nl/pub/securitv/index. html 上有和Unx安全相关的工具和论文。SR的入侵检测专家系统的研究在[92,72]中记载。商业Umx审计产品的主页是 http://www.axent.com 对一些入侵检测系统的最新的分析在 http://www.secnet.com/nav2.html 练习题 练习61查看安全相关命令的在线文档,找到在/ etc/passwd中你自己的条目,并查看你的文件和目录的许可权设 置 练习62在你的根目录下创建一个子目录,放入一个带有短消息的 welcome txt文件。将这个子目录的许可属性 设置成属主可执行,然后: 用cd命令使该子目录成为当前目录 列此子目录的文件清单 显示文件 welcome. txt的内容 在子目录中创建 welcome. txt的一个拷贝 再分别对此子目录设置读许可和写许可,重复上述练习 练习63你怎样保护一个终端设备(ty)不被其他用户访问? 练习64你能够在3.6.3节的wsTa能力框架下,通过UID、GID和许可权,来捕获Unⅸx的访问控制吗? 练习65你应该怎样设置备份过程来减少安全漏洞? 练习66应用Unix安全机制实现中国墙模型和 Clark- Wilson模型。 练习67哪条Unx命令可以列出你的目录下所有其他人可以写的文件 练习68你认为Unx系统安全的强处和弱点是什么?就此写一个1000字左右的短报告。 第7章 Windows nt安全 Unⅸx安全一章可以用作一个实例来学习操作系统提供的基本安全机制,但几乎没有触及到用这些基本机制实现整 体安全问题。解决这个问题需要附加的用作控制的中间层次。其他的实用重点领域是安全的特性的管理和对系统管理 者的安全控制。本章将通过讨论 Windows nt的安全,在这些方面作介绍 页共45页创建日期:2003-11
翻译:中国科学技术大学信息安全专业老师 第 11 页 共 45 页 创建日期:2003-11 有许多附加的 Unix 安全产品来管理安全特性和检查当前安全状态。两个流行的检查工具是 COPS[54](还有[50]) 和 SATAN。它们搜索已知的安全漏洞,比如弱口令、文件和目录的不安全许可设置,或者有毛病的配置文件。系统 管理员可以使用这些工具来检测他们管理的系统中的漏洞。不过,这种做法不太普遍,因为它们可以被攻击者用来实 现几乎一样的目的。 进一步的阅读 这一章对 Unix 安全进行了概览。如果你想要进行更深的了解,关于这方面有很多书籍,比如[36,50,55,162]。SRI 的 Unix 安全技术报告在: http://www.sri.ucl.ac.be/SRI/documents/unix-secure 如果你需要有关特定 Unix 版本的信息,请垂询制造商提供的文档和系统提供的在线文档。本章给出的大部分例 子已经在一个 DEC-Unix 机器上进行了测试,在不同的 Unix 版本上,也许需要修改。Linux 是一个免费的 Unix。Linux 上安全信息的一个来源是: http://bach.cis.temple.edu/linux/linux-security/ 不同安全层次(多级安全,multi-level security)的 Unix 系统在[132]中进行了讨论。计算机紧急事件响应小组 CERT 定期发布安全产品的报告。一般信息请浏览他们的主页: http://info.cert.org/ 对于 CERT 的用户/订阅者也可以从他们的 FTP 服务器上下载报告: ftp://info.cert.org/pub/cert_advisories/ Wietse Venema 的主页: ftp://ftp.win.tue.nl/pub/security/index.html 上有和 Unix 安全相关的工具和论文。SRI 的入侵检测专家系统的研究在[92,72]中记载。商业 Unix 审计产品的主页是: http://www.axent.com http://www.ov.com 对一些入侵检测系统的最新的分析在: http://www.secnet.com/nav2.html 练习题 练习 6.1 查看安全相关命令的在线文档,找到在/etc/passwd 中你自己的条目,并查看你的文件和目录的许可权设 置。 练习 6.2 在你的根目录下创建一个子目录,放入一个带有短消息的 welcome.txt 文件。将这个子目录的许可属性 设置成属主可执行,然后: ⚫ 用 cd 命令使该子目录成为当前目录 ⚫ 列此子目录的文件清单 ⚫ 显示文件 welcome.txt 的内容 ⚫ 在子目录中创建 welcome.txt 的一个拷贝 再分别对此子目录设置读许可和写许可,重复上述练习。 练习 6.3 你怎样保护一个终端设备(tty)不被其他用户访问? 练习 6.4 你能够在 3.6.3 节的 VSTa 能力框架下,通过 UID、GID 和许可权,来捕获 Unix 的访问控制吗? 练习 6.5 你应该怎样设置备份过程来减少安全漏洞? 练习 6.6 应用 Unix 安全机制实现中国墙模型和 Clark-Wilson 模型。 练习 6.7 哪条 Unix 命令可以列出你的目录下所有其他人可以写的文件? 练习 6.8 你认为 Unix 系统安全的强处和弱点是什么?就此写一个 1000 字左右的短报告。 第 7 章 Windows NT 安全 Unix 安全一章可以用作一个实例来学习操作系统提供的基本安全机制,但几乎没有触及到用这些基本机制实现整 体安全问题。解决这个问题需要附加的用作控制的中间层次。其他的实用重点领域是安全的特性的管理和对系统管理 者的安全控制。本章将通过讨论 Windows NT 的安全,在这些方面作介绍
翻译:中国科学技术大学信息安全专业老师 目标 ●考虑操作系统怎样支持安全策略的实现。 考察计算机网络特殊的安全问题。 提出一些主要的与系统管理有关的安全问题。 介绍 Windows nt安全的基本概念 71导言 Windows nt是微软公司开发的一个适应多种处理器体系结构的轻型(可移植的, portable)操作系统。它向后兼 容,可以运行MS/DOS、OS及 Windows应用程序。 Windows nt具有适应POSX的网络功能,其3.51版本标准配 置通过了C2类的安全认证。 Windows nt对管理安全的支持超出了为管理它的安全特征而提供的图形接口 如同前一章,在这里我们也不准备给出 Windows nt安全的完整概念,其弱点的详细评估,或者指导怎样最好地 利用其安全特性。在本章后面的参考资料中提供了可以找到这些信息的连接地址。我们的主要目标是突出那些在分析 实际设置计算机基本安全时还没有被解决的问题。与Unix安全相比,我们选择的说明 Windows Nt安全的内容更多 地偏重在人机标尺的用户这一端(图7.1) 特殊的 普通的 复合的 简单的 集中于用户 集中于数据 用户端 机器端 图71:人机之间的 Windows nt安全特性的位置 711安全体系 我们首先从概览 Windows nt采用的基本保护机制开始 和Unⅸx一样,在用户模式(保护环3)和核心模式(保护环0)之间有明显的区别。操作系统核心服务程序,包含 Windows nt执行体,都运行在核心模式。用户程序通过应用程序接口(AP1)调用操作系统服务。程序上下文转 (切)换和从环3到环0的数据传送(转换, transition)由本地过程调用LPC程序(设施功能程序, facility) 来完成。 ●锁操作是操作系统的基本要素。如果一个用户在某一对象上设置了排他性的锁,则其他用户都不能对该对象访问。 ●数据以专有格式存储。以这种格式处理数据的实用程序即作为控制的中间层。然而,不修改操作系统就可以绕过 这些控制,因此“含混的安全”警告就要发出了 Windows NI是一种面向对象的设计。相对于Unⅸx系统把一切都认为是“资源”的统一的自主访问控制机制, Windows nt的自主访问控制则因对象类型不同而不同 下面是操作系统中安全子系统的一些构件。 安全引用监控器(SRM):管理访问控制,SRM是一个可执行的(执行体, execution)组件,运行于核心模式 本地安全权威(LSA):一个用户模式构件,在用户登录时检查用户帐户和产生系统访问令牌(SAT),LSA还负 责审计功能。 安全帐户管理器(SAM):一个用户模式构件,维护ISA使用的用户帐户数据库,为LSA提供用户认证。 登录进程:运行于用户模式,当一个用户登录时认证用户的进程。 72注册表 注册是指为 Windows nr配置数据的中心数据库。注册中的表项被称为关键字keys(不要与密钥混淆)。注册是 第12页共45页创建日期:2003-11
翻译:中国科学技术大学信息安全专业老师 第 12 页 共 45 页 创建日期:2003-11 目标 ⚫ 考虑操作系统怎样支持安全策略的实现。 ⚫ 考察计算机网络特殊的安全问题。 ⚫ 提出一些主要的与系统管理有关的安全问题。 ⚫ 介绍 Windows NT 安全的基本概念。 7.1 导言 Windows NT 是微软公司开发的一个适应多种处理器体系结构的轻型(可移植的,portable)操作系统。它向后兼 容,可以运行 MS/DOS、OS/2 及 Windows 应用程序。Windows NT 具有适应 POSIX 的网络功能,其 3.51 版本标准配 置通过了 C2 类的安全认证。Windows NT 对管理安全的支持超出了为管理它的安全特征而提供的图形接口。 如同前一章,在这里我们也不准备给出 Windows NT 安全的完整概念,其弱点的详细评估,或者指导怎样最好地 利用其安全特性。在本章后面的参考资料中提供了可以找到这些信息的连接地址。我们的主要目标是突出那些在分析 实际设置计算机基本安全时还没有被解决的问题。与 Unix 安全相比,我们选择的说明 Windows NT 安全的内容更多 地偏重在人机标尺的用户这一端(图 7.1)。 特殊的 普通的 复合的 简单的 集中于用户 集中于数据 用户端 机器端 图 7.1:人机之间的 Windows NT 安全特性的位置 7.1.1 安全体系 我们首先从概览 Windows NT 采用的基本保护机制开始。 ⚫ 和 Unix 一样,在用户模式(保护环 3)和核心模式(保护环 0)之间有明显的区别。操作系统核心服务程序,包含 Windows NT 执行体,都运行在核心模式。用户程序通过应用程序接口(API)调用操作系统服务。程序上下文转 (切)换和从环 3 到环 0 的数据传送(转换,transition)由本地过程调用 LPC 程序(设施/功能程序,facility) 来完成。 ⚫ 锁操作是操作系统的基本要素。如果一个用户在某一对象上设置了排他性的锁,则其他用户都不能对该对象访问。 ⚫ 数据以专有格式存储。以这种格式处理数据的实用程序即作为控制的中间层。然而,不修改操作系统就可以绕过 这些控制,因此“含混的安全”警告就要发出了。 ⚫ Windows NT 是一种面向对象的设计。相对于 Unix 系统把一切都认为是“资源”的统一的自主访问控制机制, Windows NT 的自主访问控制则因对象类型不同而不同。 下面是操作系统中安全子系统的一些构件。 ⚫ 安全引用监控器(SRM):管理访问控制,SRM 是一个可执行的(执行体,execution)组件,运行于核心模式。 ⚫ 本地安全权威(LSA):一个用户模式构件,在用户登录时检查用户帐户和产生系统访问令牌(SAT),LSA 还负 责审计功能。 ⚫ 安全帐户管理器(SAM):一个用户模式构件,维护 LSA 使用的用户帐户数据库,为 LSA 提供用户认证。 ⚫ 登录进程:运行于用户模式,当一个用户登录时认证用户的进程。 7.2 注册表 注册是指为 Windows NT 配置数据的中心数据库。注册中的表项被称为关键字 keys(不要与密钥混淆)。注册是
翻译:中国科学技术大学信息安全专业老师 层次化的数据库,在最高一层,注册被分解成四部分,叫做蜂箱(蜂巢状物,hive)。蜂箱包含多个关键字(目录) 这些关键字又包含子关键字(子目录〕或是数值(数据项)。在四个蜂箱的顶层关键字通常被称为根关键字。每一个 蜂箱都有一个日志文件用来记录那些对蜂箱或其子关键字的改动,以备审查。这里,系统蜂箱是例外,它把日志表项 写入 system. alt文件中 在注册中,系统被修改以适应用户的要求,设置默认的安全策略。因此,保证注册数据的完整性是必须的。例如, 个注册数据的关键字可以指向操作系统自动寻找的确定可执行文件地址,在 Windows nt中这被称为path(路径)。 如果这些关键字的许可集是脆弱的,例如,允许任何用户写操作,那么攻击者可以通过修改路径写入恶意的软件。因 此通常面临的两难选择是保护高层和方便用户不能同时实现。 注册数据是以私人所有的格式存储的,可以修改注册数据的系统工具是注册表编辑器( Registry Editor)。但是, 用户可以创建自己的工具来绕过注册表编辑器,直接获得注册信息(7.3.3节)。对于系统管理者来说,从机器中删除 注册表编辑器使之不被随便使用,是防护的第一步。一些和安全相关的关键字不能通过注册表编辑器更改,但是可以 通过特殊的工具更改,例如:系统策略编辑器( System Policy Editor)。 721注册文件许可 访问控制表可以设置成蜂箱和关键字。访问许可被定义为内置的组,像系统管理员、系统、用户、创建者/物主 ( Creator/ Owner)和所有使用者(753节)。可能的访问许可是: 只读:用户只能读取数据而不能做任何改变 完全控制:用户可以编辑、创建、删除和取走有所有权的数据。 ●特殊访问:依照专门的列表,用户可被赋予不同的权利。 个典型特殊访问许可可能包含以下内容: 询问值( query,一种数据库(询问子)系统询问,查询;询问程序):读取关键字的值 设置值:设置一个关键字的值 创建子关键字:用一个已有的关键字创建一个新的子关键字 列举关键字:用一个关键字确定所有的子关键字(标识( identify识别,鉴别,标识)在一个键内的所有子 键) ·通报( notify):接收关键字产生的审查通报( notification,通知书(通告,布告) 创建连接:创建一个指向关键字的符号连接 删除:删除一个关键字 写DAC:修改关键字的访问控制表 写 Owner:获得物主属性( ownership,所有权(主权)) 读取控制:从关键字中读取安全信息 下面的例子,是根关键字的默认许可: 1 HKEY LOCAL MACHINE:包含本地计算机、硬件和操作系统的信息。 管理员:完全控制 系统:完全控制。 所有人:读取 2 HKEY CLASSES ROOT:包含文件关联( association),OLE( object linking and embedding)和DDE( dynami data exchange)类定义 管理员:完全控制 系统:完全控制。 所有人:读取 3 HKEY CURRENT USER:包含当前登录的用户大概(开工文件, profile)信息 管理员:完全控制 系统:完全控制。 所有人:完全控制。 4 HKEY USERS:包含系统中所有用户的大概信息 管理员:完全控制 系统:完全控制。 用户(User):读取。 页共45页创建日期:2003-11
翻译:中国科学技术大学信息安全专业老师 第 13 页 共 45 页 创建日期:2003-11 层次化的数据库,在最高一层,注册被分解成四部分,叫做蜂箱(蜂巢状物,hive)。蜂箱包含多个关键字(目录), 这些关键字又包含子关键字(子目录)或是数值(数据项)。在四个蜂箱的顶层关键字通常被称为根关键字。每一个 蜂箱都有一个日志文件用来记录那些对蜂箱或其子关键字的改动,以备审查。这里,系统蜂箱是例外,它把日志表项 写入 system.alt 文件中。 在注册中,系统被修改以适应用户的要求,设置默认的安全策略。因此,保证注册数据的完整性是必须的。例如, 一个注册数据的关键字可以指向操作系统自动寻找的确定可执行文件地址,在 Windows NT 中这被称为 path(路径)。 如果这些关键字的许可集是脆弱的,例如,允许任何用户写操作,那么攻击者可以通过修改路径写入恶意的软件。因 此通常面临的两难选择是保护高层和方便用户不能同时实现。 注册数据是以私人所有的格式存储的,可以修改注册数据的系统工具是注册表编辑器(Registry Editor)。但是, 用户可以创建自己的工具来绕过注册表编辑器,直接获得注册信息(7.3.3 节)。对于系统管理者来说,从机器中删除 注册表编辑器使之不被随便使用,是防护的第一步。一些和安全相关的关键字不能通过注册表编辑器更改,但是可以 通过特殊的工具更改,例如:系统策略编辑器(System Policy Editor)。 7.2.1 注册文件许可 访问控制表可以设置成蜂箱和关键字。访问许可被定义为内置的组,像系统管理员、系统、用户、创建者/物主 (Creator/Owner)和所有使用者(7.5.3 节)。可能的访问许可是: ⚫ 只读:用户只能读取数据而不能做任何改变。 ⚫ 完全控制:用户可以编辑、创建、删除和取走有所有权的数据。 ⚫ 特殊访问:依照专门的列表,用户可被赋予不同的权利。 一个典型特殊访问许可可能包含以下内容: ⚫ 询问值(query,一种数据库(询问子)系统询问,查询;询问程序):读取关键字的值 ⚫ 设置值:设置一个关键字的值 ⚫ 创建子关键字:用一个已有的关键字创建一个新的子关键字 ⚫ 列举关键字:用一个关键字确定所有的子关键字(标识(identify 识别,鉴别,标识)在一个键内的所有子 键) ⚫ 通报(notify):接收关键字产生的审查通报(notification,通知书(通告,布告))。 ⚫ 创建连接:创建一个指向关键字的符号连接 ⚫ 删除:删除一个关键字 ⚫ 写 DAC:修改关键字的访问控制表 ⚫ 写 Owner:获得物主属性(ownership,所有权(主权)) ⚫ 读取控制:从关键字中读取安全信息 下面的例子,是根关键字的默认许可: 1 HKEY_LOCAL_MACHINE:包含本地计算机、硬件和操作系统的信息。 ⚫ 管理员:完全控制。 ⚫ 系统:完全控制。 ⚫ 所有人:读取。 2 HKEY_CLASSES_ROOT:包含文件关联(association),OLE(object linking and embedding)和 DDE(dynamic data exchange)类定义。 ⚫ 管理员:完全控制。 ⚫ 系统:完全控制。 ⚫ 所有人:读取。 3 HKEY_CURRENT_USER:包含当前登录的用户大概(开工文件,profile)信息 ⚫ 管理员:完全控制。 ⚫ 系统:完全控制。 ⚫ 所有人:完全控制。 4 HKEY_USERS:包含系统中所有用户的大概信息 ⚫ 管理员:完全控制。 ⚫ 系统:完全控制。 ⚫ 用户(User):读取
翻译:中国科学技术大学信息安全专业老师 HKEY LOCAL MACHINE的安全相关子关键字有: HKEY LOCAL MACHINEISAM 用户和组帐户的数据库 HKEY LOCAL MACHINE\ Secure 由安全子系统使用的本地安全策略信息 HKEY LOCAL MACHINE\Software\Microsoft\RPC 远程过程调用 HKEY LOCAL MACHINE\ Software\Microsoft\Windows Nr\Current Version 通过修改这些关键字,一个攻击者可以修改操作系统的性质,这些关键字的一个明智的许可设置如下 管理员:完全控制 系统:完全控制。 创建者/属主:完全控制 用户(User):特定访问 特殊访问可以是询问值、可列举子关键字、通报和只读控制 如果一个关键字不存在,将会发生什么?为了分析这个问题,首先考虑这个关键字使哪些用户和组可以远程访问 册信息。 HKEY LOCAL MACHINE\SYSTEM\CurrentControlSet\Control\SecurePipe Servers Winreg 如果这个关键字存在,那么就将考虑,当一个用户要求向注册表远程访问时,要强制限制远程的注册表编辑。如果这 个关键字不存在,将要执行的远程访问没有专门的核对,对注册表的远程访问将和本地访问一样。 73身份识别和认证 Windows nt使用用户名和口令完成身份的确认。这种机制的应用( implementation,工具;执行,实现;设备) 是向服务器和工作站网络方向调整( is geared towards)。 Windows nt5.0使用 Kerberos进行身份认证 731 Windows ni口令方案 口令是以加密的方式存储的,共有两个加密的口令,一个是给微软的局域网(LAN)管理员,另一个是给 Windows NI。为了防止用户采用脆弱的口令,一个被动态连接库(DLL)过滤的口令才能被存储( a password filtering dynamically linked library can be installed),下面的关键字(key,键码)已经被加到注册表中 HKEY LOCAL MACHINE\SYSTEM\CurrentControlSet\Control\ LSA Notification Package\ Passfilt dll 由微软提供的口令过滤器要求口令至少有六个字符。口令必须至少包含下面四种数据类型中的三种:大写字母 ( upper case letter)、小写字母( lower case letter、阿拉伯数字和非字母数字字符(nn- alphanumeric character)。口令 不能包含用户名部分。 加密的口令被存储在使用者的帐户中(74.3节),该帐户保存在SAM数据库中。SAM数据库是注册表的一部分 它是一个不能被标准文字编辑器阅读的二进制文件。操作系统使用 SAM API作一个系统调用来解密一个加密了的口 令。操作系统只运行在特权状态时允许使用这些系统调用。SAM数据库默认任何人都是可以读的,但是,因为这个 数据库经常被系统使用,所以这个数据库是被加了锁的。然而,在目录 \system32 repair中也有一个备份,这个备份 是当系统安装时或者当没有A:驱动器作为输出而发出一个 rdisk命令时建立的 这些敏感数据的备份拷贝作为原始数据本身,需要同样的保护措施。 局域网LAN管理员口令 LAN管理员口令是加密的,并且可以从存储在SAM数据库中的密文中恢复。口令最长为14个字符,加密算法 允许128位字符;但是口令菜单的输入部分只使用14个字符,如果口令长度不足14位,就以0补足。口令首先被转 换成大写字符,并把14个字符分为两个7字符的块。这两个块被扩展成8字节带奇偶校验的DES加密算法的密钥 加密是混和了魔术的秘钥( Magic key)0 XAAOXD3,0xB4,0x35,0xB5,0x14,0x40xEE完成的,事实上这个魔术的秘钥没有 什么魔力。两个加密结果连接起来,组成加了密的LAN管理员口令。 Windows nt口令 14页共45页创建日期:2003-11
翻译:中国科学技术大学信息安全专业老师 第 14 页 共 45 页 创建日期:2003-11 HKEY_LOCAL_MACHINE 的安全相关子关键字有: HKEY_LOCAL_MACHINE\SAM: 用户和组帐户的数据库 HKEY_LOCAL_MACHINE\Secure: 由安全子系统使用的本地安全策略信息 HKEY_LOCAL_MACHINE\Software\Microsoft\RPC 远程过程调用 HKEY_LOCAL_MACHINE\ Software\Microsoft\Windows NT \CurrentVersion 通过修改这些关键字,一个攻击者可以修改操作系统的性质,这些关键字的一个明智的许可设置如下: ⚫ 管理员:完全控制。 ⚫ 系统:完全控制。 ⚫ 创建者/属主:完全控制。 ⚫ 用户(User):特定访问 特殊访问可以是询问值、可列举子关键字、通报和只读控制。 如果一个关键字不存在,将会发生什么?为了分析这个问题,首先考虑这个关键字使哪些用户和组可以远程访问 注册信息。 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurePipeServers\Winreg 如果这个关键字存在,那么就将考虑,当一个用户要求向注册表远程访问时,要强制限制远程的注册表编辑。如果这 个关键字不存在,将要执行的远程访问没有专门的核对,对注册表的远程访问将和本地访问一样。 7.3 身份识别和认证 Windows NT 使用用户名和口令完成身份的确认。这种机制的应用(implementation,工具;执行,实现;设备) 是向服务器和工作站网络方向调整(is geared towards)。Windows NT 5.0 使用 Kerberos 进行身份认证。 7.3.1 Windows NT 口令方案 口令是以加密的方式存储的,共有两个加密的口令,一个是给微软的局域网(LAN)管理员,另一个是给 Windows NT。为了防止用户采用脆弱的口令,一个被动态连接库(DLL)过滤的口令才能被存储(a password filtering dynamically linked library can be installed),下面的关键字(key,键码)已经被加到注册表中: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ LSA\NotificationPackage\Passfilt.dll 由微软提供的口令过滤器要求口令至少有六个字符。口令必须至少包含下面四种数据类型中的三种:大写字母 (upper case letter)、小写字母(lower case letter)、阿拉伯数字和非字母数字字符(non-alphanumeric character)。口令 不能包含用户名部分。 加密的口令被存储在使用者的帐户中(7.4.3 节),该帐户保存在 SAM 数据库中。SAM 数据库是注册表的一部分, 它是一个不能被标准文字编辑器阅读的二进制文件。操作系统使用 SAM API 作一个系统调用来解密一个加密了的口 令。操作系统只运行在特权状态时允许使用这些系统调用。SAM 数据库默认任何人都是可以读的,但是,因为这个 数据库经常被系统使用,所以这个数据库是被加了锁的。然而,在目录\system32\repair 中也有一个备份,这个备份 是当系统安装时或者当没有 A:驱动器作为输出而发出一个 rdisk 命令时建立的。 这些敏感数据的备份拷贝作为原始数据本身,需要同样的保护措施。 局域网 LAN 管理员口令 LAN 管理员口令是加密的,并且可以从存储在 SAM 数据库中的密文中恢复。口令最长为 14 个字符,加密算法 允许 128 位字符;但是口令菜单的输入部分只使用 14 个字符,如果口令长度不足 14 位,就以 0 补足。口令首先被转 换成大写字符,并把 14 个字符分为两个 7 字符的块。这两个块被扩展成 8 字节带奇偶校验的 DES 加密算法的密钥, 加密是混和了魔术的秘钥(Magic key) 0xAA,0xD3,0xB4,0x35,0xB5,0x14,0x4,0xEE 完成的,事实上这个魔术的秘钥没有 什么魔力。两个加密结果连接起来,组成加了密的 LAN 管理员口令。 Windows NT 口令
翻译:中国科学技术大学信息安全专业老师 Windows nt口令是使用单向函数 (one-way function)经哈希算法形成的,口令不能从存储在SAM数据库中的哈希 值恢复。为了计算哈希值,用户口令首先被转换成统一的字符编码标准 Unicode(支持6536字符的16位字符集)字符, 并使用MD4算法(见12.2.1节)得到一个16字节的哈希值 732登录 登录是使用安全警示序列键( secure attention(注意) sequence)CRI+ALT+DEL来唤醒(激活) Windows nr 操作系统登录界面( screen,屏幕)。安全警示序列键在开始一个会话时使用,甚至当登录界面存在时也要使用。安全 警示序列键产生对低层的 Windows NT函数调用,这些函数不能被应用程序复制( duplicate,复制,转录,重复,重 叠)。因此,一个从 MS/DOS启动盘运行DOS的程序不能模拟 Windows登录界面,不能挂接欺騙攻击[63] Windows nt提供了一个合法通报选项作为警告消息( Windows NT offers the option of displaying a legal notice(注 意(注意事项布告) as a warning message.),用户在登录之前会获得这个警告信息,用户被提示使用用户名和口令, 用户名和口令被登录进程收集并传送给本地安全管理中心LSA( local security authority),LSA调用认证组件( package 程序软件]包,组装程序;【网】数据包),把用户名和口令与存储在帐户数据库中的值比较,如果相匹配,SAM返回 用户的安全标识符(SID)和安全标识符所属的组。认证组件创建一个登录会话,并将这个会话和所有的SID传回LSA LSA现在产生一个系统访问令牌(SAD),包含用户的SID和用户权限,SAT被登录进程附加给Win32子系统产生 的进程,产生这个进程的目的是控制访问。 如果在本地用户帐户数据库上认证失败,这个请求被向前传送到网络上另一个认证组件,如果所有的尝试都失败 了,用户将收到一个错误的消息。相反,如果第一个认证组件不在本地机器上,而是在服务器上,那么将会使用在客 户机上缓存的数据库作第二次尝试 最后,还应该注意交互登录和网络登录之间的差别,交互登录刚刚描述过了,网络登录是用户通过网络认证协议 登录。不同的访问控制条件的应用取决于用户如何登录 733绕过 SAMAPI SAM数据库是以二进制属性(专有的二进制格式)编码的, SAM API是访问SAM的唯一数据接口。然而,现 在有许多可用程序能把SAM文件转化成可读的格式, PWDump就是这样的软件。该软件目前己发展到支持单一登录 环境,在这里, Windows nt口令可以和UNX系统共享。 PWDump返回: User Name User ID Lan Manger Password: NT Password: User N: Home director PWDump的典型输出是 thacI05:1001:BB70C98EB15675ED78A48107248AD508 13FD03080874168F86E5A4EF866E44C5 Mark Curphey: I\fred\profileslphac105 personal 现在,黑客可以试图诱骗系统管理员去运行如 PWDump的程序。WWW和 Email软件如 Activex或MME,具 有可以通过 Internet传送并在用户工作站上运行程序对特点。通过把具有可执行内容的 PWDump包装进web包中, 并诱惑系统管理员浏览这样的主页,黑客可以获得可读的NT加密的口令。(这里,声称口令现在是可见的则是一种 令人误解的夸大之词。) 74访问控制一特征 要保护计算机系统中的敏感信息,你的第一道防线是控制对系统自身的访问。你的第二道防线是在系统中对那些 有进入系统的许可权的内部知情人的访问控制( police,管辖;管制,控制;监视,整顿)。我们用这样的顺序探讨 Windows nt的访问控制,在讲述中还会参考计算机网络知识。 74.1域( domains) 要能进入一个计算机系统,必须拥有这个系统的一个用户帐户和口令(见743节)。如果你是计算机网络用户,当 需要访问其他计算机上的资源和服务时,你不想一次又一次地登录:如果你是管理计算机网络的管理员,你也不想为 每一台计算机单独地配置安全设置。 Windows nt使用域来实现单一登录和协助安全管理 域是共享公共用户帐户数据库和安全策略的计算机的集合。因此,用户不必在每个计算机上设立帐户,但是需要 有一个域的帐户。域的用户帐户数据库的主拷贝保存在一个叫PDC(主域控制器)的服务器上,用户帐户数据库的拷 页共45页创建日期:2003-11
翻译:中国科学技术大学信息安全专业老师 第 15 页 共 45 页 创建日期:2003-11 Windows NT 口令是使用单向函数(one-way function)经哈希算法形成的,口令不能从存储在 SAM 数据库中的哈希 值恢复。为了计算哈希值,用户口令首先被转换成统一的字符编码标准 Unicode(支持 65536 字符的 16 位字符集)字符, 并使用 MD4 算法(见 12.2.1 节)得到一个 16 字节的哈希值。 7.3.2 登录 登录是使用安全警示序列键(secure attention(注意) sequence ) CRTL+ALT+DEL 来唤醒(激活)Windows NT 操作系统登录界面(screen,屏幕)。安全警示序列键在开始一个会话时使用,甚至当登录界面存在时也要使用。安全 警示序列键产生对低层的 Windows NT 函数调用,这些函数不能被应用程序复制(duplicate,复制,转录,重复,重 叠)。因此,一个从 MS/DOS 启动盘运行 DOS 的程序不能模拟 Windows 登录界面,不能挂接欺骗攻击[63]。 Windows NT 提供了一个合法通报选项作为警告消息(Windows NT offers the option of displaying a legal notice(注 意(注意事项,布告)) as a warning message. ),用户在登录之前会获得这个警告信息,用户被提示使用用户名和口令, 用户名和口令被登录进程收集并传送给本地安全管理中心 LSA(local security authority),LSA 调用认证组件(package, 程序[软件]包,组装程序;【网】数据包),把用户名和口令与存储在帐户数据库中的值比较,如果相匹配,SAM 返回 用户的安全标识符(SID)和安全标识符所属的组。认证组件创建一个登录会话,并将这个会话和所有的 SID 传回 LSA。 LSA 现在产生一个系统访问令牌(SAT),包含用户的 SID 和用户权限,SAT 被登录进程附加给 Win32 子系统产生 的进程,产生这个进程的目的是控制访问。 如果在本地用户帐户数据库上认证失败,这个请求被向前传送到网络上另一个认证组件,如果所有的尝试都失败 了,用户将收到一个错误的消息。相反,如果第一个认证组件不在本地机器上,而是在服务器上,那么将会使用在客 户机上缓存的数据库作第二次尝试。 最后,还应该注意交互登录和网络登录之间的差别,交互登录刚刚描述过了,网络登录是用户通过网络认证协议 登录。不同的访问控制条件的应用取决于用户如何登录。 7.3.3 绕过 SAM API SAM 数据库是以二进制属性(专有的二进制格式)编码的,SAM API 是访问 SAM 的唯一数据接口。然而,现 在有许多可用程序能把 SAM 文件转化成可读的格式,PWDump 就是这样的软件。该软件目前已发展到支持单一登录 环境,在这里,Windows NT 口令可以和 UNIX 系统共享。PWDump 返回: User Name:User ID :Lan Manger Password :NT Password:User Name: Home Directory PWDump 的典型输出是: phac105:1001:BB70C98EB15675ED78A48107248AD508: 13FD03080874168F86E5A4EF866E44C5: Mark Curphey:\\fred\profiles\phac105\personal: 现在,黑客可以试图诱骗系统管理员去运行如 PWDump 的程序。WWW 和 Email 软件如 ActiveX 或 MIME,具 有可以通过 Internet 传送并在用户工作站上运行程序对特点。通过把具有可执行内容的 PWDump 包装进 Web 包中, 并诱惑系统管理员浏览这样的主页,黑客可以获得可读的 NT 加密的口令。(这里,声称口令现在是可见的则是一种 令人误解的夸大之词。) 7.4 访问控制-特征 要保护计算机系统中的敏感信息,你的第一道防线是控制对系统自身的访问。你的第二道防线是在系统中对那些 有进入系统的许可权的内部知情人的访问控制(police,管辖;管制,控制;监视,整顿)。我们用这样的顺序探讨 Windows NT 的访问控制,在讲述中还会参考计算机网络知识。 7.4.1 域(domains) 要能进入一个计算机系统,必须拥有这个系统的一个用户帐户和口令(见 7.4.3 节)。如果你是计算机网络用户,当 需要访问其他计算机上的资源和服务时,你不想一次又一次地登录;如果你是管理计算机网络的管理员,你也不想为 每一台计算机单独地配置安全设置。Windows NT 使用域来实现单一登录和协助安全管理。 域是共享公共用户帐户数据库和安全策略的计算机的集合。因此,用户不必在每个计算机上设立帐户,但是需要 有一个域的帐户。域的用户帐户数据库的主拷贝保存在一个叫 PDC(主域控制器)的服务器上,用户帐户数据库的拷