1

Windows Defender 数据库结构分析(下)

 11 months ago
source link: https://paper.seebug.org/3046/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Windows Defender 数据库结构分析(下)

13小时之前2023年10月09日
经验心得

译者:知道创宇404实验室翻译组
原文链接:CSDL của Windows Defender (Phần 2)

本节中,我们将进一步了解数据库中的一些其他签名类型,包括 SIGNATURE_TYPE_DELTA_BLOB、SIGNATURE_TYPE_FRIENDLYFILE_SHA256 和 SIGNATURE_TYPE_LUASTANDALONE。

SIGNATURE_TYPE_DELTA_BLOB

上一部分中,我们了解了 VDM 文件。在 VDM 文件中,有 mpasdlta.vdm 和 mpavdlta.vdm文件,其中包含基础VDM文件的相关信息。

img

Delta文件包含用于加快签名更新的数据,无需下载整个新文件,只需下载更改的文件,利用这些文件即可获得完整的数据库。Delta文件中的数据包括SIGNATURE_TYPE_DELTA_BLOB_RECINFO和SIGNATURE_TYPE_DELTA_BLOB。SIGNATURE_TYPE_DELTA_BLOB_RECINFO 包含更新信息(如构建版本等),其元素结构包括应用Delta文件更改后的CSDL的大小、CRC校验和以及Delta数据数组:

img

Windows Defender 通过读取前 2 个字节 (WORD sizeX) 来执行 data_blob 数据,然后根据以下两个方面获取完整文件数据:

  • 如果flagX的设置了最高位,那么它会从基础文件的偏移量(DWORD offset)读取大小为(flagX & 0x7fff)+ 6的数据段。
  • 否则,它会从当前的delta文件偏移量读取大小为sizeX的数据段。
img

当所有data_blob数据合并后,Windows Defender 将使用完整的 VDM 文件,而不是原始的 VDM 基础文件。近日,MS发布了CVE-2023-24934的补丁,修复了攻击者可以任意创建VDM delta文件并应用它来更新数据库的问题,从而改变Windows Defender的数据库执行一些攻击行为(如删除签名,向文件添加哈希值白名单等)。可以参考文章Windows Defender安全风险:Defender Pretender 了解更多信息。

SIGNATURE_TYPE_FRIENDLYFILE_SHA256

在Windows Defender的VDM文件中,还包含了其他数据类型,如SIGNATURE_TYPE_FRIENDLYFILE_SHA256,这些数据类型的作用是构建排除列表,主要用于一些指定文件或应用程序信任文件,无需详细检查,以提高性能和减少分析时间。

img

这个近 500,000 个哈希值的集合可以被视为一个可靠的排除列表,用于在系统整体检查过程中,帮助节省分析时间。

SIGNATURE_TYPE_LUASTANDALONE

此分析中,作者指出Windows Defender在操作过程中使用了LUA脚本。LUA脚本的签名可以理解为以下结构:

img

其中,Type 是一个用途未知的字段,DescSize 是描述脚本所属类别的字符串的大小,如果脚本未被分类到任何Category,则此字段的值将为0。LUASize 是脚本所属类别的大小,根据 LUA 标头计算得出值为“1b 4c 75 61 51 00 01 04 08 04 08 01”,其中数据字段还包含其他数据块。这里使用的LUAScript是5.1版本,可以用luadec进行反编译https://github.com/viruscamp/luadec(需要构建64位luadec版本):

img

为了能够反编译lua脚本,我们需要提取LuaScript数据,使用这里 的脚本将该数据转换为luadec的格式进行反编译(因为MS改变了部分头部和数据字段的大小),然后保存程序输出的结果。

img

大多数脚本都可以被提取和反编译,但是并不是所有脚本都可以被luadec 100%反编译。

img
img

反编译后的LUAScript

用于监控勒索软件常用程序(例如 wmic、vssadmin)命令行的脚本:

img

该脚本监视读取 lsass.exe 进程的进程,其中还包括一些排除项:

img
img

脚本检测异常文件扩展名或包含两个文件扩展名的脚本:

img

使用CVE-2023-38831的正则表达式捕获异常文件名的脚本,该漏洞影响Winrar。

img

检测powershell命令编码类型的脚本:

img

除此之外,还有许多其他脚本可供查看:

https://github.com/hongson11698/defender-database-extract/tree/master/as_db

研究 Windefender 的数据库具有许多好处,如查找攻击路径、附加数据的更新方法、筛选方法、新威胁的检测以及绕过已存在签名的方法。以下是两个脚本的更新(附加了delta文件补丁、Friendly_sha256和lua脚本),用于提取vdm版本1.397.0.0提取文件的内容,然后用WDExtract将其解压成csv数据,供大家参考参考。


Paper 本文由 Seebug Paper 发布,如需转载请注明来源。本文地址:https://paper.seebug.org/3046/

← Windows Defender 数据库结构分析(上)

r

anonymous.jpg
* 注意:请正确填写邮箱,消息将通过邮箱通知!

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK