[ itf @ 27.12.2010. 22:42 ] @
Potrebno mi je da nekako zaštitim informacije u exe datotekama, a nisam našao nikakav alat. Naime, exe je vrlo lako otvoriti i modificirati u 3rd party alatima (npr. resource hacker), a otvorite li sam exe u npr. wordpadu moguće je čak preko opcije find pronaći plain text password-a koje program koristi za pristup bazama podataka te i druge osjetljive podatke itd. Ukratko, teška katastrofa ako se radi neka aplikacija gdje je sigurnost imperativ.

Koliko sam pročitao, za zaštitu neki programi koriste exe kompresore, no google mi ne nalazi ništa pametno.. Znate za kakve exe kompresore ili druge alate kojima bi se moglo zaštiti informacije u programima?
[ kiklop74 @ 27.12.2010. 23:44 ] @
Mozda ovo moze da pomogne

http://upx.sourceforge.net/
[ kiklop74 @ 27.12.2010. 23:46 ] @
A ima i ovo proizvod domace pameti:

http://wareseeker.com/Utilitie...otection-wizard.zip/3d203bc0b6
[ Marko_L @ 28.12.2010. 03:33 ] @
Da, spakuješ sa UPX-om i onda neko iskoristi UPX Unpacker i džaba si krečio :)

Nego, nevezano za to, nije valjda da passworde i druge bitne informacije držiš u plain text formatu, bilo gde ? To je jako loša praksa. Za takve stvari treba koristiti enkripciju i onda porediti enkriptovane vrednosti.
[ mmix @ 28.12.2010. 08:35 ] @
nista tu ne pomaze druze, ko hoce da se docepa DB lozinke to moze da uradi na sto nacina, cak iako interno cepkas lozinku, kriptujes, varis, lemis postoji najtezi ali onaj koji uvek pali: fake DLL injection za odbc32.dll. U principu napravis iste exporte ili cak samo listu koja matchuje import listu u exe, implementiras nekoliko metoda koje se prvi pozivaju (SQLAllocHandle, SQLSetEnvAttr, SQLSetConnectAttr) iz kojih uvek vracas SQL_SUCCESS i onda ga sacekas na SQLConnect/SQLDriverConnect da ti sam da username/pass/connection string koji se toliko mucio da sacuva

Slicna prica (mada malcice komplikovanija zbog COMa) ako ides preko ADOa. Najjednostavnija prica sa .NETom (debug, breakpoint na SqlConnection.ctor(String)).

U svakom slucaju ko se nameri spasa nema. Tj spas je u propisnoj konfiguraciji domena i koriscenju integrated authentication-a.





[ X Files @ 28.12.2010. 08:59 ] @
Eurora3DTeam, tj Nebojsa sa ovog foruma je napravio ovakav alat.


Inace, ja sam za takve stvari napravio alat za kriptovanje svih tekstualnih resursnih fajlova, od korenog drektorijuma pa nanize i kasnije u kodu njihovo dinamicko dekriptovanje. Takodje sam za svaki slucaj sporadicno proveravao i ocekivane checksumove, tako da program zabaguje povremeno, ne uvek, jer je to najlakse za pronaci.
[ Nedeljko @ 28.12.2010. 09:06 ] @
Citat:
mmix: postoji najtezi ali onaj koji uvek pali: fake DLL injection za odbc32.dll. U principu napravis iste exporte ili cak samo listu koja matchuje import listu u exe, implementiras nekoliko metoda koje se prvi pozivaju (SQLAllocHandle, SQLSetEnvAttr, SQLSetConnectAttr) iz kojih uvek vracas SQL_SUCCESS i onda ga sacekas na SQLConnect/SQLDriverConnect da ti sam da username/pass/connection string koji se toliko mucio da sacuva ;)


Ne pali ni taj način baš uvek, jer program može da proveri heš dll-ova koje učitava. Ako nađe da je dll lažnjak, neće da radi. Naravno, time program vezuješ za jednu tačno određenu verziju dll-a.

