samedi 27 octobre 2012

Afficher l’écran de votre téléphone sur votre ordinateur

Si vous êtes l’heureux possesseur d’un téléphone Android alors vous avez la possibilité d’afficher l’écran de votre téléphone sur votre ordinateur. Pourquoi me direz-vous? Eh bien si vous souhaitez faire un présentation ou une démonstration à un groupe de personnes en affichant l’écran de votre téléphone sur votre ordinateur vous pouvez aisément le faire au travers d’un rétro-projecteur. Vous pouvez aussi enregistrer une vidéo de vos actions sur votre téléphone. La procédure ci-dessous est écrite pour un « Samsung Galaxy S2 ». Mais elle est aisément applicable aux autres téléphones « Android ».

Pré-requis : Java doit être installé sur votre ordinateur (au moins Java 6). Dans notre cas, Java 6 Update 35 est installé.

1ère étape : Configurer le téléphone pour permettre le débogage via USB

Aller dans « Paramètres » / « Options de développement » / « Débogage USB » et activer l’option
 !cid_image001_jpg@01CDAAED

2ème étape : Installer les drivers USB du téléphone

Une manière de faire consiste à installer l’application « Samsung Kies PC Sync » (cette étape varie d’un téléphone à l’autre):
  • Aller sur http://www.samsung.com
  • Choisir Assistance / Manuel et téléchargements
  • Sélectionner votre téléphone : type, sous-type et numéro de modèle (dans notre cas le modèle est le GT-I9100P)
  • Cliquer sur « Manuels et téléchargements » puis « Logiciels »
  • Télécharger et installer l’application « Samsung Kies PC Sync »

Cette étape effectuée, vous pouvez vérifier l’installation de la manière suivante:
  • Aller dans « My Computer » / « Manage » / « Device Manager »
  • Vérifier que votre téléphone est reconnue (voir l’image ci-dessous)

!cid_image002_jpg@01CDAAED

3ème étape : Télécharger et installer le SDK Android

Aller sur http://developer.android.com/sdk/index.html
  • Télécharger et installer le SDK
  • Lancer « Start » / « All Programs » / « Android SDK Tools » / « SDK Manager »
Si votre accès internet se trouve derrière un proxy il est nécessaire de le configurer de la manière suivante
  • Aller dans « Tools » / « Options »
  • Entrer le « HTTP Proxy Server » et le « HTTP Proxy Port » et cocher l’option « Force https://... »
image

Installer les packages du SDK:
  • Choisir « Package » / « Reload »
  • Sélectionner les packages à installer comme indiqué dans l’image ci-dessous
  • Cliquer sur « Install packages… »
!cid_image003_png@01CDAAED 
4ème étape : Télécharger et configurer l’application permettant de visualiser l’écran du téléphone sur l’ordinateur

Aller sur http://blog.ribomation.com/droid-at-screen/
  • Télécharger « droidAtScreen-1.0.1.jar »
Modifier les variables d’environnement :
  • Aller dans « My Computer » / « Properties » / « Advanced » / « Environment variables »
  • Créer une nouvelle variable « système » appelé « ANDROID_HOME » pointant sur le répertoire d’installation du SDK « [votre_répertoire]\Android\android-sdk »
Lancer l’application « Droid@Screen » :
  • Double-cliquer sur le fichier « droidAtScreen-1.0.1.jar »
  • Lors du premier lancement « Droid@Screen » nécessite de faire pointer ADB (Android Device Debugger) sur l’exécutable « adb.exe ». L’exécutable se trouve sous « [votre_répertoire]\Android\android-sdk\platform-tools\adb.exe»

!cid_image004_png@01CDAAED !cid_image005_png@01CDAAED

Connecter votre téléphone à la prise USB de votre PC (si ce n’est pas déjà fait).

Si votre téléphone n’apparait pas dans la liste des « Devices »
  • Cliquer sur « Restart ADB »
  • Cliquer sur « Reload devices »
Vous obtenez alors :

!cid_image006_png@01CDAAED

et enfin
 !cid_image007_jpg@01CDAAED

Source: cette article ne présente rien de nouveau mais il agrège différentes informations éparses disponibles sur internet
 

samedi 6 octobre 2012

Damn Vulnerable Web App…

Au cours de mes ballades dans le web profond, ma route a croisé une vielle VM qui semblait avoir eu un certain succès en son temps! C’était bien avant l’arrivée de Backtrack, enfin je crois!

