Commentaires fermés sur Caméras IP, toi aussi D-Link

Intro

Ces derniers temps, les caméras de surveillances IP n’ont pas bonne presse. On a d’abord eu en janvier Trendnet qui, possédant une faille de sécurité, laissait n’importe qui voir la vidéo. Il y a deux semaines, c’était les chipsets Hi35xx des caméras H.264 sur lesquels on découvrait une faille de sécurité majeure qui permettait de récupérer tous les mots de passes enregistrés (mails & co). Aujourd’hui parlons un peu de D-Link.

Dans le cadre de mon travail de fin d’études en informatique, j’ai étudié le cas d’une caméra D-Link, la DCS-2130, le genre de caméra bon marché que l’on peut utiliser pour surveiller sa maison pendant son absence ou s’assurer que bébé dort bien.

Si vous voyez ceci dans une vitrine d’un magasin, passez votre chemin…

Cette caméra utilisant des logiciels sous licence GPL, D-Link a été contraint de publier également le code source de son firmware sous GPL. Je vous avais déjà expliqué sur ce blog mes déboires pour le récupérer ; toujours est-il qu’il est disponible ici.

Lors de mon analyse, j’ai découvert plusieurs faiblesses en terme de sécurité. Je vais détailler les deux principales ici, l’analyse complète peut être lue au chapitre 6 de mon rapport[pdf, 2,2 MB, en].

Compte invité

Depuis l’interface d’administration de la caméra (accessible à l’adresse IP de la caméra), il est possible d’exporter la configuration de la caméra. Ce fichier contient en clair tous les paramètres et mots de passes enregistrés (très moyen, imaginez qu’il y aie une faille similaire à celle des caméras H.264…). C’est en consultant ce fichier que je me suis rendu compte de la présence d’un compte avec le login et mot de passe guest.

acounts0_name=admin
acounts0_passwd=mypass
acounts1_name=guest
acounts1_passwd=guest
acounts1_authority=2

Que permet le droit d’accès 2 ? De consulter le flux vidéo !
A la configuration de la caméra, lors du premier lancement (où l’on utilise un superbe utilitaire en ActiveX), il n’est jamais mentionné la présence de ce compte. On a même un faux sentiment de sécurité vu l’obligation de spécifier un mot de passe au compte administrateur. Or tous les possesseurs d’une DCS-2130 (et surement d’autres modèles, il faudrait tester) possède un tel compte.

Pire encore : il n’est apparemment pas possible de supprimer ce compte. L’interface d’administration possède un formulaire pour la suppression de comptes ; sauf en cas du compte invité. En effet, dans le code source, j’ai trouvé ce bout de code responsable de ce comportement dans la fonction uri_user_del :

#ifdef CONFIG_BRAND_DLINK
else if(i == 1){
DBG("You can not delete the guest accunt!n");
break;
}
#endif

On a donc un code (faute d’orthographe d’origine) qui interdit la suppression d’un compte caché permettant l’accès à la vidéo. Je crierais bien à la backdoor si c’était pas aussi gros.

Est-ce exploitable ? Oui ! Des centaines de caméras D-Link sont accessibles via une adresse IP publique. (lorsque son possesseur à configuré un port forwarding). On peut le découvrir facilement via un bête scan sur un range d’IP (avec un script comme celui-ci) ou en utilisant un outil très bien foutu, ShodanHQ, moteur de recherche de routeurs, serveurs et autres appareils tel que des caméras IP. Une simple recherche à DCS-2130 liste des adresses IP auquel il y a de grande chance d’avoir un compte guest disponible. Assez dérangeant.

Capture d'une caméra

Hmm voila qui est fâcheux…

Ne jetez pas encore votre caméra (quoique), il est heureusement possible de régler cela via une petite manipulation que j’ai découverte :

  1. Exportez la configuration de la caméra et ouvrez le fichier dans un éditeur de texte
  2. Cherchez la ligne contenant acounts1_name=guest (ligne 514 chez moi) et remplacez la par acounts1_name=.
  3. Faites la même chose à la ligne suivante (acounts1_passwd=).
  4. Sauvez le fichier et importez le sur l’interface d’administration

La nouvelle configuration de votre caméra ne possèdera donc plus de compte invité et sera (partiellement) à l’abri des yeux indiscrets.

Fichier de log

Lors de l’analyse du firmware, j’ai découvert que Boa, serveur web minimaliste, hard-codais toutes les URI avec les droits d’accès et la fonction à exécuter dans un fichier request.c (le même fichier qui contenait la fonction de suppression de compte). Par exemple :

