WerEnc.dll: uma biblioteca da Microsoft como primitiva de criptografia controlada pelo atacante

O pesquisador Mr.Z (0xsp) demonstrou como transformar uma biblioteca assinada da Microsoft WerEnc.dll em um mecanismo de criptografia de payload controlado pelo atacante — sem implementar criptografia do zero.
WerEnc.dll vem com Windows 10 1607+ e Windows 11 e exporta as funções não documentadas EncryptDumpFile e EncryptDumpStream. A biblioteca gera uma chave AES-256 aleatória de 32 bytes e um IV de 16 bytes, criptografa os dados com AES-CBC e separadamente envolve a chave e o IV com a chave pública RSA-4096 embutida da Microsoft. Como o material de sessão resultante não pode ser descriptografado sem a chave privada correspondente, o autor implementou BYOK (Bring Your Own Key) substituindo a chave pública RSA embutida diretamente na memória do processo.
A seção .rdata da biblioteca contém um BCRYPT_RSAKEY_BLOB de 539 bytes contendo uma chave pública RSA-4096. BCryptImportKeyPair a lê diretamente da imagem mapeada, então o PoC localiza o blob usando a magia RSA1, usa VirtualProtect para tornar a região gravável e substitui o blob de 539 bytes por um contendo a chave pública RSA-4096 do próprio operador.
Depois disso, WerEnc.dll continua a realizar operações criptográficas através do Windows CNG, mas a chave AES e o IV agora são criptografados com RSA usando a chave do operador. A chave privada correspondente pode então ser usada para recuperá-los do contêiner e descriptografar o payload com AES-256-CBC.
O autor também reconstruiu o formato do contêiner: um cabeçalho de 64 bytes, um blob RSA de 539 bytes, dois blocos RSA de 512 bytes contendo a chave AES e o IV envoltos, seguidos pelo texto cifrado. O envelopamento RSA em EncryptDumpFile usa padding PKCS#1, enquanto o caminho de stream usa OAEP-SHA256.
O PoC prático suporta arquivos .byok.enc pré-criptografados, criptografando um payload bruto através de WerEnc.dll em memória, e um modo beacon no qual o stager recebe chaves BYOK de um C2 HTTP, mantém-nas em memória e faz patch na biblioteca após o lançamento.
O pesquisador assim demonstrou o abuso de um componente criptográfico legítimo do Windows: operações AES/RSA são realizadas por uma DLL da Microsoft através do CNG nativo, em vez de código criptográfico personalizado no loader.
Fornecedor
Microsoft
Produto
Aes-256-Cbc
Bcryptimportkeypair
Bcrypt_Rsakey_Blob
.Byok.Enc
Encryptdumpfile
Encryptdumpstream
Mais