Windows基础
本文介绍了Windows基础知识。涵盖管理员、标准用户等常见账户及权限,Administrators、Domain Admins 等渗透测试常见用户组及作用,还有查看用户和组的方式。讲解了访问控制相关概念,如 ACL、DACL、SACL 等,以及操作方式;安全标识符(SID)的定义、组成和查看命令。描述了身份验证流程,详解访问令牌的生成、组成、类型等及工作流程,还介绍了权限分配机制、Windows
本文介绍了Windows基础知识。涵盖管理员、标准用户等常见账户及权限,Administrators、Domain Admins 等渗透测试常见用户组及作用,还有查看用户和组的方式。讲解了访问控制相关概念,如 ACL、DACL、SACL 等,以及操作方式;安全标识符(SID)的定义、组成和查看命令。描述了身份验证流程,详解访问令牌的生成、组成、类型等及工作流程,还介绍了权限分配机制、Windows 哈希、UAC、Windows 服务和注册表等内容。
本人菜狗,技术、精力有限,有误请指出!!!
声明:本人所有文章均为技术分享,均用于防御为目的的记录,所有操作均在实验环境下进行,请勿用于其他用途,否则后果自负!!!
用户和用户组
用户
- Cmd命令下:net user
- PowerShell:Get-LocalUser
- Win+r:lusrmgr.msc
- 控制面板
常见的账户
管理员账户(Administrator):拥有系统最高权限,可修改系统设置、安装 / 卸载软件、管理其他账户、访问所有文件等,用于系统管理和高级操作。默认状态可能隐藏,需手动启用。
标准用户账户:权限受限,可正常使用软件、浏览文件,但无法修改关键系统设置、安装需高权限的软件,适合日常操作,减少误操作或恶意程序对系统的破坏。
来宾账户(Guest):临时账户,权限极低,通常用于临时访客使用电脑,默认禁用,无法修改系统设置或安装软件,且退出后操作记录可能被清除。
内置系统账户:如 “SYSTEM”(系统账户),权限高于管理员,用于系统进程运行;“Local Service” 和 “Network Service”,权限较低,分别用于本地服务和网络服务的运行,保障服务安全。
用户组
打开
- Cmd:net localgroup
- powerShell:Get-LocalGroup
- Win+r:lusrmgr.msc
- 控制面板
Administrators(管理员组)
权限最高,成员可完全控制系统(如修改注册表、安装恶意软件、添加 / 删除账户等)。
渗透测试中若获取该组成员权限,可直接接管目标主机,是权限提升的核心目标。
Remote Desktop Users(远程桌面用户组)
成员被允许通过远程桌面协议(RDP)登录系统。
攻击者若获取该组成员权限,可通过 RDP 远程连接目标主机,进行交互式操作(如窃取数据、部署后门)。
Domain Admins(域管理员组,域环境中)
域环境中的最高权限组,成员可控制整个域内所有计算机、用户和资源。
渗透测试中若拿下该组权限,可横向移动至域内所有主机,实现对整个域的控制,是域渗透的核心目标。
Enterprise Admins(企业管理员组,多域环境中)
权限覆盖整个企业级活动目录(多个域),成员可管理企业内所有域的配置。
在大型网络渗透中,获取该组权限意味着控制整个企业网络架构。
Backup Operators(备份操作员组)
成员拥有系统备份 / 还原权限,可绕过文件系统权限限制(如读取敏感文件、注册表等)。
攻击者可利用其权限读取 SAM 文件(获取用户哈希)、备份敏感数据,或通过还原操作植入恶意程序。
Power Users(高级用户组,旧系统常见)
权限介于普通用户和管理员之间,可安装部分软件、修改系统配置(如服务设置)。
在 Windows XP/2003 等旧系统中,该组权限较高,可能被用于提权(现代系统中权限已削弱)。
Account Operators(账户操作员组,域环境中)
可管理域内用户账户(如创建 / 修改普通用户),但无法修改管理员组或自身权限。
攻击者可利用其权限创建新账户、修改用户密码,作为横向移动的跳板。
常见的内置账户
Administrator(管理员账户):系统默认最高权限账户,可执行所有操作(如修改系统设置、管理其他账户等),默认可能隐藏,需手动启用,用于系统管理。
Guest(来宾账户):临时访问账户,权限极低,仅能进行基础操作,默认禁用,适合临时用户使用,退出后操作记录可能不保留。
SYSTEM(系统账户):权限高于管理员的内置账户,用于运行系统核心进程(如服务、驱动),确保系统组件正常工作,用户无法直接登录。
Local Service(本地服务账户):权限较低的内置账户,用于运行仅需本地资源访问的系统服务(如 Windows Update),增强服务运行的安全性。
Network Service(网络服务账户):权限较低,用于运行需要网络访问的系统服务(如 DNS 客户端),仅拥有
访问网络资源的必要权限,降低安全风险。
访问控制列表
| 词汇 | 含义 |
|---|---|
| 安全描述符 | 描述安全对象相关的信息,如SID、DACL、SACL等 |
| 安全对象 | 具有安全描述符的对象,如文件、目录、注册表、进程、线程、管道等 |
| ACL | Access Control List,访问控制列表 |
| ACE | Access Control Entries,访问控制条目 |
| DACL | Discretionary Access Control List,自主访问控制列表 |
| SACL | System Access Control List,系统访问控制列表 |
| trustees | 受托人,一般指用户账户、用户组、登录会话 |
操作方式:
- GUI操作方式
文件和文件夹:在 Windows 资源管理器中,右键单击要设置访问控制的文件或文件夹,选择 “属性”。在弹出的属性窗口中,切换到 “安全” 选项卡,在这里可以看到当前的 ACL 设置,包括已有的用户和用户组及其对应的权限。
添加用户或组:点击 “编辑” 按钮,再点击 “添加”,可以通过输入用户名或组名来查找并添加新的受托人到 ACL 中。添加后,可以在权限列表中勾选相应的权限(如读取、写入、完全控制等)。
修改权限:选中已有的用户或组,在权限列表中修改其权限设置。
删除用户或组:选中要删除的用户或组,点击 “删除” 即可从 ACL 中移除。
注册表项:打开注册表编辑器(regedit.exe),找到要设置访问控制的注册表项,右键单击它,选择 “权限”,后续操作与文件和文件夹的权限设置类似。 - 命令行操作
ICACLS 命令:这是 Windows 中用于操作文件和文件夹 ACL 的命令行工具。
查看 ACL:例如,要查看 C:\test 文件夹的 ACL,可以在命令提示符中输入icacls C:\test ,系统会列出该文件夹的当前 ACL 设置,包括各个受托人及其权限。
添加权限:若要给用户 “User1” 赋予对 C:\test 文件夹的读取权限,可以使用命令icacls C:\test /grant User1:® ,其中 “®” 表示读取权限。
修改权限:比如要将用户 “User1” 对 C:\test 文件夹的权限修改为完全控制,可以使用命令icacls C:\test /grant User1:(F) ,“(F)” 代表完全控制权限。
删除权限:要删除用户 “User1” 对 C:\test 文件夹的权限,命令为icacls C:\test /remove User1 。
CACLS 命令:较早期的命令行工具,主要用于管理文件的 ACL,但功能相对 ICACLS 较为有限。例如,查看文件 C:\test.txt 的 ACL,命令为cacls C:\test.txt 。
编程操作
使用 Windows API:开发人员可以通过 Windows API 函数来操作 ACL。例如,使用SetSecurityInfo函数可以设置安全对象(如文件、注册表项等)的安全描述符,包括修改 DACL 和 SACL 。在 C++ 编程中,需要包含相应的头文件(如 windows.h 等),并正确调用相关函数,同时要处理好权限检查、内存管理等问题。
PowerShell 脚本:PowerShell 提供了丰富的 cmdlet 来管理 ACL。例如,使用Get-Acl cmdlet 获取文件或文件夹的 ACL,使用Set-Acl cmdlet 修改 ACL。
示例脚本:
#获取C:\test文件夹的ACL
$acl = Get-Acl -Path C:\test
#创建一个新的访问规则,赋予用户“User1”读取权限
$accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule("User1", "Read", "Allow")
#将新的访问规则添加到ACL中
$acl.SetAccessRule($accessRule)
将修改后的ACL应用到C:\test文件夹
Set-Acl -Path C:\test -AclObject $acl
安全标识符
概念:安全标识符(SID)是用于标识安全主体的唯一符号,每个用户、每个用户组、每个进程都有唯一的SID。每当用户登录系统或打开进程时,系统都会从本地安全数据库中检索出该用户的SID,并将其放在该用户的访问令牌中。
查看当前用户的SID:whoami /user
查看所有用户的SID:wmic useraccount get name,sid
前缀部分
S:这是固定前缀,代表这是一个安全标识符(Security Identifier),表明该字符串是用于标识 Windows 系统中的安全主体。
版本号部分
1:表示 SID 的版本号。目前 Windows 使用的 SID 版本通常为 1 ,这是从 Windows NT 时代开始就确定下来的标准版本,后续的 Windows 系统一直沿用。
颁发机构标识符部分
5:此数字代表颁发该 SID 的颁发机构。在 Windows 系统中,值为 5 表示该 SID 是由 NT Authority 颁发的 。NT Authority 是 Windows NT 操作系统中负责安全管理和身份验证的虚拟实体,负责生成和分配系统中各类账户相关的 SID。
子颁发机构标识符部分
21:这是子颁发机构标识符,用于标识由 NT Authority 下的特定子机构颁发该 SID。在 Windows 中,值为 21 表示该 SID 是由活动目录(Active Directory)域中的域控制器颁发,用于标识域内的用户、组或计算机账户等安全主体。
相对标识符(RID)和域标识符部分
后面连续的几个数字(2200046248-3656965401-936119334)是域标识符(Domain SID) ,它们共同唯一标识了该账户所在的活动目录域。不同的活动目录域具有不同的域标识符。
1001:这是相对标识符(Relative Identifier,RID)。在一个特定的域中,RID 用于唯一标识域内的具体安全主体(如用户、组等)。例如,在 Windows 系统中,RID 500 通常被分配给域管理员账户(Administrator),RID 501 通常被分配给域来宾账户(Guest) 。对于普通用户或组,系统会按照一定规则依次分配 RID,从而保证在该域内每个安全主体都有唯一的标识。
身份验证

