vendredi 25 avril 2008

[Pentesting] [Discovery phase] When relevant information is available ... on the Internet!

Lorsque nous commençons nos tests d'intrusion, il est important d'engranger un grand nombre d'information. Cela constitue autant de piste d'attaque par la suite. En l'occurrence, les identifiants et mots de passe sont des données privilégiées, ainsi que les documents sensibles. Pour faciliter et automatiser une telle recherche, nous allons voir deux outils de la société Edge-Security. Cette dernière vient de sortir une nouvelle version de son outil Metagoofil et il vaut le détour ! Nous allons le voir tout de suite.


Préparation de l'attaque

1/ Commençons par télécharger l'outil à l'adresse suivante : http://www.edge-security.com/soft/metagoofil-1.4.tar.

2/ Dans votre console, décompressez-le :

tar -xvf metagoofil-1.4.tar

3/Installer extract qui est nécessaire pour l'extraction des méta-données des documents.

apt-get install extract

4/ Vérifier que dans le code de metagoofil, le chemin donné pour extract est le bon (fichier metagoofil.py). Sinon, changez-le pour avec le bon path : extcommand='<chemin>'.

C'est tout, vous êtes déjà prêts !


A l'exploration !

L'outil s'utilise de la manière suivante (ex : microsoft.com) :

./metagoofil -d microsoft.com -f xls -l 100 -o microsoft-test.html -t /home/jer/metagoofil/microsoft-test/

Avec :
  • -d ;
  • -f (peut être doc, xls, pdf, ... ou all) ;
  • -l (par défaut 100) ;
  • -t (où seront stockés les documents récupérés).
Ici, nous avons utilisé les formats doc car sinon, avec le paramètre all, l'outil récupérera plus de .pdf qui sont des documents légitimement accessibles sur le WEB ce qui devrait être moins le cas pour les .xls (même si c'est moins vrai dans l'exemple que nous prenons). Puisqu'il s'agit d'une grande entreprise, nous devrions récupérer un maximum d'information. Cela nous demanderait alors par conséquent plus de temps et d'espace disque.

Une fois terminé, nous voyons apparaître les chemins de documents et les noms d'utilisateurs trouvés ainsi que les noms de services de l'entreprise !