{"/ipcam/stream.cgi", uri_av_stream, AUTHORITY_VIEWER, URI_FLAG_VIRTUAL_PAGE, NULL},
{"/cgi-bin/loadconf.cgi", NULL, AUTHORITY_OPERATOR, 0, NULL},

A la première ligne, l’URI /ipcam/stream.cgi exécute la fonction uri_av_stream pour tous les utilisateurs ayant les droits AUTHORITY_VIEWER (comme le compte invité). A la deuxième, l’URI /cgi-bin/loadconf.cgi exécute directement le fichier binaire du même nom pour tous les utilisateurs avec les droits AUTHORITY_OPERATOR (comme le compte admin).

Maintenant, question subsidiaire : que se passe il lorsque qu’il existe un fichier, disons /cgi-bin/exportlog.cgi qui se trouve dans les fichiers sur le serveur mais pas dans la liste hard-codée avec les permissions ? N’importe qui peut l’exécuter, admin, invité ou même un simple visiteur. Comme son nom l’indique, ce fichier exporte le log de la caméra qui contient ce genre d’info :

2012-05-24 21:01:29 NETWORK LOST
2012-05-24 21:01:29 SD CARD SIZE 7620040 KB
2012-05-24 21:01:34 NETWORK RECONNECT
2012-05-24 21:03:15 admin LOGIN OK FROM 193.44.55.11
2012-05-25 15:40:38 IP CAMERA Received MOTION Trigger
2012-05-25 15:40:41 MOTION STOPPED

Il n’y a, heureusement, pas de mots de passe mais des informations potentiellement sensibles comme des logins, des adresses IP et surtout, des événements comme l’outil de détection de mouvements qui s’active.

Conclusion

Quelles sont les conséquences concrètement de ces deux failles ? Imaginons un voleur un peu geek voulant planifier son vol, s’il se rend compte qu’une caméra IP est accessible (soit depuis l’intérieur du réseau soit depuis une adresse IP publique), il pourra voir accès à beaucoup d’information qui lui faciliteront la tâche. Il pourrait connaître les heures de fréquentation des habitants, repérer les lieux et connaître les endroit à éviter. Un comble pour un outil supposé vous protéger.

Si l’on s’introduit sur le réseau wifi

Étant donné la nature du second problème, en l’attente d’une mise à jour (si elle vient), il n’est pas possible d’empêcher ce comportement sans corriger le code manuellement, compiler le firmware (marche à suivre ici) et charger votre build. C’est possible mais c’est à vos risques et périls, je n’ai personnellement pas tenté l’expérience. Cependant, voici un fichier request.c pour le serveur Boa qui, théoriquement, devrait régler à la fois le problème de la suppression du compté invité impossible (suppression du bout de code responsable) et rendre le fichier de log inaccessible pour les non-administrateurs (ajout d’une règle). Si D-Link, qui n’a toujours pas répondu à mon email du mois de juillet, voulait l’utiliser, c’est cadeau.

Si l’on connaît l’adresse IP publique du réseau

Dans cette étude, je n’ai regardé qu’a un seul modèle de caméra choisi arbitrairement. Aucune étude de sécurité n’avait été faite dessus auparavant (du moins que j’ai trouvé) et elle avait de bonne critique. Cela ne veut pas dire que toutes les caméras sont mauvaises ou que D-Link est un mauvais élève (on a vu des problèmes similaires chez d’autres marques). Je pense que cela représente bien le risque de confier des choses sensibles (des images de l’intérieur de sa maison) à des appareils sur lesquels on ne sait rien et qui n’ont pas été pensé dans une optique de sécurité. On peut espérer que la multiplication des problèmes découverts sur ce genre d’appareils va sensibiliser les constructeurs et possesseurs à faire plus attention à ces problèmes.

Je fais un rapide article pour annoncer une nouvelle qui me fait très plaisir : je viens de finir mon travail de fin d’études. À quelques formalités près, je suis désormais (presque) diplômé d’un master en informatique, elle est pas belle la vie (potentiel employeur, tu peux me contacter par mail). Bon, on est pas là pour parler de moi mais du papier que j’ai pondu et dont je suis suffisamment fier que pour vouloir en parler.

Privacy concerns with everyday technologies: case study of Android phones and wireless cameras

Pour résumer, cela concerne toute la problématique de la vie privée, largement sous-estimée lorsque l’on utilise des technologies devenues très courantes. On considère ces technologies pour une fonction et non comme un système informatique (sur lesquelles on ne va pas faire de mise à jour par exemple), ici en particulier, Android et les caméras wifi personnelles.

