
Pequeno kit de ferramentas para extrair informações e despejar strings sensíveis de processos do Windows.
Pequeno kit de ferramentas para extrair informações e despejar strings sensíveis de processos do Windows . Feito para acompanhar FormThief.
Despeja a memória do processo e procura por strings legíveis. PID, string de busca e faixa são fornecidos apenas nesta versão. Quando a string de busca é encontrada, o parâmetro de faixa indica quantos caracteres de cada lado da string encontrada devem ser impressos, desde que sejam ASCII válidos.
Compile no VS. Exemplo abaixo despejando informações de usuário do processo Outlook:
PS C:\Users\capde> .\procsearch.exe 7592 "email" 500
[+] Search string "email" FOUND: (...) "age_group": "adult", "association_status": "{\"com.microsoft.Olk\":\"associated\"}"
,"authority": "https://login.microsoftonline.com/consumers", "birthday": "1969-3-1", "display_name": "John Doe",
"email": "[email protected]", "first_name": "John", "id": "3a25f54136ac887c", "last_name": "Doe", "location":
"UK", "login_name":"[email protected]","onprem_sid": "", "password_change_url": "", "phone_number": "" (...)
Não está funcionando corretamente com Inline-Execute-PE. Estou trabalhando para resolver isso e a versão C++ do BOF que deve permitir faixas de busca maiores do que a versão C atualmente.
Compile e carregue o .cna:
x86_64-w64-mingw32-gcc -c procsearch-BOF.c -o procsearch-BOF.o
A versão BOF é sensível aos tamanhos de buffer, então a opção <range> não está presente e a saída é um tanto limitada. Sinta-se à vontade para ajustar os tamanhos de buffer, mas tome cuidado, você pode obter erros __chkstk ou o beacon pode travar se for muito grande.
Idealmente, queria escrever isso em C++, que já funcionou localmente com bof-vs, mas executar no beacon retorna alguns erros de símbolos desconhecidos ou travamentos. Atualizarei quando possível. Provavelmente há uma maneira melhor de implementar a função de busca/buffers em C, mas isso funciona por enquanto.
Eu não recomendaria buscar por um único caractere como "." em um processo muito grande, pois pode travar o beacon. Recomendo strings de busca de no mínimo 3 ou 4 caracteres ao usar BOF. Você pode aumentar bastante a faixa com a versão C++.
Exemplo despejando dados de usuário fictício do processo Outlook:
https://github.com/mlcsec/proctools/assets/47215311/dccd1223-774e-4dec-8353-91c057900a07
Utilitário C# para imprimir todas as informações de versão do arquivo para o pid fornecido. Compile no VS ou com csc:

BOF em C que replica algumas das funcionalidades acima, preciso descobrir problemas ao despejar valores de VerQueryValue(lpVersionInfo, "\\StringFileInfo\\040904b0\\....
Compile e carregue o .cna:
x86_64-w64-mingw32-gcc -c procinfo-BOF.c -o procinfo-BOF.o

Extrai argumentos da linha de comando para o processo especificado. Compile e carregue o .cna:
x86_64-w64-mingw32-gcc -c procargs.c -o procargs-BOF.o

Encerra um processo (ou apenas use kill no CS, não sei por que criei isso):
x86_64-w64-mingw32-gcc -c prockill-BOF.c -o prockill-BOF.o