Evidemment, nous devons éliminer les informations non pertinentes à ce niveau. Les données ont été récupérées grâce aux champs "auteurs" et "chemin" des documents, eux-mêmes localisés avec des requêtes Google. Cela nous donnes une bonne base et même des formats (de mail ? d'identifiant ?) comme emma.pXXXXXXX. N'oublions pas qu'il peut aussi s'agir de partenaires ou de client de la cible est qu'il est important de trier les résultats. Quoiqu'il en soit, ces données devraient être intéressantes par la suite du test d'intrusion ;)


Les ressources fournies par Metagoofil

Outre l'output sur le terminal, Metagoofil fournit les stocke les documents récupérés dans le répertoire désigné par l'option -t. Vous devriez y trouver des informations très intéressantes sur votre cible ... Dans notre exemple, un tableau contenant le nom de commerciaux et leur numéro interne a été trouvé. Sur une autre requête exécutée sur les .doc, un CV d'un consultant de l'éditeur a été retrouvé.
Aussi, Metagoofil founit un fichier HTLM constituant le reporting de ses recherches. En résumé, nous y trouvons pour chaque fichier (au mieux) :
  • Le titre et descriptif du document ;
  • Le nom de l'auteur ;
  • Le suivi des révision ;
  • Le nom de la dernière personne ayant sauvegardé le fichier pour la dernière fois ;
  • La date de création du fichier et de modification ;
  • L'outil qui a servi a créer le fichier (ex : Acrobat Distiller) voire la version (5.0.2) et même l'OS (ex : Machintosh) ;
  • L'adresse MAC de la machine ;
  • Le chemin où est enregistré physiquement le fichier (et donc certainement un partage ouvert puisque le fichier a été récupéré depuis Internet ...) ;
  • Et souvent des données additionnelles sur les outils utilisés par la cible.
Entre fuite d'information et données importantes pour la suite du pentest, vous avez déjà ici de quoi faire ;) Voici deux examples :




Pour aller plus loin

Pour voir un autre exemple de l'utilisation de cet outil, une vidéo est disponible sur le site d'irongeek.
Pour approfondir vos recherches, il existe un certains nombre de requêtes Google qui peuvent être très utiles. Le site de Johnny LONG (auteur de "Google Hacking") devrait être une bonne source d'information. Son site se trouve ici.
Enfin, Edge-Security propose un autre outil - dans le même ordre d'idée - qui lui est plus focalisé sur la recherche d'adresses emails. Il se base aussi sur le moteur de recherche Google mais aussi le moteur de MSN, le serveur de PGP et le site linkedin. L'outil en question est appelé theHarvester et peut être téléchargé ici. Rapidement, en voici un exemple :

./theHarvester.py -d microsoft.com -l 100 -b google

Avec les options :
  • -d : ici, nous gardons le même exemple ;
  • -l : nombre de résultats limite ;
  • -b : source de l'information parmi Google, MSN, PGP et Linkedin.

Et vous, êtes vous sûrs qu'aucune de vos informations personnelles n'est accessible sur Internet ?

[Social Engineering] Is your money safe?

Tout a commencé par un SMS ... Une nouvelle mission ? Non ! Mais finalement, ça aurait pu le devenir ... Un matin, je reçois un SMS d'une certaine banque que nous appellerons X autre que la mienne. Le texto m'indique que "je" suis à découvert de 51,29€ avec un découvert autorisé de 200€. De plus, il est écrit pour le compte "CC 12345678" (les chiffres et caractères ont volontairement été changés bien sûr). A votre avis, jusqu'où peut nous mener une simple erreur de numéro de téléphone ? Bien plus loin que l'on pourrait le penser ... L'aventure commence !


Avant-propos

Ce post a pour unique but de sensibiliser les personnes et en l'occurrence, beaucoup de gens puisque toute personne ayant un compte bancaire consultable en ligne est concernée... C'est pour cela que les informations sont transformées de sorte à ne pas enfreindre ni la loi, ni la vie privée de la personne incriminée à son insu.


Etape 1 : Récupération de l'identifiant

Je commence par me balader sur le site de la banque comme un simple utilisateur pour signaler l'incident. Dans la partie "contact", outre l'appel surtaxé, je peux remplir un formulaire pour envoyer un mail. Entre autres, je remplis le champs avec le numéro de compte. Aussi, on me propose trois types de compte : "compte chèque, compte titre ou compte épargne". Le CC dans le SMS me fait opter pour un compte chèque (ce dont nous aurions pu nous douter puisqu'il n'existe pas de découvert sur les compte titre et d'épargne). Suite à une erreur dans le formulaire, je suis renvoyé sur la même page et je remarque que le numéro de compte a été modifié : le vrai numéro de compte est en réalité précédé de trois "0". Ok, donc le vrai numéro de compte est 00012345678 (pour reprendre notre exemple factice). J'ai donc à ma disposition le premier élément pour m'authentifier, l'identifiant. La deuxième information à obtenir est le mot de passe...


Etape 2 : Récupération du mot de passe

Je découvre rapidement que le mot de passe est constitué d'un certain nombre de chiffres puisque l'on me propose un clavier numérique. Bon, ça se corse car difficile de contrer ce genre de clavier (quoiqu'il paraît que des programmes malicieux - ou malwares - font des captures d'écran ...). Il y a un bouton "valider" sous le clavier numérique mais je remarque qu'il devient "cliquable" qu'une fois avoir sélectionné 6 chiffres (au hasard, ne connaissant pas le mot de passe). Ok, il y a donc exactement 6 chiffres dans le mot de passe. Reste l'obstacle du clavier mais celui-ci sera très vite déjoué puisque un lien sur la même page du site permet une authentification "autre" en cas de problème. Je clique et hop, je me retrouve sur une page où l'on peut s'authentifier sans clavier numérique mais seulement à l'aide de deux champs de formulaire classique. Sinon, il était joli le clavier :). Pour la petite histoire, au début des claviers numériques, ils ne fonctionnaient que sous IE pour la caisse d'épargne pendant une certain temps. Il suffisait alors d'utiliser un navigateur alternatif comme Firefox.
Quoiqu'il en soit, voilà qui nous simplifie la tâche puisque nous sommes alors en face d'un mot de passe faible voire très faible puisque composé d'exactement (et seulement 6 chiffres). Je pense que vous avez déjà connu plus difficile ;) Nous avons à ce stade suffisamment d'information pour lancer une attaque :
  • L'identifiant ;
  • La forme et la longueur du mot de passe ;
  • Des champs HTML pour tenter une attaque de type brute force.

Etape 3 : Récupération du mot de passe

Malheureusement ici, nous allons tout de suite devoir calmer nos ardeurs car nous entrerions dans un cadre non légal. Cependant, la technique est très simple et expliquée ici car elle peut servir dans de nombreux cas. C'est aussi l'occasion de voir un outil comme Brutus qui nous permet d'appliquer toutes les données récupérées. Normalement, ce logiciel est téléchargeable ici. Il se peut que vous rencontriez des problèmes mais Google est votre ami ;)

Tout d'abord, le panneau principal. Vous devez y choisir :

  • target = la page du site contenant le formulaire ;
  • type = HTTP (form) ;
  • port = 443 ;
  • Authentification options = checker "single user" et entrer le numéro de compte dans le champs User ID ;
  • Pass mode = Brute Force.
Ensuite, cliquer sur le bouton "Range" et le configurer de telle sorte que seuls les mots de passe de 6 chiffres seront tentés comme le montre l'image suivante :

Dernière étape du paramétrage, définir les champs de la page HTML. Brutus peut vous aider. Pour cela, cliquer sur le bouton "Modify Sequence" du panneau général. Une nouvelle fenêtre s'ouvre. Entrez l'adresse de la cible est la page et l'identifiant dans les champs correspondants puis cliquez sur le bouton "Learn Form Settings" :

Une fois trouvé, Brutus montre le fruit de ses recherches . Sélectionner alors le champ correspondant à l'identifiant et cliquer sur "Username". De même avec "Password".

Cliquez sur "Accept" et "OK" des fenêtres ouvertes pour revenir au panneau principal. Il ne vous reste plus qu'à cliquer sur le bouton "start" et l'attaque commence. Pour le post, nous nous arrêterons ici mais je pense que vous avez l'essentiel appris l'essentiel ;)

