mardi 29 mai 2012

Hacking with the iPod Touch

Une présentation Thomas Wilhelm pour la conférence Defcon 2009 donc qui date mais je l'avais trouvée très intéressante à l'époque et en retombant dessus j'ai trouvé qu'elle était tout à fait anontiatrice de ce qu'il est possible de faire aujourd'hui avec un iPhone en terme de hacking.

La vidéo disponible ici

Le PDF de la présentation ici

Wide Area Bonjour

J'ai déjà évoqué le sujet succinctement et je reviens dessus pour référencer quelques liens intéressants sur le sujet:
Le blog Yoann Gini qui propose plusieurs articles techniques très intéressants sur le sujet Wire Area Bonjour
Et un lien vers l'application iOS Bonjour Browser de Tildesoft qui était déjà disponible sous Unix et qui je ne le découvre que maintenant est également disponible sur iOS. De quoi prendre conscience de l'importance du protocole Bonjour en explorant ce qu'il broadcast sur votre réseau.


lundi 28 mai 2012

Mocha contre l'arp spoofing sous OSX

On ne peut pas se prévenir contre une attaque arp spoofing ou arp poisoning mais on peut la détecter. Sous linux il existe arpwatch avec ou sans interface graphique. arpwatch est également disponible sous OSX par le biais des macports mais je préfère utilise Mocha. Couplé à Growl il permet d'avoir des popups d'alerte lorsqu'un appareil du réseau change d'adresse mac. Contre l'arp poisonnning c'est surtout la gateway que vous surveillerez. Par effet de bord il permet également de détecter la connexion d'un nouvel appareil au réseau ce qui peut être pratique d'autant que Mocha vous donne son IP. Espérons que son développeur portera Mocha sous Mountain Lion pour supporter le nouveau système de notification.

La SandBox de l'AppStore, entitlements et powerbox.

Directement inspirée de la sand box d'iOS, elle même inspirée d'OS précédents comme les smartphones J2ME, Apple introduit un bac à sable obligatoire pour les applications OSX distribuées dans l'App Store.

Le support de cette sand box passe par la définition d'une liste "d'entitlements" ou autorisations nécessaires au bon fonctionnement de votre application. L'établissement de cette liste permet de restreindre les accès disponibles à votre application et ainsi de mitiger les dégâts en cas de compromission. Contrairement à Androïd qui possède le même mécanisme mais gère une liste interminable d'autorisations OSX n'en propose que 15:

Le choix a été basé sur la simplicité de compréhension qui ne doit pas dérouter l'utilisateur. En effet si le système pause une question que l'utilisateur ne comprend pas ce dernier se contentera d'accepter l'accès pour pouvoir continuer à travailler. Les autorisations demandées doivent donc être très simples à comprendre comme par exemple: "L'application ACME peut elle accéder à la caméra ?"

Voici la liste des "entitlements" sous OSX Lion:

  • FileSystem: User-selected Files, Download Folder
  • Network Client
  • Network Server
  • Devices: Camera, Microphone, Printing, USB Bus
  • Personnal Information: Address Book, Calendars, Location
  • Assests: Music, Movies, Pictures

   
De plus comme sous iOS tout ce qui compose l'application et son fonctionnement est enfermé dans son propre répertoire, son bac à sable.

Powerbox:

Ce système permet à une application de demander à l'utilisateur d'ouvrir un fichier sans que l'application elle même n'ait accès à l'ensemble du système de fichier. Au lieu que l'application ouvre sa propre fenêtre de sélection elle appelle la Powerbox. Cette Powerbox est une fenêtre de dialogue classique de sélection de fichier. L'utilisateur sélectionne le fichier et la Powerbox ne renvoie que ce fichier et aucun autre à l'application. A aucun moment l'application n'a eu accès à d'autres fichiers que ceux explicitement choisis par l'utilisateur.

Systèmes de sécurité sur OSX

Par défaut OSX offre différents services permettant de protéger les données utilisateur:

KeyChain:

Est un porte clé numérique qui permet de sauvegarder toutes vos données d'accès tels que les mots de passe, les identifiants, les clés d'authentifications, etc. Toute application bien conçue ne stocke pas les coordonnées d'accès d'un utilisateur en clair mais utilise l'API KeyChain. Ce service disponible sur OSX comme sur iOS permet de protéger tout ce qui vous y placé sous un seul mot de passe qui est le mot de passe du compte de l'utilisateur. Aucun programme ou utilisateur ne pourra accéder au contenu du porte clé numérique sans la saisie du mot de passe de votre compte. Malheureusement, et particulièrement sur iOS, énormément d'applications sont mal conçues ou bâclées du point de vu sécurité et se contentent de stocker les données privées de l'utilisateur directement en clair ou sous une technique de chiffrement souvent vulnérable car mal implémentée ou mal maitrisée.

FileVault:

Qui est apparu avec OSX Panther et qui permettait jusque là d'encrypter le répertoire utilisateur entier. Depuis OSX Lion c'est le disque dur entier qui pourra être encrypté. Personnellement j'ai toujours utilisé Truecrypt, sous OSX comme sous Windows, avec une encryption totale du disque dur. Je n'ai jamais eu de problème avec et l'impact sur les performances de la machine est totalement négligeable. Le seul ralentissement notable se situe lors de la mise en hibernation et du réveil car toute la RAM doit être chiffrée avant extinction totale de la machine.

Le firewall:

Auquel je rajoute toujours l'excellent Little Snitch qui offre beaucoup plus de contrôle sur les accès entrant ou sortant d'un programme. Qui plus est comme sous Windows le firewall d'OSX n'offre une protection par défaut que pour les accès entrants et non sortant. Ainsi un malware pourra expédier vos données sur internet sans que le firewall OSX ne bronche, alors que Little Snitch lui vous enverra une alerte.

