域渗透
01-本地认证
02-本地密码抓取
03-网络认证
04-域基础知识
05-域环境部署
06-域认证
07-域密码抓取
08-横向移动
09-凭证传递
10-票据
11-委派
-
+
01-本地认证
浏览
1
本地认证(Local Authentication)是指用户登录计算机时,系统通过本机存储的账户数据库验证用户身份的过程,整个认证过程完全在本机完成,不需要与任何远程服务器进行通信。 # 一、概述 本地账号认证基本流程:  - 用户在登录界面输入用户名和密码,winlogon.exe接收用户的输入; - 本地安全授权子系统服务(lsass.exe)接收由winlogon.exe传来的用户凭据; - Lsass将用户输入的明文密码通过NT LAN Manager (NTLM) Hash算法 转换为哈希值; - 系统将转换后的哈希值与存储在安全账户管理器(SAM)数据库中的密码哈希进行对比; - 如果密码匹配,认证成功,用户得以登录系统。如果密码不匹配,则认证失败,用户无法登录;; - 用户通过身份验证,系统会根据用户的权限对其进行授权,确定用户可以访问的资源和执行的操作。 # 二、Winlogon进程 Winlogon(Windows Logon)是Windows NT系列操作系统中负责用户交互式登录、会话管理和安全事件协调的核心系统进程,直接决定了用户能否正常登录、会话如何初始化、安全策略如何落地。 | 属性 | 说明 | | -------- | -------------------------------------- | | 进程路径 | C:\Windows\System32\winlogon.exe | | 运行权限 | SYSTEM(最高本地权限) | | 所属会话 | 每个用户会话对应一个独立的Winlogon实例 | | 父进程 | Smss.exe(会话管理器) |  # 三、Lsass进程 LSASS(Local Security Authority Subsystem Service,本地安全授权子系统服务)是Windows安全体系的核心进程,负责处理所有本地和域的身份认证、安全策略执行、凭据存储与安全日志生成。 | 属性 | 说明 | | ---------- | ------------------------------------------------------------ | | 进程路径 | C:\Windows\System32\lsass.exe | | 运行权限 | NT AUTHORITY\SYSTEM(最高本地权限) | | 父进程 | Wininit.exe(Windows初始化进程) | | 系统重要性 | 系统关键进程,强制结束会导致系统在数秒内蓝屏崩溃(错误代码:CRITICAL_PROCESS_DIED) | | 核心依赖 | 依赖SAM数据库(本地认证)、Active Directory(域认证)、Winlogon(登录交互) | lsass进程的作用: - 接收Winlogon进程用户输入的密码,通过NTLM算法(MD4哈希)计算为哈希值,与SAM数据库中存储的该用户的NTLM哈希进行比对,匹配则认证成功; - 认证成功后,将凭据信息缓存在进程私有内存中,用于后续的单点登录,避免用户访问不同资源时重复输入密码。 # 四、SAM文件 SAM(Security Accounts Manager,安全账户管理器)是Windows NT系列操作系统中用于存储和管理本地用户账户与组账户安全信息的核心数据库。 SAM存储的核心数据:用户名、用户SID以及RID、密码哈希值、账户的状态、用户所属组、密码最后更改时间。 ```txt 文件位置位于:C:\windows\System32\config\SAM ```  注意: - 这是一个二进制注册表配置单元(Registry Hive)文件,不是普通文本文件,无法直接用记事本打开查看。 - 系统运行时,Windows内核对SAM文件施加排他性文件系统锁(Exclusive Filesystem Lock),任何进程(包括管理员)都无法复制、移动、删除该文件。 系统运行时,SAM文件被挂载到注册表(regedit)的以下路径: - HKEY_LOCAL_MACHINE\SAM\SAM - HKEY_LOCAL_MACHINE\SECURITY\SAM 由于访问控制列表(ACL)的限制,即使是管理员权限也无法直接查看这些注册表项的内容,只有SYSTEM权限的进程才能读写 # 五、Hash值 ## LM Hash LM Hash(LAN Manager Hash)是微软早期局域网认证协议LAN Manager中使用的密码哈希算法,用于将用户的明文密码转换为固定长度的哈希值,存储在SAM数据库中用于身份验证比对,LM Hash是基于DES加密的组合值。 历史背景: - LM Hash源自1980年代IBM设计的LAN Manager网络操作系统,后被微软继承并集成到Windows NT系列操作系统中 - 在Windows NT 3.1到Windows XP/Server 2003时代,SAM数据库中同时存储LM Hash和NTLM Hash两种哈希值 - 从Windows Vista/Server 2008开始,微软默认禁用LM Hash的存储,仅存储NTLM Hash LM Hash的生成过程: 1. 用户输入的密码中所有字母转换为大写 2. 密码转换为16进制 3. 如果密码长度不足14字节,在末尾补0x00至14字节;如果密码长度超过14字节,截断为前14字节,超出部分直接丢弃 4. 14字节拆分为两组,每组7字节 5. 两组7字节转换为2进制[拆分字节块] 6. 每7位bit分为一组,且末尾加0,合并后再转为16进制,变为8字节 7. 将生成的两组8字节作为密钥,分别进行DES加密 8. 加密后的两组值进行组合 > 示例 密码是a1b2c3..,转换为大写 ```txt A1B2C3.. ``` 转换16进制 ```txt 41 31 42 32 43 33 2E 2E 00 00 00 00 00 00 ``` 拆分两组 ```txt 41 31 42 32 43 33 2E 2E 00 00 00 00 00 00 ``` 每组16进制转2进制 ```txt 01000001001100010100001000110010010000110011001100101110 00101110000000000000000000000000000000000000000000000000 ``` 每7bit一组,分组之后末位补0,形成8bit,第一组: ```txt 第一组拆分: 0100000 1001100 0101000 0100011 0010010 0001100 1100110 0101110 第一组拆分末尾补0 01000000 10011000 01010000 01000110 00100100 00011000 11001100 01011100 ``` 合并后再转为16进制 ```txt 0100000010011000010100000100011000100100000110001100110001011100 16进制:409850462418CC5C ``` 第二组同理 ```txt 最终16进制:2E00000000000000 ``` 两组值分别进行DES加密  | 要素 | 角色 | | --------------------- | ------------------ | | 明文Hex(Plaintext) | 被加密的原始数据 | | 密钥Hex(Key) | 控制加密过程的参数 | | 密文Hex(Ciphertext) | 加密后的输出结果 | 对于LM Hash而言: | DES要素 | LM Hash中的对应 | 来源 | | ------------------ | ---------------------- | -------------------------------------------------- | | 密钥(Key) | 用户的密码 | 密码的前7字符 → 大写 → 补零 → 位扩展为8字节DES密钥 | | 明文(Plaintext) | 固定字符串 "KGS!@#$%" | 硬编码在算法中,所有用户共享同一个明文 | | 密文(Ciphertext) | LM Hash的一半(8字节) | DES加密的输出结果 | 明文的16进制为 ```txt 4B47532140232425 ``` 对两组密钥分别进行加密 ```txt 409850462418CC5C 2E00000000000000 ```   将两组密文结果进行组合为LM Hash ```txt FCEECFE68DE61CD85AACD84CD494924F ``` 当LM Hash存储被禁用时(空密码,即14字节全零)  ```txt aad3b435b51404eeaad3b435b51404ee ``` ## NTLM Hash NTLM Hash(NT LAN Manager Hash)是Windows NT系列操作系统中用于存储用户密码的哈希值,是LM Hash的替代方案。 NTLM Hash使用MD4哈希算法将用户的明文密码转换为固定长度的128位摘要,存储在SAM数据库(本地账户)或ntds.dit(域账户)中。 NTLM Hash的生成过程: - 获取用户输入的明文密码 - 将密码转换为UTF-16LE编码 - 对UTF-16LE编码的字节流执行MD4哈希运算 ```txt UTF-16LE(Little Endian)是一种将字符编码为16位(两个字节)的格式。 是Unicode的一种编码方式,主要用于在计算机系统中表示文本 UTF-16LE的特点是将高位字节放在高地址,低位字节放在低地址。 ``` 例如:密码为a1b2c3..,那么转换后的值为(使用AI直接转换) ```txt 6100310062003200630033002E002E00 ``` 手动计算方式:首先将明文密码转换为16进制,再转换为unicode格式 ```txt a1b2c3.. ```  ```txt 6131623263332e2e ``` 转换为unicode格式,即每个字节末尾填00 ```txt 6100310062003200630033002e002e00 ``` 进行MD4运算 ```txt 6100310062003200630033002e002e00 ```  # 六、Hash比对 ## 读取SAM文件值 使用QuarksPwDump.exe工具提取系统中SAM文件值  LM Hash被禁止存储时的默认值 ```txt aad3b435b51404eeaad3b435b51404ee ``` 导出文件的各字段含义 | 字段 | 说明 | | -------------------------------- | ---------------------------------- | | Administrator | 用户名 | | 500 | RID(相对标识符),500为内置管理员 | | aad3b435b51404eeaad3b435b51404ee | LM Hash(已禁用,显示为空值) | | FC52059927AF712FA06F7C72B5037B27 | NTLM Hash(实际哈希值) | | ::: | 末尾三个冒号为空字段,保持格式兼容 | ## RID RID是Windows安全体系中用于在同一域或同一台计算机内唯一标识一个安全主体(用户、组、计算机账户)的数值,是SID(Security Identifier,安全标识符)的最后一部分。 Windows为内置账户和组预分配了固定的RID: | RID | 账户名 | 说明 | | ---- | ------------- | -------------------------------------- | | 500 | Administrator | 内置管理员账户,默认禁用 | | 501 | Guest | 内置来宾账户,默认禁用 | | 502 | krbtgt | 域控的Kerberos票据授予账户(仅域环境) | | RID | 组名 | 说明 | | ---- | -------------- | ---------------------- | | 512 | Domain Admins | 域管理员组(仅域环境) | | 513 | Domain Users | 域用户组(仅域环境) | | 514 | Domain Guests | 域来宾组(仅域环境) | | 544 | Administrators | 本地管理员组 | | 545 | Users | 本地普通用户组 | | 546 | Guests | 本地来宾组 | 用户自行创建的账号,从 **1000** 开始递增,第一个手动创建的用户RID通常为1000或1001,每创建一个新账户,RID自动加1。 ## SID SID(Security Identifier,安全标识符)是Windows操作系统中用于**唯一标识一个安全主体**(用户账户、组账户、计算机账户、登录会话等)的可变长度数值标识符。 每个安全主体在创建时由系统分配一个全局唯一的SID,此后终身不变。Windows在进行访问控制、权限检查、审计日志记录时,所有操作都基于SID而非用户名。 字段格式: ```txt S-R-I-S...-S...-S...-SubAuthority ``` | 字段 | 名称 | 说明 | | -------------- | -------------------------------------- | ---------------------------------- | | S | 前缀标识 | 固定字母"S",表示这是一个SID字符串 | | R | 修订版本号(Revision) | SID结构的版本号,当前固定为`1` | | I | 标识符授权机构(Identifier Authority) | 颁发SID的权威机构编号 | | S...-S...-S... | 子授权机构(Sub-Authority) | 一级或多级,用于标识域或机器 | | SubAuthority | RID(相对标识符) | 最后一部分,标识具体的安全主体 |  ```txt S-1-5-21-2647201228-4086744196-353060965-500 │ │ │ │ │ │ │ │ │ │ │ │ │ └── RID = 500(内置管理员) │ │ │ │ │ └───────────── 子授权段3 │ │ │ │ └───────────────────────── 子授权段2 │ │ │ └───────────────────────────────────── 子授权段1(机器/域唯一标识) │ │ └──────────────────────────────────────── NT Authority │ └────────────────────────────────────────── 修订版本 1 └──────────────────────────────────────────── 前缀标识 ``` 常见授权机构编号: | 编号 | 名称 | 说明 | | ---- | ------------------------- | ------------------------------------------------ | | 0 | Null Authority | 空授权,保留未使用 | | 1 | World Authority | 全球范围,标识"所有人" | | 2 | Local Authority | 本地授权 | | 3 | Creator Authority | 对象创建者 | | 4 | Non-unique Authority | 非唯一授权,保留未使用 | | 5 | NT Authority | 最核心、最常见,Windows NT系列所有账户的颁发机构 | | 6 | Security Authority | 安全授权,保留未使用 | | 7 | Mandatory Label Authority | 强制完整性标签 | | 8 | Scoped Policy Authority | 作用域策略授权 |
毛林
2026年11月15日 18:30
转发文档
收藏文档
上一篇
下一篇
评论(0)
登录
后可发表评论
还没有评论,来抢沙发~
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
Word文档
PDF文档(打印)
分享
链接
类型
密码
更新密码
还没有评论,来抢沙发~