No, provaljivanje se ne može sprečiti, ali se može otežati. UPX nije nikakva zaštita.

Ja bih uradio ovo što X Files predlaže, s tim što bih obavezno proverio dll-ove koje učitavam.
[ mmix @ 28.12.2010. 09:42 ] @
Da, ali debuger onda uvek radi. Sve odbc32 funkcije su javni exporti, bez obzira dal ih dinamicki ili staticki linkujes (sto je mnogo verovatnije jer ce bar neki dependency DLL verovatno vec ucitati odbc32.dll) u EXE pre ili kasnije mora da se ucita u adresni prostor i onda zakacis debugger na entry point za SQLConnect i posto znas stdcall konvenciju sve ti je tu ;)

dakle ako se ne varam nesto na fazon ovoga:

sxe ld "odbc32.dll"
...
bm odbc32!SQLConnect
[ Nedeljko @ 28.12.2010. 09:53 ] @
Pa, i to se može zaobići. Misliš da ne postoje metode zezanja dibagera?
[ mmix @ 28.12.2010. 10:04 ] @
Ako chekiras IsDebuggerPresent API ili PEB uradim breakpointe i bypass povratne vrednosti, ako to uspes da zaobidjes onda je tu OllyDbg, ako koristis Olly expolit onda predjem na SoftICE i blokiram ti proveru INT1. U svakom slucaju za svaku meru postoji kontramera. Ono je sto je indikativno ovde je da ces potrositi brdo vremena da od mene sakrijes ono sto ne mozes sakriti umesto da od pocetka napravis program tako da on ne nosi authentication informacije. Za windows platofrmu je to bar danas lako uraditi.

[ Nedeljko @ 28.12.2010. 10:13 ] @
Citat:
mmix: U svakom slucaju za svaku meru postoji kontramera. Ono je sto je indikativno ovde je da ces potrositi brdo vremena da od mene sakrijes ono sto ne mozes sakriti umesto da od pocetka napravis program tako da on ne nosi authentication informacije. Za windows platofrmu je to bar danas lako uraditi.


O tome i pričam. Jedino mi nije jasno kakve to ima veze sa Windows-om. Metode su opšte.

Citat:
Nedeljko: provaljivanje se ne može sprečiti, ali se može otežati.


Mogu na primer prilikom instalacije da izmerim brzinu računara, pa posle da merim vreme potrebno da se nešto obavi, pa ako kilavi ko u dibageru, onda da zezam, ali se i tome može doakati. Najbolje je da korisnik unosi lozinke, koje su njemu dodeljene.
[ mmix @ 28.12.2010. 10:22 ] @
Pa pominjem windows zbog NTLM/Kerberosa i opciono ADa i koriscenja windows user konteksta za authentikaciju. Za desktop aplikacije to znaci da ne mora uopste ni da se unosi lozinka plus omogucava unattended aplikacije (servise) bez cuvanja lozinki u aplikaciji. Iskreno ne znam dal postoji slican mehanizam za linux?
[ Nedeljko @ 28.12.2010. 10:33 ] @
Ako se lozinka ne unosi, to znači da se ključ izračunava na osnovu parametara sistema koji se mogu očitati (što bi ti reko "konteksta korisnika"). To je sigurno u tri lepe. Nema ništa bez jake lozinke.

Kad bi to tako moglo i drugi bi implementirali iste metode. Ne postoji nijedan algoritam koji se može isprogramirati na jednom OS-u, a ne može na drugom.
[ Nedeljko @ 28.12.2010. 10:42 ] @
Ako je kontekst korisnika vezan za lozinku korisnika, onda je to druga priča, ali to se onda može implementirati bilo gde.
[ mmix @ 28.12.2010. 10:48 ] @
A sta je nesigurno tu?

