惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
SegmentFault 最新的问题
J
Java Code Geeks
V
V2EX
Blog — PlanetScale
Blog — PlanetScale
博客园 - 司徒正美
Hugging Face - Blog
Hugging Face - Blog
F
Fortinet All Blogs
aimingoo的专栏
aimingoo的专栏
B
Blog
A
About on SuperTechFans
有赞技术团队
有赞技术团队
月光博客
月光博客
Microsoft Azure Blog
Microsoft Azure Blog
阮一峰的网络日志
阮一峰的网络日志
腾讯CDC
美团技术团队
大猫的无限游戏
大猫的无限游戏
爱范儿
爱范儿
N
Netflix TechBlog - Medium
C
Check Point Blog
Recent Announcements
Recent Announcements
博客园 - Franky
博客园 - 叶小钗
T
Tailwind CSS Blog

吹比💨

NFS 服务引发的一次“诡异”应急响应 浏览器第三方Cookie保护导致无法使用Github.dev 使用pushState伪造浏览器地址栏 一次排查网站劫持过程流水账 手动导出 Microsoft Authenticator 中的2FA密钥 使用CloudFlare的IP Lists功能来做访问控制 FrontJS网站错误监控插件存在弹窗广告 宝塔面板可能存在未知漏洞的分析与处置方法 CDN厂商解决域前置问题 中文域名那些事 TLS握手指纹(JA3/JA3S)检测恶意软件流量 [A-Z]{2}\d{2}.cc 团伙的一些公开信息 Azure旗下奇怪的静态托管服务 Csrf与浏览器第三方Cookie策略的问题 Pppoe密码嗅探 Publicsuffix那些事 一次有意思的域名追踪 CobaltStrike通信中host字段的获取 XFF那些事 CORB那些事 Referrer Policy那些事 使用CloudFlare来为网站开启客户端证书验证 DNS那些事 用flask来在线管理你的iptables 屏蔽掉向日葵的有效方法 帝国cms在防止内容采集方面做的工作 身份验证器是如何验证我们的身份? 利用GoogleAppsScript自动回复短信实现保号 Nginx实用模块 有关跨域请求的一些记录
银狐使用WDAC来对抗杀软
榆木 · 2025-05-13 · via 吹比💨

起因


最近工作中遇到一个银狐变种,会通过手段导致杀软无法正常运行,提示 你的组织使用了 Windows Defender 应用程序控制来阻止此应用 简单记录一下。

解决过程

通过gemini的深度研究功能,帮我查找到相关的资料。Windows Defender Application Control(WDAC)是为企业设计的应用管控工具,没想到被银狐用来对抗杀软,同样的,也有红队使用其来对抗EDR。

通过CiTool能够罗列出来目前加载的所有的规则,受害机器的输出如下:

citool -lp -j
{
	"Policies": [{
		"PolicyID": "a244370e-44c9-4c06-b551-f6016e563076",
		"BasePolicyID": "a244370e-44c9-4c06-b551-f6016e563076",
		"FriendlyName": "AllowMicrosoft_2025-05-04",
		"Version": 2814749767434246,
		"VersionString": "10.0.5.6",
		"IsSystemPolicy": false,
		"IsSignedPolicy": false,
		"IsOnDisk": true,
		"IsEnforced": true,
		"IsAuthorized": true,
		"PolicyOptions": ["Enabled:UMCI", "Disabled:Runtime FilePath Rule Protection", "Enabled:Inherit Default Policy", "Enabled:Unsigned System Integrity Policy", "Disabled:Script Enforcement", "Enabled:Update Policy No Reboot"]
	},{
		"PolicyID": "a072029f-588b-4b5e-b7f9-05aad67df687",
		"BasePolicyID": "a072029f-588b-4b5e-b7f9-05aad67df687",
		"FriendlyName": "Microsoft Windows Virtualization Based Security Policy",
		"Version": 2814751590187008,
		"VersionString": "10.0.27818.0",
		"IsSystemPolicy": true,
		"IsSignedPolicy": true,
		"IsOnDisk": true,
		"IsEnforced": false,
		"IsAuthorized": false,
		"PolicyOptions": ["Enabled:Advanced Boot Options Menu", "Enabled:Update Policy No Reboot"]
	}],
	"OperationResult": 0
}