Pour mon étude de cas Android, je me suis concentré sur les capacités de localisation avec les abus de permissions. C’est-à-dire voir comment une application peut, sans utiliser aucun bug ou faille de sécurité, avoir des comportements assez dérangeants. Pour l’exemple, j’ai créé une application DroidWatcher qui enregistre la position de l’utilisateur toutes les 15 minutes et les envoie sur un serveur, le tout avec un système de commande par SMS.

Pour les caméras, la méthode était un peu différente mais le résultat similaire. Ces caméras que l’on utilise pour protéger notre vie privée, est-ce qu’elles sont bien sécurisées et empêchent les abus ? Pour ça, j’ai utilisé une caméra D-Link dont j’avais récupéré le code source (tant bien que mal) et puis fait une petite analyse complète de la sécurité. Spoiler alerte : elle est très mauvaise par défaut (c’est-à-dire pour 99% des caméras). Et si un voleur utilisait votre caméra pour faciliter son vol ? Un comble…

Bien entendu, le tout est publié sous licence libre (CC BY-SA pour le texte, GPL pour le code) et est disponible sur gitorious.

Des articles plus approfondis (au moins sur la caméra) devraient voir bientôt le jour mais vous pouvez déjà lire tout ça via le pdf. J’espère que ça va intéresser certains et n’hésitez pas à me faire part de vos retours.

ACTA est mort hier au vote du parlement 39 pour, 478 contre. C’est génial, le peuple gagne, on a enfin fait comprendre à ces politiciens et géants qu’on ne se laisserait pas faire ! Et de deux après SOPA, 2012 s’annonce bien.

Bon, maintenant qu’on a pu faire péter le Champomi toute la nuit, il faut réaliser que, merde, on est encore loin du compte en fait. Pour un web libre, sans contrôle abusif de gouvernements et grosses compagnies qu’est ce qu’il reste à faire ? Une liste non-exhaustive des choses qui pourrissent l’internet:

Tant de choses face auxquelles on est quasi impuissant. Personnellement faire cette liste m’a donné envie de baisser les bras et aller élever des chèvres à Sulawesi.

Heureusement, il y a des gens qui n’ont toujours pas dit leur dernier mot et parfois, la masse arrive à faire changer les choses.

En bref: ne nous réjouissons pas trop vite mais ne perdons pas courage !

Le web n’oublie rien

6 septembre 2011

Le web est un endroit formidable pour tous les gens qui veulent s’exprimer. Que ce soit via une vidéo de chat, un status ou simplement pour donner son opinion.

Il serait triste que tout ça disparaisse. Que ce soit à cause de censure ou simplement de site qui ferme. Pour lutter contre ça, présentation aujourd’hui de The Internet Archive et Resurrect this page.

The Internet Archive

The Internet Archive est une organisation à but non lucratif qui, comme son nom l’indique (presque), archive le web.

Le projet, créé en 1996, à pour but de constituer une bibliothèque numérique regroupant pages web, logiciels, vidéos, livres et enregistrement audio. L’organisation a d’ailleurs le status officiel de bibliothèque, en faisant partie de l’American Library Association (attention aux faux amis).
Un robot d’indexation (libre), Heritrix, parcours le web et sauvegarde ainsi des millions de pages récoltées. Chaque nouvelle sauvegarde ne remplace pas la précédente pour qu’il soit possible de toutes les consulter.

Via the Wayback Machine (ou !archive avec DDG), toutes ces archives sont consultables facilement. Il est ainsi facile de regarder l’évolution d’un site en comparant les snapshots mémorisés.
Comment avoir son site indexé ? Il faut que le robot passe sur votre site. Si de nombreux liens externes pointent vers votre site, il y a plus de chance qu’il soit indexé. La page d’accueil de ce site a, par exemple, été indexé une fois en avril ainsi que 64 autres pages.

Vous vouliez vraiment priver nos enfants de ça ?

En plus de Wayback (qui est clairement leur projet le plus populaire), Internet Archive a par exemple développé Open Library dont le but est de créer une page pour chaque livre jamais publié (oui rien que ça).
Ils numérisent également les livres disponibles dans le domaine publique. Ils auraient à ce jour, 6 millions d’auteurs, 20 millions de livres référencés et un million de livres numérisés.
Le code source du site web est publié sur GitHub.

Autre projet intéressant de Internet Archive : 301works qui a pour but de mémoriser toutes les urls réelles des réducteurs d’url en cas de fermeture du service (une des raisons qui rend ces services craignos).

Resurrect this page

Resurrect this page est un addon pour firefox open source qui rend un grand service à nous autre, deadlinkophobe (la peur des liens morts). D’un simple clic droit sur n’importe quelle page ou lien, vous pouvez consulter le cache à propos de cette page parmi :

  • CoralCDN
  • Google Cache
  • Yahoo! Cache
  • The Internet Archive
  • MSN Cache
  • Gigablast
  • WebCite

