Bon, soit.
J’ai mis en place ça hier à titre de test : https://0bin.net/.
Pour le moment je vais pas faire de redirection car j’attends de voir si le truc tient.
La bonne nouvelle, c’est que comme l’installation est juste nginx + zerobin, il n’y a pas eut grand chose à faire : lancer un script, le laisser nous identifier et installer les dependances pour qu’il génère le certificat et faire pointer le dit certificat par nginx.
La moins bonne nouvelle c’est que notre archi pour sametmax.com et indexerror.net est basé sur client => varnish => nginx => worker => site.
Il faut donc mettre le certif au niveau de varnish.
Mais comme vous vous en doutez bien, il fallait que ça couille : support de https est un truc récent sur varnish et notre version ne le supporte pas. Donc il reste à :
Oh, du boulot en plus, je ne m’y attendais tellement pas…
Merci à tous ceux qui ont proposé et fourni de l’aide néanmoins. C’est cool d’avoir du soutien parmi ses lecteurs.
Pendant ce temps, et ça n’a rien à voir, un lecteur s’est amusé à brute forcer des hashs de mots de passe qu’on avait leakés connement et a trouvé celui de max au bout de quelques jours. Il nous a gentiment envoyé le résultat de ses recherches par mail. Ce n’est pas ironique, hein. J’apprécie que quand quelqu’un trouve que tu es à poil il te le fasse savoir avec précision et honnêteté.
Du coup va falloir aussi changer tous les mots de passe du blog et de indexerror.
Comme ce n’est pas une question de sécurité nationale, je ne suis pas en mode bersek à vouloir faire ça dans la minute, mais sachez-le : changez vos mots de passe à l’occasion. Personne ne va violer votre sœur demain si vous ne le faites pas, mais mieux vaut prévenir que guérir.
Oh, du boulot en plus, je ne m’y attendais tellement pas…
]]>On note l’usage de crypt, qui évite de se faire chier à trouver le bon algo de hashing et gère le salt automatiquement. spwd, c’est vraiment pour le grosses larves comme moi qui veulent même pas faire un split
.
Et c’est du Python 3, yo dog !
import io
import os
import crypt
import spwd
from urllib.request import FancyURLopener
from zipfile import ZipFile
PASSWORDS_SOURCE = "http://xato.net/files/10k%20most%20common.zip"
PASSWORDS_LIST = '10k most common.txt'
# Le fichier ZIP est derrière cloudflare, qui vous ferme la porte au nez si
# vous n'avez pas de User-Agent. On va donc créer un UrlOpener, un objet qui
# ouvre des ressources en utilisant leurs URLs, qui a un User-Agent 'TA MERE'.
# CloudFlare ne check pas que le UA est valide.
class FFOpener(FancyURLopener):
version = 'TA MERE'
# Si le dictionnaire de passwords n'est pas là, on le télécharge
# via FFOpener().open(PASSWORDS_SOURCE).read(). C'est verbeux, c'est urllib.
# Normalement je ferais ça avec requests. Ensuite on lui donne une interface
# file-like object avec io.BytesIO pour que ZipFile puisse le traiter en mémoire
# sans avoir à le sauvegarder dans un vrai fichier sur le disque, et on
# extrait le ZIP.
if not os.path.isfile(PASSWORDS_LIST):
ZipFile(io.BytesIO(FFOpener().open(PASSWORDS_SOURCE).read())).extractall()
# On extrait les mots de passe de la liste sous forme de tuple car c'est rapide
# à lire. Un petit rstrip vire les sauts de ligne.
passwords = tuple(l.rstrip() for l in open(PASSWORDS_LIST))
# spwd.getspall() nous évite de parser le fichier shadow à la main.
for entry in spwd.getspall():
print('Processing password for user "%s": ' % entry.sp_nam, end='')
# Pas de hash ? On gagne du temps avec 'continue'
if not '$' in entry.sp_pwd:
print('no password hash to process.')
continue
# On teste chaque password avec la fonction crypt, qui accepte en deuxième
# paramètre le hash du mot de passe complet. Pas besoin de se faire chier
# à le spliter, il va analyser les '$' et se démerder avec ça. On a juste
# à comparer le résultat avec le hash d'origine.
for pwd in passwords:
if crypt.crypt(pwd, entry.sp_pwd) == entry.sp_pwd:
print('password is "%s".' % pwd)
# On break pour gagner quelques tours de boucles, et pouvoir
# utiliser la condition 'else'.
break
else:
print('fail to break password.')
]]>Consigne :
Créer un script de brute force de passwords Unix par dictionnaire.
Puisqu’on est pas non plus des Kevin Mitnick en puissance, on va supposer que vous êtes connectés sur la machine, que vous avez les droits root dessus et que vous avez localisé les mots de passe comme étant dans “/etc/shadow”.
Votre script va vérifier si il possède un dictionnaire de mots de passe. Si ce n’est pas le cas, il va télécharger celui-ci et le décompresser : http://xato.net/files/10k%20most%20common.zip.
Ensuite vous parcourez le fichier shadow, et vous essayez de trouver quel mot de passe se cache derrière chaque hash. Si il n’y a pas de hash, vous pouvez ignorer l’utilisateur.
Exemple de sortie:
Processing password for user "root": no password hash to process. Processing password for user "daemon": no password hash to process. Processing password for user "bin": no password hash to process. Processing password for user "sys": no password hash to process. Processing password for user "www-data": no password hash to process. Processing password for user "sam": fail to break password. Processing password for user "test": password is "cheese". Processing password for user "messagebus": no password hash to process. Processing password for user "avahi-autoipd": no password hash to process. Processing password for user "avahi": no password hash to process. ...
Afin de simplifier l’exercice, il n’est pas demandé de gestion d’erreur ou de passage en a paramètre du script.
Comme d’habitude, il n’y a pas de solution ultimate de la mort qui tue, c’est juste pour le fun.
]]>Sortir avec une vraie cochonne ne veut pas dire qu’elle va faire tout le boulot. Or Max et moi sommes tout à fait ouvert à l’expérimentation, même si ce n’est probablement pas pour les mêmes choses. Ainsi je me suis un jour retrouvé menotté à un lit avec divers accessoires et résidus de nourritures sur des parties variées de mon anatomie, quand quelque chose s’est mal passé.
Avec le recul, c’était marrant. D’ailleurs, la miss qui avait les clés a trouvé ça tellement poilant qu’elle a pensé à prendre une photo AVANT de me détacher. J’ai voulu une copie du cliché, parce qu’il y a des performances qui méritent un souvenir, et le transfert a eu lieu par clé USB.
Quand la dite clé a été utilisée par la demoiselle pour faire passer un Power Point à un collègue de travail, elle a pu comprendre toute l’utilité des thumbnails de preview automatique des fichiers JPEG sur les OS récents.
Dans un de mes appartements précédents, j’avais une salle de bain avec un petit muret et un grand miroir. On pouvait y faire toute sorte de choses à deux, que j’ai pris en photos avec mon portable pour faire passer les moments de solitude pendant les voyages.
J’ai supprimé les clichés du téléphone pour les mettre sur mon ordinateur. Machine que j’ai perdu lors d’un voyage. Je me demande encore aujourd’hui si celui qui a trouvé mon sac a reformaté la machine. A-t-il la main sur les photos de mes acrobaties en tandem ? Les a-t-il mis en ligne ?
Honnêtement, je ne suis pas très pudique, sinon je n’écrirais pas ce blog. Sauf que non seulement ce genre de situation est dangereux pour sa propre crédibilité, mais en plus je ne suis pas seul sur ces images. Et généralement, la gente féminine accepte beaucoup moins bien ce genre de pub.
Truecrypt est un logiciel libre qui fonctionne sous Windows, Mac et Linux. Il permet de créer un fichier de taille personnalisable (plusieurs Go si besoin) chiffré, qui peut être monté comme une partition. Sans le mot de passe, le fichier ressemble à une soupe de bits (sans jeu de mot). Une fois monté avec le mot de passe, il devient une partition ordinaire, et on peut l’utiliser comme telle de manière parfaitement transparente: créer des dossiers et des fichiers, copier, coller, etc.
Inutile de dire que je met maintenant systématiquement tout matériel d’ordre intime sur cette partition. En cas de fuite, je sais qu’une personne non autorisée aura bien du mal à lire son contenu. Cela ne me dispense pas de faire la chasse aux restes sur les supports amovibles, et ça ne me libère pas de l’idée que les copies en la possession de mes ex partenaires ne sont pas aussi bien protégées. Mais c’est un bon début.
Voilà un vrai argument pour l’usage de TrueCrypt: pas l’attaque des chinois du FBI ou votre soudaine reconversion en terroriste suicidaire, mais l’existence même du cul.
Car on peut faire bien plus que ça: copiez par exemple le dossier .mozilla, .thunderbird et .purple sur la partition puis faites un lien dans le dossier utilisateur. Et hop, voilà votre historique de navigateur, vos fichiers mails et vos traces de chats chiffrés. Votre historique qui contient des URL de sites douteux, vos alertes mails de “Adopte un mec” non désactivées alors que vous êtes en couple depuis 6 mois et les archives de la création de nouveaux smileys hyper novateurs avec votre maîtresse sur Gtalk: ils sont maintenant protégés. Si en plus vous utilisez OTR et GPG, vous gagnez 2 de TAC0 en back stab.
Et le double effet kisscool, c’est que faire un backup de toutes ces données précieuses ne prend qu’un copier/coller du fichier TrueCrypt (vous faites des sauvegardes, hein ?). Backup qui par nature est lui aussi protégé. Tous ces bénefs sans ralentir votre ordinateur, puisque seules des données très précises sont chiffrées, pas toute votre partition utilisateur (ce qui en plus est le plus sur moyen de tout perdre si votre ordi grille). Bon ok, peut être que l’affichage du browser en cas d’usage du cache prend 0.1 ms de plus.
Au passage j’ai aussi mon dossier .ssh et .bitcoin dedans, ça ne mange pas de pain. Le prix à payer est seulement d’entrer son mot de passe (que vous avez choisi bien long et compliqué) quand on désire utiliser un logiciel qui lit ou écrit dans ces dossiers.
Certes, ont peut toujours vous baiser en installant un keylogger, un rootkit bien vicieux ou avec une clé à molette. Mais c’est tellement mieux que d’avoir les données en clair sur le disque.
]]>Seb a une proposition assez sympas pour créer des mots de passe pour chaque service en ligne qui soient robustes et faciles à retenir. Mais je n’arrive pas à m’y faire: c’est un système qui me demande de trop réfléchir. De plus ça ne fonctionne pas aussi bien quand on a pas de site Web sur lequel appliquer le principe.
XKCD propose une autre approche. Ca marche niquel, mais choisir 4 mots au hasard ne me parle pas.
Voici deux autres approches que j’utilise, l’important étant d’en offrir une variété pour rendre le piratage plus délicat.
Si vous ouvrez le Larousse, vous verrez qu’en son centre il y a des pages roses qui correspondent à une liste de proverbes et de locutions latines ou étrangères. En les parcourant vous vous apercevrez qu’il y en a plein que vous connaissez par cœur, car elles sont ancrées dans notre culture.
Il suffit tout simplement d’utiliser une de ces phrases comme mot de passe, en incluant la ponctuation.
Par exemple:
Qui vole un oeuf, vole un boeuf.
Ce mot de passe est très facile à retenir, mais il contient 29 caractères, parmi lesquels 5 espaces, 2 caractères spéciaux et une majuscule. C’est naturellement difficile à cracker, mais facile à retenir, et assez rapide à taper une fois qu’on l’a rentré une dizaine de de fois.
Bien sûr un attaquant pourrait bruteforcer le mot de passe en utilisant toutes les locutions les plus connues, mais qui va savoir que vous utilisez une locution ?
Quand bien même, on peut très facilement pimenter le mot de passe:
Qui vole un oeuf, vole un boeuf, bordel de merde !
Et voilà un mot de passe solide comme un roc, et léger comme une plume pour votre cerveau. Cela marche aussi avec une citation célèbre (Life is hard and then you die.), un extrait de chanson (Petit frère veut grandir trop vite…), ou la réplique d’un personnage dans un film (Cours Forrest, cours !).
Si vous n’êtes pas du genre culturé, ou que vous avez comme moi un humour bizarre, il existe une autre technique.
Ex: José Bové vache \o/
21 caractères dont 2 majuscules, 2 caractères non ASCII, 3 espaces et 2 caractères spéciaux. Et en plus vous allez vous poiler à chaque saisie. Le plus beau, c’est qu’il suffit de saisir le mot de passe une seule fois pour s’en souvenir tellement c’est débile.
Sachant que le personnage et l’animal peuvent être imaginaires, je vous laisse imaginer les combinaisons possibles.
]]>
jQuery Visual Password est un plugin jQuery qui répond à cette question sans avoir à mettre le mot de passe en clair : il créé une image unique depuis le mot de passe, puis l’affiche. L’image se met à jour au fil de la frappe.
Impossible de se tromper, l’image change radicalement si on change le moindre caractère. Et pour cause, ça utilise VizHash.js :-)
Essayez :
On me sussure à l’oreille que ça peut être pratique pour les mails aussi, car c’est plus facile de voir si une image est changée que de chercher une faute de frappe.
On pourrait imaginer la même chose pour un champ d’adresse bitcoin, ou une signature PGP, un clé SSH, un hash de commit Git, etc.
]]>