为了方便查看我把JSON格式化了一下,且只保留了有问题的一个和正常的一个,实际输出会有很多。其中AllowMicrosoft_2025-05-04就是有问题的部分,虽然显示的是"IsOnDisk": true,但是我在c:\Windows\System32\CodeIntegrity\CiPolicies\Active目录下确实没找到对应的文件,但是该目录的变更时间和中马时间能对应的上。可能加载以后被删除掉了原始的文件。 通过citool可以直接删除掉,命令如下:

citool -rp a244370e-44c9-4c06-b551-f6016e563076 -j

不过还有一个值得注意的是 CiTool.exe 并不在所有的windows版本中可用,

从 Windows 11、版本 22H2 和 2025 Windows Server 开始,它包含在 Windows 映像中
https://learn.microsoft.com/zh-cn/windows/security/application-security/application-control/app-control-for-business/operations/citool-commands

我本地测试也发现,在不同版本的win11中该文件存在不同的版本,他们接受的参数不相同。所以如果想要自动化处理,最好在脚本内自带一个CiTool.exe, (经测试:在win10中该工具无法正常提取规则内容,手动复制无效,所以该脚本只在win11下可用,请注意。)

完整的自动化脚本如下:

$scriptDir = Split-Path -Parent $MyInvocation.MyCommand.Definition
$citoolPath = Join-Path $scriptDir "CiTool.exe"
$policies = & $citoolPath -lp -j | ConvertFrom-Json
$unsignedPolicies = $policies.Policies | Where-Object { -not $_.IsSignedPolicy }
foreach ($p in $unsignedPolicies) {
    & $citoolPath -rp $p.PolicyID -j
}
# Refresh
echo "Refreshing policy list..."
& $citoolPath -r -j

$services = Get-WmiObject -Class Win32_Service
$targetServices = $services | Where-Object {
    $_.PathName -like "*cmd /c cd /d `"C:\ProgramData\*"
}
if ($targetServices.Count -eq 0) {
    Write-Host "No matching services found."
} else {
    foreach ($svc in $targetServices) {
        $name = $svc.Name
        $displayName = $svc.DisplayName
        $path = $svc.PathName
        Write-Host "`n[!] Suspicious service detected:"
        Write-Host "Name        : $name"
        Write-Host "DisplayName : $displayName"
        Write-Host "Path        : $path"
        try {
            Write-Host "Stopping service $name..."
            Stop-Service -Name $name -Force -ErrorAction Stop
            Write-Host "Service stopped."
        } catch {
            Write-Host "Failed to stop service: $($_.Exception.Message)"
        }
        Write-Host "Deleting service $name..."
        sc.exe delete $name | Out-Null
        Write-Host "Service deleted."
        if ($path -match 'C:\\ProgramData\\([^\\]+)\\([^\\]+)') {
            $dirPath = "C:\ProgramData\$($Matches[1])"
            if (Test-Path $dirPath) {
                Write-Host "Removing directory: $dirPath"
                Remove-Item -Path $dirPath -Recurse -Force -ErrorAction SilentlyContinue
                Write-Host "Directory removed."
            }
        }
    }
}

其中C:\ProgramData\*是针对该样本的,后续可能会变化或者存在误杀。

使用教程

  1. 下载安装360卫士,虽然打不开 但是先备好。
  2. 保存文件为stoploss.ps1,准备好CiTool.exe放到同目录,执行powershell -NoProfile -ExecutionPolicy Bypass -File ".\stoploss.ps1"
  3. 再打开360卫士杀毒扫描,即可轻易解决。

IOC

  • hxxps[://]www[.]sougoui[.]com/
  • hxxps[://]xinfeng168168[.]oss-ap-southeast-1[.]aliyuncs[.]com/sogou_pinyin–utt_13[.]12[.]zip
  • cf9f5ee7bb8c4dc3e33c80bb74cdd863
  • xiaosha[.]google[.]tw[.]cn
  • xxs[.]xsxssiss[.]icu
  • 154[.]55[.]135[.]12