Protection contre le brute force

ViPHP
ViPHP | 2291 Messages

16 mai 2009, 00:47

Le HASH MD5 est une fonction irréversible, il n'existe pas d'algorithme ou de fonction permettant de retrouver la chaîne d'origine à partir de son HASH.
De plus si tu fais en sorte que cette signature change a chaque tentative tu peut sans trop de risque, dire que retrouver la valeur exact est pratiquement impossible.

Et je n'ai jamais dis que c'étais la solution ultime, mais je ne suis pas d'accord quand on dis que l'on va faire sauter ça en 5 minutes.

Mais bon j'insiste pas, il est tard je faire dodo :wink:
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

ViPHP
ViPHP | 5924 Messages

16 mai 2009, 01:43

Non, mais si le robot relit la page à chaque fois, il aura à chaque fois le bon nom du champ. Par contre, c'est plus gourmand…

ViPHP
ViPHP | 3300 Messages

16 mai 2009, 03:35

Le HASH MD5 est une fonction irréversible, il n'existe pas d'algorithme ou de fonction permettant de retrouver la chaîne d'origine à partir de son HASH.
De plus si tu fais en sorte que cette signature change a chaque tentative tu peut sans trop de risque, dire que retrouver la valeur exact est pratiquement impossible.

Et je n'ai jamais dis que c'étais la solution ultime, mais je ne suis pas d'accord quand on dis que l'on va faire sauter ça en 5 minutes.

Mais bon j'insiste pas, il est tard je faire dodo :wink:
barf, mais ca s'appuie sur le postulat que le robot a un quelconque interet de différencier le champ login du champ password, ce qui est faux, il n'a qu'a tester tous les champs avec toutes les valeurs cad que la ou il aurais testé "admin, root, route, toor" avec les passwords "test, truc, 1234, tmp" avec deux champs login et password identifiable il aurait fait si je compte bien 16 combinaisons avec ta méthode il la fait juste 32 fois, au lieu de 16, le facteur étant le nombre de champs, sur trois champs, ca ne change rien ou presque au temps que le robot mettra à casser ton login.

(si je dis des conneries sur les chiffres corrigez moi, il est 3h du mat jsuis au boulot depuis hier matin, et j'ai une bonne centaine d'heure de boulot dans les pattes cette semaine)
Fait du php depuis que ca existe ou presque :)

ViPHP
AB
ViPHP | 5818 Messages

16 mai 2009, 06:55

Oui ... je trouve que le plus simple est de mettre (entre autre) un temps d'attente pour la soumission du formulaire : par exemple si tu fais un sleep(3), le formulaire mettra 3 secondes pour être validé.

De fait le brut force qui compte sur un très grand nombre de soumissions devient impraticable.

On peut combiner ça avec un nombre maximum de tentatives avant que la session de validation ne devienne inopérante etc.

Rien qu'avec ces deux solutions et un pass réel constitué de la concaténation du login et du mot de passe (si les deux sont inconnus) et d'un grain de sel différent pour chaque post pour corser la chose, le tout généré en javascript, le brut force devient quasiment impossible de même que l'écoute passive des flux devient sans intérêt.

Après reste à l'utilisateur d'être vigilant par exemple en évitant de se connecter depuis un ordinateur ou un réseau qui enregistrerait les frappes claviers etc.

ViPHP
ViPHP | 3300 Messages

16 mai 2009, 08:43

je redis, encore une fois, une solution de timeout va mettre le serveur sur les genoux en cas de bruteforce, ça n'est pas souhaitable...
Fait du php depuis que ca existe ou presque :)

Mammouth du PHP | 693 Messages

16 mai 2009, 10:01

De même qu'il est coûteux de passer par un proxy anonyme pour s'affranchir de l'IP. Quand on doit faire un essai, ça passe tout seul, quand on doit en faire des millions, ce n'est pas viable…
Le hacker peut toujours utiliser un réseau de zombi pour s'affranchire de la limitation d'IP

ViPHP
ViPHP | 1136 Messages

16 mai 2009, 10:15

Les attaques par "brute force" proviennent souvent de la même adresse IP pendant un temps ..

exemple , il attaques pendant 10minutes avec l'IP A , puis l'attaque continue avec l'ip B pendant 10 minutes et ainsi de suite.

Le black-listage est donc la meilleurs solution .
Le hacker peut toujours utiliser un réseau de zombi pour s'affranchire de la limitation d'IP
Si tu te retrouves avec un million de machines qui t'attaquent par brute force d'un coup , je pense que la question ne se pose plus ...

ta machine est "out" quoi que tu fasses ...

:roll:

La meilleurs solution est de bloquer avant .. via ( netfilter iptables , mod_evasive ) , qui va te permettre de bloquer 98 % des attaques de lamers .

ViPHP
ViPHP | 5924 Messages

16 mai 2009, 10:18

