Clavier virtuel anti-keylogger

ViPHP
AB
ViPHP | 5818 Messages

09 janv. 2012, 18:38

Bah c'est pas bien compliqué à faire :

Tu génère un sel en php (valeur aléatoire) que tu enregistre par exemple dans une variable de session. Cette valeur est transférée dans un champ hidden du formulaire (pour faciliter sa récupération).
A la soumission du formulaire tu récupère cette valeur en javascript, tu la concatène au mot de passe et tu hache le tout (toujours en javascript), et c'est ce hash résultant que tu envoie en ayant pris soin d'effacer le contenu du champ du mot de passe.

A réception tu fais ta requête sur le login et tu vérifie que le mdp concaténé au sel puis hasché correspond à la valeur du post. Et cela n'empêche pas d'avoir des mdp hachés dans ta bdd (si oui tu fais un premier hash sur le mdp en js avant de faire la concaténation puis le hash de l'ensemble).

Si cela ne vaut pas le https, c'est un moyen d'avoir bien plus de sécurité pour ceux qui ne l'utilisent pas. Tu trouveras certainement de nombreux exemples en tapant "technique grain de sel" ou "technique grain de sable" dans google.

Eléphant du PHP | 52 Messages

09 janv. 2012, 23:30

Tu peux jeter un œil sur le site de la banque postale.
Merci, pas mal du tout ce clavier virtuel. Effectivement, si ils changent les chiffres de position, c'est qu'il y a des logiciels sur mesure qui ont du
essayer de capter les claviers comme le mien. (Le mien est ok pour une pme, mais bien sûr pas pour une banque connue).

Par contre, l'idée de lire les chiffres à haute voix, c'est une belle faille de sécurité. J'imagine le jardinier un peu véreux, qui écoute aux portes,
pendant que la "mamie du Cantal" saisit son code "secret" :D
Au niveau sécurité, sur la page de réception du formulaire tu envoies un jeton (ou token) par SMS ou par email généré aléatoirement (valide seulement quelques instants ) et que l'utilisateurdoit rerentré pour finaliser son authentification.
Le mot de passe à usage unique. effectivement, intéressant à utiliser sur un réseau non sûr. un hotspot wifi par exemple. y a de l'idée, merci.
Tu génère un sel en php ........ puis le hash de l'ensemble).
Non, ça peut pas marcher pas ton idée:

Il suffit que je sniffe avec WireShark ton mdp qui est hashé avec un token aléatoire de session (ou ce que tu veux)...
Il ne me reste plus qu'à me connecter et comme ta session est ouverte, côté serveur il va tester avec ton sel crée pour la session et le résulat sera bon. Bim t'es mort, je suis entré.

Attention aux faux bricolages de sécurité : car tu te crois sécurisé. C'est encore pire. :non:

ViPHP
AB
ViPHP | 5818 Messages

10 janv. 2012, 05:35

Il suffit que je sniffe avec WireShark ton mdp qui est hashé avec un token aléatoire de session (ou ce que tu veux)...
Il ne me reste plus qu'à me connecter et comme ta session est ouverte, côté serveur il va tester avec ton sel crée pour la session et le résulat sera bon. Bim t'es mort, je suis entré.

Attention aux faux bricolages de sécurité : car tu te crois sécurisé. C'est encore pire. :non:
Pour ce faire, cela suppose aussi que tu sniffe mon cookie de session ce qui est quand même beaucoup plus restrictif car il faut que tu aies accès au réseau sur lequel je me connecte, que tu cible ma connexion et que tu te connecte en temps donné pendant que ma session est ouverte. En fait on en revient à un simple vol de session mais le fait de pirater le hash (sel+mdp) ne te sert à rien... et ne te servira pas par la suite.

Par ailleurs je ne t'ai donné que les grandes lignes du principe...

Où est le pire ?

Avec ton système, c'est beaucoup plus simple, il suffit d'avoir accès au réseau puis d'enregistrer les post. Au retour du café, il suffira de récupérer les post et l'on pourra se connecter ensuite quand on veut, on a tout son temps. Mieux encore si ton mpd transite en clair on pourra aussi essayer de se connecter sur d'autres sites fréquentés par la personne piratée. Royal !

Donc je te conseillerai quand même de bricoler un minimum, parce que les spécialistes du vol qui me disent que si je n'ai pas une porte blindée, autant ne pas fermer ma porte à clef mais plutôt la laisser grande ouverte, cela me laisse assez perplexe (litote) sur leurs compétences, voire sur leurs intentions :wink:

Eléphant du PHP | 52 Messages

10 janv. 2012, 08:47

Pour ce faire, cela suppose aussi que tu sniffe mon cookie de session ce qui est quand même beaucoup plus restrictif car il faut que tu aies accès au réseau sur lequel je me connecte,
Tu as présenté ta solution comme pouvant protéger un mdp circulant en http face à un sniffer (en disant que https n'est pas la seule solution).
Je t'ai simplement montré que ton hashage du mdp (même avec ton sel temporaire) ne sert à rien face à WireShark puisque je me connecte sans même connaitre ton mdp. Evidemment qu'il faut être sur ton réseau puisqu'on parle de sniffer. Mais ça montre que ta "solution" ne sert à rien face à un sniffer.
que tu cible ma connexion et que tu te connecte en temps donné pendant que ma session est ouverte. En fait on en revient à un simple vol de session mais le fait de pirater le hash (sel+mdp) ne te sert à rien... et ne te servira pas par la suite.
Ce que tu ne comprends pas, c'est que je n'ai plus besoin de ton mot de passe si j'ai réussi à me connecter une seule fois avec tes droits.
Suffit de poser une backdoor pour revenir quand je veux.
Avec ton système, c'est beaucoup plus simple, il suffit d'avoir accès au réseau puis d'enregistrer les post.
Mon script n'est ni une protection contre les sniffers, ni contre l'admin du réseau. Par contre il protège à 100% des keyloggers. C'était le but.
La seule solution en http contre l'admin du réseau et le sniffer est le mot de passe à usage unique envoyé par sms par exemple.
Mais c'est plus lourd à mettre en place. Mais ça me semble être le système le plus efficace.
Donc je te conseillerai quand même de bricoler un minimum, parce que les spécialistes du vol qui me disent que si je n'ai pas une porte blindée, autant ne pas fermer ma porte à clef mais plutôt la laisser grande ouverte, cela me laisse assez perplexe (litote) sur leurs compétences, voire sur leurs intentions :wink:
Non, le spécialiste ne te dit pas ça. Tu as mal compris. Ils te disent que ça ne sert à rien d'avoir une porte blindée fermée à clef si ta fenêtre est fragile.
Exemple : Twitter s'est fait piraté par Hacker Croll (qui pouvait même rediriger le nom de domaine et se connecter en admin, a pris le compte d'Obama, etc).Peut importe les sécurités ajoutées pour blindées Twitter : Il a suffi de répondre aux questions secrètes de la boite e-mail de la femme du co-fondateur de Twitterpour prendre le contrôle entier du site. La porte était blindée, mais il y avait une fenêtre ouverte par laquelle le fûté Hacker Croll est entré.

Mon script remplit sa fonction anti-keylogger. Par contre, ton idée ne remplissait pas sa fonction anti-sniffer.
C'est une différence essentielle. :wink:

ViPHP
xTG
ViPHP | 7331 Messages

10 janv. 2012, 09:19

Au niveau sécurité, sur la page de réception du formulaire tu envoies un jeton (ou token) par SMS ou par email généré aléatoirement (valide seulement quelques instants ) et que l'utilisateurdoit rerentré pour finaliser son authentification.
Pitié ne faites pas comme la poste (et sans doute d'autres banque) avec leur fichus SMS !!!
Vous êtes conscient que rien n'implique qu'un SMS arrive dans la minute ? Le délai d'acheminement n'est pas fiable et peut compter jusqu'à plusieurs jours des fois et ce pas qu'en période de nouvel an.
A chaque fois que je dois faire un virement je dois reprendre l'opération en moyenne 3 fois car je reçois toujours le SMS trop tard...

Eléphant du PHP | 52 Messages

10 janv. 2012, 09:39

Pitié ne faites pas comme la poste (et sans doute d'autres banque) avec leur fichus SMS !!!
Vous êtes conscient que rien n'implique qu'un SMS arrive dans la minute ?
Bigre!! Tu soulèves un autre problème... J'avais pas pensé à ça... Moi aussi je reçois mes SMS avec des plombes de retard :)
Mais je vois pas d'autre solution pratique pour se faire envoyer un mot de passe à usage unique.

Genre le système que propose Hotmail, mais je l'ai pas testé: http://explore.live.com/windows-live-si ... e-code-faq?

Se faire envoyer le mot de passe de connexion sur le téléphone portable mets bien à l'abri d'un keylogger ou d'un sniffer...
Mais ouvre une belle faille de sécurité :

Exemple: Le mec veut pirater la boite email ou l'accès admin de son patron : Il attends que celui-ci laisse son téléphone portable quelques minutes sans surveillance,et se fait envoyer le mot de passe à usage unique par SMS, puis efface le SMS. Totale discrétion et piratage réussi.

Juste pour montrer que pour chaque protection, on peut imaginer une façon de la feinter... :mrgreen:

[Edit:] Je viens de tester avec Hotmail. Il est très facile d'espionner la boite e-mail de son mari ou de sa femme avec ce système.
Encore plus facile que la question secrète. Gardez bien votre téléphone près de vous, amis paranos... lol
Modifié en dernier par Jim125 le 10 janv. 2012, 12:02, modifié 1 fois.

ViPHP
ViPHP | 4039 Messages

10 janv. 2012, 11:21

<input type="button" value="6" id="6" onClick="clavier(6);"><br />
<input type="button" value="7" id="7" onClick="clavier(7);">
<input type="button" value="8" id="8" onClick="clavier(8);">
<input type="button" value="9" id="9" onClick="clavier(9);"><br />
<input type="button" value="0" id="0" onClick="clavier(0);"><br /><br />
Des identifiants numériques ? :shock:
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Eléphant du PHP | 52 Messages

10 janv. 2012, 11:46

Bien vu Berzemus! J'ai corrigé.

ViPHP
AB
ViPHP | 5818 Messages

11 janv. 2012, 00:01

Tu as présenté ta solution comme pouvant protéger un mdp circulant en http face à un sniffer (en disant que https n'est pas la seule solution).
Je t'ai simplement montré que ton hashage du mdp (même avec ton sel temporaire) ne sert à rien face à WireShark puisque je me connecte sans même connaitre ton mdp. Evidemment qu'il faut être sur ton réseau puisqu'on parle de sniffer. Mais ça montre que ta "solution" ne sert à rien face à un sniffer.
Nan tu fais des amalgames... j'ai dit que cela protégeait le mpd, je n'ai pas dis que cela empêchait les vols de session car c'est bien de cela qu'il s'agit dans ta technique de piratage. En d'autres termes, cela n'empêche en rien de sniffer le hasch mais le hasch récupéré est inutilisable et le mdp est donc bien protégé.
Ce que tu ne comprends pas, c'est que je n'ai plus besoin de ton mot de passe si j'ai réussi à me connecter une seule fois avec tes droits.
Suffit de poser une backdoor pour revenir quand je veux.
Ce que tu ne comprends pas, c'est que c'est hors sujet. Je dit que la chaine du hash qui est snifée est inutilisable, je ne dis pas qu'il est impossible de pirater le site en usurpant la session.
La seule solution en http contre l'admin du réseau et le sniffer est le mot de passe à usage unique envoyé par sms par exemple.
Mais c'est plus lourd à mettre en place. Mais ça me semble être le système le plus efficace.
Pas mieux et toujours avec le même principe : l'admin réseau peut toujours noter tes identifiants de session et se connecter pendant que ta session est ouverte et faire ce qu'il veux. Pas besoin de mdp puisqu'il reprend ta session.
Mon script remplit sa fonction anti-keylogger. Par contre, ton idée ne remplissait pas sa fonction anti-sniffer.
C'est une différence essentielle. :wink:
Tu fais d'abord des amalgames puis ensuite tu parles de "différence essentielle", un peu à la manière d'un homme politique qui veut se vendre en nous prenant pour des billes :mrgreen: Je te rapelle qu'à la suite de ce message :
Peu importe que le mot de passe transite en clair, chiffré, encodé en base64 ou hashé. Un pirate qui récupérerait ton mot de passe "hashé" n'aurait qu'a le taper telquel pour se connecter au site. Hasher un mot de passe n'est utile que pour le stocker en base de donnée. Attention à cette notion de sécurité.
Le seul moyen pour que ton mot de passe ne transite pas en clair c'est le HTTPS.
...je t'ai répondu cela :
... le https n'est pas le seul moyen : il suffit de concaténer le mdp à un grain de sel à chaque fois différent et de hascher le tout. Ainsi la valeur qui transite dans les tuyaux n'est valable qu'une seule fois pour une session unique.
Cette technique empêche donc d'utiliser le hash récupéré car il n'est n'est d'aucune utilité : un pirate qui récupérerait le "hash" n'aurait pas qu'à le taper tel quel pour se connecter au site.

A la suite de quoi tu me répond que ma technique ne peut pas marcher car tu peux tout aussi bien voler mon identifiant de session pour me pirater, mais cela n'a rien à voir : il n'en reste pas moins que le pirate qui récupérerait le hash n'aura pas qu'à le taper tel quel pour se connecter au site, alors qu'autrement effectivement il n'aurait qu'à... ce qui est LA différence à laquelle je répondais.
Non, le spécialiste ne te dit pas ça. Tu as mal compris. Ils te disent que ça ne sert à rien d'avoir une porte blindée fermée à clef si ta fenêtre est fragile.
Ben si justement, c'est là le problème de ton raisonnement. La quasi totalité des cambrioleurs commenceront par tester la porte d'entrée. Seuls les plus motivés et expérimentés feront le tour du bâtiment pour trouver les failles. C'est à dire que dans un cas tu t'expose à toutes les techniques de piratage, même par des pirates amateurs ou occasionnels tentés par autant de facilité, alors que dans l'autre cas tu as filtré le type de cambriolage possible et tu connais mieux les conséquences possibles :

- 1/ mot de passe en clair :
Le vol du mot de passe suffit. Ce mot de passe peut être utilisé pour le site lui-même ou pour d'autres sites pour peu que la victime choisissent souvent le même mdp, ce qui constitue une faille de sécurité majeure dans le sens où les répercutions peuvent être innombrables. A noter qu'on pourrait aussi pirater une session pour accéder à l'espace admin mais ce n'est pas nécessaire et le vol du mpd est potentiellement beaucoup plus rentable.

- 2/ mot de passe hasché : Le vol du hash suffit pour le site en cours ou éventuellement d'autres sites mais à condition qu'ils utilisent le même hashage. A noter qu'on pourrait aussi pirater une session pour accéder à l'espace admin mais ce n'est pas nécessaire et le vol du mpd est potentiellement plus rentable.

- 3/ mot de passe+sel(changeant) hasché : Le vol du hash est possible mais ne sert à rien. Seule une usurpation de session permettra d'accéder à l'espace admin.

Si tu ne t'aperçois pas qu'il y a une différence je te souhaite bon courage le jour où tu devras déclarer un vol à ton assureur.
J'imagine un dialogue assez savoureux :
- "Ben si m'ssieur j'ai pris toutes les précautions contre le vol des mdp sur le réseau : c'est à dire que comme je suis un spécialiste je n'en ai pris aucune car les pirates aguerris pourront toujours contourner la protection pour se connecter comme admin. :D "
- "Nan... c'est pas possible ! même pas le minimum ? :x Vous vous rendez compte que le pirate s'est servi du même mpd pour allez ailleurs et tout bousiller. Si vous aviez fait au moins le minimum, cela n'aurait pas été possible !
- "Mais, heu... :| "
- "C'est carrément du pousse au crime, on assure pas ce genre de sinistres, ça relève de la provocation :roll: "
- "Nan pour vous prouver ma bonne foi, regardez j'avais fait un clavier anti-keylogger" :)
- "Ah ben oui, vous avez blindé la fenêtre mais laissé la porte grande ouverte, dommage que vous ayez été spécialiste... :!: "
- "Mais, heu... 8-| "


Bon après tu vas me dire qu'il est toujours possible d'épiloguer pour savoir ce qui représente le plus de danger... mais dès lors que tu développe un anti-keylogger c'est bien pour protéger les mots de passe saisis, alors si tu t'arrête là et que tu ne les protège pas pour leur transfert dans les tuyaux, tu n'as fait que la moitié du travail (et encore pas certain que cela représente la moitié du danger).

En résumé (ouf j'arrive à la fin) :
On est tout à fait d'accord qu'il est possible de se faire pirater un site par usurpation de session dès lors que l'on est derrière un proxy et sans ssh. Mais cela est totalement indépendant du fait de pouvoir récupérer et surtout pouvoir utiliser ou non les chaines de caractères servant à l'authentification. Et les conséquences peuvent être autrement plus dangereuses car dans le second cas elles peuvent être cumulatives.
Tu comprends mieux comme cela ?

Eléphant du PHP | 52 Messages

11 janv. 2012, 01:51

- 3/ mot de passe+sel(changeant) hasché : Le vol du hash est possible mais ne sert à rien. Seule une usurpation de session permettra d'accéder à l'espace admin.
Ok, alors je te propose de tester ton système avec mon sniffer, c'est le plus simple.

Code ta page de connexion et ta page d'authentification et mets le code source ici qu'on teste ton système. :wink:

Je mettrai ça sur mon site web, puis je snifferai ça sur mon réseau avec WireShark. Si tu as raison, je serai le premier à te féliciter.

ViPHP
AB
ViPHP | 5818 Messages

11 janv. 2012, 03:11

Oui bien sûr je vais te donner tous les détails de mon code de connexion... :lol:
J'en ai connu des optimistes, mais alors là, mais alors là... tu dépasses les bornes des limites :lol:

Bon en partant du plus simple évoqué plus haut et en utilisant sha1, concernant le formulaire tu vas pouvoir sniffer le résultat de

$champ_envoi = sha1($sel+sha1($mdp));

et tu pourras aussi sniffer $sel et $login.

Donc il ne te restera plus qu'à faire tourner ta machine en force brute (dictionnaires exclus à cause du sel) pour tenter de trouver $mdp. Et si ce mot est assez long avec des caractères spéciaux compris, tu risque de ne pas trouver le résultat avant que le site ait disparu du web...

En admettant que tu te contente d'essayer d'utiliser $champ_envoi (qui change à chaque fois) pour te connecter, encore faudra-t-il que tu pirate ma session pour avoir une réponse validée par le contrôle du mdp en bdd concaténé à la variable de session $sel enregistré sur le serveur. Rien n'est impossible si tu choppe mon cookie de session mais dans ce cas tu as usurper ma session, et de fait tu es déjà connecté et donc $champ_envoi ne te sert à rien. En d'autres termes, ce n'est pas le fait de sniffer $champ_envoi qui te permet de pirater le site, c'est le fait de pouvoir pirater ma session.
Enfin toujours est-il que tu ne dispose pas de $mdp donc la conséquence de ton piratage se limite au site piraté.

Eléphant du PHP | 52 Messages

11 janv. 2012, 14:16

Je vois pas à quoi sert ta "protection" en fait.
Puisqu'un sniffer peut en un seul clic voler aussi ta session et afficher ta page dans mon navigateur.

Même si le pirate ne connait pas ton mot de passe, il s'en fout. ton site vient de se faire pirater non ?
Donc il peut déjà défacer ton site, l'effacer, piquer tes infos, etc. Ca t'inquiète pas ??? :shock:

Tu utilises vraiment ton sytème sur un hotspot wifi public ??? J'espère que tu ne le mets pas sur les sites de tes clients... :priere:

ViPHP
xTG
ViPHP | 7331 Messages

11 janv. 2012, 15:06

Et c'est pas justement ce qu'AB dit dans son message ?
En d'autres termes, ce n'est pas le fait de sniffer $champ_envoi qui te permet de pirater le site, c'est le fait de pouvoir pirater ma session.
Tu veux tellement avoir raison et que les autres aient tord que tu ne lis pas les réponses...

Eléphant du PHP | 52 Messages

11 janv. 2012, 16:02

Et c'est pas justement ce qu'AB dit dans son message ?
En d'autres termes, ce n'est pas le fait de sniffer $champ_envoi qui te permet de pirater le site, c'est le fait de pouvoir pirater ma session.
Tu veux tellement avoir raison et que les autres aient tord que tu ne lis pas les réponses...
T'emporte pas! on discute informatique, c'est tout! Tu vois le mal partout toi! :mrgreen:

Nan, j'ai bien lu. Mais je ne vois pas l'utilité de hasher le mot de passe avant envoi. Pour que le pirate ne puisse pas utiliser le mot de passe sur d'autres sites ? Il vaut mieux utiliser un mot de passe différent sur chaque site. C'est mettre un pansement sur une jambe de bois là... :)

ViPHP
AB
ViPHP | 5818 Messages

11 janv. 2012, 21:01

Je vois pas à quoi sert ta "protection" en fait.
Puisqu'un sniffer peut en un seul clic voler aussi ta session et afficher ta page dans mon navigateur.

Même si le pirate ne connait pas ton mot de passe, il s'en fout. ton site vient de se faire pirater non ?
Donc il peut déjà défacer ton site, l'effacer, piquer tes infos, etc. Ca t'inquiète pas ??? :shock:

Tu utilises vraiment ton sytème sur un hotspot wifi public ??? J'espère que tu ne le mets pas sur les sites de tes clients... :priere:
Si tu veux engager le jeu avec un service aussi pataud, tu vas finir par te prendre des retours de services gagnants, jeune jedi :)

Pareil pour ton clavier virtuel, il ne protège pas du vol de session et donc :
Je vois pas à quoi sert ta "protection" en fait.
Puisqu'un sniffer peut en un seul clic voler aussi ta session et afficher ta page dans mon navigateur.

Même si le pirate ne connait pas ton mot de passe, il s'en fout. ton site vient de se faire pirater non ?
Donc il peut déjà défacer ton site, l'effacer, piquer tes infos, etc. Ca t'inquiète pas ??? :shock:

Tu utilises vraiment ton sytème sur un hotspot wifi public ??? J'espère que tu ne le mets pas sur les sites de tes clients... :priere:

:mrgreen: :mrgreen:
Nan, j'ai bien lu. Mais je ne vois pas l'utilité de hasher le mot de passe avant envoi. Pour que le pirate ne puisse pas utiliser le mot de passe sur d'autres sites ? Il vaut mieux utiliser un mot de passe différent sur chaque site. C'est mettre un pansement sur une jambe de bois là... :)
Je partage l'avis d'xTG, non seulement tu veux avoir raison mais en plus il faudrait que se soit au détriment des autres. Et pour cela tu es prêt à faire des amalgames, travestir les réponses, quitte à finalement presque recommander de faire transiter les mots de passe en clair, ce qui est pour le moins irresponsable.

Dis franchement, tu crois réellement que l'on t'a attendu pour se renseigner sur la sécurité informatique des sites web ?
Le danger du vol des sessions est indiqué dans le manuel php pour peu qu'on lise les chapitres sur les sessions.

Par ailleurs, de qui est le premier message qui t'indiquait de modifier à chaque fois la position des touches sur ton clavier virtuel pour améliorer la sécurité, alors que tu ne t'étais pas encore posé la question, même pas en rêve ?

Pour terminer, un petit conseil : arrêtes un peu ce comportement puéril et pédant que révèle tes phrases avec un "...tu ne comprends pas..."
Qui t'as dis que l'on ne comprends pas ? Ce genre de préambule est tout juste "digne" d'un discours politique de petit chef tel qu'on en trouve jusqu'au plus haut sommet de la hiérarchie :wink: , et n'est utilisé que pour tenter d'influencer les personnes sans expérience, ou celles qui préfèrent avoir des réponses plutôt que de se poser des questions, ou encore les Alzheimer. Mais dans la vraie vie, la majorité des personnes un tant soi peu responsables jugent après analyse des arguments, pas sur des plans de vente ou des plans de communication. Tu crois encore aux messages publicitaires ? Si ta réponse est non, alors évites de nous en imposer, car en ce faisant tu perds dès le départ toute crédibilité quand bien même ce que tu dirais par la suite serait intéressant.
Aussi je t'appelais plus haut "jeune jedi", parce que quelle que soit la force de ton bâton laser, je constate que tu le maitrise fort mal, de sorte que n'importe quel quidam un peu expérimenté pourra te faire tomber avec un simple bâton de bois.
Bonne continuité dans l'apprentissage de la maîtrise de "la force", tu en auras besoin si tu veux devenir crédible et reconnu dans un milieu professionnel :wink: