GG 11 - algorytm

Łamanie zabezpieczeń występujących w programach

GG 11 - algorytm

PostN lut 19, 2012 19:51

Witam
Wyszlo pare dni temu GG w wersji 11 i z ciekawosci chcialem rozkminic kodowanie hasla do serwera.

Z tego co zauwazylem to silnik jest oparty na Mozilli (SeaMonk!?). Jednakze hasla jak to ma miejsce w Firefox czy Thunderbird, hasla sa zapisane w pliku signons.sqlite + key3db itd... W przypadku GG 11 haslo zapisywane jest w pliki pref.js :

user_pref("gg.MainWindowloginPswd", "Lw==");

haslo to literka "a"

Z tego co zauwazylem to na kazdym komputerze zakodowane ciąg w base64 jest inny, wiec zalezy od jakiegos indywidualnego klucza (poprzednio jednym z elementów był to numer seryjny partycji). Ponadto z obserwacji ciąg po odkodowaniu base64 ma taka dlugość jaka jest długość hasła oraz generując ciąg np: dla słowa "aaaaaa" dla każdej z liter wartość jest inna (po odkodowaniu base64) np: 2F C2 0E 1E E8 30 , ale zmieniając słowo na np: "asa" - 2F D0 0E. Wynika z tego z można stworzyć tablice dla danego komputera np: zmieniając hasła z "aaaaaaaaaaaaa" , potem "bbbbbbbbbb" itd. bo dla roznego hasla, jesli litera wystepuje pod dana pozycja to jej wartość hex jest wciąż ta sama.

Próbowałem złapać w Olly DBG moment odczytu ciągu z pliku ale niestety bez skutku - gdyż po odpaleniu ggapp.exe, moge wykonac tylko pare "step" (F8) i już odpala jestem zalogowany, więc nie potrwaie wyłapać momentu odczytu pliku i funkcji dekodującej.

Mogłby ktoś pomóc w tej kwesti ? bo nie wiem czy to jest poprostu ciąg wysylany do serwera i tam odkodowywany czy aplikacja dekoduje hash i wysyla w plain-text do serwera.

Zastanawia mnie obecność pliku enc.key, w ktorym to jets zawarty jakiś hash (uj wi czy to base64 czy coś innego).

Z gory dziekuje za odpowiedź
kontotemp
user
 
Posty: 8
Dołączył(a): N lut 19, 2012 19:10
Podziękował: 1 razy
Podziękowano: 0 razy
Reputacja: 1

Spokojnie - to tylko reklama - zniknie po zalogowaniu :)

Pani Reklama
Automat
Posty:
Dołączył(a): ab aeterno
Lokalizacja: UW-Zaloga

Re: GG 11 - algorytm

PostN lut 19, 2012 21:14

Cześć,

Na podstawie tego co napisałeś (i niczego więcej): to wygląda na OTP (one time pad) - czyli XOR 1-byte na raz hasła z jakimś ciągiem dłuższym od hasła, LUB jest to po prostu XOR 1-byte na raz z kluczem o długości N (gdzie N przypadkowo jest dłuższe niż hasło).
Oczywiście, zamiast XOR to może być ADD, SUB (wątpie) lub jakaś ciekawsza tablica przeszkstałceń).

Natomiast zacząłbym od wysłania hasła np "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" i sprawdzenia czy od któregoś miejsca się podciąg nie powtarza, a następnie wartoby zXORować ten ciąg "aaaaaaaaaaaa..." z tym co tam wyłapiesz i sprawdzić czy to co wyszło (klucz) jest OK (np samodzielnie xorując ciąg "5555555555555555555555555..." z kluczem, i porównując z ciągiem przechwycowym gdy wysyla się te "555555555555.....")

Cheers,