samedi 19 avril 2008

[CISSP] Learn about pentest

Aujourd'hui cher agent, vous allez devoir progresser dans la théorie ! Or, dans le cadre de l'apprentissage de l'examen CISSP, un module intitulé "Access Control Systems" tient compte des tests d'intrusion. Ce post - assez particulier - se propose de voir les notions à connaître et illustrer certains concepts.


Avant-propos

Le module que nous allons voir fait partie de la liste des 10 domaines à connaître pour réussir l'examen. Plus d'information sont disponible ici. Aussi, des pré-requis sont nécessaires comme des diplômes et quelques années d'expérience. Finalement, il vous faudra atteindre un score de 70% pour obtenir le CISSP. Avant de commencer, je tiens à préciser que ce post ne garantit pas une note quelconque ne serait-ce que pour le module abordé. Cependant, j'espère qu'il vous y aidera ;). Enfin, les diapos d'illustration sont en anglais car les livres que vous trouverez sur le sujet le seront aussi très certainement.


Part I - Quelques concepts à connaître ...

La sécurité informatique, c'est un combat permanent entre les hackers et les entreprises. Chacune dispose de ses caractéristiques et de ses buts, ce que ce premier schéma illustre de manière très simplifiée :



En bleu, nous avons les besoins de l'entreprise (synthétisés par la police de sécurité) alors qu'en noir, les contraintes portées à l'entreprise pouvant être concrétiser par l'attaquant (dont les points forts sont le temps, sa motivation et son esprit de défi par exemple). Pour bien faire la différence entre "Vulnérabilité", "menace" et "risque", prenons pour exemple une machine sous Windows XP SP2. Si une faille, mentionnée par Microsoft par exemple, impacte les machines Windows XP SP2 et moins, alors, il y a vulnérabilité. Si cette vulnérabilité est exploitée par un ver, alors ce dernier représente la menace. Pour terminer, plus les données contenues sur la machines sont sensibles et plus elle est atteignable pour un attaquant, plus le risque est grand (et inversement).

Dans un deuxième temps, le module demande à ce que les solutions de sécurité - en sens large - soient classifiées. Nous trouverons trois types de sécurité (organisationnelle, logique/technique et physique) et deux approches (préventive et post-active). Un exemple pour chacun est fourni ci-dessous :



Pour être précis dans notre classification, nous devons noter que dans une entreprise (organization), plusieurs rôles doivent être définis qui correspondent à des métiers et/ou fonctions. Dans ces rôles, nous trouvons les employés ou aussi utilisateurs au sens SI. Chacun d'eux disposent d'objets tels que des documents par exemple. Cela est très utile pour définir correctement les contrôles d'accès de manière granulaire.

La dernière sous-partie du module demande une connaissance générale des attaques les plus connues. Cette troisième image en fait l'illustration :



Je ne reviendra pas sur ces attaques que vous connaissez certainement déjà. Sinon, n'hésitez pas à vous documenter sur le Net. Enfin, il est toujours possible de poser des questions sur ce blog ;) Tout de même, nous allons voir pour exemple la "SYN Flood Attack" car très largement utilisée et d'ailleurs, c'était le sabre utilisé pour la dernière grande attaque portée contre les serveurs DNS racines d'autant plus que des scripts rendent l'attaque très simple. Pour comprendre, il faut savoir qu'une connexion s'établit en trois temps :
  • Le client envoie une requête "SYN" au serveur ;
  • Le serveur répond par un "SYN/ACK" pour confirmer la demande ;
  • Le client doit alors confirmer par un "ACK".
