Ceci est une ancienne révision du document !
Table des matières
Windows exe - Comparaison de fichiers binaires
Voir :
- strings fichier.exe
- ldd fichier.exe
- Comparaison avec un éditeur hexadécimal
Voir aussi :
- ClamAV
- Contrôle d'intégrité
Fichier suspect à comparer avec un fichier de référence
Dans le cas ci-dessous nous avons un fichier exe avec un checksum différent d'autres qui semblent être de la même version.
mkdir Centreon-NSClient-0.5.2.41-20211102-x64.exe_d/ cd Centreon-NSClient-0.5.2.41-20211102-x64.exe_d/ 7z x ../Centreon-NSClient-0.5.2.41-20211102-x64.exe
$ diff -r Centreon-NSClient-0.5.2.41-20211102-x64.exe_d/ Centreon-NSClient-0.5.2.41-20211102-x64.exe.corrupt_d/ Binary files Centreon-NSClient-0.5.2.41-20211102-x64.exe_d/Uninst.exe and Centreon-NSClient-0.5.2.41-20211102-x64.exe.corrupt_d/Uninst.exe differ Binary files Centreon-NSClient-0.5.2.41-20211102-x64.exe_d/resources.zip and Centreon-NSClient-0.5.2.41-20211102-x64.exe.corrupt_d/resources.zip differ
Décompression des tous les binaires et archives avec “7z x” récursivement
$ diff -r Centreon-NSClient-0.5.2.41-20211102-x64.exe_d/ Centreon-NSClient-0.5.2.41-20211102-x64.exe.corrupt_d/ Binary files Centreon-NSClient-0.5.2.41-20211102-x64.exe_d/Uninst.exe and Centreon-NSClient-0.5.2.41-20211102-x64.exe.corrupt_d/Uninst.exe differ Binary files Centreon-NSClient-0.5.2.41-20211102-x64.exe_d/resources/scripts/centreon/centreon_plugins.exe and Centreon-NSClient-0.5.2.41-20211102-x64.exe.corrupt_d/resources/scripts/centreon/centreon_plugins.exe differ Binary files Centreon-NSClient-0.5.2.41-20211102-x64.exe_d/resources/scripts/centreon/check_logfiles.exe and Centreon-NSClient-0.5.2.41-20211102-x64.exe.corrupt_d/resources/scripts/centreon/check_logfiles.exe differ Binary files Centreon-NSClient-0.5.2.41-20211102-x64.exe_d/resources.zip and Centreon-NSClient-0.5.2.41-20211102-x64.exe.corrupt_d/resources.zip differ
$ exiftool -FileVersion -ProductVersion Centreon-NSClient-0.5.2.41-20211102-x64.exe_d/resources/scripts/centreon/centreon_plugins.exe Centreon-
NSClient-0.5.2.41-20211102-x64.exe.corrupt_d/resources/scripts/centreon/centreon_plugins.exe
======== Centreon-NSClient-0.5.2.41-20211102-x64.exe_d/resources/scripts/centreon/centreon_plugins.exe
File Version : 1.0.0.0
Product Version : 20211102 (702e50519 388b9a2)
======== Centreon-NSClient-0.5.2.41-20211102-x64.exe.corrupt_d/resources/scripts/centreon/centreon_plugins.exe
File Version : 1.0.0.0
Product Version : 20211102 (702e50519 852566c)
2 image files read
Lister toutes les sections
objdump -h file.exe
Exemple
.text .data .rdata .pdata .xdata .bss .idata .CRT .tls .rsrc
diff <(objdump -s --section .rsrc Centreon-NSClient-0.5.2.41-20211102-x64.exe_d/resources/scripts/centreon/centreon_plugins.exe) <(objdump -s --section .rsrc Centreon-NSClient-0.5.2.41-20211102-x64.exe.corrupt_d/resources/scripts/centreon/centreon_plugins.exe) 2c2 < Centreon-NSClient-0.5.2.41-20211102-x64.exe_d/resources/scripts/centreon/centreon_plugins.exe: file format pei-x86-64 --- > Centreon-NSClient-0.5.2.41-20211102-x64.exe.corrupt_d/resources/scripts/centreon/centreon_plugins.exe: file format pei-x86-64 16962,16963c16962,16963 < 8e53d0 35003000 35003100 39002000 33003800 5.0.5.1.9. .3.8. < 8e53e0 38006200 39006100 32002900 00000000 8.b.9.a.2.)..... --- > 8e53d0 35003000 35003100 39002000 38003500 5.0.5.1.9. .8.5. > 8e53e0 32003500 36003600 63002900 00000000 2.5.6.6.c.).....
$ diff <(objdump -d Centreon-NSClient-0.5.2.41-20211102-x64.exe_d/resources/scripts/centreon/centreon_plugins.exe) <(objdump -d Centreon-NSClient-0.5.2.41-20211102-x64.exe.corrupt_d/resources/scripts/centreon/centreon_plugins.exe) 2c2 < Centreon-NSClient-0.5.2.41-20211102-x64.exe_d/resources/scripts/centreon/centreon_plugins.exe: file format pei-x86-64 --- > Centreon-NSClient-0.5.2.41-20211102-x64.exe.corrupt_d/resources/scripts/centreon/centreon_plugins.exe: file format pei-x86-64
$ diff <(objdump -d Centreon-NSClient-0.5.2.41-20211102-x64.exe_d/Uninst.exe) <(objdump -d Centreon-NSClient-0.5.2.41-20211102-x64.exe.corrupt_d/Uninst.exe) 2c2 < Centreon-NSClient-0.5.2.41-20211102-x64.exe_d/Uninst.exe: file format pei-i386 --- > Centreon-NSClient-0.5.2.41-20211102-x64.exe.corrupt_d/Uninst.exe: file format pei-i386
Conclusion
De par le jeu de la compression ces deux fichiers (le suspect et la référence) semblaient très différents l'un de l’autre, mais à y regarder de plus près, ces deux fichiers sont très semblables.
A force de décompresser toutes les exe/zip avec 7z x, nous constatons que la plupart des différences concerne le numéro de version mineur. Et même quand cela ne concerne pas la version, cela concerne des DATA_SEGMENT https://en.wikipedia.org/wiki/Data_segment
Notamment dans :
- check_logfiles.exe
- Uninst.exe
Après d'autre vérifications, tel que ldd pour voir les libs, une comparaison avec un éditeur hexadécimal, un contrôle avec ClamAV… j'en conclu que ce fichier suspect est très probablement saint, mais que cela ne change rien, puisqu'il ne faut jamais utiliser du code compilé qui n'est été signé !
Au delà de cette analyse j'en conclu que nous devons mettre en place un contrôle d'intégrité strict.
