Python Forensics - Mobile Forensics

A investigação forense e a análise de hardware de computador padrão, como discos rígidos, tornaram-se uma disciplina estável e são acompanhadas com a ajuda de técnicas para analisar hardware não padrão ou evidências temporárias.

Embora os smartphones estejam cada vez mais sendo usados ​​em investigações digitais, eles ainda são considerados fora do padrão.

Análise forense

As investigações forenses procuram dados como ligações recebidas ou números discados do smartphone. Pode incluir mensagens de texto, fotos ou qualquer outra evidência incriminatória. A maioria dos smartphones possui recursos de bloqueio de tela usando senhas ou caracteres alfanuméricos.

Aqui, vamos dar um exemplo para mostrar como o Python pode ajudar a quebrar a senha de bloqueio de tela para recuperar dados de um smartphone.

Exame Manual

O Android suporta bloqueio de senha com número PIN ou senha alfanumérica. O limite de ambas as senhas deve ser entre 4 e 16 dígitos ou caracteres. A senha de um smartphone é armazenada no sistema Android em um arquivo especial chamadopassword.key dentro /data/system.

O Android armazena um SHA1-hashsum com sal e MD5-hashsum da senha. Essas senhas podem ser processadas no código a seguir.

public byte[] passwordToHash(String password) {

   if (password == null) { 
      return null; 
   }

   String algo = null;
   byte[] hashed = null;

   try { 
      byte[] saltedPassword = (password + getSalt()).getBytes(); 
      byte[] sha1 = MessageDigest.getInstance(algo = "SHA-1").digest(saltedPassword);
      byte[] md5 = MessageDigest.getInstance(algo = "MD5").digest(saltedPassword); 
      hashed = (toHex(sha1) + toHex(md5)).getBytes(); 
   } catch (NoSuchAlgorithmException e) { 
      Log.w(TAG, "Failed to encode string because of missing algorithm: " + algo); 
   }
   
   return hashed;
}

Não é possível quebrar a senha com a ajuda de dictionary attack pois a senha com hash é armazenada em um salt file. estesalté uma string de representação hexadecimal de um número inteiro aleatório de 64 bits. É fácil acessar osalt usando Rooted Smartphone ou JTAG Adapter.

Smartphone Enraizado

O despejo do arquivo /data/system/password.key é armazenado no banco de dados SQLite sob o lockscreen.password_saltchave. Debaixosettings.db, a senha é armazenada e o valor é claramente visível na imagem a seguir.

Adaptador JTAG

Um hardware especial conhecido como adaptador JTAG (Joint Test Action Group) pode ser usado para acessar o salt. Da mesma forma, umRiff-Box ou um JIG-Adapter também pode ser usado para a mesma funcionalidade.

Usando as informações obtidas do Riff-box, podemos encontrar a posição dos dados criptografados, ou seja, o salt. A seguir estão as regras -

  • Pesquise a string associada "lockscreen.password_salt."

  • O byte representa a largura real do sal, que é seu length.

  • Este é o comprimento que é realmente pesquisado para obter a senha / PIN armazenado dos smartphones.

Esse conjunto de regras ajuda a obter os dados de sal apropriados.