Imphash

Em segurança da informação, mais especificamente na análise de malware, imphash (do Inglês "Imports Hash") é o resultado da uma soma de verificação de um texto criado a partir das funções importadas por um executável PE (Portable Executable), utilizando o algoritmo MD5, ideia criada por pesquisadores da Mandiant em 2004.[1] com o objetivo de fornecer um recurso para encontrar outros exemplares de malware de uma mesma família, já que normalmente criadores de malware não mudam as funções de biblioteca que estes utilizam ao gerarem novos examples, ou seja, quando compilam o mesmo malware novamente, gerando novos executáveis. Neste caso, embora o hash do arquivo mude, o imphash se mantém.

Cálculo do imphash

O texto da qual a soma de verificação MD5 é calculada é formado da seguinte maneira:[2]

  1. Varre-se a Import Table (IT) ou Table de Importações de funções do executável PE, que contém um registro das funções importadas por este executável e suas respectivas bibliotecas.
  2. Para cada função encontrada, prefixa-se seu nome com o nome da biblioteca (DLL) onde ela está sem sua extensão, mas mantendo o ponto. Por exemplo, se o executável importa a função DeleteCriticalSection() da biblioteca KERNEL32.DLL, esse import reescrito ficaria KERNEL32.EnterCriticalSection.
  3. Caso não a função não seja importada por nome, tenta-se resolvê-la com um banco de dados local e, caso não seja possível, utiliza-se seu número ordinal.
  4. Converte-se o texto para minúsculo, ficando agora kernel32.entercriticalsection.
  5. Repete-se todo o algoritmo para as outras funções importadas pelo binário, concatenando o resultado com o anterior, separando-se por vírgulas.
  6. Calcula-se o hash MD5 do texto final.

Exemplo

Tomemos como exemplo um executável PE que importe as seguintes funções, nesta ordem:

  • EnterCriticalSection(), da KERNEL32.DLL
  • MessageBoxA(), da USER32.DLL
  • CreateWindowExA(), da USER32.DLL

Quem quiser calcular o imphash deste executável, deverá calcular o hash MD5 da seguinte string (sem considerar caracteres de nova linha):

kernel32.entercriticalsection,user32.messageboxa,user32.createwindowexa

O resultado é do exemplo é 2e4b75f13408b52416d9c846d1189ae6. Assim é possível fazer o mesmo cálculo para diferentes arquivos, a fim de encontrar outros exemplares da mesma família. Ou seja, é um método de busca por arquivos similares.

Referências

  1. «Tracking Malware with Import Hashing « Tracking Malware with Import Hashing». Mandiant. 23 de janeiro de 2014. Consultado em 24 de janeiro de 2023 
  2. Mercês, Fernando (6 de maio de 2016). «Entendendo o imphash». Mente Binária. Consultado em 24 de janeiro de 2023 

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.