https://gchq.github.io/CyberChef/
Un hash est utilisé pour détecter si un fichier a été modifié et n'est donc plus intègre. il existe un grand nombre de mécanismes de hash basés sur les algorithmes MD4/5, SHA 1/2/3, NT Hash, LM Hash, CRC-16 ou 32 et encore bien d'autres. Le résultat généré par cette fonction est unique et constitue l'empreinte (ou la signature) du fichier ou du message (ou du certificat SSL). Lors de téléchargements de fichiers licites et officiels, les éditeurs fournissent également le hash de ce fichier, afin que nous puissions nous assurer que le fichier téléchargé n'a pas été corrompu.
Linux dispose de commandes de base pour gérer les hash des algorithmes les plus courants (dans /usr/bin) :
Commande | Description |
---|---|
sha1sum | Somme de contrôle avec SHA1 |
md5sum | Somme de contrôle avec MD5 |
cksum | Somme de contrôle par CRC |
innochecksum | Somme de contrôle pour tables InnoDB |
b2sum | Somme de contrôle par BLAKE2 (512-bit) |
sha224sum | Somme de contrôle avec SHA224 |
sha384sum | Somme de contrôle avec SHA384 |
sha512sum | Somme de contrôle avec SHA512 |
sha256sum | Somme de contrôle avec SHA256 |
sha256sum <fichier>
Ou bien pour calculer le hash d'un fichier
echo "hello world" | sha256sum
Ce qui affiche le has suivant
a948904f2f0f479b8f8197694b30184b0d2ed1c1cd2a1ec0fb85d299a192a447
Une fois ce hash disponible, il ne reste plus qu'à comparer le hash source et le hash destination pour déterminer si le fichier a été corrompu ou non.
Pour générer le hash d'un fichier, sous Windows avec MSDOS, utilisez la command certutil :
certutil -hashfile <nom_du_fichier> <algorithme>
L'algorithme peut être SHA256, SHA1, ...
Avec Powershell :
Get-FileHash -Algorithm SHA256 -Path <file_path>
L'algorithme SHA-256 (Secured Hash Algorithm) est une fonction de hachage crypto permettant de générer une empreinte numérique de 256 bits à partir de données de longueur variable. Cette empreinte est représentée sous forme d'une suite de chiffres et lettres de 64 caractères en hexadécimal. Créé en 2001 par la NSA (National Security Agency), c'est un algorithme très utilisé dans de nombreux domaines, notamment les chaines de Bitcoin, car c'est un algorithme qui offre un haut niveau de sécurité.
L'algorithme SHA-256 est relativement complexe, mélangeant des calculs binaires avec des fonctions de compression incluant des additions, multiplications, substitutions, rotations ainsi que d'arbres de Merkle. Quand je vous dis que c'est robuste...
Nous avons vu que le hash permettait d'être comparé à une valeur hexadécimale fournie par le site qui propose le téléchargement du fichier qui nous intéresse. Maintenant il existe d'autres services permettant de gérer ces hash comme les sites d'antivirus qui vont vérifier les hash en les comparant avec des fichiers reconnus comme étant porteurs de virus.
Un site pratique pour ce genre d'activité est virustotal avec lequel vous pouvez spécifier un hash et VirusTotal vous dira ce qu'il en est de ce fichier.
Une autre solution est de simplement copier/coller ce hash dans la barre de recherche de Google et potentiellement de se rendre sur MD5hashing.net. Ce site vous permettra de savoir ce qui se trouve derrière ce hash. Par exemple si vous passez ce hash (a948904f2f0f479b8f8197694b30184b0d2ed1c1cd2a1ec0fb85d299a192a447) à MD5hashing, il vous sortira l'information que c'est en fait la chaine "hello world" qui a subi ce hash.