
Rileva le eccezioni degli EDR ispezionando i moduli caricati dai processi
Questo strumento cerca i processi che hanno un determinato binario caricato o i processi che non lo hanno. Questo è utile nei seguenti scenari:
c:\windows\sytem32\lsass.exe caricato otterremo il PID di Lsass).Forse puoi trovare altri modi utili per usare questo strumento. Questi risultati sono ottenuti evitando di iterare su tutti i processi del sistema e con un rumore ridotto.
Lo strumento ottiene tutti i processi in cui un determinato binario è caricato chiamando NtQueryInformationFile con il flag FileProcessIdsUsingFileInformation. Poi, e solo se necessario, viene chiamato EnumProcesses per ottenere i PID di tutti i processi e infine entrambi i risultati vengono confrontati per ottenere una lista finale di PID. Se lo strumento non è in esecuzione in modalità silenziosa, i PID finali vengono convertiti nel percorso completo del modulo principale del processo.
Se vuoi ridurre l'attività tra processi, usa la modalità silenziosa (--quiet o -q). In questo caso, nessun handle di processo verrà aperto, ma lo strumento recupererà solo i PID e non i percorsi completi.
Lo strumento è pienamente compatibile con Windows 10 e versioni successive e Windows Server 2016 e versioni successive. Per versioni precedenti del sistema operativo, la chiamata a OpenProcess (riga src::main.rs:108) richiede PROCESS_QUERY_INFORMATION e PROCESS_VM_READ invece di solo PROCESS_QUERY_LIMITED_INFORMATION (oppure puoi semplicemente usare la modalità silenziosa che non apre alcun handle di processo).
Poiché utilizziamo il plugin LITCRYPT per offuscare i literal di stringa, è necessario impostare la variabile d'ambiente LITCRYPT_ENCRYPT_KEY prima di compilare il codice:
C:\Users\User\Desktop\bin_finder\bin_finder> set LITCRYPT_ENCRYPT_KEY="yoursupersecretkey"
Dopodiché, compila semplicemente il codice ed esegui lo strumento:
C:\Users\User\Desktop\Bin-Finder> cargo build --release
C:\Users\User\Desktop\Bin-Finder\target\release> bin_finder.exe -h
Bin-finder ha due diverse modalità di utilizzo. La modalità predefinita cercherà tutti i processi che non hanno caricato il binario specificato. Ad esempio, possiamo cercare tutti i processi che non hanno caricato la DLL di CrowdStrike:

Questo è molto utile quando stai cercando directory/processi all'interno della lista delle eccezioni dell'EDR.
Se vuoi ridurre l'attività tra processi, puoi usare la modalità silenziosa per recuperare solo i PID:

Inoltre, se non conosci il nome o il percorso della DLL che stai cercando, puoi provare a elencare i moduli caricati in un processo regolare usando il flag -l o --list (questo è utile anche per capire se c'è o meno un EDR in atto):

La seconda modalità di utilizzo è la ricerca inversa (flag -r o --reverse), che cercherà tutti i processi che hanno attualmente caricato il binario specificato. Ad esempio, forse sei interessato a ottenere il PID del processo che sta eseguendo il servizio StorSvc. In tal caso, esegui una ricerca inversa per la DLL che implementa il server RPC usato da quel servizio:

Questa ricerca inversa può essere usata anche per ottenere direttamente il PID di un processo specificandone il percorso completo del modulo principale (di solito un file .exe) senza la necessità di iterare su tutti i processi del sistema. Ecco come otterresti tutti i PID di chrome.exe in esecuzione:
