
프로세스의 로드된 모듈을 검사하여 EDR의 예외를 탐지합니다.
이 도구는 특정 바이너리가 로드된 프로세스 또는 로드되지 않은 프로세스를 찾습니다. 이는 다음 시나리오에서 유용합니다.
이 도구를 유용하게 사용할 수 있는 다른 방법도 있을 수 있습니다. 이러한 결과는 시스템의 모든 프로세스를 반복하지 않고도 얻을 수 있으며 노이즈가 줄어듭니다.
이 도구는 FileProcessIdsUsingFileInformation 플래그와 함께 NtQueryInformationFile을 호출하여 특정 바이너리가 로드된 모든 프로세스를 가져옵니다. 그런 다음 필요한 경우에만 EnumProcesses를 호출하여 모든 프로세스의 PID를 얻고, 마지막으로 두 결과를 비교하여 최종 PID 목록을 얻습니다. 도구가 quiet 모드로 실행되지 않는 경우 최종 PID는 프로세스 주 모듈의 정규화된 경로로 변환됩니다.
교차 프로세스 활동을 줄이려면 quiet 모드(--quiet 또는 -q)를 사용하세요. 이 경우 프로세스 핸들이 열리지 않지만 도구는 PID만 검색하고 정규화된 경로는 검색하지 않습니다.
이 도구는 Win10 이상 및 Windows Server 2016 이상과 완전히 호환됩니다. 이전 OS 버전의 경우 OpenProcess 호출(src::main.rs:108 줄)은 PROCESS_QUERY_LIMITED_INFORMATION만이 아니라 PROCESS_QUERY_INFORMATION 및 PROCESS_VM_READ가 필요합니다 (또는 프로세스 핸들을 열지 않는 quiet 모드를 사용할 수도 있습니다).
문자열 리터럴을 난독화하기 위해 LITCRYPT 플러그인을 사용하므로 코드를 컴파일하기 전에 환경 변수 LITCRYPT_ENCRYPT_KEY를 설정해야 합니다.
C:\Users\User\Desktop\bin_finder\bin_finder> set LITCRYPT_ENCRYPT_KEY="yoursupersecretkey"
그런 다음 코드를 컴파일하고 도구를 실행하기만 하면 됩니다.
C:\Users\User\Desktop\Bin-Finder> cargo build --release
C:\Users\User\Desktop\Bin-Finder\target\release> bin_finder.exe -h
Bin-finder에는 두 가지 사용 모드가 있습니다. 기본 모드는 지정된 바이너리가 로드되지 않은 모든 프로세스를 찾습니다. 예를 들어 CrowdStrike DLL이 로드되지 않은 모든 프로세스를 검색할 수 있습니다:

이는 EDR 예외 목록에 있는 디렉터리/프로세스를 찾을 때 매우 유용합니다.
교차 프로세스 활동을 줄이려면 quiet 모드를 사용하여 PID만 검색할 수 있습니다:

또한 찾고 있는 DLL의 이름이나 경로를 모르는 경우 -l 또는 --list 플래그를 사용하여 일반 프로세스에 로드된 모듈을 나열해 볼 수 있습니다 (이를 통해 EDR이 설치되어 있는지 여부를 확인하는 데도 유용합니다):

두 번째 사용 모드는 역방향 조회(-r 또는 --reverse 플래그)로, 지정된 바이너리를 현재 로드한 모든 프로세스를 찾습니다. 예를 들어 StorSvc 서비스를 실행 중인 프로세스의 PID를 얻고자 할 수 있습니다. 이 경우 해당 서비스에서 사용하는 RPC 서버를 구현하는 DLL에 대해 역방향 조회를 수행하면 됩니다:

이 역방향 조회는 시스템의 모든 프로세스를 반복할 필요 없이 주 모듈의 전체 경로(보통 .exe 파일)를 지정하여 프로세스의 PID를 직접 얻는 데에도 사용할 수 있습니다. 다음은 실행 중인 모든 chrome.exe의 PID를 얻는 방법입니다:
