Changer l’icône d’un exécutable : dangers et protections

Dans cet article, nous allons voir comment il est possible de changer l’icône d’un exécutable et ce que cela implique en terme de sécurité. Nous verrons également comment se protéger d’éventuelles attaques utilisant cette technique.

Cette technique peut être utilisée à la fois pour des activités malicieuses type phishing ou spear phishing, mais aussi par des développeurs qui créent leur propres programmes et  les utilisateurs qui souhaitent personnaliser leur environnement Windows. Dans tous les cas, il est important de connaitre les implications en terme de sécurité dans les cas d’exploitation dans le cadre d’attaque phishing.

Changer l’icône d’un exécutable

Chaque exécutable embarque, en plus de ses instructions, un ensemble d’informations. Il peut s’agir des icônes justement, mais aussi des différents informations affichées dans les propriétés et détails de l’exécutable lui même :

Visualisation des propriétés d’un exécutable

Sous Windows, il est possible de changer ce type d’information sans pour autant toucher au code de l’exécutable et sans modifier la façon dont il va ensuite s’exécuter. Cela n’est pas une fonctionnalité native au OS Windows, nous allons pour cela nous procurer et installer le logiciel “Resource Hacker” à l’adresse suivante : http://www.angusj.com/resourcehacker/

Resource Hacker va nous permettre d’éditer des exécutables Windows 32 et 64 bits  afin de modifier ses ressources (dont les icônes). Une fois installé, nous pouvons l’ouvrir et aller chercher l’exécutable à modifier. Pour l’exemple, je vais modifier l’exécutable putty.exe afin de le faire passer pour Firefox. J’ouvre donc putty.exe  avec ResourceHacker:

Modification de l’icône d’un fichier avec Resource Hacker

On se retrouve donc avec plusieurs “sections”, dont la section “Icon” dans laquelle on va trouver l’icône de Putty en différentes tailles (le plus souvent “16×16, “32×32″ et 48×48”). Il nous faut donc créer ou récupérer les icônes que l’on souhaite remplacer au format “.ico”.

Modification de l’icône d’un fichier avec Resource Hacker

Pour convertir une image JPG/PNG au format .ico, j’utilise un convertisseur en ligne : https://icoconvert.com/

Une fois nos différents fichier .ico récupérés, on peut faire un clique droit sur les différents onglets du répertoire “Icon” pour ensuite cliquer sur “replace Icon”. Iici, il nous suffit de cliquer sur “Open file with new icon…” puis d’aller chercher notre fichier au format “.ico” et à la bonne taille. Une fois cela fait. Il faudra cliquer sur “Compile” (flèche verte), puis sur “Save”, pour sauvegarder notre exécutable.

Note : Je vous conseille le “Save As” afin de créer un nouveau fichier. D’une part cela garde intacte votre exécutable initial, et d’autres part vous ne serez pas embêté avec d’éventuels cache des fichiers icônes.

Voici ce que cela donne avec les icônes de Firefox sur un exécutable Putty, le nom, la description et les autres éléments peuvent également être changés avec Resource Hacker, mais ce n’est pas l’objectif de cet article :

Visualisation de la modification de l’icône d’un exécutable et des autres propriétés

Et voila, on se retrouve donc avec un exécutable dont l’icône est modifié. A noter que cela permet aussi de customiser vos propres exécutables, et pas seulement ceux officiels que vous récupérez sur des sites officiels.

Quelles implications en terme de sécurité ?

Bien, maintenant il est temps de discuter et d’examiner les implications en terme de sécurité de la modification d’un icône d’exécutable.

Cette technique est souvent utilisée dans le cadre de l’exploitation de malware ou autres virus en tous genre. Comme nous l’avons vu, un développeur peut faire passer son logiciel pour n’importe quel autre sans différence visible pour un utilisateur lambda. Faire passer son RAT (Remote Access Trojan) pour la dernière version de l’exécutable Firefox est alors d’une grande aide pour qu’une campagne d’infection porte ses fruits.

Ici, l’exécutable putty utilisé aurait très bien pu être un malware développé main et nommé Firefox_v45.exe. Par défaut, cet exécutable n’aurait eu aucun icône. Il m’aurait alors été possible de modifier ce fichier exécutable pour lui ajouter l’icône officiel de Firefox. Ainsi, il aurait eu beaucoup plus de chance d’être exécuté par un utilisateur.

Pour être exécuté par Windows, un fichier exécutable doit avoir une extension bien précise : “.exe”. Par défaut, et par soucis de design, Windows n’affiche pas les extensions de fichier aux utilisateurs. Cela signifie que si je nomme mon fichier PDF_important.pdf.exe. La véritable extension de mon fichier étant .exe, c’est le processus d’exécution Windows qui le lancera, et non un lecteur PDF. Également, cela signifie que mon icône n’aura par défaut pas l’icône d’un lecteur PDF.

Transformation d’un fichier malicieux en un fichier “standard” aux yeux d’un utilisateur

En plus d’avoir la possibilité de remplacer l’image de mon exécutable par celle d’un lecteur PDF, j’ai également la possibilité, grâce à la configuration par défaut de Windows, de dissimuler parfaitement le fait qu’il s’agisse d’un exécutable. C’est pour cette raison qu’il est recommandé d’afficher les extensions de fichier sous Windows, voyez plutôt :

Un fichier “.pdf.exe” devient “.pdf” quand l’affichage des extensions est désactivé sous Windows

