面向脚本小子的360QVM

admin 2025年1月20日23:16:16评论4 views字数 1335阅读4分27秒阅读模式

很多人用visual studio开发控制台应用程序的时候经常会遇见QVM。在本文中,我们将了解一些背后的原因以及缓解措施。

基本概念

AV/EDR 可能会使用多种不同的方法来分析二进制文件,以便对其做出决定。这包括动态分析(在目标执行时对其进行分析)和静态分析(分析目标的属性)。静态分析可能包括分析导入表以确定目标使用的函数和 DLL、分析嵌入在目标中的字符串和字节序列、目标本身的 MD5 或 SHA256 哈希,还可能包括对目标中熵的分析。这些静态分析用于确定目标是否值得执行。

而我们所讨论的qvm主要涉及静态分析阶段。

让我们测试一下我们的“绝对不可能是恶意”的应用程序

让我们用 C 语言编写一个简单的小程序,然后将它提交到 VirusTotal 来看看我们能得到多少检测报毒。

面向脚本小子的360QVM
面向脚本小子的360QVM
面向脚本小子的360QVM
面向脚本小子的360QVM

可以看到即便你只是一个简单的“hello world”也难逃这些过于激进的扫描程序。更别说还有高手,从个人的经验来看,某些玩意儿几乎会将所有visual studio新生成的 PE 文件标记为恶意。

面向脚本小子的360QVM
面向脚本小子的360QVM

其实以上说法也不尽然,如果你用Debug编译的话,是没问题的

面向脚本小子的360QVM

而同样的程序,Release编译立刻就会报毒

面向脚本小子的360QVM

Why?

在绕过这种检测之前,先让我们来了解一个叫做“熵值”的概念。

熵是衡量一组数据中随机性程度的指标。在信息论和网络安全的背景下,大多数指的是香农熵。这是一种特定的算法,它返回 0 到 8 之间的值,接近 8 的值表示数据非常随机,而接近 0 的值表示数据非常同源。

一般恶意软件作者倾向于依赖打包、压缩和加密来混淆他们的工具,以逃避基于签名的检测系统。而香农熵可以很好地指示PE文件中是否使用了打包、压缩和加密(这些行为越重,熵值越高)。

面向脚本小子的360QVM
面向脚本小子的360QVM

So,让我们查看“helloworld“不同发布版本的熵值

Debug

面向脚本小子的360QVM

Release

面向脚本小子的360QVM

这里.text节直接飙升到了6.01。

那如果安全解决方案是通过测量文件中的熵值来确定我们的exe文件可能是恶意的,那么如何降低熵呢?

面向脚本小子的360QVM

最简单的就是从编译入手

1. 使用动态运行时链接

将运行时从 /MT(静态链接运行时)切换为 /MD(动态链接运行时)。动态链接会减少静态运行时库的嵌入量,从而降低熵值。

  • 操作步骤:

    1. 打开 Visual Studio 项目。

    2. 转到 项目属性 → C/C++ → 代码生成

    3. 将 运行时库 从 /MT 改为 /MD

2. 禁用编译器优化

编译器优化会生成复杂的代码模式,导致熵值增加:

  • 将优化级别设置为 /Od(禁用优化)。

    • 操作步骤:

    1. 转到 项目属性 → C/C++ → 优化

    2. 将 优化 设置为 禁用优化 (/Od)

3. 最小化链接的库

静态链接不必要的库会增加熵值:

  • 确保只链接项目真正需要的库。

  • 手动检查项目中引用的 .lib 文件,移除不必要的依赖。

4. 去除调试信息和元数据

调试信息或元数据会显著增加可执行文件的熵值:

  • 在 Visual Studio 中:

    1. 在 项目属性 → C/C++ → 常规 → 调试信息格式 中,将选项设置为 

5. 填充和对齐段

通过对可执行文件的段进行填充或对齐,可以降低熵值:

  • 添加 /ALIGN:512 到链接器命令行参数中。

其实之前写过一个更详细的:

让virustotal变的更绿

完成以上操作重新生成之后,我们再来看熵值

面向脚本小子的360QVM

运行

面向脚本小子的360QVM
面向脚本小子的360QVM

原文始发于微信公众号(老鑫安全):面向脚本小子的360QVM

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年1月20日23:16:16
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   面向脚本小子的360QVMhttps://cn-sec.com/archives/3651878.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息