
Ferramenta de extração baseada em Frida.re para RunPE (e MapViewOfSection)
FridaExtract é uma ferramenta de extração RunPE baseada em Frida.re. A injeção do tipo RunPE é uma técnica comum usada por malware para ocultar código dentro de outro processo. Ela também é o estágio final de muitos packers : )
NOTA: Frida agora também suporta extração de arquivos PE injetados usando a técnica "MapViewOfSection" melhor descrita aqui.
Usando o FridaExtract você pode extrair e reconstruir automaticamente um arquivo PE que foi injetado usando o método RunPE... e contornar esses packers!
Existem muitas ferramentas excelentes que já extraem código injetado por RunPE, o FridaExtract não é melhor que elas. Mas é mais fácil de instalar, mais fácil de construir (rs), mais fácil de executar e mais fácil de hackear. Sem compiladores, sem ambientes de construção, apenas um simples "pip install" e você está pronto.
O código é especificamente comentado e organizado para servir como um modelo para você construir seus próprios projetos Frida. Isso é mais uma prova de conceito que demonstra como configurar hooks em um ambiente Windows. Por favor, copie-cole-hackeie isso da maneira que você quiser!
Aviso: O FridaExtract funciona apenas no Windows 32 bits. Atualmente existem alguns bugs misteriosos com wow64, então recomendamos usar Windows 7 32 bits ou Windows Server 2008 32 bits.
pip install frida no cmdFridaExtract só é capaz de extrair arquivos PE injetados por RunPE, então é bastante limitado. Se você estiver usando uma VM que seja fácil de snapshot-executar-reverter, então você pode simplesmente tentar o FridaExtract cegamente em todas as amostras de malware e ver o que sai, mas não recomendamos isso. Em vez disso, o FridaExtract é um bom complemento para uma sandbox (nós <3 malwr). Primeiro execute a amostra em uma sandbox e observe as chamadas de API.
Para a técnica RunPE, se você vir as seguintes chamadas de API, então o FridaExtract pode ser a ferramenta para você:
Para a técnica MapViewOfSection, se você vir as seguintes chamadas de API, então o FridaExtract pode ser a ferramenta para você:
Por padrão, o FridaExtract tentará extrair automaticamente o arquivo PE injetado, reconstruí-lo e despejá-lo em um arquivo chamado dump.bin.
python FridaExtract.py bad.exe
Um arquivo de despejo pode ser especificado usando o comando --out_file.
python FridaExtract.py bad.exe --out_file extracted.exe
Se o arquivo PE empacotado que você está tentando extrair requer argumentos, você pode passá-los usando o comando --args. Múltiplos argumentos podem ser passados separados por vírgula.
python FridaExtract.py bad.exe --args password
O FridaExtract tentará automaticamente reconstruir a memória despejada em um arquivo PE. Se isso não estiver funcionando e você quiser apenas um despejo bruto de toda a memória escrita no subprocesso, você pode usar o comando --raw. Em vez de escrever o PE reconstruído no arquivo de despejo, os segmentos de memória brutos serão escritos em ordem de endereço.
python FridaExtract.py bad.exe --raw
O FridaExtract usa hooks nas seguintes APIs para extrair o arquivo PE injetado:
Para rastrear essas APIs e imprimir os resultados, use o comando -v ou --verbose.
python FridaExtract.py bad.exe --verbose
Frida usa hooks em userland que podem ser facilmente contornados. Se você precisar de uma ferramenta DBI mais robusta, experimente o PIN! Um ótimo exemplo de uso do PIN para extrair RunPE é fornecido aqui.
Frida injeta um runtime javascript no processo que você está analisando, não é furtivo. Para uma boa visão geral de como o Frida pode ser detectado por malware, confira isso.