Question:
Comment est-il possible d'incorporer du code exécutable dans une image
Jeremy Thompson
2015-02-15 11:58:01 UTC
view on stackexchange narkive permalink

Je lisais sur FireEye et suis tombé sur cet article de NYTimes détaillant un chat Skype où une image a été envoyée chargée de logiciels malveillants :

Citation:

Pour accéder aux informations sur les appareils ..., des pirates se faisant passer pour des femmes sur Skype, ont identifié les types d'appareils que les cibles utilisaient et ont envoyé des photos chargées avec des logiciels malveillants.

La deuxième photo était un logiciel malveillant particulièrement puissant qui copiait les fichiers de l'ordinateur cible

Je sais que des données exif et des en-têtes IPTC existent dans les images et je suis à peu près sûr que vous pouvez insérer des informations supplémentaires dans un fichier image en utilisant les informations d'en-tête FileMagic mimetype, mais comment est-il possible d'incorporer du code exécutable dans une image?

Le format du fichier image était pif donc à moins que l'ordinateur n'ait une application qui ouvre le fichier et montre une image tout en exécutant secrètement du code, je ne vois pas comment c'est possible.

Voici un lien vers une image d'un chaton mignon qui contient du code PHP exécutable: http://nullcandy.com/php-image-upload-security-how-not-to-do-it/ (il est sûr d'ouvrir le page, du moins pour autant que je sache.)
Le code des images s'exécute-t-il sur le serveur? Ou si je le télécharge côté client et que je l'ouvre dans Photoshop / mspaint / etc, cela fera-t-il quelque chose?
C'est un exemple de la façon dont un serveur peut être compromis par un téléchargement d'image, et donc pas une réponse directe à votre question. (C'est pourquoi je l'ai fait un commentaire.) Le code est inoffensif, une preuve de concept et non un code malveillant. Si vous souhaitez explorer, capturez l'image du chaton et ouvrez-la avec Textpad ou similaire.
Cool c'est ce que j'ai pensé et c'est pourquoi j'implémente une protection de sécurité comme celle-ci: http://stackoverflow.com/a/15595571 - examinera cette image plus loin sur le côté. Merci beaucoup pour le partage
Découvrez le projet corkami, pas exactement ce que vous recherchez, mais il fait des recherches sur les formats de fichiers et comment intégrer l'un dans l'autre. https://code.google.com/p/corkami/
Sept réponses:
Mints97
2015-02-18 19:36:58 UTC
view on stackexchange narkive permalink

La réponse est simple. Ce n'était pas une photo. Et .pif n'est pas un format d'image. Comptez sur NYTimes pour fournir des informations techniques correctes.

Comme l'indique le journal de l'article de NYTimes, et comme le rapport réel de FireEye le confirme, le fichier utilisé était un fichier .pif. C'est l'une des extensions de fichiers exécutables de Windows les moins connues.