Cette vielle VM c’est celle de Web Security Dojo de chez Maven Security (http://www.mavensecurity.com/web_security_dojo/)! Et j’ai découvert quelques applications intéressantes que je ne connaissais pas comme par exemple Google’s Gruyere, Hacme Casino et Damn Vulnerable Web App.

A l’instar de Webgoat, ces applications permettent d’apprendre en trouvant et corrigeant les failles de sécurité parsemées çà et là au travers de ces applications web.

Nous allons nous intéresser plus particulièrement à Damn Vulnerable Web App (DVWA) au travers de l’injection SQL à l’aveugle proposée (Blind SQL Injection ou Blind SQLi).

Certains puristes disent qu’une “Blind SQL Injection” se base uniquement sur le temps de traitement de la requête qui indique une réponse positive (e.g. le traitement est plus long) ou négative. Mais certains parlent aussi de “Blind SQLi” lorsque l’affichage change en fonction des résultats. Avec DVWA nous sommes dans ce deuxième cas de figure.

La vidéo ci-dessous détaille la démarche que l’on peut suivre pour ce type d’injection:



C’est fini! Mais nous devrions retrouver les applications de Web Security Dojo dans de prochains articles!

dimanche 9 septembre 2012

Quand cryptologie rime avec pédagogie!

Bon en fait nous allons plutôt parler de cryptographie! Mais bon, j’aimais bien la rime en “gie”.
Je viens de découvrir un petit outil bien sympathique que j’aurais aimé avoir en ma possession depuis longtemps. Il m’aurait permis de gagner du temps dans la compréhension de certains concepts comme par exemple la signature numérique ou bien Diffie-Hellman.
Et cet outil existe pourtant depuis un certain temps! Les experts, les vrais, chercheraient-ils à ne pas divulguer leurs trucs et astuces! Non, bien sûr que non!
L’outil dont je vous parle est CrypTool (http://www.cryptool.com), développé par des universités allemandes Siegen et Darmstadt avec Deutsche Bank et Secude comme sponsors.
CrypTool ne s’adresse pas à la communauté d’experts qui connait tout cela sur le bout des doigts depuis bien longtemps, mais plutôt aux étudiants ou aux amateurs “éclairés” souhaitant mieux comprendre la cryptographie, voire même aux professeurs voulant expliquer des notions de cryptanalyse à leurs étudiants.
CrypTool a deux principales facettes: la cryptographie et la cryptanalyse.
En cryptographie, il permet de jouer avec:
  • le chiffrement/déchiffrement moderne (e.g. Triple DES-CBC) et classique (e.g. ROT-13), symétrique et asymétrique
  • les protocoles (e.g. S/MIME)
ScreenShot024
  • la génération des hashs (e.g. SHA-512)
  • la signature numérique et sa vérification
En cryptanalyse, il permet de jouer avec:
  • e.g. quelques attaques comme l’attaque sur le “hash” d’une signature
ScreenShot025
  • e.g. des mesures d’entropie ou de périodicité
Et en plus de tout cela on peut trouver des animations excessivement bien faites permettant de comprendre par exemple comment fonctionne la génération d’une signature numérique étape par étape:
ScreenShot026
Cet outil est indispensable! Si vous avez un doute sur le fonctionnement de Diffie-Hellman! Eh bien CrypTool est là pour vous donner l’information manquante!
Un grand merci aux étudiants de Siegen et Darmstadt!

samedi 8 septembre 2012

Comprendre Esapi de l'OWASP, en s’amusant

Enfin je trouve le temps de vous présenter "Swingset interactive 1.0.1" de l'OWASP, et j’en suis ravi!
L'OWASP propose de APIs très bien faites permettant de gérer vos problèmes de  sécurité sans avoir à réinventer la roue (généralement on fait moins bien…). Pour faciliter l'adoption et la formation des développeurs, l'OWASP propose une interface interactive appelée "Esapi Swingset" permettant de comprendre et d'implémenter les fonctions de sécurité en se basant sur les APIs d'Esapi.
La marche à suivre pour mettre en œuvre ce serveur est la suivante:
  1. Télécharger le “zip” sur le site de l'OWASP sur https://www.owasp.org/index.php/ESAPI_Swingset
  2. Télécharger Eclipse sur http://www.eclipse.org/downloads/. Dans mon cas je dispose d'une version de Webgoat fonctionnant avec Eclipse et je vais donc réutiliser cette version pour y ajouter le projet Esapi (plus d’informations dans l’article Modifier le source de Webgoat, oui c’est possible!)
  3. Lancer Eclipse via Webgoat
  4. Configurer Esapi dans Eclipse. Pour cela il est nécessaire de suivre tranquillement la procédure décrite dans le fichier:
    ”.../Swingset_Interactive_1.0.1/README.txt”. Si vous avez des problèmes avec les directives de ce fichier, n'hésitez pas à me contacter.
On note le déplacement du ficher ".keystore" et du répertoire ".esapi" dans le répertoire de l'utilisateur avec lequel vous vous êtes connecté (par exemple "C:\Documents and Settings\votre_utilisateur"). Cela signifie que les fichiers générés au cours de vos tests et les fichiers de configuration se trouvent probablement à cet emplacement.
Comme décrit dans la documentation, le lancement du serveur Esapi se fait dans la vue "Serveurs" d’Eclipse. Faire un clic droit sur "Tomcat v6 Server at localhost" et choisir "Start".
ScreenShot026
Une fois que le status de ce serveur est dans l'état "Started", on peut commencer à jouer avec Esapi dans votre browser préféré (mais il est conseillé d'utiliser Firefox). Entrer l'URL suivante:
https://localhost:8443/SwingSet/main
ScreenShot023
Puisque l’objectif de cet article est de vous aider à prendre en main l'outil, nous allons le faire avec le premier exemple proposé qui est l'"Authentification".
On note que chaque thème est scindé en 3 parties:
  • un tutoriel
ScreenShot024
  • un “lab” vous permettant de réaliser votre propre implémentation en vous basant sur le tutoriel
ScreenShot025
  • la solution
Après avoir lu le tutoriel on comprend qu'il est nécessaire de créer un utilisateur puis de s'authentifier avec ce même utilisateur en suivant les règles des APIs.
Dans le “lab” on apprend que le fichier "jsp" à modifier se trouve sous:
”\WebContent\WEB-INF\jsp\LoginLab.jsp”
On ouvre le fichier dans Eclipse et on découvre que les parties du code à modifier sont signalées par "//TODO 1" pour la création de l'utilisateur et "//TODO 2" pour la phase d'authentification avec ce même utilisateur.
En observant le code on note que les paramètres suivants sont utilisés:
  • create_username
  • create_password1
  • create_password2

1ère phase: la création de l'utilisateur (TODO1)
Le code à modifier est le suivant (c’est un exemple fonctionnel mais perfectible):
User user = null;
Authenticator instance = ESAPI.authenticator();
   
try {
    if (request.getParameter("create_username")!=null){           
       // TODO 1: Use ESAPI to Create a User Account
       instance.createUser(request.getParameter("create_username"), request.getParameter("create_password1"), request.getParameter("create_password2"));
       instance.getUser(request.getParameter("create_username")).enable();
       instance.getUser(request.getParameter("create_username")).unlock();

Il faut noter qu'un utilisateur créé est par défaut désactivé et bloqué. Dans la vraie vie l'activation et le déblocage nécessiterait une intervention d'un administrateur par exemple.
Pour tester il est simplement nécessaire de sauvegarder le fichier "jsp" et de recharger la page dans le browser (Firefox dans notre cas).
Si votre utilisateur ”john” est créé vous obtenez le message "User Created : john". Vous pouvez ensuite consulter le fichier pour voir quelles sont les informations générées pour la création d'un utilisateur dans “C:\Documents and Settings\votre_utilisateur\.esapi\users.txt”
Notez en passant le chiffrement du mot de passe.

2ème phase: l'authentification avec ce même utilisateur (TODO2)
Le code à modifier est le suivant:
//user = ESAPI.authenticator().login();
//TODO 2: Login using ESAPI                    
user = ESAPI.authenticator().login(request, response);

Rien à dire. La solution est assez simple.

Optionnel: ajout du bouton "logout"
On peut en plus de l’exercice s’amuser à gérer le bouton “logout”.
On trouve le fichier "jsp" à modifier:
”\WebContent\WEB-INF\jsp\LogoutLab.jsp”
On y ajoute:
<%
Authenticator instance = ESAPI.authenticator();
instance.logout();

%>
User logout

Il est également nécessaire de modifier le fichier:
”\WebContent\WEB-INF\jsp\LoginLab.jsp”
On remplace la ligne:
<a href="main?function=Login&logout&lab">logout</a>par
<a href="main?function=Logout&lab">logout</a>


Puis après l'authentification, lorsque l'on clique sur le lien "logout",
l'utilisateur est déconnecté.
Enfin on peut corriger avec la version proposée par l'OWASP. Le code source se trouve sous:
”\WebContent\WEB-INF\jsp\LoginSolution.jsp”
Remarque: si vous sortez de votre session alors toutes vos données peuvent être perdues et vous devrez alors recommencer depuis la création de l'utilisateur (le fichier "users.txt" peut être est vide). Ce comportement semble aléatoire!
Amusez-vous bien! Et surtout utilisez Esapi dans vos implémentations!

Partager avec...