- Windows系统安全机制:
- 身份认证机制
- 访问控制机制
- 审计/日志机制
- 文件加密系统
- UAC
- EFS,Bitlocker
- 协议过滤和防火墙
6.3 Windows操作系统安全
6.3.1 Windows 认证机制
- Windows系统中的用户账户有连隔离:本地账户和域账户;提供两种基本认证类型:本地登录和基于活动目录的域登录。本地登录指用户登录的是本地计算机,对网络资源不具备访问权利。基于活动目录的域登录是指在域环境中,域用户向域控制器请求进行身份认证,认证后的域用户可以根据权限访问域中的资源
一.本地登录:
- Windows XP 认证过程
- ① 输入口令 → ② Winlogon 把明文送 Lsass → ③ Lsass 计算 LM/NT Hash → ④ 与 SAM 里哈希比对 → ⑤ 匹配即生成访问令牌登录
- Windows 7 认证过程
- ① 输入口令 → ② 默认禁用 LM;只生成 NTLM/NTLMv2 哈希 → ③ Lsass 与 SAM 里 NT_Hash 比对 → ④ 通过即得令牌;若启用了 Kerberos 也可走本地 Kerb 回环
二.Windows 口令安全策略(本地通用)
- 本地登录通常采用口令认证方式,所有系统合法用户的用户名和口令信息被存储在本地计算机的安全账户管理器(SAM)中 。在登录时,用户提交登录凭证,本地计算机的安全子系统将用户名和口令送到本地计算机上的SAM数据库中进行验证
三.基于活动目录的域登录
- 客户机输入 UPN/域\用户名 + 口令
- 本地 Lsass 用口令生成 NT_Hash → 向就近 DC 的 KDC 申请 TGT(Kerberos AS-REQ)
- DC 用 AD 中 NT_Hash 加密 AS-REP,客户机解密得 TGT
- 后续访问任何域内服务:持 TGT 向 DC 换 Service Ticket,实现单点登录
- 若 DC 不可达,则回退 NTLM 挑战-响应(需允许 NTLM)
口令认证有哪些安全威胁?(ppt)
- **暴力破解攻击:**攻击者可以通过不断尝试不同的口令组合来猜解正确的口令,尤其是当口令简单或过于常见时,暴力破解的可能性较大
- **字典攻击:**攻击者用常见的词汇表进行匹配
- **口令重用:**很多用户倾向于在多个系统中使用相同的口令。
- **口令嗅探:**在不安全的网络环境下,攻击者可以通过嗅探网络流量来捕捉用户的口令,特别是在口令传输过程中没有加密的情况下。
Windows的密码策略:
- 密码复杂性要求 2.密码长度最小值 3.密码最长存留期 4.强制密码历史(防止使用旧密码)
Windows的锁定策略:
- **账户锁定阈值:**连续输错密码五次,该账户立即被锁定,不能再登录
- **复位账户锁定计数器 :**输错次数的"记分牌"多久清零:从最后一次错误起算,30分钟内没有再输错,就把已记录的错误次数归零;若此期间继续输错,重新计时
- **账户锁定时间:**锁定后自动解锁的时间---30分钟后恢复可用
如何离线破解口令?
++本地++登录:(本地口令存储在SAM中-->加密形式)
- SAM 文件运行时锁定
- SAM 中存储的口令利用散列函数加密存储
LM-Hash 和 NTLM-Hash 是 Windows 操作系统用于存储和验证用户密码的两种哈希算法。
LM-Hash步骤:
- 口令全部变成大写 WELCOME
- 转换为16进制的字符串 57 45 4C 43 4F 4D 45
- 定长14字节(用0补全) 57 45 4C 43 4F 4D 45 00000000000000
- 分成2组7字节的数据 组1: 57454C434F4D45 组2:000000000000
- 加上校验位,转换成2组8字节的编码 str_to_key(57454C434F4D45 )-->56A25288347A348A str_to_key(000000000000) -->0000000000000000
- 两组8字节编码分别作为DES加密秘钥为魔术字符串"KGS!@#$%"进行加密
- 加密后的两组数据,拼接在一起作为LM-HASH
LM-Hash在安全性上存在哪些问题:(ppt)
- 不区分大小写:密码在哈希前会被转换成大写,降低了密码复杂度
- 固定长度截断:密码超过14个字符会被截断为前14个字符,且分成两段分别哈希,容易被拆分破解
- 无盐处理 :没有使用随机盐值,导致相同密码哈希值相同,容易被彩虹表攻击
- **彩虹表:**是一个庞大的,针对各种可能的字母组合预先计算好的哈希值的集合,其各种算法都有,可以快速破解各种密码。越是复杂的密码,需要的彩虹表就越大,主流彩虹表都在100GB以上
- **弱密码算法:**使用DES加密方式,计算能力提升下容易被暴力破解
NTLM-Hash存储过程:
- Unicode字符串转换(在原有每个字节后面添加0x00) Welcom---->570065006C0063006F006D006500
- 对Unicode串进行标准MD4单向哈希
- 得到NTML-Hash
网络登录:
- --------访问网络服务器资源---------- 当你登录完 Windows 系统(无论是本地账户还是域账户)之后,
如果你要访问网络中的 其他计算机 / 文件共享 / 打印机 / 邮件服务器 ,
系统还要验证你有没有权限访问它们。 - --------"每个服务器独立认证"早期----------- (还没有 Active Directory 的年代)每台服务器都保存自己的一套用户密码数据库(本地 SAM)。这样你访问不同服务器时,每台都要重新登录(输入用户名密码),并且每台服务器都要保存你的凭证副本。
- 带来的问题??
- **只要存在一个若账户信息,可能导致全系统也受到破坏 :**如果某台服务器的用户数据库泄露(比如被黑客脱库),攻击者就可能利用相同用户名密码攻击其他服务器。
- 服务器均需认证,授权等安全服务,无法将所有资源用于应用服务
6.3.2 Windows 访问控制机制
Windows支持基于访问控制列表的自主访问控制机制,由资源的属主用户决定其他用户是否可以访问资源以及对资源的访问能力,以保证资源合法,受控地使用。主要包含3个关键的组件:访问令牌,安全描述符,访问控制表
实现自主访问控制的组件:
-
安全标识符
- 唯一标志系统账户
- (在windows7 中,要想查看当前登录账户的SID,直接使用指令whoami)
-
访问令牌
- ++用于标识一个进程或线程的安全属性,相当于用户访问系统资源的票证++
- ++令牌的大小不固定++(包含内容不同 实际上是动态结构)
- (表示进程或线程的安全属性,告诉系统"这个进程是谁"以及"允许做什么",相当于一张票,有了他才能访问系统资源(文件,注册表,设备等))。
- 和进程或线程相关联,是**对外的,**它是进程或线程用来向操作系统或其他进程展示自己身份和权限的工具,类似于一个"身份证",告诉别人"我是谁,我可以做什么"
- 当进程或线程创建对象时,windows系统自动将该进程或线程关联的令牌中的默认的主组和默认的自主访问控制表应用在他所创建的对象上,这样可以使得线程或进程很方便地创建一些具有标准安全属性的对象,而不需要为他所创建的每一个对象请求单独的安全信息。
-
安全描述符
- 令牌标识了用户(主体)的凭证,而安全描述符则与一个对象(客体)关联在一起,规定了谁可以在这个对象上执行哪些操作。
- 安全描述符的主要组件是自主访问控制列表、自主访问控制列表确定了各个用户和用户组对该对象(客体)的访问权限。
- 采用安全性描述符描述客体(对象)的访问控制列表。(用于定义对象安全性的结构,它描述了谁可以访问某个对象,以及执行哪些操作)
- 和对象(如文件,文件夹)关联,是**对内的,**它是对象用来描述自己(谁可以访问自己,哪些权限被授予)的工具,定义谁可以进来以及能做什么
-
访问控制表(ACL)
- 每个表由整个表的++表头和一个或多个++ 多访问控制++ACE项++组成
- ACE定义一个个SID或组SID,访问掩码定义了访问权限
- 每个ACE项包含以下几个重要元素:++SID或组SID,访问掩码,ACE类型++
- **SID:**唯一标识一个用户或组的身份,操作系统通过SID来识别用户或组,而不是直接用用户名。
- **组SID:**如果ACE是为某个组设置的,它就会用该组的SID来标识该组成员
- 访问掩码:(描述了对该课题的访问类型,如读,写等等)是一个权限的集合,指明了该SID可以对对象执行哪些操作(读,写,删除等等)比如一个访问掩码可能表示,可以读取和修改文件,但不能删除文件
- ACE有两种主要类型:允许类型-->该SID对对象有某些权限 拒绝类型-->该SID对对象没有某些权限。
- ACE(访问控制项):排列有顺序,拒绝权限优先。访问控制信息具有继承关系:如文件可以继承文件夹的ACL
- 是一个存储对象访问控制信息的数据结构。他控制哪些用户(或组)可以访问某个对象以及他们能执行哪些操作
- ++每个对象都有一个ACL++,操作系统通过它来检查用户对该独享的访问请求
- 用户A对文件file有读的权限,用户所在组队对Teachers对文件file具有写的权限,请问用户A对文件file的权限?
- 用户A对文件file可读可写(权限累加:读+写)
- 用户A对文件file仅读(拒绝写优先,写权限被覆盖)