.pif est hérité de MS-DOS, comme .com. Il est destiné à être un "fichier d'informations sur le programme" (d'où le nom), stockant un raccourci vers un programme (DOS) ainsi que diverses informations au système sur la façon de le traiter. Même aujourd'hui, Windows donne aux fichiers .pif une icône de type raccourci.

Ce qui est drôle, c'est qu'aujourd'hui, Windows ne se soucie pas vraiment de savoir si le .pif n'est vraiment qu'un fichier d'informations de programme. Essayez-le: renommez n'importe quel fichier .exe en .pif et exécutez-le. Il peut y avoir une différence comme l'icône ne s'affiche pas, mais c'est tout. C'est ce que vous procure le traitement uniforme des fichiers de différents formats. Merci, Microsoft!

Pourquoi cela se produit-il? Réponse courte: Parce que Windows . Réponse plus longue: Windows exécute un .pif via ShellExecute , qui devrait techniquement trouver un programme approprié pour ouvrir un fichier, puis l'utiliser pour l'ouvrir. Avec les fichiers .pif, il vérifie d'abord s'il s'agit vraiment d'un fichier qui pointe vers un exécutable MS-DOS. S'il n'est pas conforme au format de fichier .pif, ShellExecute vérifie s'il contient du code exécutable. Si c'est le cas, il est exécuté comme s'il s'agissait d'un .exe. Pourquoi? Parce que Windows!

Qu'ont fait les hackers géniaux effrayants ? Ces gars-là n'ont rien pris de compliqué: ils ont créé une archive SFXRAR auto-extractible et exécutable à partir d'un programme d'installation de virus et d'un programme (probablement juste un .bat) ouvrant l'image d'une fille qu'ils ont trouvée sur Internet, renommé cet engin diabolique en fichier .pif et l'envoya au malheureux combattant de la liberté.

Pourquoi ont-ils utilisé .pif? Pour deux raisons, évidemment:

  1. Peu de gens savent qu'il peut fonctionner comme un fichier exécutable ( merci, Microsoft! )

  2. Cela ressemble évidemment à .gif ou .tiff ou .pdf ou quelque chose de très image-y . Même vous ne doutiez pas de son nom qu'il s'agissait d'un format d'image, n'est-ce pas, OP? ;)

Concernant votre question actuelle ("comment est-il possible d'incorporer du code exécutable dans une image"). Oui, il est possible d'exécuter du code via une image spécialement conçue à condition qu'elle soit ouverte dans un programme vulnérable. Cela peut être fait en exploitant une attaque comme un débordement de tampon . Mais ces hackers spécifiques n'étaient probablement pas assez intelligents pour cela.

Modifier

Note intéressante: ces gars-là ont en fait utilisé DarkComet, qui a la capacité de générer exécutables compressés avec différentes extensions, .pif étant dans leur liste. Je ne suis pas sûr d'afficher une image, mais cela pourrait être une fonctionnalité ajoutée dans une version plus récente.

Autre modification

Je vois que vous êtes demander comment se protéger contre cette " vulnérabilité " spécifique. La réponse est simple.

Tout d'abord, assurez-vous que Windows vous montre les extensions de fichier . Windows les cache principalement par défaut ( merci, Microsoft! )

Ensuite, apprenez ceci par cœur: .exe .com .cmd .bat .pif .vb .vba. vbs .msi .reg .ws .wsc .wsf .cpl .lnk . Ce sont les types de fichiers les plus connus qui peuvent facilement exécuter du code potentiellement malveillant ou endommager votre ordinateur s'ils sont ouverts, que des applications vulnérables soient installées ou non. Si quelqu'un vous envoie un tel fichier en disant que c'est l'image d'une jolie fille, vous pouvez être sûr que c'est un autre hacker discret comme ces gars syriens.

Une autre option est simplement d'être pro-actif et de vérifier et de doubler -Vérifier tout fichier téléchargé avec un format de fichier inconnu. Il peut s'agir de logiciels malveillants, vous savez.

Quant aux images réelles avec des exploits ... vous pourriez probablement essayer de garder votre logiciel à jour.

Nous ne voyons pas beaucoup de comédie (ou de créativité) sur les sites Stackexchange et votre réponse m'a fait rire. Merci pour cette excellente réponse. Je ne sais pas si vous avez vu cela dans ma conversation avec Bob, mais j'utilise [l'analyse binaire pour détecter le format de fichier REAL] (http://stackoverflow.com/a/15595571) et j'établis des types mime et je ne compte pas sur les extensions de fichier.
@JeremyThompson: c'est une mesure de sécurité stellaire, si elle peut identifier correctement tous les formats de fichiers. Aussi, merci pour le compliment! ;)
La meilleure réponse de OF sera facilement obtenue. À travers, correct et hilarant. :)
Les extensions de fichiers exécutables «.vb» et «.vba» sont-elles?Ne doivent-ils pas d'abord subir une sorte de compilation?
Vous avez oublié «.scr».Le format de fichier de l'économiseur d'écran est fondamentalement juste un «.exe» mais avec une extension différente.
Shelvacu
2015-02-15 14:35:55 UTC
view on stackexchange narkive permalink

Rien n'est parfait, et un type courant de bogue est un débordement de tampon, où en bref les données sont copiées là où elles ne devraient pas être, et dans certains cas, cela peut conduire à l'exécution de code arbitraire.

Par exemple ici est un bogue dans les anciennes versions de Microsoft dans lequel si vous visualisez une certaine image avec IE, du code arbitraire pourrait être exécuté.

Notez que c'est très spécifique à l'implémentation , donc ouvrir la même image dans Firefox ou Chrome entraînerait simplement une image cassée, mais aucune exécution de code.

Débordement de la mémoire tampon en termes simples

Détails techniques relatifs au débordement de la mémoire tampon

Ok, c'est ce que je recherche - j'aurais probablement dû prendre en compte l'exploitation des bogues. Si personne d'autre ne propose de meilleure réponse dans les semaines à venir, je l'accepterai. Merci
IronManMark20
2015-02-24 07:10:11 UTC
view on stackexchange narkive permalink

La réponse de Mints97 est excellente, mais je pense qu'il y a peut-être plus que cela. Un problème particulièrement merveilleux (lire: terrible) avec Windows est qu'il prend en charge le jeu de caractères Unicode complet dans les noms de fichiers, y compris (et c'est le pire), U-202E.

Bien que je sois sûr qu'il a de bonnes utilisations inoffensives, il peut permettre aux gens de changer de manière malveillante le nom de fichier d'une manière difficile à remarquer pour l'utilisateur moyen. Ceci est parfaitement documenté dans cet article de howtogeek.com.

Essentiellement, le pirate informatique peut mettre U-202E dans un nom de fichier et changer nom de fichier par gnp.tab à nom de fichier par bat.png . Le caractère inverse l'ordre de tout le nom après lui-même. Tout ce que l'attaquant doit faire est de choisir le type de fichier correct qui s'exécute, et Windows l'associera au nom de l'exécutable.

C'est plus difficile à protéger que vous ne le pensez. La meilleure défense serait d'analyser les noms des fichiers pour cela. La commande CMD dir semble signaler un ? pour ce caractère Unicode. Python, et je suis sûr que d'autres langages, peuvent obtenir le nom Unicode, donc un script ou un programme quelconque pourrait éviter ce problème.

De loin, la solution la plus simple est de regarder également les quatre lettres avant un l'extension de fichier et assurez-vous que l'inverse n'est pas un nom d'exécutable. (Je pense qu'il y a des noms d'exécutables à quatre lettres, mais je ne suis pas sûr).

Attention!

EDIT: J'ai fait un script python télécharger ici qui lit les noms de fichiers dans un répertoire pour U-202E. Il vous indique si a) le nom réel et b) l'extension. Il devrait prendre en charge le travail avec plusieurs fichiers et plusieurs U-202E en un seul nom.

Encore une autre raison pour [utiliser l'analyse binaire pour détecter le format de fichier REAL et établir des types mime et ne pas compter sur les extensions de fichier] (http://stackoverflow.com/questions/15300567/alternative-to-findmimefromdata-method-in-urlmon -dll-one-which-has-more-mime-typ) - cela DEVRAIT être documenté quelque part, c'est une VRAIMENT mauvaise vunrabilité de sécurité! Merci pour le partage!!
En fait, voici une autre technique dans ma boîte à outils que je peux utiliser pour détecter cela. Si vous regardez les propriétés du fichier renommé, il vous dira quel type de Windows utilisera pour ouvrir le fichier. Voici [code pour détecter toutes les propriétés d'un fichier] (http://stackoverflow.com/a/11660616/495455).
C'est en effet une astuce amusante.Ce n'est pas unique à Windows, btw.De nombreux gestionnaires de fichiers Linux affichent également le texte inversé, bien que «ls» et les autres représentations de ligne de commande ne soient pas affectés.
MoonPoint
2015-02-16 03:31:03 UTC
view on stackexchange narkive permalink

Vous avez écrit: "Le format du fichier image était pif", mais l'article indique que "les chercheurs de FireEye ont trouvé une collection de discussions et de documents tout en recherchant des logiciels malveillants cachés dans des documents PDF." Le format fichier d’informations sur le programme était utilisé sur les systèmes Microsoft Windows, bien que les fichiers dans ce format soient plus rares qu’auparavant. Il y avait des vulnérabilités associées aux fichiers PIF, par exemple, voir Microsoft Windows exécute automatiquement le code spécifié dans les fichiers de raccourcis, mais l'article du New York Times mentionne les documents PDF.

Les images peuvent être stockées dans des documents PDF et une personne qui ouvre un document PDF peut se rendre vulnérable aux exploits en utilisant des fichiers PDF. Dans ce cas, le problème est peu probable créé par l'image, mais plutôt par le conteneur, c'est-à-dire le fichier PDF, dans lequel il a été transmis. Pour certaines vulnérabilités PDF, voir Menaces actuelles PDF et La montée de l'exploitation des anciennes vulnérabilités PDF. Par exemple, cette dernière référence mentionne une vulnérabilité associée à JavaScript dans un fichier PDF en notant "Le JavaScript intégré peut contenir des instructions malveillantes, telles que des commandes pour télécharger et installer d'autres logiciels malveillants."

Voir le lien ny times, l'extrait de la conversation, c'est de là que j'ai eu pif .. Envoyer une photo au format PDF serait un peu bizarre mais merci pour cette réponse
Le destinataire était probablement tellement excité d'obtenir une photo d'une jolie fille qu'il n'a même pas considéré le format dans lequel elle est arrivée.
L'autre jour, je codais un assistant d'action dans Distiller (pour la première fois, en utilisant ce qui ressemblait à du Javascript). Hmmm, cela semblait être une faiblesse en ce sens qu'il exécutait * javascript * côté client dans un fichier - pas un WebBrowser et était mûr pour être exploité !!). Avec les recherches que vous avez effectuées, je me penche vers cette réponse. Je vais attendre un peu plus longtemps pour voir si quelqu'un d'autre a des pensées. Pouvez-vous fournir des informations sur la façon dont un PIF lance une application MS Dos (comme une invite dos cmd, pour les futurs visiteurs)?
Bien que vous soyez peut-être sur l'argent et que tout était lié aux PDF et que l'astuce était le piratage social. Une jolie fille qui dit que je ne sais pas ce que je fais Je pense que c'est un fichier adobe (c'est-à-dire ** changer l'extension pif en pdf **).
ddyer
2015-02-20 02:42:59 UTC
view on stackexchange narkive permalink

Il y a quelques années, un exploit largement diffusé utilisait un bogue dans une bibliothèque jpeg particulière et largement distribuée. L'effet net de cet exploit était de permettre l'exécution de code arbitraire sur la machine des victimes, alors que nominalement tout ce qu'ils faisaient était d'essayer de voir une image.

De plus, par exemple, il y avait un exploit pour les fichiers de texte enrichi (rtf format) qui n'a pas nécessité de bogue, en utilisant uniquement une fonctionnalité peu connue du format rtf pour exécuter le code sur la machine des utilisateurs.

Un autre exemple est l'incorporation de macros dans des documents Word. Les macros sont une fonctionnalité incroyablement puissante et utile, mais lorsque vous pouvez donner à quelqu'un un document contenant les macros de votre choix, cela peut aussi être un outil de piratage puissant.

En général, il est vraiment tentant d'incorporer des fonctionnalités dans un fichier complexe formats qui leur confèrent des capacités équivalentes à la formation. Ce n'est pas non plus une bonne idée.

"bibliothèque jpeg largement distribuée"? Pourriez-vous s'il vous plaît élaborer, afin que seules les personnes disposant de la bibliothèque jpeg soient installées? Quelqu'un qui ouvre un jpeg enregistré avec cette bibliothèque? Sans références ni liens, il est difficile de quantifier cette réponse et de nos jours, vous devez activer les macros pour les exécuter dans les applications bureautiques.
C'était il y a des années et je n'ai pas les détails sous la main. Il y avait une précipitation pour remplacer une DLL Windows particulière.
Très probablement bon vieux libjpeg.C'est à peu près le seul décodeur JPEG disponible.
user283885
2015-02-18 21:48:32 UTC
view on stackexchange narkive permalink

Eh bien, vous commencez par analyser le format de fichier. Et puis prenez le temps de deviner comment différents logiciels vont réagir.

Par exemple, JPEG - http://en.wikipedia.org/wiki/JPEG - utilise des marqueurs spéciaux pour délimiter le début et la fin de l'image. Maintenant, on peut parier que les logiciels traitant du JPEG ne rechercheront que le début et la fin des marqueurs d'image et traceront tout le reste. Si l'un ou l'autre des marqueurs n'est pas trouvé, le jpeg est invalide, non? Maintenant, que faire si nous, après la fin du marqueur d'image, nous ajoutons une marque de fin de fichier, et après cela, nous ajoutons notre charge utile exécutable. Eh bien, je parie que la plupart des traceurs jpeg ignoreront simplement la charge utile et fonctionneront comme supposé. Succès à ce stade, nous avons joint une charge utile à l'image. Maintenant, pour le faire exécuter, eh bien, c'est un peu plus difficile. Nous pourrions demander à notre «logiciel» de rechercher des éléments après le balisage de fin d'image et, le cas échéant, de les ingérer, ou nous pourrions essayer d'injecter un en-tête ELF / EXE / COM avec un décalage pour le code avant le début du balisage d'image et espérer que le traçage le logiciel l'ignorera, mais le système d'exploitation ne le fera pas.

Le problème est qu'au départ, le système et les réseaux ont été construits avec l'idée fausse préformée que les gens sont honnêtes et se comportent comme des machines et ne briseront pas les modèles et n'utiliseront pas le logiciel à l'extérieur les cas prévus. Et à cause de cela, beaucoup d'hypothèses ont été faites. Ouais, l'utilisateur tapera au plus 200 caractères, oui, l'utilisateur tapera toujours un format lisible et ainsi de suite. Quand vous pensez aux cas d'utilisation, en tant que programmeur, vous prenez l'habitude de penser que les cas sont absolus et ne se gardent pas d'exceptions. Devinez ce qui se passe quand quelqu'un qui pense hors de la boîte arrive.

Damian Nikodem
2015-02-18 23:35:30 UTC
view on stackexchange narkive permalink

Je me souviens du bon vieux temps lorsque je visionnais ou chargeait un fichier .ico avec les API livrées avec Windows, utilisées pour permettre l'exécution directe de code si elles étaient conçues de manière assez malveillante.

Et tout le concept derrière le format de fichier wmf appelait directement les routines graphiques. (d'où la création du format bitmap indépendant du périphérique, aka fichiers .bmp)

Donc oui c'est possible, et cela a été fait dans le passé. bien que peu probable ces jours-ci. Je ne l'exclurais pas complètement, mais je dirais que cela nécessiterait un attaquant extrêmement compétent pour le réussir.



Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...