Kroz aplikaciju ti nemas pristup lozinci i ne mozes da dupliras kontekst (majvise sto mozes je da impersonias kontekst sto je ovde bespredmetno posto si vec u njemu), authentikacija na domenske servise (ukljucujuci SQL) se ne obavlja plaintekst lozinkom vec hashed challenge/response ili jacim mehanizmom. Kad se pronadje rupa u SSP ceo svet zna za to i krpi se momentalno i jedini bagoviti deo tog sistema (LM hash) koji po dizajnu nije mogao da se popravi nije u opticaju vec 14 godina.

Radi to lepo, nista ne brini. NIsam ja ni rekao da ne moze da se implementira vec da nije implementirano (koliko ja znam). Neke binary protokole su implemntirali (samba i slicno) ali ja koliko znam ti ne mozes na linux da se ulogujes kao nedeljko i da se onda konektujes na udaljeni reimo MySQL kao nedeljko bez da prosledis authentication info? Ispravite me ako gresim.
[ dejanet @ 28.12.2010. 10:50 ] @
Mozda neki LDAP, ima ih za linux i win,starih-novih,open,commercial a podrske za c++, javu, net...
[ Nedeljko @ 28.12.2010. 10:59 ] @
Citat:
mmix: A sta je nesigurno tu?


Poenta je da da bi sistem bio siguran, u jednom trenutku moraš da uneseš nekakvu lozinku. Možeš ti da unosiš lozinku jednom prilikom logovanja na operativni sistem i da to bude dovoljno, ali ne može bez ikakve lozinke.
[ mmix @ 28.12.2010. 11:03 ] @
Kako bi to izgledalo. Ok, mozes namestiti linux da authentikuje iz neke LDAP biblioteke, koliko vidim i MySQL moze da kreira usere kao mysql usere mapirane na linux usere kroz LDAP plugin (mada je to i dalje veoma daleko od group based security-a iz AD). Ali kako sad to funkcionise na nivou protokola? Kod windowsa time sto si mu naveo "Integrated Security=true" ukljucio si da konekcija pocinje sa SSPI challenge/response nakon kojeg server ima lokalno instanciran domenski security token korisnika. Kako to radi za mySQL recimo? Kako podesiti aplikaciju/server/konekciju tako da te server vidi kao vec ulogovanog korisnika bez dodatnih ukucavanja/prosledjivanja plaintext security informacija?

@Nedeljko, naravno da moras, ali je poenta da to uradis samo jednom. Ne samo to nego ne moras ni jednom (npr smartcard+pin) ali to se u osnovi svodi na isto. Glupo je da moras ponovo da ubacujes password u aplikaciji kad si se vec predstavio sistemu.
[ itf @ 28.12.2010. 11:08 ] @
EDIT: Ja ne držim passworde u vanjskim datotekama u plain text formatu, već u samom programu (exe):

Meni je najveći problem ako parametre konekcije (bazu, password..) definiram statički (u design time-u). Onda se odmah mogu pročitati kao resurs. Sličan je problem ako parametre konekcije (konstantne stringove) predajem funkciji prilikom njenog poziva. Onda to mogu pronaći u wordpad-u.
[ mmix @ 28.12.2010. 11:12 ] @
Ma taj problem je stvarno marginalan, ako se samo stitis od "wordpad hakera" XORuj svaki karakter lozinke sa FF :) To je dovoljna zabuna za te haxore.


[ Nedeljko @ 28.12.2010. 11:20 ] @
Citat:
mmix: Ne samo to nego ne moras ni jednom (npr smartcard+pin) ali to se u osnovi svodi na isto.


Pa, opet si uneo nekakav tajni podatak - ne preko tastature, nego preko čitača kartica. Naravno da je isto. Promenjen je samo ulazni uređaj.
[ Nedeljko @ 28.12.2010. 11:25 ] @
Citat:
itf: EDIT: Ja ne držim passworde u vanjskim datotekama u plain text formatu, već u samom programu (exe):

Meni je najveći problem ako parametre konekcije (bazu, password..) definiram statički (u design time-u). Onda se odmah mogu pročitati kao resurs. Sličan je problem ako parametre konekcije (konstantne stringove) predajem funkciji prilikom njenog poziva. Onda to mogu pronaći u wordpad-u.