Si vous arrivez sur une page d’erreur, celle ci possède désormais quelques boutons pour consulter le cache en un clic.

Vade retro 404

Bon évidement faut que votre page soit indexée mais c’est quand même assez souvent le cas (au minimum avec le cache google pour les sites pas trop fréquentés).

Et pour finir, en vrac quelques liens qui peuvent être intéressant dans la rubrique « le web n’oublie rien » :

  • L’effet Streisand ou pourquoi la censure peut aider à la diffusion d’une information
  • Projet autoblog qui permet de répliquer facilement des articles de blog et ainsi contrer la censure (faudra que j’en installe deux ou trois)
  • La Library of Congress des US qui archive tous les tweets des gens
  • Et finalement si vous avez compris que le web n’oublie rien, vous pouvez toujours essayer de noyer le poisson

Depuis environ une semaine, j’ai changé ma page d’accueil de Google par DuckDuckGo. Bon ma page d’accueil n’était pas réellement Google, mais InfiniseGo avec Google par défaut ; seulement je n’en ai plus besoin maintenant !

Pour ceux qui ne connaissent pas, DuckDuckGo.com ou simplement DDG, est un moteur de recherche alternatif assez intéressant.
En plus d’avoir une sympathique tête de canard comme logo (déjà un bon argument en soit), ce site a comme préoccupation principale le respect de votre vie privée.

Google, comme la plupart des gros moteurs de recherche, fait de la collecte de donnée via vos recherches pour faire du profiling. Avec ça, on peut vous donner des pubs ciblées et compagnies. DDG ne le fait pas.

Le message est clair

Mais ils vont plus loin (sinon l’intérêt est un peu limité). Le site est entièrement en https pour éviter les oreilles indiscrètes sur le réseau. Ils offrent une personnalisation du thème du site assez sympa (possible d’inclure un flux twitter par exemple), des raccourcis, avoir le choix d’afficher ou non les publicités sur la page de recherche (qui ne vous traquerons pas) et j’en passe.

Autre point intéressant, les catégories de recherche. Imaginons que vous faites une recherche sur les robots android mais que vous n’êtes pas intéressé par le système d’exploitation du même nom, voici à quoi ressemble le résultat de la recherche :

fini les ambiguités

En sélectionnant la bonne catégorie, les résultats seront limité à ce sujet. A droit de l’écran, on vous propose quelques propositions de mots clés supplémentaires.

Est-ce que les résultats sont aussi précis que ceux de google ? Malheureusement non, ce dernier à eu le temps et l’argent pour arriver à un algorithme des plus efficaces et l’on est pas prêt de le détrôner.
Le profiling de Google permet également de trouver des résultats plus personnalisés. Quand je vois des liens avec Linux remonter assez haut pour des recherches non liées, je suis évidement suspicieux. Cela permet parfois des résultats plus précis mais c’est parfois fort désagréable.

Et puis, je gardais le meilleur pour la fin : les !Bang. DDG permet de personnaliser les recherches via de très nombreux mots clés. Un point d’exclamation suivit d’un certain mot permet d’utiliser le moteur de recherche de ce site en question. Explication :
Si je veux faire une recherche youtube du dernier clip d’Amy Winehouse, je pouvais soit taper dans Google « amy winehouse youtube » (et trier les résultats) ou aller sur le site en question (faut taper l’url, pfff) et faire ma recherche dans son moteur de recherche. Avec DuckDuckGo, je peux aussi simplement taper « !youtube amy winehouse » ou même « !yt amy winehouse » (!y étant pour yahoo).
Si je trouve les résultats DDG pas assez précis, « !g mot clef » pour aller sur google, !gi pour les images, !gbe pour google.be,…

Ils ont une liste assez gigantesque de !Bang disponible. !w, !python, !archlinux, !man, !torrentz, !tw, !traceroute, !jamendo,… 1343 aujourd’hui mais si vous voulez en rajouter, il suffit de leur demander.
Le fait de passer par l’intermédiaire de DDG (qui fait une redirection), permet d’éviter d’être tracer par le moteur de recherche en question.

Si vous utilisez uniquement un ! suivit de votre recherche, vous passez en mode « I am feeling ducky », référence au bouton « I am feeling lucky » de google, qui vous amènera directement au premier résultat de la recherche.
Non vraiment ce système fait que je peux rester sur le même site pour toutes mes recherches.

Ah j’oubliais, DuckDuckGo supporte l’open source, en proposant une partie de ses outils sur GitHub et en reversant 10% de ses revenus à des projets libres.

Faites passer le mot, testez et utilisez le !

css.php