6.3.3 用户账户管理
- 由于历史原因,很多Windows的很多用户都直接以管理员权限运行系统,这对计算机安全构成很大隐患。从Windows Vista开始,Windows 加强了对用户账户控制的管理,使用"用户账户控制"模块来管理和限制用户权限。
- 当用户使用管理员账户进行登录时,windows会为该账户创建两个访问令牌:一个标准令牌,一个管理员令牌。大部分时候,当用户试图访问文件或运行程序的时候,系统都会自动使用标准令牌进行,只有权限不足的时候,系统才会使用管理员令牌,这种将管理员区分对待的机制成为UAC。UAC体现了最小特权原则,即在执行任务时使用尽可能少的特权
- 用户账户控制,即UAC 是Windows系统中保护计算机免受未经授权或恶意更改的重要安全功能。通过限制程序++执行权限++ 和++要求用户确认系统级更改++,UAC有效地增强了系统的安全性。虽然它可能会给一些用户带来不便,但它无意识减少安全风险的重要攻击
6.3.4 加密文件系统EFS
- 为了保证系统安全,可以采用给用户设置强密码,访问控制等手段,然而这样就可以做到万无一失了吗?这些windows系统提供的安全机制只有在操作系统处于活动状态下才能得到强制执行。如果资源所在的物理硬盘被非法者窃取,那么使用上述权限访问控制行为对资源保护没有任何意义,比如脱机攻击。
- 为了防止这样的事情发生,需要一种基于文件系统加密的方法来保证资源的安全。文件加密系统EFS允许用户以加密格式存储磁盘上的数据,将数据转换成不能被其他用户读取的格式。用户加密文件之后只要文件存储在磁盘上,它就会自动保持加密的状态。
6.3.5 BitLocker 机制
虽然Windows操作系统支持EFS文件加密系统,但EFS不能对存储重要信息的系统文件进行加密,如注册表,系统盘等。windows7中新增的BitLocker功能可以加密整个分区,包括windows系统分区,并将加密秘钥保存在硬盘之外的地方,这样及时遭受脱机攻击攻击者没有解密密钥,也无法获得系统中的任何信息。
- BitLocker是Windows操作系统中内置的磁盘加密功能,旨在通过就加密硬盘上的数据来保护用户数据免受未经授权的访问,特别是设备丢失或被盗时。它能够加密整个磁盘,包括操作系统文件和用户文件,保障数据安全。
- 通过全盘加密和硬件结合的方式,提供多层次的安全保障
- **全盘加密:**对整个硬盘进行加密。
- 加密算法: 使用AES加密算法
- **硬件支持:**通常与TPM(受信平台模块)结合使用
6.3.6 Windows 审计/日志机制
- Windows的审计/日志机制是操作系统内置的一种安全功能,用于记录和监视系统中发生的各种活动。通过启用审核策略,管理员可以追踪用户行为,系统时间以及其他关键操作,这些对于检测潜在的安全威胁和确保合规性至关重要。通过这些日志,管理员可以检查谁做了什么,何时做的,在哪个计算机上做的,以及是否成功执行等信息。
Windows系统的安全配置
Windows的软件限制策略
- 定义:软件限制策略是Windows组策略组件,用于限制哪些程序可运行,哪些被阻止,实现"白名单"或"黑名单"式执行保护。
- 防止恶意代码或不合规软件启动,降低系统被植入,横向移动的风险。
- 策略结构:
- 强制:
- 指定受限制的文件类型
- 指定作用对象:所有用户,仅普通用户,排除管理员
- 指派的文件类型:
- 自定义要管控的扩展名(如.exe .js)
- 受信发布者
- 决定谁可以把程序加入"可信"行列
- 只有带有效且被信任代码签名的程序才能绕过限制
- 强制: