
Uma ferramenta para encontrar pastas excluídas da verificação em tempo real do antivírus usando um oráculo de tempo.
Esta ferramenta é fornecida apenas para fins educacionais. Quaisquer ações e atividades relacionadas ao material contido neste repositório são de sua inteira responsabilidade. O uso indevido desta ferramenta pode resultar em acusações criminais contra as pessoas em questão. O autor não será responsabilizado se quaisquer acusações criminais forem apresentadas contra indivíduos que utilizem indevidamente a ferramenta fornecida para infringir a lei.
Uma ferramenta de prova de conceito criada para identificar pastas que estão isentas da verificação em tempo real do antivírus em sistemas Windows.
A ferramenta recebe o caminho de uma pasta como argumento e percorre seus subdiretórios até uma profundidade Y. Y é um argumento de profundidade máxima fornecido pelo usuário. A ferramenta cria N arquivos de 512 bytes com conteúdo aleatório em cada diretório. N é o tamanho da amostra fornecido pelo usuário. Um N maior oferece mais precisão e reduz a incidência de falsos positivos. Quanto maior o N, maior o número de arquivos criados. Portanto, mais tempo a ferramenta levará para executar. Cinco mil pareceu fornecer uma boa relação tempo x precisão durante os meus testes. A ferramenta então registra o tempo médio que levou para criar arquivos em cada um dos diretórios. Por fim, a ferramenta verifica se algum dos diretórios tem um tempo médio de gravação que seja pelo menos X% mais rápido do que a média global. X é chamado de parâmetro de sensibilidade. Com base nos meus testes, 0.25 (25%) parece funcionar para a maioria dos casos.
As soluções de antivírus verificam a maior parte do conteúdo gravado no disco e interceptam as chamadas relacionadas à gravação de arquivos. Esse passo extra pode produzir uma diferença de tempo mensurável ao gravar em uma pasta que está excluída da verificação em tempo real. O gráfico a seguir mostra o número médio de microssegundos necessários para gravar um arquivo em várias pastas durante os testes iniciais da ferramenta. As duas pastas excluídas da verificação em tempo real estão destacadas na imagem.

O modo de execução 0 (--mode 0) tentará mapear pastas na lista de exclusão do Defender. O usuário deve fornecer uma lista de pastas a serem testadas por meio do argumento --targets. O argumento --sample-size pode ser usado para ajustar o número de arquivos criados em cada diretório.
Exemplo:
TimeException.exe --sample-size 1000 --mode 0 --targets dirs.txt
O modo de execução 1 (--mode 1) tentará mapear extensões na lista de exclusão do Defender. O usuário deve fornecer uma lista de extensões a serem testadas por meio do argumento --targets. As extensões no arquivo de alvos devem ter o formato .ext (por exemplo, .png, .txt, .foobar, etc). O argumento --sample-size pode ser usado para ajustar o número de arquivos criados para cada extensão.
Exemplo:
TimeException.exe --sample-size 1000 --mode 1 --targets exts.txt
O modo de execução 2 (--mode 2) tentará mapear processos na lista de exclusão do Defender. O usuário deve fornecer uma lista de nomes de processos a serem testados por meio do argumento --targets. As extensões no arquivo de alvos devem ter o formato program.exe (por exemplo, calc.exe, mspaint.exe, etc). O modo de execução de processo exige que um benchmarker seja fornecido. Um benchmarker é um aplicativo de console que aceita --sample-size como argumento válido e gera um número de ponto flutuante de dupla precisão. O próprio TimeException é um benchmarker. O argumento --sample-size pode ser usado para ajustar o número de operações realizadas pelo benchmarker para calcular o seu resultado.
Exemplo:
TimeException.exe --sample-size 1500 --ref 3.7225 --mode 2 --benchmarker .\TimeException.exe --targets procs.txt
O modo de execução 3 (--mode 3) ainda não foi implementado.
O modo de execução 4 (--mode 4) medirá o tempo médio necessário para gravar um arquivo de 512 bytes no diretório atual. O argumento --sample-size pode ser usado para ajustar o número de arquivos usados para calcular o tempo médio de gravação.
O modo benchmark é o modo de operação padrão do TimeException.
Exemplo:
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