web-dev-qa-db-fra.com

Quelle est la façon la plus sûre de gérer les charges de fichiers PDF PDF entrants, dont certains pourraient être malveillants?

En tant que journaliste d'investigation, je reçois chaque jour des dizaines de messages, dont beaucoup contiennent des documents PDF. Mais je m'inquiète des conséquences potentiellement malveillantes de leur ouverture aveugle et de la compromission de mon ordinateur). Dans le passé, avant de commencer à travailler dans le journalisme d'investigation, j'utilisais virustotal.com pour analyser tous les fichiers (y compris les PDF) qui arrivent dans ma boîte de réception, mais ce n'est pas possible dans ce cas car les fichiers leur seront envoyés lorsqu'ils sont censés être confidentiels avant leur publication. Et j'ai entendu dire que les solutions antivirus ne sont pas à 100% infaillibles.

Quelle est la façon la plus sûre de gérer les charges de fichiers PDF PDF entrants, dont certains pourraient être malveillants?

161
Tom the journalist

Je pense que l'option la plus sûre pour vous serait d'utiliser Qubes OS avec son intégré DisposableVM la fonctionnalité de s, et son outil " Convertir en PDF de confiance ".

Qu'est-ce que Qubes OS?

Qubes est un système d'exploitation où tout est basé sur des machines virtuelles. Vous pouvez y penser comme si vous aviez différents "ordinateurs" isolés à l'intérieur du vôtre. De cette façon, vous pouvez compartimenter votre vie numérique dans différents domaines, de sorte que vous puissiez avoir un `` ordinateur '' où vous ne faites que des choses liées au travail, un autre `` ordinateur '' hors ligne et où vous stockez votre base de données de mots de passe et vos clés PGP, et un autre 'ordinateur' spécialement dédié à la navigation non fiable ... Les possibilités sont innombrables, et la seule limite est votre RAM et essentiellement combien d'ordinateurs différents peuvent être chargés à la fois. Pour assurez-vous que tous ces "ordinateurs" sont correctement isolés les uns des autres et qu'ils ne peuvent pas se briser sur votre hôte (appelé " dom0" pour le domaine 0) et contrôler ainsi l'ensemble de votre machine, Qubes utilise hyperviseur Xen ,[1] qui est le même logiciel qui est tilisé par de nombreux fournisseurs d'hébergement pour isoler les sites Web et les services les uns des autres tels que Amazon EC2, IBM, Linode ... Une autre chose intéressante est que chacun des vos "ordinateurs" ont une couleur spéciale qui se reflète dans les bordures des fenêtres. Vous pouvez donc choisir le rouge pour "l’ordinateur" non fiable et le bleu pour votre "ordinateur" de travail (voir par exemple l’image ci-dessous). Ainsi, en pratique, il devient vraiment facile de voir dans quel domaine vous travaillez. Disons maintenant que certains logiciels malveillants malveillants pénètrent dans votre machine virtuelle non approuvée, alors ils ne peuvent pas casser et infecter d'autres machines virtuelles qui peuvent contenir des informations sensibles, sauf s'il a un exploit qui peut utiliser une vulnérabilité dans Xen pour pénétrer dans dom0 (ce qui est très rare), ce qui élève considérablement la barre de sécurité (avant de devoir simplement déployer des logiciels malveillants sur votre machine avant de tout contrôler), et il vous protégera de la plupart des attaquants, à l'exception des plus dotés en ressources. et sophistiqués.

Que sont les machines virtuelles jetables?

L'autre réponse mentionne que vous pouvez utiliser un ordinateur portable graveur. Une machine virtuelle jetable est un peu la même, sauf que vous n'êtes pas lié par des contraintes physiques: vous avez une infinité de machines virtuelles jetables à votre guise. Tout ce qu'il faut pour en créer un est un clic, et une fois que vous avez terminé, la machine virtuelle est détruite. Assez cool, hein? Qubes est livré avec une extension Thunderbird qui vous permet d'ouvrir des pièces jointes dans des machines virtuelles jetables, ce qui peut être assez utile pour vos besoins.[2]

enter image description here

(Crédits: Micah Lee)

De quoi " Convertir en PDF de confiance " vous parliez?

