Question:
Comment afficher en toute sécurité un PDF malveillant?
user11101
2012-08-19 22:02:53 UTC
view on stackexchange narkive permalink

J'ai un PDF contenant des informations importantes qui peuvent contenir des logiciels malveillants. Quelle serait la meilleure façon de l'afficher?

Est-ce du genre JS? Je pense que vous pouvez désactiver JS.
La chose que je ferais est de l'ouvrir dans une machine virtuelle sans accès au réseau.
Il peut y avoir ici une question de savoir si l'analyse statique ou dynamique est la plus efficace.
Si un PDF contient un logiciel malveillant, il ne doit plus être affiché. Outre le contenu non malveillant, il n'existe probablement même pas. Vous pouvez également ouvrir le fichier PDF dans une machine virtuelle Linux, mais comme je l'ai dit, le contenu a probablement disparu.
@curiousguy - ok. Je ne sais pas ça. Pourquoi quelqu'un a-t-il un code JS légal dans un PDF OU que fait-il qu'un PDF non-JS ne peut pas?
Ouvrez-le ... mais pas dans une ancienne version d'Adobe Reader, etc. qui a des vulnérabilités connues.Le moyen le plus sûr est d'utiliser une machine virtuelle, mais cela ne signifie pas que lorsque vous ne trouvez rien et que vous l'ouvrez sur votre machine normale, il est sûr.
Onze réponses:
tylerl
2012-08-19 22:45:56 UTC
view on stackexchange narkive permalink

Les exploits basés sur des documents ne sont pas dirigés contre le document lui-même, mais plutôt contre une vulnérabilité dans le visualiseur. Si vous affichez le document dans un programme qui n'est pas vulnérable (ou dans une configuration qui inhibe la vulnérabilité), alors vous ne serez pas exploité.

Le vrai problème est de savoir si votre visionneuse est ou non vulnérable, ce qui signifie généralement savoir précisément ce qu'est l'exploit. Mais il existe des visionneuses PDF alternatives telles que foxit ou même la visionneuse intégrée de Google Chrome qui ne présentent pas nécessairement les mêmes vulnérabilités que la visionneuse officielle d'Adobe. Ce n'est pas nécessairement vrai pour toutes les vulnérabilités, il est donc important de comprendre à l'avance ce à quoi vous vous engagez.

