Dans la série des choses bizarres que j'ai pu observer en furetant sur Internet, je vous présente l'authentification sécurisée de RIPE NCC. RIPE NCC, ce n'est rien d'autre que le centre de coordination des réseaux IP européens, autrement dit l'organisme en charge de la gestion des adresses IP sur le vieux continent. C'est cet organisme qui attribue des plages d'adresses IP aux sociétés, et qui leur offre le moyen de gérer leurs données. C'est aussi cet organisme qui est en charge du maintient des bases de données WHOIS pour les plages d'adresses IP dont il a la charge.
Authentification vous avez dit ?
Bien sûr, l'accès à ces données est protégée par une authentification, utile seulement pour l'ajout, la modification et la suppression d'enregistrements. Histoire que madame Michu ne puisse pas modifier les adresses de courriel associées à un mainteneur par exemple (très utilisées en cas d'abus, de phishing, ou que sais-je ...). D'ailleurs le RIPE NCC met à disposition une page explicitant les méthodes d'authentification supportées, ce qui inclut: * l'authentification par hash FreeBSD MD5 * l'authentification par certificat X.509 * l'authentification par clef PGP
Je ne vous cache pas que les deux dernières options sont mises en avant par le RIPE NCC, celui-ci précisant que l'authentification par hash FreeBSD MD5 est vulnérable à deux attaques: * le cassage de mot de passe (à partir du hash FreeBSD MD5) * l'interception du mot de passe (celui-ci étant notamment envoyé en clair dans les emails de mise-à-jour)
Hash MD5 vs PGP vs X.509
La question est donc posée: combien de mainteneurs emploient l'authentification par hash FreeBSD MD5 ? Pour répondre à cette question, rien ne vaut un bon vieux google dork:
site:apps.db.ripe.net "mntner: " "MD5-PW" ##NOMDESOCIETE##
Ce qui nous donne de beaux résultats, comme par exemple avec Microsoft:
Hé oui, l'authentification MD5 est présente, et seulement celle-là ! C'est aussi le cas de DEXIA, de BNP Paribas, d'ORACLE, et j'en passe. Le nombre de ces champs d'authentification n'est pas limité, il est donc possible de paramétrer plusieurs mots de passe pour un seul objet, ce qui rend la probabilité d'attaque plus grande. Avec le hack google présenté ci-dessus, on trouve énormément de mainteneurs qui utilisent ce type d'authentification, exposant de fait leurs données.
Il est d'ailleurs étrange de voir que le site de RIPE NCC propose à la consultation le contenu de ces champs d'authentification, qui ne sont absolument pas nécessaires au quidam. Peut-être que les cacher pourrait empêcher de les casser facilement ? Dire que des groupes de hackers exploitent des injections SQL en masse pour obtenir ces précieux sésames ... Alors que le RIPE NCC les donne publiquement ! Update: Ils ont publié depuis une note sur le site des labs du RIPE NCC concernant le futur de ces hashes MD5, cf [1].
Dans certains cas, l'authentification MD5 est couplée à une authentification par certificat ou clef PGP, comme c'est le cas par exemple pour le mainteneur RAIN-TRANSPAC:
Mais gros problème pour ce mainteneur, le mot de passe correspondant à un de ses hashes MD5 n'est absolument pas solide (7 caractères alphabétiques dont 1 majuscule, merci Sorcier_FXK) et peut autoriser la modification des objets dépendant de ce mainteneur (qui je le rappelle, correspond aux Réseau d'Accès à l'INternet, appartenant à France Telecom/Orange Business). Une fois le mot de passe retrouvé, il est aisé de modifier le contenu des enregistrements via le formulaire web dédié.
Quelques statistiques
Suite à cela, j'ai codé un petit outil qui se base sur un ancien top 100 des mainteneurs, afin de déterminer le pourcentage de ces mainteneurs utilisant les différents modes d'authentification proposés, et les résultats sont les suivants (sur 85 mainteneurs encore en activité):
Il s'agit de statistiques calculées assez rapidement, mais cela montre tout de même la prépondérance de l'authentification par hash FreeBSD MD5, et donc la vulnérabilité potentielle de ces objets mainteneurs.
Impact & responsabilités
Le site du RIPE NCC précise bien que l'authentification via hash FreeBSD MD5 est plus faible que l'authentification via PGP ou certificat X.509, seulement la grande majorité des utilisateurs historiques ont de prime abord opté pour cette méthode d'authentification, fragilisant de fait l'intégrité des données stockées dans la base de données du RIPE.
Il est donc de la responsabilité des mainteneurs d'éviter à tout prix l'emploi de ce mode d'authentification, et de lui préférer PGP ou l'emploi de certificats X.509. Quant au RIPE NCC, il est de leur responsabilité de ne pas diffuser les hashes FreeBSD MD5 afin de ne pas fragiliser l'intégrité des données de leurs utilisateurs.
EDIT: J'ai été contacté après coup par Stephane Bortzmeyer et Alix Guillard, le premier m'ayant donné de plus amples informations sur les ressources offertes par le RIPE NCC et le second m'ayant dirigé vers la mailing-list db-wg (database working group) du RIPE afin d'exposer mon point de vue. Un thread a été démarré, auquel j'ai apporté mon soutien: http://www.ripe.net/ripe/mail/archives/db-wg/2011-November/001993.html. En espérant que cela puisse permettre de faire avancer les choses. Merci à vous deux.
EDIT #2: Le RIPE NCC a publié le 09/11/2011 un billet sur le site des labs RIPE NCC explicitant le problème et envisageant de prendre les mesures adéquates, comme discuté sur la mailing-list db-wg.
[1] Le billet des labs RIPE NCC concernant l'authentification par hash FreeBSD MD5
Cela fait plus de six longs mois que je tente (en vain) de me motiver afin de développer une seconde version de mon application Youspot pour Android, et je me heurte à chaque fois à des barrières: pas assez de temps, application relativement complexe, manque de motivation pour coder la nuit (malgré le coca, je dois avouer). Bref, je n'en pouvais plus de ne pas pouvoir faire avancer ce projet aussi vite que je l'aurais voulu.
Alors j'en ai parlé autour de moi. Aux geeks qui me connaissent, aux collègues, etc ... Sur twitter aussi j'ai fait part de cette idée d'arrêter de tenter d'améliorer la version actuelle de Youspot, et plusieurs followers m'ont suggéré d'ouvrir les sources. Il est vrai que jusque là, j'avais conservé jalousement le code source de l'application, tout en sachant pertinemment que cela ne servait pas à grand chose, ayant réalisé pas mal d'analyse d'application Android. Je ne sais pas pourquoi je n'avais pas songé à diffuser le code plus tôt, certainement parce que celui-ci était mal/peu commenté. Certainement parce que je pensais pouvoir mener la barque de ce projet à terme.
La réalité m'a rattrapé: le boulot, la famille et le temps que j'ai investi dans Youspot ont eu raison de ma santé (ou presque), et j'accumule un grand nombre de projets personnels qui restent en stand-by à cause de Youspot. Bref, décision fut prise d'ouvrir les sources, et tant qu'à faire autant promouvoir git, car je suis en train de migrer mes projets de subversion à git. C'est donc tout naturellement que le code source de Youspot a atteri sur github (https://github.com/virtualabs/Youspot/). Le code source de l'application, les ressources graphiques ainsi que le code PHP du webservice sont disponibles, et a priori n'importe qui peut recompiler l'application, l'arranger à sa sauce et monter son propre serveur Youspot.
Ce que j'espère de tout cœur, en partageant ce code source d'application, c'est qu'il puisse montrer aux développeurs débutant sur Android comment coder (de manière pas très propre et conforme ISO1664) une application assez complexe; ainsi que permettre à une ou plusieurs personnes qui seraient intéressées par l'application de reprendre le développement de celle-ci. La version actuelle présente sur le Market ne sera pas retirée, et le site www.youspot.org restera actif (merci Corbier ;), je tiens à le préciser.
Merci à tous d'avoir testé et soutenu Youspot, peut-être du renouveau très bientôt ? Qui sait.
Suite aux différentes révélations de piratages de sites qui ont eu pour source des pastes effectuées sur pastebin.com et consors, je me suis intéressé de plus près à ces systèmes et aux usages courants de ceux-ci. Ces systèmes dits de pastebin sont très utilisés par des développeurs, ou même des internautes pour partager des séries de textes, comme des codes sources ou encore le contenu de fichiers de configuration. Ces partages peuvent être réalisés de manière publique ou non.
J'ai orienté mon analyse dans deux directions. La première est classique, il s'agit tout simplement de mesurer la résistance des sites de pastebin au harvesting, la seconde de sonder les usages fait par les utilisateurs du service. Je dois dire que la première direction me semblait tracée, quant à la seconde j'ai été quelque peu surpris.
{L'{harvesting ou comment dénicher des pastes perdues}}
Tout système de pastebin se doit d'implémenter certaines fonctionnalités, comme:
Ces fonctionnalités doivent être implémentées dans tout pastebin qui se respecte, cependant ce n'est pas le cas de tous ! J'ai pu notamment éplucher le fonctionnement de plusieurs pastebin qui ne répondent pas à ces critères, dont certains sont relativement connus et usités. Le critère le moins souvent respecté est le troisième que j'ai précédemment énoncé, celui qui consiste à donner un alias de paste qui ne soit pas aisément trouvable. Or bon nombre de pastebin se contentent de l'incrémenter, comme par exemple pastebin.archlinux.fr, paste.ubuntu.com ou encore pastie.org.
Il devient alors aisé de décrémenter le numéro référençant le paste, et de lister l'ensemble des contenus accessibles, dont notamment les pastes qui sont privées et ne devaient a priori pas être lues par tout le monde. Le non-respect de la troisième fonctionnalité implique ainsi une entorse possible à la seconde fonctionnalité.
Quant à la première, certains pastebins ne l'implémentent pas du tout, comme c'est le cas sur le pastebin de la distribution Ubuntu, qui conserve des pastes datant de 2007, comme par exemple ce paste.
J'ai donc développé un petit outil permettant de récupérer les données intéressantes qui pourraient se trouver dans ces différents pastebins, afin de les analyser et de pouvoir repérer les usages faits de ces outils de stockage de texte.
Et on creuse à la mode Minecraft ...
Muni de cet outil, j'ai tout simplement commencé à récupérer bon nombre de pastes publiques ou privées, et conservé que celles qui me semblaient pertinentes (présence d'URLs, de référence à des mots de passe, des identifiants, etc ...).
J'ai été surpris de découvrir les différents usages fait de ces pastebins, car à part le partage de code source ou de texte et la diffusion de textes indiquant le piratage de tel ou tel serveur, je n'avais envisagé seulement qu'une poignée d'utilisations possibles. Alors que la réalité est toute autre !
Certes, les bouts de code partagés sont dans certains cas très intéressants, comme celui-ci récupéré sur le pastebin d'Ubuntu et qui dévoile une portion de requête SQL en place sur launchpad.net (développé par Canonical, la même société qui supporte Ubuntu):
Traceback (most recent call last):
File "/srv/launchpad.net/codelines/current/scripts/ftpmaster-tools/sync-source.py", line 858, in ?
main()
File "/srv/launchpad.net/codelines/current/scripts/ftpmaster-tools/sync-source.py", line 853, in main
current_binaries = read_current_binaries(Options.tosuite)
File "/srv/launchpad.net/codelines/current/scripts/ftpmaster-tools/sync-source.py", line 483, in read_current_binaries
cur.execute(query)
psycopg.ProgrammingError: ERROR: column "published" does not exist at character 397
SELECT bpn.name, bpr.version, c.name
FROM binarypackagerelease bpr, binarypackagename bpn, component c,
securebinarypackagepublishinghistory sbpph, distroarchrelease dar
WHERE
bpr.binarypackagename = bpn.id AND
sbpph.binarypackagerelease = bpr.id AND
sbpph.component = c.id AND
sbpph.distroarchrelease = dar.id AND
sbpph.status = Published AND dar.id in (59, 60, 61, 62, 65, 63, 64)
Il est par ailleurs intéressant de noter que Canonical s'est servi de ce pastebin à des fins de partage de code interne, a priori sans se douter que n'importe qui pouvait le récupérer. On y trouve par ailleurs une donnée encodée en base64 qui ressemble étrangement à une clef publique SSH, dans les premiers pastes insérés dans le pastebin d'Ubuntu:
AAAAB3NzaC1yc2EAAAABIwAAAQEAnfeJoAXw+5hHrSgr09AQBLocDwlxguTAv7ZjbrWh09gbneg3Gl+lziraHUpIM3odvUhiWpKyjiPBPxBRyYdLijv774jxuZ34eDQ09U+L6ofsimB9dFuG0aduVJZCC/A6BAg9DZzXU9U6YdoYMlvvR9W7a9TUqE1Mtql0G30u0y1jTnguumosFllTCr1ww7AW4yu8UJz41OubwUiRSgNMhFSuPmqhf/v8v1Y38j2eeb6CvsZGMmPOQ2QqvHVc+mjbeqONDTuE0PFdHc86a59oejodEtpJuKw5FSmaxNCrQWJTZ+GkLRGHMwn3iNqOMWtUeud8IQBWdVRpIozirnP5Aw==
On trouve aussi des identifiants d'accès à différents services en fouillant un peu (les identifiants et mots de passe ont été modifiés):
ftp://3dsp_********@3dsp.com.cn/ user: 3dsp_******** passwd: m4r*** user: 3dsp_******** passwd: fw1***
Cette utilisation correspond à l'usage normal du pastebin, cependant on peut s'apercevoir très rapidement que ces systèmes sont aussi employés pour diffuser des versions crackées de jeux, comme le tout récend Dead Island, qui se retrouve sur fileserve en archive multi-parties et dont plusieurs pastes ont été réalisées sur différents pastebins, référençant les différents fichiers. Bon c'est du direct download, mais c'est certainement employé pour diffuser ces informations.
http://www.filesonic.com/file/188*******/D34d_I5la_Reloaded_By_EscorpionENS.part01.rar http://www.filesonic.com/file/188*******/D34d_I5la_Reloaded_By_EscorpionENS.part02.rar http://www.filesonic.com/file/188*******/D34d_I5la_Reloaded_By_EscorpionENS.part03.rar http://www.filesonic.com/file/188*******/D34d_I5la_Reloaded_By_EscorpionENS.part04.rar http://www.filesonic.com/file/188*******/D34d_I5la_Reloaded_By_EscorpionENS.part05.rar http://www.filesonic.com/file/188*******/D34d_I5la_Reloaded_By_EscorpionENS.part06.rar http://www.filesonic.com/file/188*******/D34d_I5la_Reloaded_By_EscorpionENS.part07.rar http://www.filesonic.com/file/188*******/D34d_I5la_Reloaded_By_EscorpionENS.part08.rar http://www.filesonic.com/file/188*******/D34d_I5la_Reloaded_By_EscorpionENS.part09.rar http://www.filesonic.com/file/188*******/D34d_I5la_Reloaded_By_EscorpionENS.part10.rar http://www.filesonic.com/file/188*******/D34d_I5la_Reloaded_By_EscorpionENS.part11.rar http://www.filesonic.com/file/188*******/D34d_I5la_Reloaded_By_EscorpionENS.part12.rar http://www.filesonic.com/file/188*******/D34d_I5la_Reloaded_By_EscorpionENS.part13.rar
Un autre usage observé, et qui se rapproche de ce que l'on a pu voir avec l'annonce sur ces systèmes de piratages de serveurs, est la publication de comptes email compromis, avec dans la grande majorité des cas le compte email et de manière optionnelle les mots de passe:
TARGET: Sony Pictures International [sonypictures.com] [exposed sonypictures.com database] NAME: sweepstakes - sptv_seinfeld_delboca_users EMAIL | PASSWORD 1@grandhaven.us | swe*** 10coleen@bellsouth.net | rox*** 121cabana@animail.net | a0a*** 123@11.com | 123*** 12347890@charter.net | 2ca*** 1369venom@gmail.com | tho*** 1544@comcast.net | mic*** 1709green@gmail.com | g9g*** 1948baby@comcast.net | mar*** 19jackson@comcast.net | den*** 1agordon@roadrunner.com | scr*** 1Chance4Laura@gmail.com | can*** 1colleenruth@q.com | yos*** 1koko2@gmail.com | spa*** 1l9b8w7b@gmail.com | 19L*** 1lindam@gmail.com | sca*** 1lizardqueen@gmail.com | bud*** 1redsox1@sbcglobal.net | cas*** ...
Dans le même style, certains pirates récupèrent des informations de keyloggers directement via des pastes:
---------------------------------------------------------- Program: Firefox Url/Host: http://aimbots.net Login: Swa******** Password: bax*** Computer: TROY-PC Date: 2011-05-08 22:53:23 Ip: 69.108.***.*** ---------------------------------------------------------- Program: Firefox Url/Host: http://www.d3scene.com Login: Swa******** Password: bax*** Computer: TROY-PC Date: 2011-05-08 22:53:23 Ip: 69.108.***.*** ---------------------------------------------------------- Program: Firefox Url/Host: http://www.fpscheats.com Login: taj********@yahoo.com Password: bax*** Computer: TROY-PC Date: 2011-05-08 22:53:24 Ip: 69.108.***.*** ---------------------------------------------------------- Program: Firefox Url/Host: http://www.fpscheats.com Login: Swa******** Password: bax*** Computer: TROY-PC Date: 2011-05-08 22:53:24 Ip: 69.108.***.*** ----------------------------------------------------------
Ou encore partagent des bouts de code PHP réalisant ce qui semble être un webshell (PHPJackal):
$intro="<center><table border=0 style='border-collapse: collapse'><tr><td bgcolor='#666666'><b>Script:</b><br>".str_repeat('-=-',25)."<br><b>Name:</b> PHPJackal<br><b>Version:</b> $v<br><br><b>Author:</b><br>".str_repeat('-=-',25)."<br><b>Name:</b> NetJackal<br><b>Country:</b> Iran<br><b>Website:</b> <a href='http://netjackal.by.ru/' target='_blank'>http://netjackal.by.ru/</a><br><b>Email:</b> <a href='mailto:nima_501@yahoo.com?subject=PHPJackal'>nima_501@yahoo.com</a><br><noscript>".str_repeat('-=-',25)."<br><b>Error: Enable JavaScript in your browser!!!</b></noscript>$et</center>";^M
$footer="$*msgbox*PHPJackal v$v - Powered By <a href='http://netjackal.by.ru/' target='_blank'>NetJackal</a>$et";
J'ai aussi pu identifier quelques annonces de carders, et foultitude de liens pointant sur des sites pornographiques, avec des accès valides (oui j'ai vérifié, et non je n'ai pas sali le clavier ou l'écran):
I'm Seller for: CC, CVV US,UK,CA, EURO,AU, Italian,Japan,France,...all cc. Paypal verify, Software Spam mail mail list, code PHP,Shop Admin and CC fullz info, CC DOB, Dump, Banklogin, Pri sock....Domain hosting. If you want to test you must send money for me Contact me if you need it: YahooID: sell_cvv.good89 You Send money => I send cvv2 good Payment via LR Sell Paypal account US reg 3 month ago: 18$/1 acc: Verified Sell Paypal account US: 10$/1 acc: Verified Sell Bank account info US: 7$ Sell PVN to ----> US : 8$/month ( Fake IP US) Sell Visa Debit US : 120$ "Sell cvv US UK AU EU full info live 100% good price 1 Sock live = 1$/1sock live > 5day ... http://123****:987****@members.collegefucktour.com/full/ http://Dre****:WP2****@americancatfighting.com/members/ http://caf****:mcf****@www.hioctanemag.com/membership/ http://epo****:epo****@members.larinlanexxx.com/ http://rom****:rom****@realspankingspremium.com/members/ http://ani****:ani****@www.beautygirl-story.org/ http://sam****:sam****@transworldasia.com/private/members/members-main.php http://713****:par****@readvintage.com/members/ http://JAS****:FIS****@www.blacksandmatures.com/members/v2/ ...
Conclusion
Actuellement, les pastebins servent de système de stockage (presque) anonymes, et autant les utilisateurs que les développeurs de pastebins (à l'exception de certains pastebins comme pastebin.com, et autres) ne s'y prennent pas comme il faut. En faisant cela, des données personnelles et/ou confidentielles sont exposées, et un petit malin récupérant l'intégralité des pastes régulièrement pourrait tomber sur des informations sensibles. Aucune limitation de requêtes n'est présente, pas de surveillance du contenu (supposé privé amha).
Le manque de protection par mot de passe ou de pastes consultables qu'une seule fois (via l'emploi de jetons) se fait rapidement sentir. Les développeurs de ces plateformes sont responsables de la sécurité des données insérées par les utilisateur, bien que la grande majorité se déchargent allègrement de cette responsabilité au travers de disclaimers comme celui-ci:
<quote>With great power comes great responsibility. Pastie wisely. </quote>
Toutefois, cela reste une très bonne source de recherche pour dénicher des informations sensibles, comme des comptes email/facebook compromis, des accès aux hotspots Neuf, des informations sensibles issues d'entreprises dont les employés partagent via ces systèmes, et pas seulement détecter la compromission d'un serveur. De même, les outils de veille technologique devraient intégrer l'indexation de ce type de contenu, contenant potentiellement (et temporairement dans certains cas) des données vitales concernant une personne ou une entreprise.