De même qu'il est coûteux de passer par un proxy anonyme pour s'affranchir de l'IP. Quand on doit faire un essai, ça passe tout seul, quand on doit en faire des millions, ce n'est pas viable…
Le hacker peut toujours utiliser un réseau de zombi pour s'affranchire de la limitation d'IP
Oui, cela revient au même, mais c'est compliqué à mettre en place. Déjà il faut programmer en distribué dans ce cas. Ensuite, Le problème est le même, pour faire une tentative, il faut :
- Trouver un nouveau pc non utilisé dans sa farm
- Lui envoyer l'instruction
- Récupérer le résultat
Et ce des millions de fois. Et quoi qu'on en dise, cela reste bien moins efficace que si on ne met pas de restriction sur l'IP, car les communications et traitements additionnels pour organiser cela retardent énormément le processus…
Modifié en dernier par Sékiltoyai le 16 mai 2009, 10:20, modifié 1 fois.

ViPHP
ViPHP | 5924 Messages

16 mai 2009, 10:19

je redis, encore une fois, une solution de timeout va mettre le serveur sur les genoux en cas de bruteforce, ça n'est pas souhaitable...
Euh, je ne vois pas en quoi il va faire tomber le serveur…

ViPHP
AB
ViPHP | 5818 Messages

16 mai 2009, 10:32

je redis, encore une fois, une solution de timeout va mettre le serveur sur les genoux en cas de bruteforce, ça n'est pas souhaitable...
Bah ça dépend de comment le code est géré, dépend aussi de l'administration du serveur...

Au pire même si le serveur est à genoux (et pour des administrateurs serveurs un peu sérieux il ne le sera pas longtemps), au moins il ne sera pas piraté par la force brute. Et comme ceux qui utilisent cette technique cherchent l'efficacité avant tout, cela risque peu de se produire.

A ce niveau là si les pirates sont "intelligents" ils chercheront une autre porte d'entrée, sinon ils se feront vite jeter par des programmes standards de surveillance serveur.

ViPHP
ViPHP | 2291 Messages

16 mai 2009, 11:57

il aurait fait si je compte bien 16 combinaisons avec ta méthode il la fait juste 32 fois, au lieu de 16
(si je dis des conneries sur les chiffres corrigez moi, il est 3h du mat jsuis au boulot depuis hier matin, et j'ai une bonne centaine d'heure de boulot dans les pattes cette semaine)
32 possibilités pour une signature MD5 ,moi je dirais plutot environ 3,4 x 10^38 .
En plus a chaque tentative c'est pas un caractère qui change mais toute la signature.(les 32)
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

ViPHP
ViPHP | 3300 Messages

16 mai 2009, 19:34

il aurait fait si je compte bien 16 combinaisons avec ta méthode il la fait juste 32 fois, au lieu de 16
(si je dis des conneries sur les chiffres corrigez moi, il est 3h du mat jsuis au boulot depuis hier matin, et j'ai une bonne centaine d'heure de boulot dans les pattes cette semaine)
32 possibilités pour une signature MD5 ,moi je dirais plutot environ 3,4 x 10^38 .
En plus a chaque tentative c'est pas un caractère qui change mais toute la signature.(les 32)
mais t'es bête ou quoi?

le bot il en a rien à battre que ca soit du md5 relis mon poste jusqu'à ce que ca rentre, je peux pas faire plus clair si tu comprends pas tant pis.
Fait du php depuis que ca existe ou presque :)

ViPHP
ViPHP | 2287 Messages

16 mai 2009, 22:30

Le HASH MD5 est une fonction irréversible, il n'existe pas d'algorithme ou de fonction permettant de retrouver la chaîne d'origine à partir de son HASH.
dunbar, à partir du moment ou tu abordes les choses sous l'angle de la sécurité, certaines vérités ne sont simplement plus vraies.

D'un point de vue de développeur traditionnel, ce que tu dis est vrai, on ne peut pas retrouver de manière fiable un élément à partir de sa signature md5 dans l'absolu. Mais un attaquant ne va pas chercher la fiabilité, si il arrive à le faire une fois sur cent alors cela suffira pour ses besoins. Il y arrivera d'autant mieux s'il sait grosso modo à quel genre d'informations il a affaire.

Un peu de lecture pour te présenter la technique : http://fr.wikipedia.org/wiki/Philippe_Oechslin

(je ne vais pas trop détailler la technique ici, bonne lecture).
if(!@work()){ Nespresso(); } else { what(); }
______________________________

ViPHP
ViPHP | 2291 Messages

17 mai 2009, 11:27

mais t'es bête ou quoi?
Non (ou peut-être) simplement borner de temps en temps sorry. :wink:
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

ViPHP
ViPHP | 3300 Messages

17 mai 2009, 11:46

mais t'es bête ou quoi?
Non (ou peut-être) simplement borner de temps en temps sorry. :wink:
moi c'est pire jsuis breton...
Fait du php depuis que ca existe ou presque :)