Pa, predložena su ti neka rešenja za to, kao i nedostaci tvog pristupa i druga rešenja, pa ti izaberi sam.
[ dejanet @ 28.12.2010. 11:46 ] @
Sto se hard kodovanja tice mozes da probas i neki obfuscator (koji kod ucini tesko citljivim), imas ih za sve programske jezike..

Sto se enterprise okruzenja tice Win Server/SQL server je sa integrated security je efektivno,sigurno i jednostavno resenje.. medjutim i dalje se puno koristi url(user,pass) auth. cime dolazimo do MySQL,PostreSQL sa LDAP-om, sto se sigurnosti tice.

Jednostavno ima puno razlicitih klijent aplikacija u nekoj vecoj firmi...
Npr. jdbc driver za MSSQL Server, je do pre 2,3 godine redovno pravio probleme sa integrated security-ijem..
[ Ivan Dimkovic @ 28.12.2010. 12:05 ] @
Moj savet:

http://www.siliconrealms.com/

To je nekadasnji Armadillo (sada se zove Software Passport) - za $300 dobijas vrlo dobar alat za zastitu koji moze prilicno da zakomplikuje zivot h4xorima.

Naravno, nije neprobojan (kao sto nista nije) - ali ako koristis sve feature (a ima ih prilicno puno) razbijanje tvog programa ce biti tezak zadatak koji ce imati smisla jedino ako ti je program mega-popularan i za to se zainteresuje ekipa jacih release grupa. Pametan Rus naoruzan SoftICE-om je prilicno gadna stvar, ali na srecu - treba bas da se procujes da bi postao meta takvim likovima :)

Bolju zastitu od ove ces tesko napraviti za neko isplativo vreme, dakle $300 ti resava problem na koji bi izgubio nedelje a mozda i mesece.
[ itf @ 28.12.2010. 12:12 ] @
Hvala svima, budem nešto od toga implementirao.
[ mmix @ 28.12.2010. 15:19 ] @
Tja, nisam ja bas veliki fan add-on security-a, to se sve crackuje sablonski.
[ Ivan Dimkovic @ 28.12.2010. 15:28 ] @
Armadillo nije los uopste i omogucava fleksibilnu zastitu markiranjem delova u tvom kodu za ubacivanje kojekakvih otezavajucih stvari. To ga cini ne tako linearnim i predvidljivim.

Sa maksimalnom zastitom je prilicno gadan za razbijanje i cisto sumnjam da neko ko nije ekspert u tom domenu moze da napravi nesto bolje za neko kratko vreme.

[ notebookFun @ 28.12.2010. 18:06 ] @
Armadillo je najveci izazov za ljude koji se bave Reversingom, tako da najnovija verzija bude brzo provaljena, cak se napise i 1000 tutoriala "HOW MANUAL UNPACK ARMADILLO"... Ni jedan protector ti nece pomoci. Po meni je bolje uzeti neki manje poznat, svidjeo mi se PC Guard, a vise para uloziti u samu reklamu programa....
[ legija @ 28.12.2010. 20:00 ] @
Citat:
itf: Hvala svima, budem nešto od toga implementirao.


Iako ne vidim svrhu drzanja passworda za bazu u user exe fajlu, ako ce exe vec koristiti nekakvi korisnici, zasto ne kucaju svoje login podatke ?
Anyway, ako zelis javi mi se na PM, dacu ti licencu za Themidu, ionako imam company license a nemam kompaniju. :)
[ Aleksandar Đokić @ 30.12.2010. 17:24 ] @
sta je sa themidom? XProtector-om? napravili ga najveci majstori unpack-ovanja the unpacking gods, neki rusi su se godinama mucili i mislim da jos uvek nema resenja
[ notebookFun @ 02.01.2011. 21:42 ] @
@guslac

I to je vec odavno provaljeno, na CRACKLAB-u ima tutorial za manual unpack. Taj packer vecina antivirusa detektuje.