Supposons que vous ayez trouvé un document intéressant, et disons que vous disposiez d'une machine virtuelle hors ligne spécialement dédiée au stockage et à l'ouverture de documents. Bien sûr, vous pouvez envoyer directement ce document à cette machine virtuelle, mais il pourrait toujours y avoir un risque que ce document soit malveillant et pourrait par exemple essayer de supprimer tous vos fichiers (un comportement que vous ne remarqueriez pas dans le court terme). Jetable VM). Mais vous pouvez également le convertir en ce que l'on appelle un "PDF de confiance". Vous envoyez le fichier à une autre machine virtuelle, puis vous ouvrez le gestionnaire de fichiers, accédez au répertoire du fichier, cliquez avec le bouton droit et choisissez "Convertir en PDF approuvé", puis renvoyez le fichier à VM où vous collectez vos documents. Mais que fait-il exactement? L'outil "Convertir en PDF de confiance" crée un nouveau jetableVM, y place le fichier, puis le transforme via un analyseur (qui s'exécute dans le jetableVM) qui prend essentiellement la valeur RVB de chaque pixel et laisse tout le reste. C'est un peu comme ouvrir le PDF dans un environnement isolé, puis le "capturer" si vous voulez. Le fichier devient évidemment beaucoup plus gros, si je me souviens qu'il s'est transformé lorsque j'ai testé un 10 Mo PDF en 400 Mo. Vous pouvez obtenir beaucoup plus de détails à ce sujet dans ce blogpost par le chercheur en sécurité et le créateur du système d'exploitation Qubes. Joanna Rutkowska.


[1]: L'équipe de Qubes OS s'efforce de permettre la prise en charge d'autres hyperviseurs (tels que KVM) afin que vous puissiez non seulement choisir différents systèmes à exécuter sur vos machines virtuelles, mais également l'hyperviseur même qui exécute ces machines virtuelles.
[2]: Vous devez également configurer une option pour que le DisposableVM-qui est généré une fois que vous cliquez sur "Ouvrir dans DispVM" -sera hors ligne, afin qu'ils ne puissent pas obtenir votre adresse IP. Pour ce faire: "Par défaut, si un VM jetable est créé (par Open in DispVM ou Run in DispVM) à partir d'un VM qui n'est pas connecté à la passerelle Tor, le nouveau DisposableVM peut acheminer son trafic sur clearnet. En effet, les DisposableVM héritent leurs NetVM de l'appel VM (ou la machine virtuelle appelante dispvm_netvm réglage si différent). Le dispvm_netvm le paramètre peut être configuré par VM par: dom0 → Qubes VM Manager → VM Settings → Advanced → NetVM for DispVM. "Vous devrez le définir sur none pour qu'il ne soit connecté à aucun réseau VM et n'aura aucun accès à Internet.
[3]: Edit: This answer mentionne Subgraph OS, heureusement quand un Subgraph template VM est créé pour Qubes vous pouvez l'utiliser avec Qubes, rendant ainsi les exploitations beaucoup plus difficiles, et grâce au sandbox intégré, il nécessiterait un autre exploit d'échappement de sandbox ainsi qu'un exploit Xen pour compromettre votre machine entière.

165
user139336

Le plus sûr serait probablement un brûleur. Prenez un ordinateur portable bon marché et un dongle Internet mobile, utilisez-le pour télécharger les documents et copiez manuellement à travers n'importe quel contenu sur votre ordinateur principal (littéralement, une nouvelle saisie serait plus sûre, si vous êtes particulièrement inquiet). Puisqu'il n'est pas sur votre réseau, il ne devrait pas être en mesure de causer des problèmes même s'il a été infecté, et vous seriez en mesure de l'effacer ou simplement de le jeter si vous avez un logiciel malveillant particulièrement malveillant qui vous est envoyé.

Si vous avez besoin du contenu réel des fichiers (par exemple des images intégrées), une option serait d'installer un pilote d'impression PDF sur votre périphérique de gravure et d'imprimer les fichiers PDF entrants en l'utilisant - cela va générer PDF sortie, mais, en théorie, juste les composants visuels. Les imprimantes n'ont généralement pas besoin d'éléments de script, elles peuvent donc être supprimées en toute sécurité. Gardez à l'esprit que certains pilotes d'imprimante PDF repèrent lorsque vous fournissez un PDF, et passez-le simplement sans modification - testez avant de vous y fier! Une fois que vous avez un PDF propre, renvoyez-le par e-mail et vérifiez avec un scanner de virus sur votre machine principale avant de l'ouvrir. Notez que cela n'élimine pas complètement la possibilité de propagation de logiciels malveillants, mais devrait minimiser les chances.

18
Matthew

J'essaie donc de m'en tenir à ces préoccupations au "pays du raisonnable". Avec chaque problème de sécurité, il y a un équilibre entre sécurité et sécurité. sûr. Par exemple, vous pouvez acheter un ordinateur portable, en lire un PDF chargé à partir du côté de la messagerie Web de votre fournisseur de messagerie, saisir à nouveau le contenu dont vous avez besoin sur un "ordinateur principal", puis détruire l'ordinateur portable en démarrant tout encore une fois avec un nouvel ordinateur portable. Ce serait assez sûr. Aussi coûteux, et une douleur géante.

Revenons donc à une approche "raisonnable".

Tout d'abord, utilisez Linux et un lecteur PDF PDF) à jour. Ce faisant, vous avez vraiment réduit votre exposition. Il n'y a pas autant de virus écrits pour Linux que pour Windows. Cela seul protégera les virus qui fonctionnent sous Linux sont plus compliqués à implémenter. Encore une fois, vous réduisez votre exposition.

Utilisez ensuite une machine virtuelle qui prend en charge la capture instantanée. L'idée est que vous configurez votre système d'exploitation Linux dans un hôte de machine virtuelle (comme VirtualBox), puis installez tout, "Instantané" de l'état.

Vous pouvez ensuite effectuer tout votre travail "risqué" à l'intérieur de la machine virtuelle. En utilisant les options d'isolement, je ne connais aucun virus qui puisse "s'échapper" de la machine virtuelle et accéder à la machine hôte (cela ne signifie pas qu'ils ne sont pas là, cela signifie simplement que c'est plus rare et plus compliqué pour l'attaquant ).

À la fin de la journée, ou à tout moment de la journée où vous pensez avoir contracté un virus, vous "restaurez" la machine sur l'instantané précédent. Toutes les modifications et données qui se sont produites après votre instantané sont annulées, y compris tout travail, virus, etc.

Pendant la journée, vous pouvez ouvrir un PDF, le numériser avec ClamAV (ou similaire), copier et coller ce dont vous avez besoin ou tout ce que vous devez faire avec les fichiers PDF, si longtemps) car votre machine virtuelle existe de manière isolée. Cela signifie que vous ne donnez pas accès à la machine virtuelle à la machine hôte. Vous utilisez quelque chose comme le courrier électronique pour transférer les fichiers. Peut-être FTP entre l'hôte et la machine virtuelle. Quelque chose, mais pas directement intégration. Pas de boîte de dépôt non plus. Quelque chose où si vous allez transférer le fichier, alors vous allez uniquement transférer ce fichier après être sûr que c'est sûr. Si vous utilisez un hôte Linux et un invité Linux alors scp est un excellent choix.

Cela vous donne un environnement jetable "assez sécurisé", pour vérifier vos PDF douteux, avec la possibilité de "réparer" les dommages qui peuvent survenir, sans avoir à changer vraiment grand-chose dans votre flux de travail.

Les hôtes et invités des machines virtuelles peuvent être presque tous les systèmes d'exploitation, y compris Windows. Gardez à l'esprit que si vous avez un invité Linux et un hôte Windows, la machine virtuelle Linux peut même ne pas être sensible à un virus qui se trouve dans le PDF qu'une machine Windows sera susceptible de subir. avec un scanner antivirus est important, quel que soit le combo OS utilisé.

12
coteyr

L'utilisation de CubeOS et de machines virtuelles jetables est une bonne approche.

Quelques autres options (qui peuvent être combinées avec celle de CubeOS/DisVM):

Désarmer le PDF

Vous pouvez utiliser ghostscript pour cela:

gs -dNOPAUSE -dBATCH -sDEVICE=tiffg4 \
  -dDownsampleMonoImages=false \
  -dDownsampleGrayImages=false \
  -dDownsampleColorImages=false \
  -r200 \
  -sOutputFile="$OUTFILE" -c .setpdfwrite -f "$FILE"
tiff2pdf -o "${OUTFILE%.*}.pdf" "$OUTFILE"

Cette paire de commandes rendra votre PDF sous forme d'image, puis incorporera cette image dans un PDF.

Détecter les PDF suspects

Didier Stevens, un autre chercheur belge d'InfoSec, a écrit d'excellents outils pour détecter les fichiers malveillants PDF. Recherchez celui qui s'appelle pdfid.py

Cet outil analyse le contenu du PDF pour détecter ceux potentiellement malveillants.

Fondamentalement, un PDF contenant des URL JavaScript ou à ouverture automatique doit être considéré comme suspect.

Protégez vos outils

Quelle que soit l'option que vous sélectionnez, vos outils peuvent devenir la cible de votre agent de menace. Corrigez-les fréquemment et exécutez-les dans un environnement jetable/isolé.

5
jfs

La conversion de tous les fichiers PDF en un format plus "passif" - peut-être TIFF ou postscript - pourrait être effectuée par lots, dans un compte restreint, soit sur la machine locale, soit sur une boîte Linux/VM. Un exploit/malware transporté dans un format de fichier différent est très peu probable.

Les fichiers purement malveillants ne s'afficheront même pas de cette façon; tout exploit destiné aux populaires PDF ne fonctionneront probablement pas avec des outils de conversion scriptés (qui seront principalement basés sur le moteur ghostscript); et le compte restreint empêchera un exploit réussi de faire beaucoup de dégâts.

Un compte d'utilisateur normal sur une machine Linux à jour est très difficile à "casser" - assurez-vous cependant que cette machine ne dispose pas d'un accès Internet non réglementé, car l'accès au réseau est le plus difficile à contrôler.

Si la divulgation du contenu des fichiers PDF valides aurait des conséquences désastreuses, assurez-vous qu'un seul PDF à la fois est accessible au compte exécutant l'interprète à un moment donné (par exemple en copiant le fichier dans un emplacement intermédiaire d'un autre compte utilisateur, exécutant l'interpréteur via su/Sudo (pas Sudo à root!), puis retirant le fichier de résultat. Rincez, répétez.

Oh, et: Gardez les fichiers originaux loin de tout PC (en particulier Windows) qui est configuré pour faire des aperçus de fichiers dans l'Explorateur, dans les clients de messagerie ou les frontaux similaires!

4
rackandboneman

En fonction de votre modèle de menace, même l'approche "périphérique de graveur" ou machine virtuelle peut ne pas être suffisante. Si un attaquant cherche à identifier votre position, ou même si un spammeur veut valider que votre adresse e-mail est active, alors avoir le PDF domicile du téléphone après avoir été ouvert Les PDF astucieux peuvent même contenir des vers pour infecter d'autres machines, même si je n'ai jamais vu ça dans la nature.

Ainsi, après avoir téléchargé le PDF, vous devrez peut-être déconnecter l'appareil du résea avant de l'ouvrir.

2
dotancohen

Je pense que Qubes OS est une excellente option, mais vous devriez également jeter un coup d'œil à Subgraph OS (Remarque: il est toujours dans sa version alpha à partir du 2-2017, vous devriez probablement attendre une version plus stable). version sort pour s’y fier pour une sécurité renforcée). Il est livré par défaut avec un noyau Linux durci avec Grsecurity/PaX , et il dispose par défaut de bacs à sable autour des applications à risque telles qu'un lecteur PDF PDF ( Evince ). En raison du durcissement du noyau, la plupart des exploits contre le lecteur PDF seront atténués. Si toutefois ils réussissent, l'attaquant est toujours limité au bac à sable (- Oz ) dans lequel s'exécute le PDF,

Le bac à sable empêche Evince d'accéder à des fichiers sensibles sur l'ordinateur, tels que vos clés de chiffrement, vos e-mails, vos documents personnels, etc. Evince ne nécessite qu'un accès aux fichiers PDF qu'il lit et à certains autres fichiers dont il a besoin pour fonctionner normalement.

Le bac à sable limite également les types d'actions qu'un attaquant peut effectuer, comme limiter les appels système qu'une application (exécutée dans user-space) peut effectuer pour demander au noyau (exécuter dans kernel-space) pour faire des choses comme lire et écrire des fichiers, communiquer sur le réseau, etc., en utilisant une fonction Linux appelée seccomp. Ainsi, par exemple, le sandbox empêche également le lecteur PDF (Evince) de se connecter à Internet, ce qui vous protège contre un attaquant qui souhaite obtenir votre adresse IP pour découvrir votre position.

Vous pouvez obtenir la documentation complète sur la façon d'ouvrir les fichiers PDF dans Subgraph OS ici .

1
user140466

Je recommanderais un appareil "isolé" uniquement pour télécharger et ouvrir les fichiers PDF. C'est à dire. pas connecté au reste de votre réseau.

Imprimez-le ensuite (le papier ne peut pas transmettre de malware).

Après cela, vous pouvez le numériser, puis vous avez une copie au format image. Dans ce cas, l'imprimante doit être isolée et connectée uniquement au périphérique contaminé. Le scanner peut être connecté au reste de votre réseau.

Si vous voulez un flux de travail plus rapide, vous pouvez simplement les transformer en images, puis les envoyer à vous-même si vous avez besoin de les voir ailleurs, bien que vous deviez garantir que le courrier n'est pas infecté d'une manière ou d'une autre. Aucun lien/image/javascript injecté et le format de fichier n'est pas exécutable ou pdf.

Ce qui signifie que le destinataire ne doit afficher que du texte sans html ni javascript.

0
HopefullyHelpful

Il s'agit d'une réponse plus faible (au niveau de l'utilisateur) utilisant firejail et xpdf, et peut-être cpulimit :

firejail [...options...] xpdf suspicious.pdf

Je ne sais pas quelle serait la meilleure - options pour les fichiers suspects PDF. Ceux-ci semblent fonctionner et désactiveraient probablement la plupart des méchancetés:

firejail  --caps.drop=all  --machine-id  --net=none  --nonewprivs  \
          --memory-deny-write-execute --overlay-tmpfs  --seccomp \
          xpdf suspicious.pdf

Si vous craignez que le suspect PDF soit également un porc CPU, préfixez la première ligne avec:

cpulimit -c 1 -l 10 -m -- \

Ce qui limiterait davantage firejail et ses processus enfants à utiliser 10% de l'un [~ # ~] cpu [~ # ~].

0
agc