1

我想直接在内存文件中扫描恶意软件内容,我想知道哪种方法最好。

我负责改进我们在 .net core 和 Angular 中开发的 Web 应用程序的网站安全策略

我阅读了 OWASP 的建议,其中之一是扫描文件中的恶意软件我已经确定了两种扫描文件的方法:从云调用第三方 API 或调用 AMSI 接口。通过互联网呼叫第三方对我来说不是一个选择,因为客户希望在本地完成验证。

什么是 AMSI:

Windows 反恶意软件扫描接口 (AMSI) 是一种通用接口标准,它允许您的应用程序和服务与机器上存在的任何反恶意软件产品集成。AMSI 为您的最终用户及其数据、应用程序和工作负载提供增强的恶意软件保护。Windows AMSI 界面已打开。这意味着任何应用程序都可以调用它;并且任何注册的反恶意软件引擎都可以处理提交给它的内容。

我选择从 .net 核心调用 AMSI 接口来分析恶意软件内容的 http 请求,但我的测试在某些安装了 Symantec 端点保护作为防病毒提供程序和 AMSI 订阅者的服务器上不起作用。AMSI 似乎被绕过了。

当我使用 eicar 标准内容测试对 AMSI 的调用时,即使我发布了包含恶意软件内容的帖子,AMSI 也会返回结果,就好像没有检测到恶意软件一样。这就是为什么似乎绕过了 AMSI 的原因。

你知道我能做些什么来修复它吗?为什么绕过 AMSI?我应该检查或考虑什么?

开发一个从队列中扫描文件并运行 .bat 以向防病毒程序发出命令以扫描文件的 Windows 服务会更好吗?是否有任何可以在本地安装的第三方 Web api?

4

1 回答 1

1

我也一直在研究用于 .NET 的用于 AV 扫描的 API,但似乎没有多少。AMSI 是一个新标准(从 Win10 开始),但似乎仅适用于“无文件扫描”(即字符串和 blob)。这是一篇带有 .NET 库的好文章: 在 .NET 中使用 Windows 反恶意软件扫描接口

我还发现了一个相当活跃的开源扫描程序: ClamAV 和 .NET 中的一个库来扫描内存(虽然从 2017 年开始就很旧了): ClamAV.Managed

每个商业企业级 AV 都有某种 Web API,但没有标准 - 所以每个都需要单独开发......

我已经尝试过排队和手动运行 CLI AV 的路线 - 在我的情况下是 Windows Defender - 但扫描文件平均需要 2 分钟以上(对于您的用例来说可能已经足够了)。主要好处是它可以是通用的并支持任何具有 CLI 的 AV - 但在控制台中排队和运行也是一个主要的安全(和内存泄漏)风险(更不用说运行起来会很棘手/昂贵)在 Azure AppService 等云托管实例中)。

令人惊讶的是,到 2021 年,我们仍然没有 AV 扫描的标准……

于 2021-01-19T23:57:40.657 回答