
시간 오라클을 사용하여 AV 실시간 검사에서 제외된 폴더를 찾는 도구
본 도구는 교육 목적으로만 제공됩니다. 이 저장소에 포함된 자료와 관련된 모든 행동과 활동은 전적으로 사용자의 책임입니다. 이 도구를 오용하면 해당 개인에 대한 형사 고발이 발생할 수 있습니다. 제공된 도구를 불법적으로 사용하여 법을 위반하는 개인에 대해 형사 고소가 제기되더라도 저자는 책임을 지지 않습니다.
Windows 시스템에서 AV 실시간 검사에서 제외된 폴더를 식별하기 위해 만들어진 개념 증명 도구입니다.
이 도구는 폴더 경로를 인수로 받아 해당 하위 디렉터리를 Y 깊이만큼 반복합니다. Y는 사용자가 제공하는 최대 깊이 인수입니다. 도구는 각 디렉터리에 무작위 내용의 512바이트 파일 N개를 생성합니다. N은 사용자가 제공하는 샘플 크기입니다. N이 클수록 더 정밀해지고 오탐(false positive) 발생률이 줄어듭니다. N이 클수록 생성되는 파일 수가 많아지므로 도구 실행 시간이 길어집니다. 제 테스트에서는 5,000이 시간과 정확성 사이에 좋은 관계를 제공하는 것 같았습니다. 그런 다음 도구는 각 디렉터리에 파일을 만드는 데 걸린 평균 시간을 기록합니다. 마지막으로 도구는 디렉터리 중 평균 쓰기 시간이 전역 평균보다 최소 X% 이상 빠른 디렉터리가 있는지 확인합니다. X는 민감도(sensitivity) 매개변수라고 합니다. 제 테스트에 따르면 0.25(25%)가 대부분의 경우 잘 작동하는 것 같습니다.
AV 솔루션은 디스크에 기록되는 대부분의 콘텐츠를 검사하고 파일 쓰기 관련 호출을 후킹합니다. 이 추가 단계는 실시간 검사에서 제외된 폴더에 쓸 때 측정 가능한 시간 차이를 만들어낼 수 있습니다. 다음 그래프는 도구 초기 테스트 중 여러 폴더에 파일을 쓰는 데 걸린 평균 마이크로초 수를 나타냅니다. 실시간 검사에서 제외된 두 폴더는 그림에서 강조 표시되어 있습니다.

실행 모드 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 등). 프로세스 실행 모드에는 벤치마커(benchmarker)가 필요합니다. 벤치마커는 --sample-size를 유효한 인수로 받아들이고 double 부동 소수점 숫자를 출력하는 콘솔 애플리케이션입니다. 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