Empecemos definiendo que es un hash
Una función criptográfica hash- conocida como “hash”- es un algoritmo matemático que transforma cualquier bloque arbitrario de datos en una nueva serie de caracteres con una longitud fija. Independientemente de la longitud de los datos de entrada, el valor hash de salida tendrá siempre la misma longitud ( 40 caracteres )
Para los que prefieran el aprendizaje visual en esta imagen vemos el concepto.
Existen diferentes algoritmos para el cálculo de hashes, entre los que podemos destacar los siguientes:
- SHA1
- SHA256
- SHA384
- SHA512
- MD5
Cuidado!!! Algunos de ellos han sido ya comprometidos, por lo que su elección no sería la más adecuada para… NADA. MD5 es un ejemplo de ello.
Hoy en día las utilidades de los hashes son múltiples. Cabe destacar la principal.. Codificar las contraseñas de los usuarios para almacenarlas de forma segura.
En este Post nos centraremos en otra….Calcular el valor hash de archivos ejecutables. ¿Porqué? ….
Hoy en día, una de las técnicas más utilizadas para conseguir el acceso a sistemas ajenos es la de software malicioso en forma de troyano o similar. Programas que normalmente son INYECTADOS en programas de uso normal, que al instalarlos en nuestro PC activan también el troyano que llevan dentro…
Los fabricantes suelen proporcionar el hash de sus archivos ejecutables, de tal forma que DEBERÍAMOS SIEMPRE COMPROBAR el hash del fichero que nos hemos bajado, con el proporcionado por el fabricante. Sobre todo es OBLIGATORIO si lo descargamos de páginas de terceros.
Podemos ver en el siguiente Post de Shellter lo fácil que es inyectar código maligno en un ejecutable de winrar.exe…
DEMO SHELLTER – Ataque desde el lado del cliente
Pongamos un ejemplo. Si queremos bajarnos el popular programa de virtualización VirtualBox, vemos que en la página del fabricante nos indican lo mismo que os he explicado.
Si pulsamos sobre el enlace vemos los valores para SHA-256:
Si nos fijamos en el de Windows su valor es el siguiente:
a7b340eaa8ad9de72373162bcbba3fc0eeed9696fa404a0e5b99c0983151a3fc VirtualBox-6.0.4-1284-Win.exe
Hay infinidad de utilidades que nos dan el valor … En la propia Store de Microsoft está Hash Tool. Si cargamos el fichero vemos como coincide..
Veamos como hacerlo con cmdlets de PowerShell:
PS C:\> ls .\VirtualBox-6.0.4-128413-Win.exe
Directorio: C:\
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 30/03/2019 14:29 219650560 VirtualBox-6.0.4-128413-Win.exe
PS C:\> Get-FileHash .\VirtualBox-6.0.4-128413-Win.exe -Algorithm SHA256 | Format-List
Algorithm : SHA256
Hash : A7B340EAA8AD9DE72373162BCBBA3FC0EEED9696FA404A0E5B99C0983151A3FC
Path : C:\Users\usuario\Downloads\VirtualBox-6.0.4-128413-Win.exe
Vemos como coincide en SHA-256 con el proporcionado por el fabricante 🙂
Podemos encontrar en la propio Web de microsoft ayuda del cmdlet Get-FileHash.
Básicamente con el parámetro -Algoritm podemos indicar el tipo de codificación:
PS C:\> Get-FileHash .\VirtualBox-6.0.4-128413-Win.exe -Algorithm MD5 MD5 64530CCB209C38A1C3CBEAD8B9927CE6 PS C:\> Get-FileHash .\VirtualBox-6.0.4-128413-Win.exe -Algorithm SHA256 SHA256 A7B340EAA8AD9DE72373162BCBBA3FC0EEED9696FA404A0E5B99C0983151A3FC PS C:\> Get-FileHash .\VirtualBox-6.0.4-128413-Win.exe -Algorithm SHA384 SHA384 BBE3174C9B3BEC263C3328EC1BB63BBFAD4239936118ED7197C84CDFE190A6DBCEE PS C:\> Get-FileHash .\VirtualBox-6.0.4-128413-Win.exe -Algorithm SHA512 SHA512 7426342C3BAC9E9194B230E2A665C2E62EF276EB7A26CF01276C965DEAB3F2622D6
Podemos hacer exactamente lo mismo en el mundo linux… con los comandos:
- md5sum
- sha256
- sha512
Su funcionamiento igual de fácil.
root@kali:~/Downloads# ls VirtualBox-6.0.4-128413-Win.exe
VirtualBox-6.0.4-128413-Win.exe
root@kali:~/Downloads# md5sum VirtualBox-6.0.4-128413-Win.exe
64530ccb209c38a1c3cbead8b9927ce6 VirtualBox-6.0.4-128413-Win.exe
root@kali:~/Downloads# sha256sum VirtualBox-6.0.4-128413-Win.exe
a7b340eaa8ad9de72373162bcbba3fc0eeed9696fa404a0e5b99c0983151a3fc VirtualBox-6.0.4-128413-Win..
Esperemos ahora que dediques 2 segundos a comprobar dichos valores antes de meter al séptimo de caballería en tu casa en forma de troyano.
Enjoy!!