Si ce troisième échange n'a pas lieu, le serveur reste en attente jusqu'à provoquer un timeout. Pour chaque demande en cours, une socket est occupée. Alors si un certain nombre de machines effectuent ce genre de requête en laissant en attente les communications, nous sommes bien dans le cas d'un DDoS attaque basée sur le SYN Flood.


Part II - Les tests d'intrusion

Avant de commencer un test d'intrusion, il est très important de le définir avec l'entreprise. Il existe de nombreuses combinaisons en fonction des besoins :
  1. 1) S'agit-il d'un test interne ou externe ?
  2. 2) S'agit-il d'un test en boîte blanche, grise ou noire ?
  3. 3) Jusqu'où doit-on dérouler le test ? (en suivant la démarche logique quoiqu'il en soit)


Pour bien aborder le concept de contrôle d'accès, il est nécessaire maintenant de comprendre ce qu'est l'identification et l'authentification. C'est le but du slide suivant :



Il y a donc trois façon de s'authentifier : A partir de quelque chose que l'on est, que l'on sait ou que l'on a. Il est possible de combiner plusieurs éléments. Nous parlons d'authentification forte à partir du moment que deux éléments ou plus sont combinés (par exemple, une carte à puce contenant le certificat d'authentification, cette première étant protégée par un code PIN).
En l'occurrence, lorsque nous parlons d'authentification, il est important de connaître ce que la biométrie et le SSO (pour Single Sign On) :



Il existe de nombreux systèmes de SSO mais il en est un que nous utilisons tous les jours : Kerberos. C'est pourquoi nous le prenons pour exemple ici :



Ensuite, le contrôle d'accès a pour objectif d'assurer l'intégrité, la confidentialité et la disponibilité des données. Or, généralement, celles-ci sont contenues dans les bases de données (BDD). Le lecteur doit donc connaître les principes des BDD et du langage associé, SQL.



Pour terminer, le chapitre, nous traitons des solutions de sécurité de type IDS dont SNORT est le plus connu en tant que solution Open Source. Même si l'image suivante n'est pas animée, elle illustre ce dernier point :



Il y a ici deux notions à comprendre. Un IDS peut fonctionner de deux manières différentes et nous avons alors :
  • mode IDS-Système ;
  • mode IDS-Réseau.
Mais attention, un même outil, comme SNORT encore une fois, peut être configuré dans chacun de ces deux modes. La différence est que dans le premier cas, la sonde IDS pourra vérifier les éléments du système (exemple : les logs) alors que dans le deuxième cas, la sonde fonctionne en temps réel pour analyser les paquets transitant sur le réseau et sera plus utile pour détecter une attaque en cours. Enfin, il faut savoir qu'une sonde IDS travaille à partir de "patern matching" de signatures et de contrôle de comportement basé sur des règles.


Conclusion

Voilà un résumé pour vous préparer à ce module. Néanmoins, il est indispensable d'approfondir toutes ces connaissances pour être capable de répondre aux questions du CISSP. Pour ceux que cela intéresse, je peux envoyer la présentation sur simple demande. Aussi, n'hésitez pas si vous avez des questions ;)

mercredi 16 avril 2008

[PENTESTING][Privilege Escalation] Get the power on Win XP!

Lors des tests d'intrusion internes, l'une de nos missions est de vérifier les possibilités d'escalade de privilèges sur les postes de travail à partir d'un compte ou non. La première chose qu'un agent tel que vous pensera à faire, c'est de vérifier s'il est possible de gagner un compte administrateur en démarrant l'OS sur un Live CD. Cette fois, nous allons plus loin, nous cherchons à gagner les droits SYSTEM !


Prérequis

Je tiens à préciser que je n'ai rien inventé. ce post a juste pour vocation d'illustrer la faille. En terme de conditions de tests, nous avons, comme le montre ce premier screenshot :
  • une machine sous Windows XP patchée
  • un compte administrateur, jer001, que nous supposerons avoir obtenu grâce au crackage du mot de passe après avoir récupéré la base SAM (en bootant sur un Live CD).




La prise de pouvoir !

Pour commencer, lancer l'invite de commande pour y taper le code suivant :



at 18:07 /interactive "cmd.exe"

Plus précisément, il était 18h06 au moment de l'exécution de la commande. Nous choisissons la minute suivante pour que le commande s'exécute bientôt. Ensuite, pour vérifier, nous tapons tout simplement :

at

A l'heure donnée, ici 18h07, une invite de commande se lance. Gardons-là ouverte, elle va nous servir juste après. Pour l'instant, allez dans la lite des tâches (ou task manager) pour y arrêter le processus explorer.exe.



Retrouver la fenêtre avec l'invite de commande lancée automatiquement pour y taper :

explorer.exe




Après quelques paramétrages de la part de l'OS, le compte SYSTEM est à vous !


Locations of visitors to this page