本文介绍了Windows基础知识。涵盖管理员、标准用户等常见账户及权限,Administrators、Domain Admins 等渗透测试常见用户组及作用,还有查看用户和组的方式。讲解了访问控制相关概念,如 ACL、DACL、SACL 等,以及操作方式;安全标识符(SID)的定义、组成和查看命令。描述了身份验证流程,详解访问令牌的生成、组成、类型等及工作流程,还介绍了权限分配机制、Windows 哈希、UAC、Windows 服务和注册表等内容。
本人菜狗,技术、精力有限,有误请指出!!!
声明:本人所有文章均为技术分享,均用于防御为目的的记录,所有操作均在实验环境下进行,请勿用于其他用途,否则后果自负!!!

用户和用户组

用户

  1. Cmd命令下:net user
  2. PowerShell:Get-LocalUser
  3. Win+r:lusrmgr.msc
  4. 控制面板

常见的账户
管理员账户(Administrator):拥有系统最高权限,可修改系统设置、安装 / 卸载软件、管理其他账户、访问所有文件等,用于系统管理和高级操作。默认状态可能隐藏,需手动启用。

标准用户账户:权限受限,可正常使用软件、浏览文件,但无法修改关键系统设置、安装需高权限的软件,适合日常操作,减少误操作或恶意程序对系统的破坏。

来宾账户(Guest):临时账户,权限极低,通常用于临时访客使用电脑,默认禁用,无法修改系统设置或安装软件,且退出后操作记录可能被清除。

内置系统账户:如 “SYSTEM”(系统账户),权限高于管理员,用于系统进程运行;“Local Service” 和 “Network Service”,权限较低,分别用于本地服务和网络服务的运行,保障服务安全。

用户组

打开

  1. Cmd:net localgroup
  2. powerShell:Get-LocalGroup
  3. Win+r:lusrmgr.msc
  4. 控制面板

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 受托人,一般指用户账户、用户组、登录会话

操作方式:

  1. GUI操作方式
    文件和文件夹:在 Windows 资源管理器中,右键单击要设置访问控制的文件或文件夹,选择 “属性”。在弹出的属性窗口中,切换到 “安全” 选项卡,在这里可以看到当前的 ACL 设置,包括已有的用户和用户组及其对应的权限。
    添加用户或组:点击 “编辑” 按钮,再点击 “添加”,可以通过输入用户名或组名来查找并添加新的受托人到 ACL 中。添加后,可以在权限列表中勾选相应的权限(如读取、写入、完全控制等)。
    修改权限:选中已有的用户或组,在权限列表中修改其权限设置。
    删除用户或组:选中要删除的用户或组,点击 “删除” 即可从 ACL 中移除。
    注册表项:打开注册表编辑器(regedit.exe),找到要设置访问控制的注册表项,右键单击它,选择 “权限”,后续操作与文件和文件夹的权限设置类似。
  2. 命令行操作
    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),定义了哪些主体可以执行哪些操作。
二、权限分配的底层逻辑
权限分配的本质是 “将主体的权限需求与对象的访问规则进行匹配”,具体通过以下步骤实现:

  1. 权限的定义:从策略到令牌
    本地安全策略 / 组策略:系统通过本地安全策略(如 “本地组策略编辑器”gpedit.msc)或域组策略,预先定义用户 / 组的权限(如 “允许本地登录”“备份文件和目录”)。
    令牌关联权限:用户登录时,LSA(本地安全机构)根据上述策略,将权限列表写入用户的访问令牌,成为后续权限校验的依据。
  2. 安全对象的访问控制规则:ACL 的作用
    每个安全对象(如C:\test.txt)的安全描述符包含两类 ACL:
    DACL(自主访问控制列表):定义 “允许” 或 “拒绝” 哪些主体(用户 / 组,通过 SID 标识)对该对象执行特定操作(如 “读取”“写入”“删除”)。
    例:test.txt的 DACL 可能包含条目:允许 Administrators组(SID:S-1-5-32-544) 完全控制。
    SACL(系统访问控制列表):定义对对象的操作是否需要审计(如 “记录删除操作”),不直接参与权限分配,仅用于安全日志记录。
  3. 权限校验:令牌与 ACL 的匹配流程
    当进程(携带访问令牌)尝试访问安全对象时,系统执行以下校验:
    提取令牌中的身份信息:从进程的访问令牌中,获取用户 SID、所属组 SID 及已启用的权限。
    遍历对象的 DACL:
    按 DACL 中访问控制条目(ACE)的顺序匹配(“拒绝” ACE 优先于 “允许” ACE)。
    若找到与令牌中 SID 匹配的 ACE,且 ACE 明确允许请求的操作(如 “读取”),则通过校验;若匹配到 “拒绝” ACE,或无匹配的 “允许” ACE,则拒绝访问。
    特权操作的额外校验:若操作涉及系统特权(如修改系统时间),需额外检查令牌中的特权列表,只有包含对应特权且已启用时,才允许执行。

三、权限分配的层级与方式

  1. 基于用户 / 组的分配(最常见)
    系统通过 “用户组” 简化权限管理:将用户加入特定组(如Administrators Users),用户自动继承组的权限。
    例:BUILTIN\Users组(SID:S-1-5-32-545)默认拥有 “读取” 系统大部分文件的权限,加入该组的用户自动获得此权限。
  2. 基于特权(Privilege)的分配
    特权是系统级别的特殊权限(如SeShutdownPrivilege允许关机、SeTakeOwnershipPrivilege允许获取文件所有权),仅分配给高权限账户(如管理员)。
    特权存储在访问令牌中,默认可能处于 “禁用” 状态,进程需通过 API(如AdjustTokenPrivileges)启用后才能使用。
  3. 基于模拟的临时权限分配
    当进程需要临时以其他用户身份操作时(如服务处理用户请求),可通过模拟令牌获取被模拟用户的权限,操作结束后恢复自身权限,避免权限滥用。
    模拟权限受限于令牌的模拟级别(如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 存储当前硬件配置的一些信息

去注册表翻翻找找看会熟悉很多

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