Cracking for Fun, part 1: BOSON NETSIM for CCNP 6.0

Verze pro tiskPDF verze

Zdravim, odkedy sa venujem otazke bezpecnosti zazil som uz rozne (tzv.) generacne zmeny najviac viditelne su pri softwarovej bezpecnosti. Ked som zacinal (a to uz bolo pred dobrymi par rokmi) maximum bezpecnosti predstavovali hardwarove kluce (zariadenie ktore si date napr. do LPT portu ktore vam odblokuje applikaciu). Od tohto postupu si tvorcovia vysokospecializovanych softwarovych produktov (fakt drahych) slubovali neprekonatelnu bezpecnost .... :) ok, tento serial nema byt o mojich spomienkach z mladosti ale o tom aby som niekoho nieco mozno naucil.


---::::: CRACKING FOR FUN PART 1 :::::---
---::::: BOSON NETSIM for CCNP 6.0 :::::---
---::::: by PHB :::::---

Zdravim, odkedy sa venujem otazke bezpecnosti zazil som uz rozne "generacne zmeny" najviac viditelne su pri softwarovej bezpecnosti. Ked som zacinal (a to uz bolo pred dobrymi par rokmi) maximum bezpecnosti predstavovali hardwarove kluce (zariadenie ktore si date napr. do LPT portu ktore vam odblokuje applikaciu). Od tohto postupu si tvorcovia vysokospecializovanych softwarovych produktov (fakt drahych) slubovali neprekonatelnu bezpecnost .... :) ok, tento serial nema byt o mojich spomienkach z mladosti ale o tom aby som niekoho nieco mozno naucil. [ak by bol zaujem mozem napisat aj pameti :) ] Co som chcel povedat tou evoluciou ochrany programov ? Ludia toho povymyslaju vela, ale nic sa doteraz nepreukazalo ako naozaj bezpecne .... najviac k tomu sa dotahuje vsak momentalne dost presadzovany klient-server postup, presne tak ako v pripade programu ktoremu sa budeme v tomto diely venovat.

BOSON NETSIM for CCNP 6.0

Jedna sa o network simulator, jeho predchodcovia neboli doteraz prekonany [ludom vychovanim CNAP: predstavte si Cisco packet tracer, tak ten je oproti tomuto uplny odvar]. Mozno si poviete preco potom ho vzdy vyvijaju dalej a dalej ked je doteraz neprekonany... pretoze existuju ine formy treningu / precvicovanie / simulovanie sieti a ich konfiguracii [rozne virtual-lab projekty: http://www.vlab-training.com , alebo nas slovensky http://vl.cnl.tuke.sk/ .... CNL RULEZZZ :) ].

Program si mozte stiahnut z http://bosondownload.com/netsim/netsim6.exe.

Budeme potrebovat aj nieco cim si na to posvietime, ja osobne pouzivam OllyDbg -> http://www.ollydbg.de/

Ok, v prvom rade preskumame spravanie sa programu, takze ho normalne zapneme, pozreme co to pise, ake hlasky a tak... Vidime trapne okienko, tak si klikneme ze chceme aktivovat svoju full verziu, do koloniek napiseme nejake random udaje, vyhodi Activation was unsuccessfull ... hmm. Nakopneme OllyDbg, otvorime si Boson_NetSim.exe (v tomto pripade sa to da, ale niekedy je lepsie napichnut sa priamo na beziaci process, snad si to v niektorej z dalsich casti serialu ukazeme). Teraz sa pozrite priamo na svoj monitor, rovno pred nosom by ste mali mat prijemnu uvitaciu hlasku v strede toho najvecieho okna (code window)... je tam textik ktory nam hovori ze toto execko bolo compressnute pomocou NeoLite Executable Compressor-a (vid. Screen1:)



screen 1

Nevadi, taketo sposoby ochrany nam nic nerobia. Spustime execko stlacenim F9, bude to tam dost divoko behat, keby sa to zastavilo a na spodku okna by bol textik ze Exception press shift F7/F8/F9 to continue tak iba drzte shift F9 az kym to nepojde, na teraz sa tymto nemusime zaoberat hlbsie. Zobrazi sa nam znovu to okno kde nas pyta zadat registracne udaje, zadame znovu nieco a klikneme Submit Order. Nechame to prebehnut, v pripade ze sa OllyDbg niekde zastavy tak drzat shift F9. Jedine co sa stalo tym ze pouzili exe compressor je to ze nebudeme moct pouzit referenced text strings ktore su v execku, name reference nam nic neprezradi a ani intermodullar calls, vlastne ziadne najcastejsie pomocky ktore sa daju pouzit. Ibaze najneskor v pameti RAM sa vsetko musi zobrazit tak ako je, a teda aj stringy v cleartexte :) (vid. Screen2:)



screen 2

ked tam tento riadok nevidite, tak poscrolujte kusok, istotne tam je.

Vyuzijeme jednoduchu logiku, kazdy kus kodu je z niekade volany a teda ked prebehne tak sa musi beh programu aj niekde vratit, (call nieco, to nieco prebehne pride na return a skoci priamo za ten povodny call). Takze sledujeme dump az kym neprideme na nejaky return na nas aktivny module. (vid screen3:)



screen 3

Vidime ze sa nam beh programu vracia na offset 00837CBC. (pre rychli pohyb po kode stlac ctrl-G a addresa kde chces ist) Kusok nad tym je presne ten textik ktory nam ta skareda hlaska povedala:

<br />
004C4F40=Boson_Ne.004C4F40 (UNICODE "Activation was unsuccessful. Please verify your email address, password, and activation key are corr")
Poscrollujeme vyssie az po
008378D2 C785 A4FEFFFF 3";MOV DWORD PTR SS:[EBP-15C],Boson_Ne.004C";;<br />
UNICODE "Activation was successful. Please wait while the program downloads the latest command database."" <br />