MODIFIER
Si vous avez fréquemment affaire à des matériaux potentiellement malveillants, il serait très judicieux de mettre en place un environnement virtuel renforcé. Je recommanderais de démarrer dans un système Linux et d'exécuter votre système d'exploitation cible (généralement Windows) dans Virtualbox ou un environnement similaire. Enregistrez un instantané du système d'exploitation virtuel, puis revenez à cet instantané une fois que vous avez terminé d'interagir avec le contenu malveillant. De plus, ce n'est pas une mauvaise idée d'exécuter l'environnement Linux hôte à partir d'une installation en lecture seule (c'est-à-dire Live-CD).

La principale vulnérabilité d'Adobe (que je n'utilise pas) consiste à utiliser javascript pour appeler une API non sécurisée non documentée qui exécute le shellcode. J'ai utilisé l'origami pour déchiffrer et décompresser et pdfid pour vérifier s'il a des déclencheurs javascript (ce qui n'est pas le cas) ... mais je suppose que cela n'a même pas d'importance pour quiconque n'utilise pas Adobe Viewer.
Une configuration raisonnablement simple serait une VM + [Sandboxie] (http://www.sandboxie.com/) + [DigiSigner] (http://en.wikipedia.org/wiki/DigiSigner)
Je n'utilise ni foxit ni adobe. J'utilise un lecteur obscur. Récemment, il s'est écrasé lorsque j'ai ouvert un fichier pdf. Cela peut-il être une attaque de malware? Comment vérifier?
Remarque à propos de la modification - la plupart des systèmes Linux modernes ont plusieurs visionneuses PDF natives disponibles (y compris une ancienne version d'Adobe Reader, généralement vous n'avez pas besoin de vous en soucier - je suggère d'utiliser Okular, et la plupart des versions de evince et mupdf fonctionnent très bien comme eh bien), vous n'avez pas besoin d'utiliser une machine virtuelle Windows ...
@FirstNameLastName se lasser d'utiliser des produits moins connus pour éviter l'infection.1: le produit peut utiliser une bibliothèque commune et sans le savoir être activement exploitable et 2: il peut ne pas être corrigé aussi souvent ou aussi rapidement que des produits plus courants.La VM renforcée est vraiment le seul moyen d'être sûr.
B-Con
2012-08-20 01:22:45 UTC
view on stackexchange narkive permalink

Mettez-le dans un visualiseur PDF qui n'est pas vulnérable à l'exploit. Si c'est le spectateur de quelqu'un d'autre, c'est encore plus sûr. Essayez Google Docs, où ils l'analyseront et l'afficheront au format HTML, afin que la charge malveillante ne vous nuise pas. (Je suis sûr que leur analyseur PDF est extrêmement sécurisé, vous ne devriez donc pas vous sentir mal à l'idée de les infecter.)

Je ne veux pas donner les informations du PDF à Google mais merci.
L'utilisation de Google Docs est un bon conseil, mais «Passer par une visionneuse PDF qui n'est pas vulnérable à l'exploit» me semble étrange.Habituellement, vous ne savez pas si un spectateur particulier est vulnérable jusqu'à ce qu'il soit trop tard.
@DmitryGrigoryev si l'exploit dépend de javascript comme presque tous le font, alors un visualiseur qui ne prend pas en charge le javascript rend cet exploit impossible.Un exploit qui dépend des pièces jointes est rendu impossible par un visualiseur qui ne prend pas en charge les pièces jointes.Un exploit qui dépend de la récupération de données à partir d'une URL ne peut pas fonctionner si le visualiseur ne prend pas en charge la récupération de données à partir d'une URL.Et ainsi de suite.
@barbecue Si éviter "presque tous" les exploits est suffisant, alors il faut absolument s'en tenir à une visionneuse PDF sans support JS.
@DmitryGrigoryev Je ne suis pas sûr de votre argument.Un exploit spécifiquement ciblé pour travailler avec Sumatra est possible, comme je l'ai indiqué dans ma réponse.Sa probabilité est extrêmement faible.Si vous prétendez qu'il existe un moyen d'éliminer 100% de tous les exploits, vous avez tout simplement tort.Aucune méthode de ce type n'existe.
@barbecue "Si vous prétendez qu'il existe un moyen d'éliminer 100% de tous les exploits, vous avez tout simplement tort."- Je ne prétends pas ça, c'est B-Con qui suggère de "le mettre dans un visualiseur PDF qui n'est pas vulnérable à l'exploit".De plus, si vous n'êtes pas sûr de mon point de vue, vous pouvez simplement laisser B-Con répondre.
@barbecue: L'expression «n'est pas vulnérable à l'exploit» est un terme occasionnel et le contexte de la question est important.Malgré le fait qu'il n'existe pas de méthodes à 100% infaillibles pour contrer les logiciels malveillants, dans la pratique, nous trouvons des moyens de contourner les logiciels malveillants.Je recommande au PO d'analyser la menace perçue et de la faire passer par un analyseur PDF qui ne sera probablement pas vulnérable.Un analyseur de PDF tiers transfère la majorité du risque à un tiers et le risque de cette partie est probablement faible car il a probablement conçu pour traiter les cas de logiciels malveillants.
@B-Con Je pense que nous sommes entièrement d'accord.Presque tous les exploits PDF dépendent de l'exécution de scripts malveillants.En éliminant complètement la possibilité d'exécuter des scripts, vous êtes immunisé contre tous ces exploits, ce qui est la majorité.
ysdx
2012-08-24 13:36:48 UTC
view on stackexchange narkive permalink

Utilisez pdf.js avec un navigateur en bac à sable (tel que Chromium) dans une machine virtuelle sans accès au réseau.

Il devrait être assez difficile pour un malware de sortir de ceci.

Luke Sheppard
2012-08-20 10:04:33 UTC
view on stackexchange narkive permalink

Dans cette situation, j'ai toujours utilisé la commande shell Unix / Linux / OSX "strings". Sur les systèmes * nix, procédez comme suit:

  strings ScaryFile.pdf | less  

Vous pouvez également obtenir des "chaînes" pour Windows, comme mentionné par Polynomial, ci-dessous. Vous pouvez le télécharger ici. Fonctionne sur XP ou supérieur. Voici un exemple de son utilisation sous Windows:

  strings ScaryFile | findstr / i TextToSearchFor  

Mais pour le reste de ma réponse, je suppose que vous êtes sur * nix, puisque c'est mon expérience avec les chaînes. En supposant que tout ce que vous recherchez est du contenu textuel (pas des bitmaps ou des graphiques vectoriels), vous pouvez faire défiler vers le bas ou rechercher et trouver des morceaux du texte dont vous avez besoin. Malheureusement, pour le trouver, vous devez parcourir des tonnes de métadonnées, dont la plupart sont en XML, et des paramètres de formatage dans un autre balisage, ainsi que des binaires (comme ascii, pas des octets bruts). Vous pouvez donc utiliser les capacités de recherche de la commande "less". Pour rechercher dans le document la chaîne sensible à la casse "thingyouwant", utilisez la touche barre oblique + votre chaîne + retour:

  / thingyouwant  

Puis appuyez sur la touche "n" pour voir la prochaine instance de "thingyouwant", encore et encore jusqu'à ce que vous trouviez ce que vous voulez. Vous pouvez utiliser le "?" clé pour faire la même chose vers le haut. Voir la page de manuel less (tapez "man less") pour plus de magie.

Vous pouvez également analyser des choses comme les URL vers lesquelles le document renvoie:

  strings ScaryFile.pdf | grep -i "http" | trier | uniq | moins  

Mais, comme indiqué ci-dessus, 99% de ce que vous verrez à partir de la sortie des "chaînes" va être des métadonnées et des paramètres de formatage.

[Windows a également des chaînes] (http://technet.microsoft.com/en-us/sysinternals/bb897439.aspx).
+1 pour les chaînes (1) et pdfinfo avec un suivi dans evince. La recherche de JS dans le fichier et les appels à des ressources externes sont assez efficaces même si elles sont un peu lentes.
Vous ne devriez pas vous fier aux chaînes pour la sécurité: http://lcamtuf.blogspot.ca/2014/10/psa-dont-run-strings-on-untrusted-files.html?m=1
user65388
2012-08-20 11:47:12 UTC
view on stackexchange narkive permalink

Utilisez une machine virtuelle qui peut être rétablie pour nettoyer après les tests. Si le lecteur PDF est vulnérable, votre véritable poste de travail sera beaucoup moins susceptible d'être affecté.

barbecue
2017-02-19 01:53:02 UTC
view on stackexchange narkive permalink

Une manière simple et directe d'ouvrir des fichiers PDF potentiellement malveillants sur un ordinateur Windows consiste à utiliser le visualiseur PDF Sumatra. Sumatra est une petite visionneuse de PDF légère qui ne prend pas en charge les formulaires interactifs remplissables ou le javascript dans les fichiers PDF.

Sumatra a également des options de configuration pour le verrouiller encore plus, comme empêcher le système de fichiers ou l'accès à Internet.

Le format de fichier PDF a de nombreuses fonctionnalités interactives destiné à rendre le format plus utile, mais qui créent des risques de sécurité importants, notamment: - L'utilisation de javascript pour fournir un contenu interactif, qui permet l'automatisation de l'interface utilisateur - La possibilité d'interagir avec le système de fichiers local - la possibilité d'émettre une requête HTTP vers un serveur distant - la capacité de transporter une charge utile de pièces jointes arbitraires, y compris des logiciels malveillants - le capacité à présenter un formulaire à remplir à l'utilisateur, puis à capturer et à agir sur les informations renseignées Ces capacités combinées constituent une boîte à outils puissante pour un attaquant. De nombreuses attaques dites de "téléchargement au lecteur" reposent sur l'utilisation de fichiers PDF.

Les lecteurs PDF courants tentent de sécuriser ces fonctionnalités en créant des environnements sandbox ou en donnant des invites à l'utilisateur, mais ces solutions sont à la fois plus complexes (et donc soumis à leurs propres vulnérabilités) et moins compatibles avec les produits d'autres parties que la solution plus simple consistant simplement à omettre complètement cette fonctionnalité.

Sumatra est un exemple de visionneuse PDF qui ne fournit pas la plupart des fonctions les plus couramment utilisées dans les exploits PDF. En éliminant complètement des catégories entières d'attaques potentielles, ces programmes réduisent considérablement le risque de visualiser des fichiers PDF inconnus.

Un autre avantage de l'utilisation d'un lecteur moins populaire est que, comme il est à la fois moins courant et moins puissant, c'est une cible moins intéressante.

Le visualiseur de Sumatra pourrait éventuellement être exploité par un PDF spécialement conçu qui profite d'un bogue inconnu pour provoquer un débordement de tampon, par exemple. De tels cas sont cependant rares et il n'y a pas eu d'exploits de sécurité importants à Sumatra ces dernières années.

Qu'est-ce qui vous fait penser que Sumatra est plus sûr que n'importe lequel des 1001 autres lecteurs PDF?
@DmitryGrigoryev Mes raisons de penser cela sont clairement énoncées dans ma réponse.Je recommande de relire le premier paragraphe et de regarder le lien dans le deuxième paragraphe.Vous y trouverez vos réponses.
Il n'y a pas besoin d'être impoli.J'ai lu votre réponse dans son intégralité, mais je ne vois pas ce qui rend Sumatra si spécial.Il existe de nombreux lecteurs PDF qui ne prennent pas en charge JS ou laissent l'utilisateur le désactiver.
Dmitry Grigoryev
2017-06-21 15:26:22 UTC
view on stackexchange narkive permalink

Les dernières versions d'Adobe Reader (version 10.1 et plus) prennent en charge le "Mode protégé" ou le sandboxing qui peut être utilisé pour afficher des fichiers PDF non approuvés. Cela restreint effectivement l'accès du processus affichant le fichier PDF à % appdata% \ Adobe \ Acrobat et à d'autres PDF qui sont explicitement ouverts par l'utilisateur.

Le mode protégé doit être activé en allant dans le menu Edition-> Préférences et en sélectionnant l'onglet Général ou Sécurité, selon la version:

enter image description here

De toute évidence, vous ' Je souhaite fermer tous les fichiers PDF sensibles comme vos relevés bancaires avant d'ouvrir le fichier non fiable.

Qu'est-ce qui est considéré comme un «endroit dangereux»?Par exemple, cela se déclencherait-il si vous ouvrez un document à partir d'une clé USB?
@Jean-FrancoisT.Je n'utilise plus Acrobat, mais pour autant que je me souvienne, oui, les clés USB sont considérées comme des emplacements dangereux.Les emplacements approuvés sont vos lecteurs locaux, à l'exclusion des dossiers problématiques tels que «Téléchargements» et «Temp», tout le reste n'est pas approuvé.
d3t0n4t0r
2012-10-04 03:44:31 UTC
view on stackexchange narkive permalink

Nous pouvons dire que TOUTES les attaques sauvages ou ciblées utilisant un fichier PDF malveillant sont couvertes par des techniques d'obfuscation pour durcir le processus d'analyse ou de détection.

La plupart des techniques d'obfuscation utilisent principalement JavaScript obfuscation comme eval (), String.fromCharCode (), arguments.callee (), base64, et même avec des valeurs de clé PDF telles que / Author, / Keywords, / CreationDate et etc.

Nous pourrions ne pas pouvoir afficher le contenu du fichier PDF malveillant (ceux du flux d'objets PDF) car il pourrait être dégonflé couramment avec FlateDecode. Mais il existe des outils disponibles pour nous permettre de gonfler le contenu dans le flux d'objets PDF, tels que pdf-parser (http://blog.didierstevens.com/programs/pdf-tools/) et FileInsight (http: // www. mcafee.com/us/downloads/free-tools/fileinsight.aspx). La plupart du code JavaScript obscurci se trouvera dans le flux PDF gonflé.

Nous pouvons vous conseiller d'obtenir la dernière version corrigée du lecteur PDF avec la fonctionnalité JavaScript désactivée pour ouvrir le fichier, mais la bonne solution est pour obtenir une machine virtuelle où vous pouvez la supprimer ou rétablir l'instantané après avoir ouvert le fichier.

Lee
2017-02-15 17:24:10 UTC
view on stackexchange narkive permalink

Une autre option simple et moins longue consiste à l'ouvrir dans l'application Sandboxie, ce qui l'isolerait.

Étant donné que cette réponse a été écrite en 2017, je me demande pourquoi vous préconisez d'utiliser Sandboxie au lieu du [sandbox] (https://security.stackexchange.com/a/162444/71607) intégré à Adobe Reader.
Valer
2017-03-08 17:00:28 UTC
view on stackexchange narkive permalink

Vous pouvez ouvrir le PDF dans un conteneur. Voici une image de docker que vous pouvez utiliser: https://hub.docker.com/r/chrisdaish/acroread/

  MY_PDF_DIR = '/ tmp / foobar'docker tirez chrisdaish / acroreaddocker run -v $ MY_PDF_DIR: / home / acroread / Documents: rw \ -v /tmp/.X11-unix:/tmp/.X11-unix \ -e uid = $ (id -u) \ -e gid = $ (id -g) \ -e DISPLAY = unix $ DISPLAY \ --name acroread \ chrisdaish / acroread  

Cela ouvrira un Acrobat Reader qui s'affichera via le serveur X local .

L'approche réduit la surface d'attaque, mais n'est pas sûre à 100% car elle a accès à votre serveur X.

filo
2016-03-18 16:52:35 UTC
view on stackexchange narkive permalink

Vous pouvez utiliser une combinaison visionneuse / système d'exploitation moins populaire. Je suppose que personne ne cible Okular fonctionnant sur FreeBSD (bien qu'il puisse toujours être vulnérable), donc si vous ouvrez le fichier dans une VM, vous devriez être très en sécurité.

Pour nuire, la charge utile non autorisée doit correspondre la version de la visionneuse et l'OS et l'architecture CPU bien sûr. C'est vraiment un assemblage et une mémoire de bas niveau (la charge utile s'attend à être placée à une adresse mémoire particulière et s'attend à ce que certaines fonctions système standard soient disponibles). Si vous modifiez l'un de ceux-ci, la charge utile risque de ne pas s'exécuter correctement (ou le spectateur risque simplement de planter sans nuire).



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...