P.S. base64 to nie hash :)
[color=#0080FF]gynvael.coldwind[/color]//[color=#00FF00]vx[/color]
http://gynvael.coldwind.pl
Gynvael Coldwind
Przyjaciel
Avatar użytkownika
Posty: 1633
Dołączył(a): N lip 25, 2004 17:08
Podziękował: 53 razy
Podziękowano: 184 razy
Reputacja: 23041

Re: GG 11 - algorytm

PostPn lut 20, 2012 17:06

Witam
co do base64 to fakt, jakoś tak mam chorobliwe przyzwyczajenie że na zakodowany tekst często mówie hash :P ale przejdzmy do konkretów.

Zrobiłem wedle Twoich zaleceń XOR'owanie poprzez CrypTool'a. Najdłuższy ciąg liter "a" wynosi 21. I dla nich to określiłem klucz, wyszło takie cosik :

4E A3 6F 7F 89 51 4C 37 3C EA 1B 4B 75 27 D1 98 1C 91 5C A4 6D 61 A1 A6 1B 41 85 19 00 EA 54 42 51 FE C3 14 E9 11

Jak widać ciąg nie powtarza się od któregoś momentu, więc domyślam się iż oryginalny klucz jest dłuższy (zreszta, i tak hasło może mieć max. 21 znaków). Da (jak rus) się nim odkodować poprawnie dowolnej długości zakodowane ciągi. Z tym że iż to nic nie zmienia bo nie mam pojęcia co wpływa na ten klucz, bo na innym kompie jest on inny.

Liczyłem iż być może jest to zawartość plik ENC.KEY (z tego samego folderu co pref.js). (Klucz ten nie zmienia się po zmianie hasła) :

2F6KIDMzLSPuapKONybf5rvxEzG9t0h3yvNPZoP7tDcgoDBl3ggMDUeg

Ale nawet po odkodowaniu po base64, wyrzuca inną wartość niż klucz przeze mnie wygenerowany.

Kombinowałem troche z dekoderami Firefoxa (pod Delphi). Praktycznie biblioteki są te same, więc liczyłem na załadowanie funkcji NSS_Init, jednak bez skutecznie. Potem wykombinowałem, żeby skorzystać z zasobów firefoxa i z jego nss3.dll i podmienie key3.db a zakadowany ciąg z enc.key wrzuce bezpośrednio w funkcję. Ale i tutaj lipa bo wysypał się przy funkcji PK11_Authenticate, a więc stop był już ciut dalej aniżeli po inicjacji NSS, ale do samej funkcji decryptowania nawet nie doszlo.

Korzystałem częściowo z tego kodu : http://systemrecovery.altervista.org/Firefox.html

Zreszta coś czuje w moczu iż to kryptowanie zostosowane w ENC.KEY, raczej nie jest to samo co w firefoxie czy thunderbird bo ciut to inaczej wygladało np:

MDIEEPgAAAAAAAAAAAAAAAAAAAEwFAYIKoZIhvcNAwcECNVdTa+UM7DKBAiTKczSHRdh+w==

Szkoda że w OllyDBG nie potrafie wyłapać momentu odczytu pref.js i enc.key. Są jakieś inne sposoby ?
kontotemp
user
 
Posty: 8
Dołączył(a): N lut 19, 2012 19:10
Podziękował: 1 razy
Podziękowano: 0 razy
Reputacja: 1

Re: GG 11 - algorytm

PostPn lut 20, 2012 18:08

Napisz do Rafała, może on Ci pomoże ;) http://rafal.jelitto.org/
/j #pakamera @ irc.freenode.net ;)
[url=http://rtgn.nouej.pl]Blogaseq[/url]

Po co łapać króliczka skoro tak przyjemnie się go goni...
rtgn
Moderator
Avatar użytkownika
Posty: 1061
Dołączył(a): Pn lis 05, 2007 21:40
Lokalizacja: /dev/astacja
Podziękował: 20 razy
Podziękowano: 109 razy
Reputacja: 13864

Re: GG 11 - algorytm

PostWt lut 21, 2012 16:45

No doszedlem jeszcze do pewnych wnioskow :
#1 - klucz ten zalezy od numeru seryjnego, bo zmieniajac ten numer partycji na innym kompie klucz byl ten sam
#2 - klucz zalezy od numeru gg
#3 - klucz nie zalezy od nazwy/lokalizacji profilu, bo po usunieciu konta i zalozenia na nowo tego samego rowniez klucz jest ten sam dla tego samego numer gg (pomimo ze sciezka do profilu sie zmienia)
#4 - plik enc.key jest niepotrzeby do kodowania, bo usuwając go nie jest zmieniany klucz, a plik ten zmienia sie dopiero po poprawnym zalogowaniu. Ponadto w nowo założonym koncie tego pliku nie ma a GG koduje hasła normalnie
#5 - plik key3.db również jest zbędny do kodowania hasłą serwera, bo przy każdym założeniu profilu jest on inny ,nawet dla tych samym numerów gg, gdzie klucz się nie zmienia.

Jakieś sugestie ? Może jakieś aplikacje do RE mi pomogą ?
Pozdrawiam
kontotemp
user
 
Posty: 8
Dołączył(a): N lut 19, 2012 19:10
Podziękował: 1 razy
Podziękowano: 0 razy
Reputacja: 1

Re: GG 11 - algorytm

PostŚr lut 22, 2012 19:43

ciekawy pomysl :) zabiore sie za to jak tylko do koncze pewna sprawe :)
polecal bym zrobic tak jak powiedzial gyn. pierw podaj zle chaslo ;) by wywalilo cie ze haslo jest niepoprawne i sprawdz w ktorym miejscu zostal wywolany komunikat ;)
hexodar
user
 
Posty: 21
Dołączył(a): Cz sie 12, 2004 17:16
Podziękował: 0 razy
Podziękowano: 4 razy
Reputacja: 1559

Re: GG 11 - algorytm

PostŚr lut 22, 2012 19:52

no niby tak, ale podobnie będzie się miało gdy ustawie autologowanie i też powinno mi wskoczyć w funkcję dekodowania a tak nie jest, bo program GG11 uruchamia sie jako gghub.exe a potem jest odpalany (chyba ?!) ggapp.exe...
kontotemp
user
 
Posty: 8
Dołączył(a): N lut 19, 2012 19:10
Podziękował: 1 razy
Podziękowano: 0 razy
Reputacja: 1

Re: GG 11 - algorytm

PostŚr lut 22, 2012 22:06

@kontotemp niemorzesz uzyc aplikacji FileMonitor by zobaczyc kiedy dana aplikacja odwoluje sie, badz odpala inny plik ?
hexodar
user
 
Posty: 21
Dołączył(a): Cz sie 12, 2004 17:16
Podziękował: 0 razy
Podziękowano: 4 razy
Reputacja: 1559

Re: GG 11 - algorytm

PostCz lut 23, 2012 4:37

To jest aplikacja jakiegoś szczególnego producenta ?
kontotemp
user
 
Posty: 8
Dołączył(a): N lut 19, 2012 19:10
Podziękował: 1 razy
Podziękowano: 0 razy
Reputacja: 1

Re: GG 11 - algorytm

PostCz lut 23, 2012 9:53

juz niemoge znalesc starych wersji filemonitor i regmonitor ;/ ale ponoc ta aplikacja juz ma wszystko w sobie:

http://technet.microsoft.com/en-us/sysi ... s/bb896645

na pewno bedziesz musial odfiltrowac wszystko, (z tego co pamietam jak to sie robilo w file monitor) bo pewnie bedzie monitorowal kazdy ruch na twoim kompie, a chodzi ci o konkretna aplikacje ;) daj znac czy dobre to narzedzie, bo narazie niemam czasu by to sprawdzic ;)
hexodar
user
 
Posty: 21
Dołączył(a): Cz sie 12, 2004 17:16
Podziękował: 0 razy
Podziękowano: 4 razy
Reputacja: 1559

Następujący użytkownik chciałby podziękować hexodar za jego post:
kontotemp

Re: GG 11 - algorytm

PostCz lut 23, 2012 15:32

Dzięki za porady :-)
Użyłem FileMonitora i faktycznie lekko pomógł. Dawniej próbowałem wywołać samo "ggapp.exe" jednak bez skutku (wyskakiwał błąd modułu gghub.exe). W związku z tym trzeba było najpierw uruchomić gghub.exe która to wywołuje ggapp.exe (dzięki FileMonitor stało się to jasne), ale z odpowiednimi parametrami np:

ggapp.exe -port 50106 -P mojnumergg -ggprofile mojnumergg -nomgr 1 -pedit 1 -purgecaches -no-remote -token fTs4A7zk

Probowalem w ten sposob startnąć OllyDBG jednak za wiele "kroków" nie udało mi się uzyskać , a bynajmniej nie takie w których otrzymałbym funkcję dekodowania.

Zastanawiaja mnie czy funkcja dekodowania / kodowania hasła nie jest wywowaływana z poziomu jakieś aplikacji ".jar" (core.jar), które są ładowane przy starcie programu. Z tym że może to być błędne koło bo GG jest oparte na silniku SeaMonkey, więc jest tu mase wszelakich plików i funkcji, które niekoniecznie muszą być wykorzystywane (np: cryptbase.dll ).

Pozdrawiam
kontotemp
user
 
Posty: 8
Dołączył(a): N lut 19, 2012 19:10
Podziękował: 1 razy
Podziękowano: 0 razy
Reputacja: 1

Re: GG 11 - algorytm

PostCz lut 23, 2012 17:27

pobawie sie po tym week, jak bede mial chwile to moze cos wspolnie wymyslimy :)
hexodar
user
 
Posty: 21
Dołączył(a): Cz sie 12, 2004 17:16
Podziękował: 0 razy
Podziękowano: 4 razy
Reputacja: 1559

Re: GG 11 - algorytm

PostN mar 04, 2012 7:52

Widze ze temat umarl :-P Polecicie jakieś polskie fora zajmujące się tematyką RE ?
Pozdrawiam
kontotemp
user
 
Posty: 8
Dołączył(a): N lut 19, 2012 19:10
Podziękował: 1 razy
Podziękowano: 0 razy
Reputacja: 1

Re: GG 11 - algorytm

PostN sty 27, 2013 20:17

cały algorytm:
"0" + numer gg + ostatni bajt z numeru seryjnego dysku jako klucz RC4

pzdr
maciejkaczkowski
user
 
Posty: 9
Dołączył(a): So gru 22, 2012 19:33
Lokalizacja: http://keit.co
Podziękował: 0 razy
Podziękowano: 2 razy
Reputacja: 1

Re: GG 11 - algorytm

PostN lut 03, 2013 7:04

oooo dzięki :-)
A nie wiesz przypadkiem jak jest kodowane archiwum ?
Plik to Archive.encsqlite, a klucz to chyba ten enc.key. Tylko czym to przemielili !?
Pozdrawiam
kontotemp
user
 
Posty: 8
Dołączył(a): N lut 19, 2012 19:10
Podziękował: 1 razy
Podziękowano: 0 razy
Reputacja: 1

Następna strona

Powrót do Reverse Engineering

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość

cron