【问题标题】:Windows Antimalware Scan Interface - ASP.NET/IISWindows 反恶意软件扫描接口 - ASP.NET/IIS
【发布时间】:2020-03-24 07:51:43
【问题描述】:

有人有从 ASP.NET 调用 AMSI 的经验吗?我有一个允许用户上传文件的 Web 应用程序,我们希望在将每个文件保存到数据库并使其可供其他用户下载之前对每个文件执行病毒扫描。

我针对 Windows AMSI 进行了开发,当在我的机器上本地运行(来自 VS 的 IISExpress)时,它运行良好(我的测试用例是它拒绝文本文件中的 EICAR 测试字符串)。

但是,当我构建应用程序并将其放到我们的测试服务器(运行 IIS 10)上时,测试文件并没有作为恶意软件被拾取。初始化接口时,我得到了所有正确的返回码,扫描文件我得到了一个有效的结果(未检测到)。

有人有什么想法吗?我在本地运行 Windows 10,服务器是 2016。我注意到的一件事是,在网站上,它在受支持的服务器旁边声明 [仅限桌面应用程序]。这是否意味着没有 UWP?或者它也可能意味着什么都没有作为服务运行?

https://docs.microsoft.com/en-us/windows/win32/api/amsi/nf-amsi-amsiscanbuffer

干杯, 安迪

【问题讨论】:

    标签: c# asp.net iis


    【解决方案1】:

    在头疼之后,我找到了问题所在。开箱即用的 Windows Defender 似乎会自动从恶意软件检查中排除 IIS 进程。这样做的效果是扫描方法不会拒绝恶意软件。

    https://docs.microsoft.com/en-us/windows/security/threat-protection/windows-defender-antivirus/configure-server-exclusions-windows-defender-antivirus#opt-out-of-automatic-exclusions

    可以关闭自动排除。

    【讨论】:

    • 谢谢,遇到了同样的问题,解决了。在您的情况下 IIS 运行速度是否较慢?
    • 嘿抱歉,我才看到这条评论(我只在需要帮助时才来这里!)。我预计它会在某处导致系统速度变慢,显然这意味着 Windows Defender 将运行更多检查。我们的网站是利基市场/非大众市场,因此我们对恶意软件安全方面的兴趣比对速度更感兴趣。
    【解决方案2】:

    我确认关闭自动排除功能有效。在 Windows server 2016 上,使用本地组策略编辑器,这会导致 AMSI 从 IIS 开始工作。在 Windows 10 上,在病毒和威胁防护下,为进程 w3wp.exe 添加排除项会导致 AMSI 停止工作。所以排除是罪魁祸首。

    对我来说,不清楚为什么会出现这种行为。 Windows Defender 不应干扰操作系统的关键部分,否则可能会导致损坏。有一个不被扫描的部件的排除列表是可以理解的。所以给定标准排除列表,Defender 不会扫描 IIS 进程。然而,我们的路线是相反的方向。在 IIS 中,我们要检查用户上传的恶意软件。 IIS 将有效负载发送到 AMSI。 AMSI 将有效负载发送到 Windows Defender。 Defender 应扫描有效负载以查找恶意软件。为什么决定:这是IIS的请求,不需要扫描payload,只返回payload是干净的?如果有人能解释这个逻辑,我将不胜感激。

    我们不想关闭自动排除。这将使生产系统面临风险。排除是有原因的。

    我们仍然想使用 AMSI;我们喜欢本地安装的病毒产品与供应商无关的接口的想法。我们现在考虑以下解决方法:从 IIS 启动一个命令行 exe,该 exe 反过来与 AMSI 对话。将有效负载从 IIS 发送到命令行进程,可能使用匿名管道。命令行将负载转发到 AMSI,AMSI 将其转发到 Windows Defender。 Defender 将扫描负载,因为请求进程的名称是命令行的名称,而不是 w3wp.exe 或排除列表中的其他名称。

    对这种方法不太满意,但它应该可以工作。我们欢迎提出改进建议。

    【讨论】:

    • 我想再次感谢您提供此信息,在浪费了一天的挫败感后,试图弄清楚为什么从 ASP.NET MVC 中调用 AMSI 没有捕获 EICAR 文件。将文件从流中读取到字节数组中并测试字节数组,除了直接测试 EICAR 字符串之外,不会被捕获就可以通过。
    猜你喜欢
    • 2019-06-30
    • 2021-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    • 2019-01-10
    • 2014-03-16
    相关资源
    最近更新 更多