La gestion des accès de chaque fichier en lecture, écriture, exécution propre à tout système Unix et repris dans le système HFS+ propre à OSX.

Lock Screen:

Et oui mine de rien le fait d'activer le verrouillage automatique lors de la mise en veille est un outil précieux pour protéger son Mac d'un accès non autorisée par une personne tierce.

Et depuis la mise en place de l'App Store OSX Apple rajoute le support d'une sandbox comme sur iOS.

vendredi 25 mai 2012

Utilisations concrètes du protocole Bonjour sous OSX

Le protocole Bonjour est principalement utilisé par Apple bien que open source et compatible avec Windows et Linux mais aussi les smartphones iPhone ou Androïd. Voici une petite liste obtenu au WWDC que je trouvais intéressante sur l'utilisation concrète du protocol Bonjour:

  • Découvertes des imprimantes réseau LAN
  • Dans le Finder sous OSX depuis la version 10.5 on peut découvrir les machines ayant un partage de serveur AFP.
  • La fonction AirDrop introduite dans Lion utilise Bonjour.
  • iTunes utilise Bonjour pour découvrir les play list partagées et aussi les appareils compatibles AirPlay.
  • Safari supporte Bonjour et Wide Area Bonjour (dans la rubrique collections)
  • iChat affiche les personnes connectées autour de vous.
  • Time Machine le système de sauvegarde d'Apple
  • Le Terminal pour découvrir des serveurs SSH, etc.
  • Le Bonjour Sleep Proxy qui permet de réveiller un mac à distance façon Wake On Lan

IOS utilise également Bonjour pour de nombreux services

  • AirPrint
  • AirPlay
  • Home Sharing
  • Apple Remote App

    vendredi 4 mai 2012

    Serveur VNC sur iPhone ou iPad

    Plusieurs applications de client VNC sont disponibles sur l'AppStore. En revanche les limitations de la sand box et des conditions imposées par Apple ne risque pas de rendre possible un serveur VNC d'ici peu. En revanche quand on a jailbreaké son iPhone c'est une autre histoire.

    L'application serveur VNC sur Cydia se nomme Veency. Elle permet d'activer / désactiver un serveur VNC sur le port standard 5900. La saisie d'un mot de passe est possible. Par défaut le serveur demande confirmation à l'utilisateur lorsqu'une demande de connexion est reçu.

    Pour la simplicité d'usage je conseille fortement d'installer l'interrupteur Veency Toggle dans SBSettings afin de pouvoir activer / désactiver Veency rapidement sans passer par l'écran paramètre.

    Si l'on veut accéder par Internet à son iPhone / iPad se pose le problème de l'adresse IP dynamique. On peut alors utiliser comme sur PC un utilitaire qui permet de mettre à jour un compte sur dyndns.org. Sur Cydia l'application en question se nomme iDNS. Elle offre la possibilité de se lancer automatiquement au lancement de l'iPhone.

    Avec ces deux programmes Veency et iDNS on peut configurer son téléphone ou sa tablette pour une prise de contrôle totale à distance.

    Compilation et signature d'une application XCode en ligne de commande

    Pour signer une application vous aurez besoin de votre clé privée et d'un fichier "mobileprovision" correspondant au "bundle identifier" de votre application. Il convient de noter que XCode stoque vos "mobileprovision" qui servent à signer les applications dans le répertoire suivant:

    /Users/UserName/Library/MobileDevice/Provisioning Profiles

    Les noms de fichier donnés par XCode aux "mobileprovision" n'étant pas très lisibles vous pouvez également organiser votre propre répertoire de profiles avec des noms plus explicites comme MaSuperAppAdHoc.mobileprovision.

    Pour compiler en ligne de commande le processus est le suivant:

    TARGETNAME=NomDeMonProjet
    BUILD
    TYPE=Release
    NAME=MaSuperApp
    TARGETSDK=iphoneos
    xcodebuild -target $TARGETNAME -sdk $TARGETSDK -configuration $BUILDTYPE PRODUCT_NAME=$NAME 2> /dev/null

    Le paramètre NAME est très pratique car il permet de modifier à la volée le nom de votre application tel qu'il apparait sur le bureau de l'iPhone.

    Le paramètre BUILTYPE peut contenir la valeur Release, Debug ou tout autre schéma de compilation que vous avez créé sous XCode. Par exemple MaSuperAppAdHoc ou MaSuperAppAppStore.

    Pour obtenir la liste des valeurs possibles dans TARGETSDK vous pouvez utiliser la commande:
    xcodebuild -showsdks

    Mac OS X SDKs:
       Mac OS X 10.6 -sdk macosx10.6
       Mac OS X 10.7 -sdk macosx10.7

    iOS SDKs:
       iOS 5.0 -sdk iphoneos5.0

    iOS Simulator SDKs:
       Simulator - iOS 4.3 -sdk iphonesimulator4.3
       Simulator - iOS 5.0 -sdk iphonesimulator5.0

    La signature de l'application se réalise avec la commande suivante:
    DEVELOPPERNAME="iPhone Distribution: Nom Prénom"
    PROVISONNING
    PROFILE="MaSuperAppAdHoc.mobileprovision
    /usr/bin/xcrun -sdk iphoneos PackageApplication -v "$NAME.app" -o "$NAME.ipa" --sign "$DEVELOPPERNAME" --embed $PROVISONNINGPROFILE

    Si vous cumulez toutes ces commandes dans un petit fichier script vous pourrez automatiser la compilation et la distribution de vos applications. Si en plus vous rajoutez un scp vers votre serveur de test vous pourrez distribuer vos applications en adhoc over the air en une seule étape.