一个使用时间oracle找到被排除在AV实时扫描之外的文件夹的工具
作者:Sec-Labs | 发布时间:
项目地址
https://github.com/bananabr/TimeException
免责声明
此工具仅用于教育目的。 与此存储库中包含的材料相关的任何操作和活动均由您自行负责。 滥用此工具可能会导致相关人员受到刑事指控。 如有任何人滥用提供的工具触犯法律而受到刑事指控,作者将不承担任何责任。
这是什么?
一种概念验证工具,用于识别在 Windows 系统中免除 AV 实时扫描的文件夹。
它是如何工作的?
该工具接收一个文件夹路径作为参数,并遍历其 Y 深度的子目录。 Y 是用户提供的最大深度参数。 该工具在每个目录中创建 N 个 512 字节长的文件,其中包含随机内容。 N 是用户提供的样本量。 较大的 N 提供更高的精度并减少误报的发生率。 N 越大,创建的文件数越多。 因此,工具运行所需的时间越长。 在我的测试中,五千似乎提供了一个很好的时间 x 精度关系。 然后该工具将记录在每个目录中创建文件所花费的平均时间。 最后,该工具会检查是否有任何目录的平均写入时间至少比全球平均水平快 X%。 X 称为灵敏度参数。
为什么它有效?
AV 解决方案将检查写入磁盘的大部分内容并挂钩与文件写入相关的调用。 当写入被排除在实时扫描之外的文件夹时,这个额外的步骤会产生可测量的时间差异。 下图描述了在该工具的初始测试期间在多个文件夹中写入文件所花费的平均微秒数。 从实时扫描中排除的两个文件夹在图片中突出显示。

如何使用它?
汇编
- 安装和配置 https://vcpkg.io/en/index.html
- 使用 vcpkg 安装 boost-process依赖项
- 使用 Visual Studio 2019+ 编译项目。
执行模式
文件夹执行方式
执行模式 0 (--mode 0) 将尝试映射 Defender 排除列表中的文件夹。 用户必须通过--targets 参数 提供要测试的文件夹列表。 --sample -size 参数可用于调整每个目录中创建的文件数。
例子:
TimeException.exe --sample-size 1000 ---mode 0 --targets dirs.txt
扩展执行模式
执行模式 1 (--mode 1) 将尝试映射 Defender 排除列表中的扩展。 用户必须通过--targets 参数 提供要测试的扩展列表。 目标文件中的扩展名必须采用 .ext 格式(例如 .png、.txt、.foobar 等)。 --sample -size 参数可用于调整为每个扩展名创建的文件数。
例子:
TimeException.exe --sample-size 1000 ---mode 1 --targets exts.txt
流程执行方式
执行模式 2 (--mode 2) 将尝试映射 Defender 排除列表中的进程。 用户必须通过--targets 参数 提供要测试的进程名称列表。 目标文件中的扩展名必须采用 program.exe 格式(例如 calc.exe、mspaint.exe 等)。 流程执行模式需要提供基准程序。 基准测试程序是一个控制台应用程序,它接受 --sample-size 作为有效参数并输出双精度浮点数。 TimeException 本身就是一个基准程序。 --sample -size 参数可用于调整基准测试程序计算其结果所执行的操作数。
例子:
TimeException.exe --sample-size 1500 --ref 3.7225 --mode 2 --benchmarker .\TimeException.exe --targets procs.txt
文件执行方式
执行模式 3 (--mode 3) 尚未实现。
基准执行模式
执行模式 4 (--mode 4) 将测量将 512 字节文件写入当前目录所需的平均时间。 --sample -size 参数可用于调整用于计算平均写入时间的文件数。
基准模式是 TimeException 的默认操作模式。
例子:
TimeException.exe --mode 4 --sample-size 5000
一般使用说明
Usage:
TimeException.exe [options]
Options:
Usage:
-h|--help Print usage instructions
--mode Exceptions to look folder. 0=Folder, 1=Extensions, 2=Process, 3=file, 4=benchmark (Default=4)
--ref Reference time value. Default=global average
--sample-size Sample size to use. Default=500
--sensitivity Sensitivity value. Default=0.25
--benchmarker Fully qualified path to a benchmarker executable
--verbose Increase verbosity
--targets File containing folder paths, extensions, or process names depending on the mode selected
笔记
- 我使用 Microsoft Defender 进行大部分测试。 结果可能因不同的 AV/EDR 引擎而异。
- 在真正的红队参与中,我会在一天的不同时间多次运行该工具,然后才实际尝试将任何有效负载写入该工具检测到的文件夹。 磁盘负载各不相同,预计会出现误报。