Lsass.exe是本地安全认证服务器进程,用于本地安全登录和策略登录
SAM是管理用户账户和登录策略;
访问令牌
访问令牌的本质与生成
定义:访问令牌是描述进程或线程安全上下文的对象,包含身份标识、权限等关键安全信息。
生成时机:用户成功身份验证并登录后,本地安全机构(LSA)基于用户的 SID、所属组 SID 等信息生成访问令牌,关联到登录会话。
核心组成要素
身份标识:用户 SID、所属用户组 SID 列表、当前登录会话的登录 SID、所有者 SID、主要安全组 SID。
权限信息:本地安全策略分配给用户及组的特权列表(如备份、关机等特殊操作权限)。
控制属性:DACL(自主访问控制列表)、访问令牌来源、令牌类型(主令牌 / 模拟令牌)、限制 SID、模拟级别、其他统计信息。
关联与传递机制
初始关联:访问令牌首先附加到用户会话的初始进程userinit.exe(路径记录在注册表HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit)。
进程传递:userinit.exe完成环境初始化(执行登录脚本、启动自启程序等)后,启动explorer.exe(注册表Shell键值默认值),后续用户操作创建的子进程和线程,默认继承父进程(explorer.exe)的令牌副本,除非进程创建时指定了新令牌。
令牌类型与模拟级别
主令牌(Primary Token):
又称授权令牌、进程令牌,每个进程默认关联一个主令牌,描述进程的安全上下文(用户账户、权限集等),由 LSA 创建并分配。
模拟令牌(Impersonation Token):
由有权限的进程生成,用于在不改变自身真实身份的情况下,模拟其他用户 / 进程执行操作,包含被模拟对象的身份和权限。
模拟级别(从低到高):
SecurityAnonymous:服务器无法模拟或标识客户端;
SecurityIdentification:服务器可获取客户端标识和特权,但不能模拟;
SecurityImpersonation:服务器可在本地模拟客户端安全上下文;
SecurityDelegation:服务器可在远程系统模拟客户端安全上下文。
(仅SecurityImpersonation和SecurityDelegation级别支持模拟操作)
访问令牌是 Windows 安全模型的核心,贯穿身份验证、权限控制和进程安全上下文管理的全过程,确保资源访问符合系统安全策略。
访问令牌工作流程:
1.令牌的创建:用户登录阶段
身份验证触发:用户通过用户名密码、生物识别等方式登录系统时,本地安全机构(LSA)会验证用户凭据(如比对 SAM 数据库或域控制器中的账户信息)。
生成访问令牌:验证通过后,LSA 根据用户信息生成访问令牌,包含:
用户及所属组的 SID(如用户个人 SID、Administrators 组 SID 等);
分配的特权列表(如关机、备份等系统特权);
登录会话 ID、令牌类型(默认为主令牌)等元数据。
关联初始进程:令牌被附加到登录会话的初始进程userinit.exe(位置由注册表Winlogon\Userinit指定),该进程负责初始化用户环境(如运行登录脚本、加载网络连接)。
2. 令牌的传递:进程创建阶段
初始进程引导:userinit.exe完成初始化后,读取注册表Shell键值(默认explorer.exe),启动文件资源管理器进程,并将自身的令牌复制传递给explorer.exe。
子进程继承:用户后续操作创建的所有子进程(如打开浏览器、运行程序),默认继承父进程(通常是explorer.exe)的令牌副本,因此大多数进程在同一登录会话中共享相同的安全上下文,除非显式指定其他令牌。
3. 令牌的使用:资源访问阶段
当进程尝试访问文件、注册表项等安全对象时,系统通过令牌进行权限校验,流程如下:
提取令牌信息:系统从访问进程的令牌中,获取用户 SID、所属组 SID 及特权列表。
比对访问控制列表(ACL):
检查安全对象的 DACL(自主访问控制列表),匹配令牌中的 SID 与 DACL 中的访问控制条目(ACE);
若存在匹配的 ACE 且权限允许(如 “读取”“写入”),则允许访问;若权限不足或存在明确 “拒绝” 条目,则阻止访问。
特权校验(特殊操作):若操作涉及系统特权(如修改系统时间),系统会额外检查令牌中的特权列表,只有包含对应特权且已启用时,才允许执行。
4. 令牌的特殊场景:模拟与级别控制
当进程需要以其他用户身份操作时(如 Web 服务器处理用户请求),会触发模拟令牌流程:
生成模拟令牌:具有权限的进程(如服务进程)通过系统 API(如ImpersonateLoggedOnUser)生成模拟令牌,包含被模拟用户的安全信息。
模拟级别生效:根据令牌的模拟级别(从低到高)限制操作范围:
SecurityAnonymous:无法识别或模拟客户端;
SecurityIdentification:仅能识别客户端身份,不能模拟操作;
SecurityImpersonation:可在本地系统模拟客户端执行操作;
SecurityDelegation:可在远程系统模拟客户端执行操作(最高级别)。
模拟结束:操作完成后,进程恢复自身主令牌,避免权限滥用。
5. 令牌的销毁:会话结束阶段
当用户注销或登录会话超时,系统会终止关联的所有进程,同时销毁对应的访问令牌,释放占用的安全资源,确保会话结束后不再保留权限上下文。
总结:访问令牌的工作流程是 “创建 - 传递 - 校验 - 销毁” 的闭环,通过携带用户身份与权限信息,在进程间传递并与 ACL 比对,成为 Windows 实现精细化安全控制的核心机制。
权限分配
在 Windows 系统中,权限分配是基于访问令牌与安全对象的访问控制列表(ACL)联动实现的,核心是通过 “权限定义 - 关联令牌 - 校验匹配” 的流程,确保用户或进程仅能访问被授权的资源。以下是权限分配的具体机制和关键环节:
一、权限的核心要素
权限分配涉及两个核心对象:
访问令牌(Access Token):存储主体(用户、进程)的身份(SID)和权限信息(如 “读取”“管理员特权”)。
安全对象(Securable Object):需受保护的资源(文件、注册表项、服务等),其安全描述符(Security Descriptor)中包含访问控制列表(ACL),定义了哪些主体可以执行哪些操作。
二、权限分配的底层逻辑
权限分配的本质是 “将主体的权限需求与对象的访问规则进行匹配”,具体通过以下步骤实现:
- 权限的定义:从策略到令牌
本地安全策略 / 组策略:系统通过本地安全策略(如 “本地组策略编辑器”gpedit.msc)或域组策略,预先定义用户 / 组的权限(如 “允许本地登录”“备份文件和目录”)。
令牌关联权限:用户登录时,LSA(本地安全机构)根据上述策略,将权限列表写入用户的访问令牌,成为后续权限校验的依据。 - 安全对象的访问控制规则:ACL 的作用
每个安全对象(如C:\test.txt)的安全描述符包含两类 ACL:
DACL(自主访问控制列表):定义 “允许” 或 “拒绝” 哪些主体(用户 / 组,通过 SID 标识)对该对象执行特定操作(如 “读取”“写入”“删除”)。
例:test.txt的 DACL 可能包含条目:允许 Administrators组(SID:S-1-5-32-544) 完全控制。
SACL(系统访问控制列表):定义对对象的操作是否需要审计(如 “记录删除操作”),不直接参与权限分配,仅用于安全日志记录。 - 权限校验:令牌与 ACL 的匹配流程
当进程(携带访问令牌)尝试访问安全对象时,系统执行以下校验:
提取令牌中的身份信息:从进程的访问令牌中,获取用户 SID、所属组 SID 及已启用的权限。
遍历对象的 DACL:
按 DACL 中访问控制条目(ACE)的顺序匹配(“拒绝” ACE 优先于 “允许” ACE)。
若找到与令牌中 SID 匹配的 ACE,且 ACE 明确允许请求的操作(如 “读取”),则通过校验;若匹配到 “拒绝” ACE,或无匹配的 “允许” ACE,则拒绝访问。
特权操作的额外校验:若操作涉及系统特权(如修改系统时间),需额外检查令牌中的特权列表,只有包含对应特权且已启用时,才允许执行。
三、权限分配的层级与方式
- 基于用户 / 组的分配(最常见)
系统通过 “用户组” 简化权限管理:将用户加入特定组(如Administrators Users),用户自动继承组的权限。
例:BUILTIN\Users组(SID:S-1-5-32-545)默认拥有 “读取” 系统大部分文件的权限,加入该组的用户自动获得此权限。 - 基于特权(Privilege)的分配
特权是系统级别的特殊权限(如SeShutdownPrivilege允许关机、SeTakeOwnershipPrivilege允许获取文件所有权),仅分配给高权限账户(如管理员)。
特权存储在访问令牌中,默认可能处于 “禁用” 状态,进程需通过 API(如AdjustTokenPrivileges)启用后才能使用。 - 基于模拟的临时权限分配
当进程需要临时以其他用户身份操作时(如服务处理用户请求),可通过模拟令牌获取被模拟用户的权限,操作结束后恢复自身权限,避免权限滥用。
模拟权限受限于令牌的模拟级别(如SecurityImpersonation仅允许本地模拟,SecurityDelegation允许远程模拟)。
四、权限分配的管理工具
图形化工具:
文件 / 文件夹属性中的 “安全” 选项卡(直接编辑 DACL);
“计算机管理” 中的 “本地用户和组”(管理用户 / 组成员及权限);
“本地组策略编辑器”(配置系统级权限策略)。
命令行工具:
icacls:修改文件 / 目录的 ACL(如icacls C:\test /grant Users:R 授予 Users 组读取权限);
net localgroup:管理本地组(如net localgroup Administrators John /add 将 John 加入管理员组)。
总结
Windows 的权限分配是 “主体(令牌)- 对象(ACL)” 的动态匹配过程:通过访问令牌携带主体的身份与权限,通过安全对象的 DACL 定义访问规则,最终在资源访问时通过系统内核校验两者的匹配性,实现 “最小权限原则” 下的安全控制。这种机制既支持静态的用户 / 组权限分配,也支持动态的模拟权限临时切换,兼顾了安全性与灵活性。
Windows哈希(有兴趣可以了解NTLM协议)
LM HASH(现已淘汰)
加密流程:
预处理:将密码转换为大写,截取前 14 个字符(若不足 14 位则补空格)。
拆分:把 14 个字符分成两组,每组 7 个字符。
转换与加密:每组 7 字符转换为 8 字节二进制(含奇偶校验位),再用 DES 算法加密固定的 “魔术字符串”(16 个 0)。
拼接:将两组加密结果拼接,得到最终的 LM Hash(16 字节,32 位十六进制字符串)。
NTLM HASH
加密流程:passwd(明文)→706173737764(转为十六进制编码)→\u0037\u0030\u0036\u0031\u0037\u0033\u0037\u0033\u0037\u0037\u0036\u0034(unicode编码)→2831bc57e87d2c38ece60f73d9a22020(MD4加密)
用户账户控制(UAC)
打开:控制面板 - 用户账户 - 用户账户控制设置
恶意软件(如病毒、木马)通常需要获取系统高权限才能进行破坏(如篡改系统文件、窃取敏感信息等)。
UAC 的验证机制会阻断这些恶意程序的自动执行 —— 如果恶意程序尝试执行高权限操作,UAC 会弹出提示窗口,用户若未确认,操作将被终止,从而减少系统被攻击的风险。
比如桌面上某些图标下面有小盾牌,打开这类软件总要我们确认才能运行(是因为UAC开启了,这类软件需要更高的权限才可以运行),就是这个原因。我们把这个东西拉低就不会有提示了(建议不要随便乱改)
图中有四个等级
始终通知:最高级别的UAC设置。每当有程序需要使用高级别的权限时都会提示。
仅当应用尝试更改我的计算机时通知我(默认):UAC的默认设置。当内置
Windows程序需要使用高级别的权限时不会提示用户,而第三方程序要使用高级别的
权限时会提示。
仅当应用尝试更改我的计算机时通知我(不降低桌面的亮度):与上一条设置相同,
但在提示用户时不降低桌面的亮度。
从不通知:在尝试安装软件、修改Windows设置时不会提示用户。
Windows服务
输入services.msc即可进入服务界面
这里可以禁用一些东西
比如可以禁用Google Chrome浏览器的更新
注册表
Win+r输入regedit即可进入注册表
注册表的数据类型:
IREG_SZ:字符串;
IREG_MULTI_SZ:多字符串,以\0结尾;
REG_BINARY:二进制数据;
IREG_DWORD:一个32位的整数。
根键介绍
| 根键 | 简称 | 描述 |
|---|---|---|
| HKEY_CLASSES_ROOT | HKCR | 存储与文件关联的信息和组件对象模型(COM)信息 |
| HKEY CURRENT USER | HKCU | 存储与当前登录用户关联的数据 |
| HKEY_LOCAL MACHINE | HKLM | 存储系统相关信息 |
| HKEY_USERS | HKU | 存储机器上所有账户的信息 |
| HKEY_CURRENT_CONFIG | HKCC | 存储当前硬件配置的一些信息 |
去注册表翻翻找找看会熟悉很多
更多推荐



所有评论(0)