Ano, presne tuto hlasku chceme dostat :) Kusok nad nou je jnz,
(jne, jump if not equal, ked sa podmienka nerovna skoc)

00837889 /0F85 A0030000 JNZ Boson_Ne.00837C2F

ked si pozrieme kde tato podmienka skoci, hned nam dojde ze ju musime zmenit. Zakladne pravidlo, pokial chceme beh programu ovplyvnit a nechceme mat v tom neskor zmetok, odporucam sa pridrzat len pouzivania skokov bez akejkolvek podmienky: jmp (skoci vzdy), a nop (no operation - neurobi nic). V tomto pripade sa nam tu hodi nop, tak stlacime medzernik, na tom riadku kde to chceme zmenit, vymazeme vsetko co tam je a napiseme nop. Urobi nam to 6 riadkov nop, teraz uz beh programu prejde vzdy tamade ako to chceme my. Podme to vyskusat, dame si breakpoint na tom cmp (compare) co je priamo nad tym nasim nop-om. Toto nam zastavi beh programu ked sa dostane na breakpoint. Standard breakpoint sa kladie pomocou stlacenia F2 na konkretnom riadku. Znovu zadame nejake bludy a stlacime submit, tento krat sa nam active window prepne na OllyDbg, bude vyznaceny presne ten riadok kde sme dali breakpoint. Pomocou F8 (step throught) ideme pekne po riadkoch az kym sa nedostaneme na

00837916 FF15 14114000 CALL DWORD PTR DS:[401114] ;

MSVBVM60.rtcMsgBox tam sa beh programu presunie na MSVBVM60, z coho vidno ze program bol pisany vo Visual Basicu, rtcMsgBox nam vyhodi nejaku hlasku podme sa teda na nu pozriet ... Activation was successful :) ako dobre ze. Odklikneme ok, stlacame smelo F8, momentalne nas nezaujima co sa tam deje, tym bystrejsim to istotne z kodu dojde, takto prideme az po

00837ABE E8 9DF2F2FF CALL Boson_Ne.00766D60

co nam vypluje neprijemne okienko: We could not authenticate you .... wtf ?!? Z toho je jasne ze sa jedna o klient-server overovanie, a kedze tento serial nie je o hackovany serverov tak s tym nepohneme. Lenze z predchadzajuceho message boxu je jasne ze tu islo iba o aktualizaciu databazy prikazov, bez coho sa budeme musiet nejako zaobist. Lenze registracny process sa zastavi ked server vrati chybu autentifikacie, takze to musime osetrit. Dame si teda breakpoint pred tym osudnim call-om, takze breakpoint (F2) na:

00837ABD 51 PUSH ECX

Este raz napiseme do okienka nejake dristy a dame submit, teraz nam to zastavi najprv nad tymi nop-ami, tam nas to ale uz nezaujima takze ten breakpoint mozme uz odstanit (tektiez F2) a stlacime F9 pre pokracovanie behu programu, zastavi na nasom novom breakpointe. Stlacime F8 dostaneme sa na ten call, lenze mi tento krat chceme ist do toho callu, tam kde vola, tak pouzijeme step into (F7). Vidime ze sme uplne niekde inde v kode, poscrolujeme kusok nizsie nech si urobime prehlad co sa tam asi ide diat, vidime rozne hlasky. (vid screen4:)



screen 4

Je tam nasa hlaska o tom ze nas nemohol autentifikovat, leze kusok nad tym je aj ze aktualizacia prebehla uspesne, presne tam sa chceme dostat. Teraz musime najist logiku ktora rozhoduje o tom kde to skoci. Hned nad tymi textami je prvy jump:

0076719E /74 12 JE SHORT Boson_Ne.007671B>;

skace presne tam kde to potrebujeme, tak mu vymazeme podmienku a urobime s neho

Jmp SHORT Boson_Ne.007671B,

medzernik na jeho riadku a prepisat JE na Jmp. Ideme vyssie

00767170 /7D 12 JGE SHORT Boson_Ne.007671>;

nam zjavne nepomoze tak ho nechame tak. Kusok nad tym je

00767129 /0F84 9C000000 JE Boson_Ne.007671CB

ten nam skace na Your database is up to date, lenze mi chceme hlasku ze nas to updatlo aby sme mohli pokracovat v procese registracie aj bez potvrdenia autentifikacie od servera. Takze tento JE prepiseme na NOP, pre istotu, aj ked nikdy nebude splnena podmienka pre jeho skok. Posledny zaujimavy je:

007670CC /0F84 09010000 JE Boson_Ne.007671DB

ten ked je splnena podmienka skoci na hlasku ze autentifikacia nebola uspesna, co nechceme, takze nop.

Vyskusame ....... command set had been updated, a hned za tym Thank you ... :)

OK, takze teraz si prog. mysli ze je legalny, mission accomplished.

Zmeny ktore sme spravili v execku mozme ulozit, ale nemusime lebo aktivacny process si vygeneroval kluc, ked sa spusti prog. znovu tak uz priamo nabehne do registrovaneho modu.

Nakoniec by som chcel upozornit ze taketo zabavky su dost na hrane zakona. Preto ale hlavne pretoze som hlboko moralne zalozeny clovek by som vas chcel vsetkych vyzvat aby ste vedomosti nadobudnute tymto clankom, pripadne jeho pokracovaniami v ramci tohoto serialu, pouzivali iba na vylepsenie ochrany vlastnych produktov. V mene pokroku ludstva ! ;)

->-> zdravim svoju milovanu inus

(pozn. tento článek byl dříve zveřejněn na serveru blackhole.sk odkud ho autor stáhnul, protože se rozhodl ho zveřejnit na našem serveru.)