Vous l’aurez compris, cette technique est souvent utilisée à des fins malicieuses. Le phishing est une technique qui consiste à trouver l’utilisateur afin qu’il exécute volontairement certaines actions comme aller sur un site web, saisir ses identifiants, exécuter un programme. Pour cela, il faut le tromper, lui faire croire en ses actions (afficher un icône qui ne représente pas un danger, lui faire aller sur un site web qui ressemble à celui qu’il fréquente habituellement). Un utilisateur averti et conscient des dangers ne se laissera pas avoir aussi facilement, nous allons pour cela passer en revu quelques bonnes pratiques afin d’éviter de tomber dans le scénario précédemment exposé.

Comment s’en protéger ?

Il existe plusieurs “bonnes pratiques” d’exécution d’un programme qu’il convient de respecter. L’important ici est de savoir repérer quand un programme semble malicieux avant de l’exécuter, car il est souvent trop trad une fois que celui-ci a été exécuté avec le consentement de l’utilisateur.

Ici, les bonnes pratiques données permettent d’éviter de faire appel à la protection anti-virus, qui en plus de ne pas être toujours très efficace, analysera votre fichier exécutable une fois que vous l’aurez exécuté.

Note : Un antivirus peut, en plus de l’analyse des signatures qui s’opère ” à froid” (sans exécution volontaire de l’utilisateur), effectuer une analyse comportementale des programmes qui sont en train de s’exécuter sur votre OS. Cela passe notamment par l’analyse des actions du programme (accès fichiers, accès réseau, etc.). C’est la dernière barrière à franchir pour un malware sur un système d’exploitation, si l’anti-virus autorise l’exécution d’un programme malveillant après son analyse statique et son analyse comportementale, le malware aura bien le temps de faire ce qu’il souhaite sur votre OS.

Alors autant éviter de l’exécuter si l’on a un doute, et voici comment le lever si c’est le cas :

  • L’utilisation des empreintes MD5 ou SHA1 : obtenir le hash d’un fichier (ou son empreinte) permet de vérifier son intégrité, et ainsi de s’assurer qu’il n’a pas subit de modification par rapport à la version disponible en téléchargement. Pour cela, il faut que le site web officiel du projet propose l’empreinte de référence, les utilisateurs peuvent ainsi s’assurer que le fichier dont ils disposent présente la même empreinte, une seul modification d’un fichier (son icône par exemple) va totalement changer son empreinte. Le site Debian.org propose par exemple les hash MD5 et SHA1 des images téléchargeables  http://cdimage.debian.org/debian-cd/8.6.0/amd64/iso-cd/.

Comparaison des hash MD5 pour un exécutable dont l’icône a été modifié

  • Connaitre la provenance d’un exécutable (site officiel) : Il est toujours plus intéressant de récupérer un exécutable sur son site officiel plutôt que sur un dépôt douteux ou via un mail. Dans bien des cas, et notamment lorsqu’il s’agit d’applications disponibles publiquement, il vaut mieux se contenter des sites officiels, et ainsi utiliser l’empreinte MD5. Lorsqu’un contact vous fait parvenir un fichier (quel qu’il soit), assurez vous par deux fois de qui il s’agit, si son adresse mail n’a pas été usurpée, s’il s’agit d’un fichier que vous attendiez. Dans le doute, il vaut mieux ne pas l’exécuter et effectuer des analyses complémentaires sur celui-ci.
  • Antivirus & VirusTotal: j’ai rapidement parlé des antivirus précédemment. Ceux ci disposent majoritairement de deux types d’analyse : statique et comportementale. Il est également intéressant d’utiliser, pour les exécutables courants, le site Virus Total, qui permet de faire analyser un exécutable ou plus généralement un fichier, par plusieurs dizaines d’antivirus et ainsi de croiser les analyses et les connaissances. Cela peut être une source intéressante en cas de doute sur un exécutable : VirusTotal
  • Activer la visualisation des extensions sous Windows : Il est important d’activer la visualisation des extensions sous Windows car cela permet de savoir si un fichier est réellement un exécutable, un pdf ou une image. Dans bien des cas, et notamment si l’utilisateur est un minimum averti, cela évitera bien des ennuis. Pour le reste, c’est la sensibilisation des utilisateurs qui ne devra pas être négligée

Nous l’avons vu, un malware peut très facilement se faire passer pour un fichier d’un autre type (exemple : image ou PDF) lorsque l’affichage des extensions de fichiers n’est pas activée. Pour les utilisateurs qui savent que”.exe = pas bien“, il peut être intéressant d’activer l’affichage des extensions de fichier. Ainsi, il ne sera plus possible de confondre deux types de fichier, et ainsi exécuter sans le vouloir un code malveillant.

Pour activer l’affichage des extensions de fichier sous Windows :

  1. Ouvrez une fenêtre d’explorateur.
  2. Ouvrez l’onglet Affichage.
  3. Cliquez sur Options.
  4. Dans la boite de dialogue qui s’affiche, ouvrez l’onglet Affichage.
  5. Dans la liste Paramètres avancés, décochez la case Masquer les extensions des fichiers dont le type est connu.
  6. Validez par OK.

A noter qu’il est également possible de gérer ce paramétrage directement dans les GPO pour les systèmes d’information d’entreprise disposant d’un Active Directory.

C’est tout pour cet article, n’hésitez pas à partager votre avis et vos conseils dans les commentaires !

Vous aimerez aussi...

4 réponses

  1. Complet, détaillé avec un exemple plus que concret, merci pour l’article !! Super instructif ! 😉

  2. Sangar dit :

    Merci pour le tutoriel:)
    Simple et efficace!!

  3. elo dit :

    Heu, ça sent le réchauffé, j’utilisais ça y’a 15 ans !

  4. Un executable modifé avec ResHacker sera détécté apr un anti-virus! Normalement…

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *