Yahoo detaliat

 :: More
 :: HacKs

Vezi subiectul anterior Vezi subiectul urmator In jos

Frumos Yahoo detaliat

Mesaj Scris de s!mpLE la data de Joi Oct 30, 2008 9:48 am

In primul rand vreau sa-mi cer scuze pentru inevitabilele greseli de ortografie deoarece sunt multe subiecte
pe care vreau sa le acopar in acest articol si nu am timp sa mai si verific ce am scris deja.

Urmatorul articol este rezultatul a vreo doua saptamani de cautari, teste, munca si nervi si va acoperi
cateva aspecte ale Yahoo'ului cred eu destul de interesante pe care poate ca unii dintre voi le cunoasteti deja,
scopul fiind sa clarifice cateva "mituri" despre Yahoo si sa raspunda la unele din intrebarile pe care poate vi
le-ati pus vreodata.


PARTEA I. Algoritmul de codare "yahoo64"

Acest algoritm este folosit de Yahoo oriunde trebuie transformat un sir de caractere neprintabile intr-un
sir de caractere printabil.
Se numeste "codare" si nu "criptare" deoarece nu ofera absolut nici o protectie pentru sirul de caractere de
codat. Fara a intra in aspecte criptografice trebuie metionat ca yahoo64 este foarte asemanator cu base64
insa are un charset extins.
Charsetul yahoo64 este urmatorul "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789._"

yahoo64 are cateva caracteristici distincte care trebuie mentionate:
> toate caracterele din stringul codat fac parte din charsetul de mai sus
> lungimea stringului este multiplu de 4
> in functie de lungimea stringului initial, la sfarsitul stringului criptat ultimele caractere pot fi "-"
sau "--".

Pentru mai multe detalii studiati cele doua functii php(pentru codare si decodare) de la sfarsitul acestui
articol.




PARTEA II. Analiza tokenului Yahoo

Din cate am observat pana acum tokenul Yahoo este o insumare a userului si parolei de Yahoo, unic pentru
fiecare username in parte dar care se modifica (doar partial) la schimbarea parolei.
In esenta posesia acest token exprima ca posesorul este fie userul fie o entitate care are permisiunea
userului de a actiona in numele acestuia pe serverele Yahoo.

Un user isi poate obtine acest token prin accesarea linkului urmator:


https://login.yahoo.com/config/pwtoken_get?src=ymsgr&login=[USERNAME]& passwd=[PASSWORD]


unde [USERNAME] si [PASSWORD] sunt o combinatie username/parola Yahoo VALIDE.

Utilitatea acestui token este ca poate oferi oricand un COOKIE valid de Yahoo.


https://login.yahoo.com/config/pwtoken_login?src=ymsgr&token=[TOKEN]


Un exemplu de raspuns la un reqest catre "https://login.yahoo.com/config/pwtoken_get" poate fi acesta:


0
ymsgr=AGG6e0diD9m.3D4YlFPVcdBT1wFXKSBWP0Hl.gyQKd.qec8-
partnerid=KSBWP0Hl.gyQKd.qec8-


"ymsgr" este tokenul despre care am vorbit mai devreme si dupa cum se observa "partnerid" face parte din acest
token (la sfarsit). Acest "partnerid" este unic pentru fiecare utilizator in parte si nu se modifica la schimbarea
parolei, iar lungimea acestuia variaza in functie de lungimea username'ului.

Dupa cum se poate observa lungimea tokenului este de 48 si se termina cu un "-" deci este evindent codat
cu yahoo64. Dupa decodare obtinem urmatorul sir de caractere (unde fiecare 2 caractere reprezinta valoarea
hexadecimala a unui singur caracter din tokenul decodat):


00 61 BA 7B 47 62 0F D9 BE DC 3E 18 94 53 D5 71 D0 53 D7 01 57 29 20 56 3F 41 E5 FA 0C 90 29 DF AA 79 CF


La toate tokenurile pe care le-am vazut pana acum primul caracter este intotdeauna "0x00"
Urmatoarele 4 caractere reprezinta timestampul (numarul de secunde care au trecut din 1-1-1970) la care userul
a fost creeat sau cand parola a fost schimbata, doar ca timestampul este inversat deci pentru exemplul de mai
sus timestampul va fi 0x477BBA61 (decimal 1199290977) adica "Wed, 2 Jan 2008 16:22:57 GMT"

Daca decodam "partnerid" vom obtine urmatorul string:


29 20 56 3F 41 E5 FA 0C 90 29 DF AA 79 CF


care dupa cum sa observa sunt ultimele 14 caractere de la sfarsitul tokenului.

Daca din token eliminam primul caracter (00) timestampul (61 BA 7B 47) si parnerid'ul decodat vom ramane cu


62 0F D9 BE DC 3E 18 94 53 D5 71 D0 53 D7 01 57


Acest string rezultat are o lungime de 16 caractere ceea ce duce la concluzia ca este un hash MD5 (md5() produce
un hash de 128 de biti adica 16 caractere intre 0x00 si 0xFF, a nu se confunda cu md5_hex() care produce un
string de 32 de caractere reprezentand valorile hexadecimale ale celor 16 caractere produse de md5() )

La schimbarea parolei se modifica doar timestampul si acest hash MD5 ceea ce ma face sa cred ca din stringul
initial (care produce hashul) face parte fie timestampul fie parola fie ambele.

Trebuie sa mentionez pentru cei care vor face teste ca acest token trebuie pastrat SECRET deoarece dupa cum
am spus si mai sus cunoasterea tokenului poate duce la compromiterea contului (parola NU trebuie sa fie cunoscuta
pentru a obtine un set de cookiuri)

s!mpLE
Fondator
Fondator

Numarul mesajelor : 204
Varsta : 23
Data de inscriere : 26/10/2008

Vezi profilul utilizatorului http://warsn.forumd.biz

Sus In jos

Frumos re

Mesaj Scris de PuF1 la data de Joi Oct 30, 2008 10:06 am

e greu baaa

PuF1
V.I.P
V.I.P

Numarul mesajelor : 21
Data de inscriere : 27/10/2008

Vezi profilul utilizatorului

Sus In jos

Vezi subiectul anterior Vezi subiectul urmator Sus

- Subiecte similare

 :: More
 :: HacKs

 
Permisiunile acestui forum:
Nu puteti raspunde la subiectele acestui forum