
Detectar as exceções do EDR inspecionando os módulos carregados dos processos.
Esta ferramenta procura por processos que tenham um determinado binário carregado ou por processos que não tenham. Isso é útil nos seguintes cenários:
c:\windows\sytem32\lsass.exe carregado dar-nos-á o PID do Lsass).Talvez encontre outras formas valiosas de usar esta ferramenta. Estes resultados são obtidos evitando iterar sobre todos os processos do sistema e com ruído reduzido.
A ferramenta obtém todos os processos onde um determinado binário está carregado chamando NtQueryInformationFile com a flag FileProcessIdsUsingFileInformation. Depois, e apenas se necessário, EnumProcesses é chamado para obter o PID de todos os processos e, finalmente, ambos os resultados são comparados para obter uma lista final de PIDs. Se a ferramenta não estiver a ser executada em modo silencioso, os PIDs finais são traduzidos para o caminho totalmente qualificado do módulo principal do processo.
Se pretender reduzir a atividade entre processos, use o modo quiet (--quiet ou -q). Neste caso, nenhum handle de processo será aberto, mas a ferramenta apenas obterá os PIDs e não os caminhos totalmente qualificados.
A ferramenta é totalmente compatível com Win10 e posteriores e Windows Server 2016 e posteriores. Para versões mais antigas do SO, a chamada a OpenProcess (linha src::main.rs:108) requer PROCESS_QUERY_INFORMATION e PROCESS_VM_READ em vez de apenas PROCESS_QUERY_LIMITED_INFORMATION (ou pode simplesmente usar o modo quiet, que não abre nenhum handle de processo).
Como estamos a usar o plugin LITCRYPT para ofuscar literais de string, é necessário definir a variável de ambiente LITCRYPT_ENCRYPT_KEY antes de compilar o código:
C:\Users\User\Desktop\bin_finder\bin_finder> set LITCRYPT_ENCRYPT_KEY="yoursupersecretkey"
Depois disso, basta compilar o código e executar a ferramenta:
C:\Users\User\Desktop\Bin-Finder> cargo build --release
C:\Users\User\Desktop\Bin-Finder\target\release> bin_finder.exe -h
O Bin-finder tem dois modos de utilização diferentes. O modo predefinido procurará todos os processos que não tenham carregado o binário especificado. Por exemplo, podemos procurar por todos os processos que não tenham carregado a dll do CrowdStrike:

Isto é bastante útil quando se procuram diretórios/processos dentro da lista de exceções do EDR.
Se pretender reduzir a atividade entre processos, pode ser usado o modo quiet para obter apenas os PIDs:

Além disso, se não souber o nome ou o caminho da dll que procura, pode tentar listar os módulos carregados num processo normal usando a flag -l ou --list (isto também é útil para detetar se existe ou não um EDR no sistema):

O segundo modo de utilização é a pesquisa inversa (flags -r ou --reverse), que procurará todos os processos que tenham atualmente carregado o binário especificado. Por exemplo, talvez esteja interessado em obter o PID do processo que está a executar o serviço StorSvc. Nesse caso, basta fazer uma pesquisa inversa pela dll que implementa o servidor RPC usado por esse serviço:

Esta pesquisa inversa também pode ser usada para obter diretamente o PID de um processo especificando o caminho totalmente qualificado do seu módulo principal (normalmente um ficheiro .exe) sem a necessidade de iterar sobre todos os processos do sistema. É assim que obteria todos os PIDs do chrome.exe em execução:
