Table des matières

, , , ,

Windows exe - Comparaison de fichiers binaires

Voir :

Voir aussi :

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 :

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.

FIXME