
Detectar excepciones de EDR inspeccionando los módulos cargados de los procesos.
Esta herramienta busca los procesos que tienen cargado un binario concreto o los procesos que no lo tienen. Esto es útil en los siguientes escenarios:
c:\windows\sytem32\lsass.exe cargado nos dará el PID de Lsass).Quizás puedas encontrar otras formas valiosas de usar esta herramienta. Estos resultados se obtienen evitando iterar sobre todos los procesos del sistema y con un ruido reducido.
La herramienta obtiene todos los procesos donde un binario determinado está cargado llamando a NtQueryInformationFile con el indicador FileProcessIdsUsingFileInformation. Después, y solo si es necesario, se llama a EnumProcesses para obtener los PID de todos los procesos y, finalmente, se comparan ambos resultados para obtener una lista final de PID. Si la herramienta no se ejecuta en modo silencioso, los PID finales se traducen a la ruta totalmente cualificada del módulo principal del proceso.
Si quieres reducir la actividad entre procesos, usa el modo silencioso (--quiet o -q). En este caso, no se abrirá ningún manejador de procesos, pero la herramienta solo recuperará los PID y no las rutas totalmente cualificadas.
La herramienta es totalmente compatible con Win10 y posteriores y Windows Server 2016 y posteriores. Para versiones más antiguas del sistema operativo, la llamada a OpenProcess (línea src::main.rs:108) requiere PROCESS_QUERY_INFORMATION y PROCESS_VM_READ en lugar de solo PROCESS_QUERY_LIMITED_INFORMATION (o puedes limitarte al modo silencioso, que no abre ningún manejador de procesos).
Dado que usamos el plugin LITCRYPT para ofuscar literales de cadena, es necesario configurar la variable de entorno LITCRYPT_ENCRYPT_KEY antes de compilar el código:
C:\Users\User\Desktop\bin_finder\bin_finder> set LITCRYPT_ENCRYPT_KEY="yoursupersecretkey"
Después, simplemente compila el código y ejecuta la herramienta:
C:\Users\User\Desktop\Bin-Finder> cargo build --release
C:\Users\User\Desktop\Bin-Finder\target\release> bin_finder.exe -h
Bin-finder tiene dos modos de uso diferentes. El modo predeterminado buscará todos los procesos que no tengan cargado el binario especificado. Por ejemplo, podemos buscar todos los procesos que no tengan cargado el dll de CrowdStrike:

Esto es bastante útil cuando buscas directorios/procesos dentro de la lista de excepciones del EDR.
Si quieres reducir la actividad entre procesos, se puede usar el modo silencioso para recuperar solo los PID:

Además, si no sabes el nombre o la ruta del dll que buscas, puedes intentar listar los módulos cargados en un proceso normal usando el indicador -l o --list (esto también es útil para detectar si hay un EDR presente o no):

El segundo modo de uso es la búsqueda inversa (indicadores -r o --reverse), que buscará todos los procesos que tengan cargado actualmente el binario especificado. Por ejemplo, quizás te interese obtener el PID del proceso que ejecuta el servicio StorSvc. En ese caso, solo tienes que hacer una búsqueda inversa del dll que implementa el servidor RPC utilizado por ese servicio:

Esta búsqueda inversa también se puede usar para obtener directamente el PID de un proceso especificando la ruta completa de su módulo principal (normalmente un archivo .exe) sin necesidad de iterar sobre todos los procesos del sistema. Así es como obtendrías el PID de todos los chrome.exe en ejecución:
