Skrivanje connection stringa

poruka: 8
|
čitano: 1.257
|
moderatori: XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
14 godina
neaktivan
offline
Skrivanje connection stringa

Malo testiram sa skrivanjem connection stringa, pa ako itko može otkriti koji je connection string u sljedećem programu bilo bi super da ukaže kako je do njega došao.

 

Aplikacija:

http://www.box.com/s/d0f0798605c21ac5737e

 

Pravi connection string se dodijeli aplikaciji (ADO komponenti) odmah pri pokretanju aplikacije.

Moj PC  
0 0 hvala 0
17 godina
neaktivan
offline
Skrivanje connection stringa

Pretpostavljam da je ovo:

NAlPShQd8rQ2NXkXTWXtrQgzZBl3tlLngV9no3wKx4GFRF9Kgb200AsOtV05/Up/

2zUFHwXVQRvY2JROVuN0oa6x1+idMjE/tty5ikpnmrnXwjeSNngrNNZMR0Ul3uOP

tfrmtQnSPZmlvZCOBsvJvOzu8w2JSgyAxO0hTsbrc2zsZi56l9NNkD3mnP97Xnem

KdX7rEdRWfJat9OtPF5q58TLybKeANIefhnI517okwZrJ7naH0IdnebFU00BhC/D

ZiZjfh3WibmKdiLAg9eOlsijGUNpR+/W0bbW5YTcYbMm3g9OvFg=

ono što se traži.
Samo treba dekriptirati (hehe, "samo"). Koliko vidim korištene su Rijndael i SHA1 metode za enkripciju. Moguće je da je prvo enkriptirano jednom, pa zatim drugom metodom. A moguće je da je ključ za Rijndael metodu enkriptiran SHA1 metodom.

Pokušao sam malo porkužiti, no zasad nisam puno napredova. Možda sam totalno u krivu što se svega ovog tiče, možda nisam, to samo autor zna. {#}

0100001001101111011010100110000101101110
Moj PC  
0 0 hvala 0
14 godina
neaktivan
offline
Skrivanje connection stringa

Taj dio nije problem pročitati iz resursa {#}. Nisam se ni trudio da to posebno skrivam jer se to jednostavno sakrije dinamičkom alokacijom umjesto stavljanjem na formu. Više me je zanimalo da li netko može doći do connection stringa unatoč tim podacima. Jasno, neće niti to biti problem profićima koji stvarno zapnu no zadati glavobolje barem 80-90% onim koji pokušaju je sasvim dovoljno za mene {#}.

 

Inače da. Koristi se Rijndeal (AES) a ključ za enkripciju je hashiran preko SHA1.

Poruka je uređivana zadnji put sub 7.4.2012 9:07 (TracerCPP).
Moj PC  
0 0 hvala 0
17 godina
protjeran
offline
Skrivanje connection stringa

Da nije možda

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=G:\Programiranje\C++\ADO Knjiga\Imenik.mdb;Persist;Security Info=False

Programko http://programko.bloger.hr
 
1 0 hvala 0
14 godina
neaktivan
offline
Re: Skrivanje connection stringa
Programko kaže...

Da nije možda

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=G:\Programiranje\C++\ADO Knjiga\Imenik.mdb;Persist;Security Info=False

Da. Direktno skeniranje memorije (nešto tipa cheat engine)?

 

EDIT: Evo, i ja pronašao u cheat engine (search text "Provider=").... Ali opet, u ovom slučaju connection string je stalno u memoriji (pa je zato ovo gore i moguće) jer objekt ne brišem sve do izlaza iz programa. S druge strane, ako koristim (kreiram) konekciju samo u vrijeme zahtjeva ovo gore ne bi trebalo biti više problem. Znači, jedino injection ostaje za one naprednije {#}.

Poruka je uređivana zadnji put sri 11.4.2012 19:49 (TracerCPP).
17 godina
protjeran
offline
Skrivanje connection stringa

Uf, cheat engine. Nemoj me vrijeđati{#}. Koristio sam PE Explorer i WinDbg. Trejsao sam call Stack i pratio što se vrača u EAX registru. Ta vrijednost je bila pointer na strukturu u kojoj je zapisan dekriptirani string. Pomoglo mi je što se funkcije koje rade dekripciju zovu nešto kao DecriptFromBase64; sad sam zaboravio točan naziv. A moje nepoznavanje VCL mi je otežavalo stvari. Ne znam protumačiti VCL strukture u memoriji. Al sam ipak uspjeo na kraju.

EDIT: Postoje neke tehnike što mogu zbuniti debuger kada se attacha na process i tehnike koje otežavaju reversing coda; kompresija PE datoteke. al mi se nekako čini da si več upoznat s tim tehnikama i da profesionalcima samo malo zakompliciraju stvari.

Programko http://programko.bloger.hr
Poruka je uređivana zadnji put sri 11.4.2012 21:12 (Programko).
 
1 0 hvala 0
14 godina
neaktivan
offline
Re: Skrivanje connection stringa

Čim je to u memoriji samo je pitanje kako želiš do toga doći. Connection string se ovdje dekriptirao na samom početku programa i od tada je bio stalno u memoriji, tako da je i obični cheat engine dovoljan...

 

No svejedno, ionako uvijek radim dinamičke konekcije samo u vrijeme zahtjeva, a db accountima koji se nalaze u connection stringu uvijek dajem privilegije (read/write) kao pod pretpostavkom da krajnji korisnik zna username i password. A petljanja sa kompresijom i alatima tipa Themida su mi dosadila otkako za većinu aplikacija zbog tih alata dobijem false positive na antivirus skeniranju. 

17 godina
protjeran
offline
Skrivanje connection stringa

Sve je to točno, dovoljna je jedna funkcija u samo jednom trenutku da barata s connection stringom i conn str. će postat vidljiv u memoriji. Bez obzira bio on kriptiran s AESom, DESom ili ROT13 u tom trenutku je "vidljiv" i dekriptiran, dekodiran. Al kao i takav mislim da preko 90% posto profesionalnih programera ne bi znalo doći do njega. Ukratko koliko se ljudi npr. u HR bavi low level windows kodom?. Po mom mišljenu skoro nitko. Isto toliko ljudi može probiti tu zaštitu. 

Programko http://programko.bloger.hr
 
1 0 hvala 0
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice