
Инструмент для поиска папок, исключённых из сканирования антивирусом в реальном времени, с помощью временного оракула.
Этот инструмент предоставляется исключительно в образовательных целях. Любые действия и активность, связанные с материалом, содержащимся в этом репозитории, являются исключительно вашей ответственностью. Неправильное использование этого инструмента может привести к уголовному преследованию соответствующих лиц. Автор не будет нести ответственность, если против каких-либо лиц, использующих предоставленный инструмент для нарушения закона, будут выдвинуты уголовные обвинения.
Инструмент класса proof-of-concept, созданный для выявления папок, исключённых из антивирусного сканирования в реальном времени в системах Windows.
Инструмент принимает путь к папке в качестве аргумента и перебирает её вложенные каталоги на глубину Y. Y — это аргумент максимальной глубины, задаваемый пользователем. Инструмент создаёт N файлов размером 512 байт со случайным содержимым в каждом каталоге. N — это размер выборки, задаваемый пользователем. Большее значение N обеспечивает большую точность и снижает количество ложных срабатываний. Чем больше N, тем больше файлов создаётся. Следовательно, тем дольше будет выполняться инструмент. В ходе моих тестов пять тысяч обеспечили хорошее соотношение времени и точности. Затем инструмент фиксирует среднее количество времени, затраченного на создание файлов в каждом из каталогов. Наконец, инструмент проверяет, есть ли каталоги, среднее время записи в которых как минимум на X% быстрее глобального среднего. X называется параметром чувствительности. Судя по моим тестам, 0,25 (25%) подходит для большинства случаев.
Антивирусные решения проверяют большую часть содержимого, записываемого на диск, и перехватывают вызовы, связанные с записью файлов. Этот дополнительный шаг может создать измеримую разницу во времени при записи в папку, исключённую из сканирования в реальном времени. На следующем графике показано среднее количество микросекунд, затрачиваемых на запись файла в нескольких папках во время первоначальных тестов инструмента. Две папки, исключённые из сканирования в реальном времени, выделены на рисунке.

Режим выполнения 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