580 likes | 751 Views
Windows 系统安全技术. 祝晓光 zhuxiaoguang@nsfocus.com. 提纲. 系统安全模型 服务安全性 降低风险 . Windows 系统安全模型. 操作系统安全定义. • 信息安全的五类服务,作为安全的操作系统时必须提供的 • 有些操作系统所提供的服务是不健全的、默认关闭的. 信息安全评估标准. ITSEC 和 TCSEC TCSEC 描述的系统安全级别 D-- ----------A CC(Common Critical) 标准 BS 7799:2000 标准体系 ISO 17799 标准.
E N D
Windows系统安全技术 祝晓光 zhuxiaoguang@nsfocus.com
提纲 • 系统安全模型 • 服务安全性 • 降低风险
操作系统安全定义 • 信息安全的五类服务,作为安全的操作系统时必须提供的 • 有些操作系统所提供的服务是不健全的、默认关闭的
信息安全评估标准 • ITSEC和TCSEC • TCSEC描述的系统安全级别 • D------------A • CC(Common Critical)标准 • BS 7799:2000标准体系 • ISO 17799标准
校验级保护,提供低级别手段 A 级 安全域,数据隐藏与分层、屏蔽 B3 级 结构化内容保护,支持硬件保护 B2 级 标记安全保护,如System V等 B1 级 有自主的访问安全性,区分用户 C2 级 不区分用户,基本的访问控制 C1 级 没有安全性可言,例如MS DOS D 级 TCSEC定义的内容
C2级安全标准的要求 • 自主的访问控制 • 对象再利用必须由系统控制 • 用户标识和认证 • 审计活动 • 能够审计所有安全相关事件和个人活动 • 只有管理员才有权限访问
CC(Common Critical)标准 • CC的基本功能 • 标准化叙述 • 技术实现基础叙述 • CC的概念 • 维护文件 • 安全目标 • 评估目标
Windows系统的安全架构 Windows NT系统内置支持用户认证、访问 控制、管理、审核。
Windows系统的安全组件 • 访问控制的判断(Discretion access control) 允许对象所有者可以控制谁被允许访问该对象以及访问的方式。 • 对象重用(Object reuse) 当资源(内存、磁盘等)被某应用访问时,Windows 禁止所有的系统应用访问该资源,这也就是为什么无法恢复已经被删除的文件的原因。 • 强制登陆(Mandatory log on) 要求所有的用户必须登陆,通过认证后才可以访问资源 • 审核(Auditing) 在控制用户访问资源的同时,也可以对这些访问作了相应的记录。 • 对象的访问控制(Control of access to object) 不允许直接访问系统的某些资源。必须是该资源允许被访问,然后是用户或应用通过第一次认证后再访问。
Windows安全子系统的组件 • 安全标识符(Security Identifiers): 就是我们经常说的SID,每次当我们创建一个用户或一个组的时候,系统会分配给改用户或组一个唯一SID,当你重新安装系统后,也会得到一个唯一的SID。 SID永远都是唯一的,由计算机名、当前时间、当前用户态线程的CPU耗费时间的总和三个参数决定以保证它的唯一性。 例: S-1-5-21-1763234323-3212657521-1234321321-500 • 访问令牌(Access tokens): 用户通过验证后,登陆进程会给用户一个访问令牌,该令牌相当于用户访问系统资源的票证,当用户试图访问系统资源时,将访问令牌提供给Windows 系统,然后Windows NT检查用户试图访问对象上的访问控制列表。如果用户被允许访问该对象,系统将会分配给用户适当的访问权限。 访问令牌是用户在通过验证的时候有登陆进程所提供的,所以改变用户的权限需要注销后重新登陆,重新获取访问令牌。
Windows安全子系统的组件 • 安全描述符(Security descriptors): Windows 系统中的任何对象的属性都有安全描述符这部分。它保存对象的安全配置。 • 访问控制列表(Access control lists): 访问控制列表有两种:任意访问控制列表(Discretionary ACL)、系统访问控制列表(System ACL)。任意访问控制列表包含了用户和组的列表,以及相应的权限,允许或拒绝。每一个用户或组在任意访问控制列表中都有特殊的权限。而系统访问控制列表是为审核服务的,包含了对象被访问的时间。 • 访问控制项(Access control entries): 访问控制项(ACE)包含了用户或组的SID以及对象的权限。访问控制项有两种:允许访问和拒绝访问。拒绝访问的级别高于允许访问。
Windows安全子系统 • 安全子系统包括以下部分: • Winlogon • Graphical Identification and Authentication DLL (GINA) • Local Security Authority(LSA) • Security Support Provider Interface(SSPI) • Authentication Packages • Security support providers • Netlogon Service • Security Account Manager(SAM)
GINA LSA SSPI Security Support Provider Authentication Packages Security Account Management Netlogon Windows 安全子系统 加载GINA,监视认证顺序 Winlogon 提供登陆接口 提供真正的用户校验 加载认证包 支持额外的验证机制 管理用户和用户证书的数据库 为认证建立安全通道
Windows安全子系统 • Winlogon and Gina: Winlogon调用GINA DLL,并监视安全认证序列。而GINA DLL提供一个交互式的界面为用户登陆提供认证请求。GINA DLL被设计成一个独立的模块,当然我们也可以用一个更加强有力的认证方式(指纹、视网膜)替换内置的GINA DLL。 Winlogon在注册表中查找\HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon ,如果存在GinaDLL键,Winlogon将使用这个DLL,如果不存在该键,Winlogon将使用默认值MSGINA.DLL
Windows安全子系统 • 本地安全认证(Local Security Authority): 本地安全认证(LSA)是一个被保护的子系统,它负责以下任务: • 调用所有的认证包,检查在注册表\HKLM\SYSTEM\CurrentControlSet\Control\LSA下AuthenticationPAckages下的值,并调用该DLL进行认证(MSV_1.DLL)。在4.0版里,Windows NT会寻找\HKLM\SYSTEM\CurrentControlSet\Control\LSA 下所有存在的SecurityPackages值并调用。 • 重新找回本地组的SIDs和用户的权限。 • 创建用户的访问令牌。 • 管理本地安装的服务所使用的服务账号。 • 储存和映射用户权限。 • 管理审核的策略和设置。 • 管理信任关系。
Windows安全子系统 • 安全支持提供者的接口(Security Support Provide Interface): 微软的Security Support Provide Interface很简单地遵循RFC 2743和RFC 2744的定义,提供一些安全服务的API,为应用程序和服务提供请求安全的认证连接的方法。 • 认证包(Authentication Package): 认证包可以为真实用户提供认证。通过GINA DLL的可信认证后,认证包返回用户的SIDs给LSA,然后将其放在用户的访问令牌中。
Windows安全子系统 • 安全支持提供者(Security Support Provider): 安全支持提供者是以驱动的形式安装的,能够实现一些附加的安全机制,默认情况下,Windows NT安装了以下三种: • Msnsspc.dll:微软网络挑战/反应认证模块 • Msapsspc.dll:分布式密码认证挑战/反应模块,该模块也可以在微软网络中使用 • Schannel.dll:该认证模块使用某些证书颁发机构提供的证书来进行验证,常见的证书机构比如Verisign。这种认证方式经常在使用SSL(Secure Sockets Layer)和PCT(Private Communication Technology)协议通信的时候用到。
Windows安全子系统 • 网络登陆(Netlogon): 网络登陆服务必须在通过认证后建立一个安全的通道。要实现这个目标,必须通过安全通道与域中的域控制器建立连接,然后,再通过安全的通道传递用户的口令,在域的域控制器上响应请求后,重新取回用户的SIDs和用户权限。 • 安全账号管理者(Security Account Manager): 安全账号管理者,也就是我们经常所说的SAM,它是用来保存用户账号和口令的数据库。保存了注册表中\HKLM\Security\Sam中的一部分内容。不同的域有不同的Sam,在域复制的过程中,Sam包将会被拷贝。
Windows的密码系统 • Windows NT及Win2000中对用户帐户的安全管理使用了安全帐号管理器(security account manager)的机制,安全帐号管理器对帐号的管理是通过安全标识进行的,安全标识在帐号创建时就同时创建,一旦帐号被删除,安全标识也同时被删除。安全标识是唯一的,即使是相同的用户名,在每次创建时获得的安全标识都时完全不同的。因此,一旦某个帐号被删除,它的安全标识就不再存在了,即使用相同的用户名重建帐号,也会被赋予不同的安全标识,不会保留原来的权限。
IIS服务安全配置 • 禁用或删除所有的示例应用程序 示例只是示例;在默认情况下,并不安装它们,且从不在生产服务器上安装。请注意一些示例安装,它们只可从 http://localhost 或 127.0.0.1 访问;但是,它们仍应被删除。下面 列出一些示例的默认位置。 示例 虚拟目录 位置 IIS 示例 \IISSamples c :\inetpub\iissamplesIIS 文档 \IISHelp c:\winnt\help\iishelp数据访问 \MSADC c:\program files\common files\system\msadc
IIS服务安全配置 • 启用或删除不需要的 COM 组件 某些 COM 组件不是多数应用程序所必需的,应加以删除。特别是,应考虑禁用文件系统对象组件,但要注意这将也会删除 Dictionary 对象。切记某些程序可能需要您禁用的组件。如Site Server 3.0 使用 File System Object。以下命令将禁用 File System Object: regsvr32 scrrun.dll /u • 删除 IISADMPWD 虚拟目录 该目录可用于重置 Windows NT 和 Windows 2000 密码。它主要用于 Intranet 情况下,并不作为 IIS 5 的一部分安装,但是 IIS 4 服务器升级到 IIS 5 时,它并不删除。如果您不使用 Intranet 或如果将服务器连接到 Web 上,则应将其删除。
IIS服务安全配置 • 删除无用的脚本映射 IIS 被预先配置为支持常用的文件名扩展如 .asp 和 .shtm 文件。IIS 接收到这些类型的文件请求时,该调用由 DLL 处理。如果您不使用其中的某些扩展或功能,则应删除该映射,步骤如下: • 打开 Internet 服务管理器。 • 右键单击 Web 服务器,然后从上下文菜单中选择“属性”。 • 主目录 | 配置 | • 删除无用的.htr .ida .idq .printer .idc .stm .shtml等
IIS服务安全配置 • 禁用父路径 “父路径”选项允许在对诸如 MapPath函数调用中使用“..”。禁用该选项的步骤如下: • 右键单击该 Web 站点的根,然后从上下文菜单中选择“属性”。 • 单击“主目录”选项卡。 • 单击“配置”。 • 单击“应用程序选项”选项卡。 • 取消选择“启用父路径”复选框。 • 禁用-内容位置中的 IP 地址 IIS4里的“内容-位置”标头可暴露通常在网络地址转换 (NAT) 防火墙或代理服务器后面隐藏或屏蔽的内部 IP 地址。
IIS服务安全配置 • 设置适当的 IIS 日志文件 ACL 确保 IIS 日志文件 (%systemroot%\system32\LogFiles) 上的 ACL 是 • Administrators(完全控制) • System(完全控制) • Everyone (RWC) 这有助于防止恶意用户为隐藏他们的踪迹而删除文件。 • 设置适当的 虚拟目录的权限 确保 IIS 虚拟目录如scripts等权限设置是否最小化,删除不需要目录。 • 将IIS目录重新定向 更改系统默认路径,自定义WEB主目录路径并作相应的权限设置。 • 使用专门的安全工具 微软的IIS安全设置工具:IIS Lock Tool;是针对IIS的漏洞设计的,可以有效设置IIS安全属性。
终端服务安全 • 输入法漏洞造成的威胁 net user abc 123 /add net localgroup administrators abc /add 注册表 DontDisplayLastUserName 1
安全修补程序 • Windows系列 • Service Pack • NT(SP6A)、2000(SP4)、XP(SP2) • Hotfix • Microsoft出品的hfnetchk程序 • 检查补丁安装情况 • http://hfnetchk.shavlik.com/default.asp
服务和端口限制 • 限制对外开放的端口: 在TCP/IP的高级设置中选择只允许开放特定端口,或者可以考虑使用路由或防火墙来设置。 • 禁用snmp服务 或者更改默认的社区名称和权限 • 禁用terminal server服务 • 将不必要的服务设置为手动 Alerter ClipBookComputer Browser ……
Netbios的安全设置 • Win2000 取消绑定文件和共享绑定 • 打开 控制面板-网络-高级-高级设置 • 选择网卡并将Microsoft 网络的文件和打印共享的复选框取消,禁止了139端口。 • 注册表修改HKEY_LOCAL_MACHINE\System\Controlset\Services\NetBT\Parameters • Name: SMBDeviceEnabled • Type: REG_DWORD • Value: 0 禁止445端口。
Netbios的安全设置 • 禁止匿名连接列举帐户名需要对注册表做以下修改。 注:不正确地修改注册表会导致严重的系统错误,请慎重行事!1.运行注册表编辑器(Regedt32.exe)。2.定位在注册表中的下列键上: HKEY_LOCAL_MACHINE\Systemt\CurrentControl\LSA3.在编辑菜单栏中选取加一个键值:Value Name:RestrictAnonymousData Type:REG_DWORDValue:1(Windows2000下为2)4.退出注册表编辑器并重启计算机,使改动生效。
Netbios的安全设置 • Win2000的本地安全策略(或域安全策略中)中有RestrictAnonymous(匿名连接的额外限制)选项,提供三个值可选 • 0:None. Rely on default permissions(无,取决于默认的权限) • 1:Do not allow enumeration of SAM accounts and shares(不允许枚举SAM帐号和共享) • 2:No access without explicit anonymous permissions(没有显式匿名权限就不允许访问)
Windows 2000注册表 • 所有的配置和控制选项都存储在注册表中 • 分为五个子树,分别是Hkey_local_machine、Hkey_users、Hkey_current_user、Hkey_classes_root、Hkey_current_config • Hkey_local_machine包含所有本机相关配置信息
权 限 解 释 查询数值 允许用户和组从注册表中读取数值 设置数值 允许用户和组从注册表中设置数值 创建子项 允许用户和组在给定的注册项中创建子项 计数子项 允许用户和组识别某注册项的子项 通 知 允许用户和组从注册表中审计通知事件 创建链接 允许用户和组在特定项中建立符号链接 删 除 允许用户和组在删除选定的注册项 写入DAC 允许用户和组将DAC写入注册表项 写入所有者 允许用户和组获得注册表项的所有权 读取控制 允许用户和组具有访问选定注册表项的安全信息 注册表安全
注册表的审计 • 对注册表的审计是必需的 • 审计内容的选择 • 注册表每秒被访问500-1500次 • 任何对象都有可能访问注册表 • 默认的注册表审计策略为空
禁止和删除服务 • 通过services.msc禁止服务 • 使用Resource Kit彻底删除服务 • Sc命令行工具 • Instsrv工具 • 举例 • OS/2和Posix系统仅仅为了向后兼容 • Server服务仅仅为了接受netbios请求
1.建立TCP连接 2.客户端类型、支持的服务方式列表等 Client Server 3.服务器认证方式、加密用的key等 4.用户名、加密后密码 5.认证结果 SMB连接与验证过程 随机生成一把加密密钥key(8或16字节) 采用DES的变形算法,使用key对密码散列进行加密
SMB提供的服务 • SMB会话服务 • TCP 139和TCP 445端口 • SMB数据报支持服务 • UDP 138和UDP 445端口 • SMB名称支持服务 • UDP 137端口
强化SMB会话安全 • 强制的显式权限许可:限制匿名访问 • 控制LAN Manager验证 • 使用SMB的签名 • 服务端和客户端都需要配置注册表 或在本地安全策略中
针对Windows 2000的入侵 (1) • 探测 • 选择攻击对象,了解部分简单的对象信息;针对具体的攻击目标,随便选择了一组IP地址,进行测试,选择处于活动状态的主机,进行攻击尝试 • 针对探测的安全建议 • 对于网络:安装防火墙,禁止这种探测行为 • 对于主机:安装个人防火墙软件,禁止外部主机的ping包,使对方无法获知主机当前正确的活动状态
针对Windows 2000的入侵 (2) • 扫描 • 使用的扫描软件 • NAT、流光、Xscan、SSS • 扫描远程主机 • 开放端口扫描 • 操作系统识别 • 主机漏洞分析
针对Windows 2000的入侵(3) • 查看目标主机的信息
针对Windows 2000的入侵(4) • IIS攻击 • 尝试利用IIS中知名的Unicode和“Translate:f”漏洞进行攻击,没有成功。目标主机可能已修复相应漏洞,或没有打开远程访问权限 • Administrator口令强行破解 • 这里我们使用NAT(NetBIOS Auditing Tool)进行强行破解:构造一个可能的用户帐户表,以及简单的密码字典,然后用NAT进行破解