Qual algoritmo é usado para produzir a chave de senha de 32 bits em um documento do Microsoft Office protegido contra edição (especificamente Word)?

Qual algoritmo é usado para produzir a chave de senha de 32 bits em um documento do Microsoft Office protegido contra edição (especificamente Word)?

Se você salvar um documento Word herdado (era .doc) com proteção contra edição, poderá encontrar a chave de senha armazenada no arquivo.

Para facilitar, isso pode ser encontrado salvando em um arquivo .xml ou .html e inspecionando a fonte do texto (mas você também pode retirá-lo do .doc original com um editor hexadecimal). Por exemplo, com a senha “senha”, você encontrará o seguinte na fonte:

<w:documentProtection w:edit="forms" w:enforcement="on" w:unprotectPassword="147A83AF"/>

Qual algoritmo é usado para produzir essa chave, que parece ser hexadecimal de 32 bits?

Responder1

Não consigo reproduzir essa saída com uma instalação atual do Office. Pelo menos esse valor deve significar "senha" de acordo comesse.

Levando em consideração essas fontes:

Parece que essas versões mais antigas estão usando uma combinação de Hashing e criptografia. Parece que você teria que verificar um pouco mais sobre o arquivo para descobrir que tipo de combinação ele está realmente usando.

InfoSecSee tem uma imagem bastante interessante em relação a isso: Documentação do algoritmo de senha do Office InfoSee

Isso parece corresponder à lista do PenTestCorner:

  • Office 97-03(MD5+RC4,oldoffice$0,oldoffice$1): sinalizador -m 9700
  • Office 97-03(MD5+RC4,modo colisor#1): sinalizador -m 9710
  • Office 97-03 (MD5 + RC4, modo de colisão nº 2): sinalizador -m 9720
  • Office 97-03(SHA1+RC4,oldoffice$3,oldoffice$4): sinalizador -m 9800
  • Office 97-03(SHA1+RC4,modo colisor#1): sinalizador -m 9810
  • Office 97-03(SHA1+RC4,modo colisor#2): sinalizador -m 9820
  • Office 2007: sinalizador -m 9400
  • Office 2010: sinalizador -m 9500
  • Office 2013: sinalizador -m 9600

Você teria que verificar os detalhes sobre como "Office2John" ou hashcat é implementado para descobrir mais como determinar qual algoritmo é usado, etc.

informação relacionada