sogen - Emulador de userspace de alto desempenho para Windows e Linux
(github.com/momo5502)- Emulador de userspace de alto desempenho para Windows/Linux que opera no nível de syscall, controlando toda a execução do processo por meio de hooking abrangente
- Adequado para tarefas que exigem controle detalhado sobre a execução de processos, como pesquisa de segurança, análise de malware e pesquisa de DRM
- Funciona no nível de syscall sem reimplementar a Windows API, permitindo usar diretamente as DLLs de sistema existentes
- Escrito em C++ e pode rodar com o backend desejado: Unicorn Engine, icicle-emu, Hyper-V(WHP)
- Gerenciamento avançado de memória: construído sobre o gerenciamento de memória do Unicorn, com suporte a tipos de memória específicos do Windows, como reserved e committed
- Suporte completo a carregamento de PE: trata o carregamento de executáveis e DLLs, mapeamento apropriado de memória, relocations e suporte a TLS
- Tratamento de exceções: implementação de exceções estruturadas do Windows (SEH), com suporte a dispatcher de exceções e unwinding
- Suporte a threads: oferece um modelo de threading com escalonamento round-robin
- Gerenciamento de estado: suporta tanto serialização completa do estado quanto snapshots rápidos em memória
- Interface de depuração: implementa o protocolo serial do GDB, permitindo integração com IDA Pro, GDB, LLDB, VS Code etc.
- Na análise de malware, o isolamento do host pode não ser perfeito, por isso é recomendado usar a versão web baseada em sandbox do navegador
- Pode ser automatizado com Python
- Instalação com
pip install sogen - É possível executar o emulador, registrar callbacks e interceptar chamadas de WinAPI diretamente em Python
- Instalação com
Consulte os slides da apresentação: Fake It ‘til We Make It: The Art of Windows User Space Emulation
- O que é Windows User Space Emulation?
- Técnica que executa o processo dentro de um emulador e simula o SO e o kernel por baixo dele
- Enquanto a emulação comum roda código em uma CPU virtual e simula hardware, a emulação de userspace imita também as camadas de SO e kernel acima disso
- O principal valor disso é o controle completo sobre o código em execução — o emulador pode intervir em todas as etapas da execução
- O controle é feito por meio de hooking points
- Hook de acesso à memória — intercepta operações de read, write e execute
- Hook de execução de instruções — captura momentos em que instruções específicas como syscall, cpuid e rdtsc são executadas
- Hook de execução de novo caminho de código — detecta caminhos de código executados pela primeira vez
- Graças a essa capacidade de hooking, é possível interceptar comunicação externa, rastrear o fluxo de execução e medir cobertura de código, servindo de base para análise de DRM, análise de malware, análise de vulnerabilidades e pesquisa de segurança
- O apresentador é um desenvolvedor de DRM com experiência em fazer reversing e bypass de vários DRMs, como Steam CEG, Arxan e Denuvo
- A emulação foi um recurso central na análise do DRM Denuvo, muito usado por jogos para Windows
- Isso porque os DRMs modernos frequentemente tornam análise estática e dinâmica inviáveis com ofuscação, anti-tampering e anti-debugging
- O emulador também é usado em análise de vulnerabilidades (fuzzing): randomiza entradas dentro do emulador, recebe feedback de cobertura de código via hooks e oferece execuções previsíveis e reproduzíveis
- As limitações das soluções existentes motivaram o desenvolvimento
- Qiling, Speakeasy e Dumpulator são em Python e extremamente lentos em análise de DRM com muito hooking
- Binee e Unicorn PE são reimplementações em nível de API, incompletas e sujeitas a bugs
- Escala de syscalls: 409 syscalls comuns em
ntdll.dll, 1474 syscalls de UI emwin32u.dll - A alta velocidade de emulação vem do JIT
Ainda não há comentários.