Metode zaštite softwarea - Packing

Izvor: SIS Wiki
Skoči na: orijentacija, traži

Temu prijavili: Vidaković Matej, Svatoš Snježana


Sadržaj

Uvod: Zašto je potrebno zaštititi softver?

Zaštita softvera pomaže korisniku zadržati kontrolu nad sustavom i svojom konfiguracijom. Da bismo utvrdili da li je potrebno zaštiti softver, trebamo razmisliti o sljedećem:

• Koje aplikacije se nalaze u sustavu? Koje su njihove funkcije?

• Da li se aplikacije nalaze u svojoj standardnoj konfiguraciji?

• Da li postoji ugovor o održavanju? Ako postoji takav ugovor, tada je bitno utvrditi od koga, za što i kako?

• Koji kontrolni pristup se nalazi u sustavu?

• Kako su konfigurirana dopuštenja? Da li korisnici imaju veći pristup nego što im je potreban?

• Da li prosječni korisnik može instalirati programe?

• Da li su očuvane sigurnosne kopije softvera?

• Da li su modifikacije softvera kontrolirane ili nadgledane?

• Da li su licencije revidirane?

• Da li korisnici mogu izaći iz aplikacija kako bi dobili pristup operacijskom sustavu?

• Da li su aplikacije i softver zaštićeni lozinkama?

• Da li postoji pristup sustavu preko više korisničkih računa?

• Da li postoji mogućnost udaljene administracije?

• Koji alati su dostupni korisniku u sustavu?

• I slično. [Andress, 2004, str. 425]

--Ssvatos 22:07, 3. siječnja 2012. (CET)


Provjera softvera

Svu novu programsku podršku ili programske zakrpe i nove verzije, koje su dobivene na fizičkim medijima ili preko Interneta, treba provjeriti prije instalacije. Ovo je pravilo posebno važno za instalaciju programske podrške koja zahtjeva sistemska ovlaštenja. U programsku podršku spadaju komponente operacijskog sustava, aplikativni softver, zakrpe, popravci i sve ažurirane verzije softvera. Mnogi proizvođači softvera ugrađuju metode kojima kupci mogu provjeriti ispravnost paketa, obično putem digitalnog potpisa. U slučaju da se ispravnost ne može provjeriti, treba se savjetovati s proizvođačem kako bi se provjerilo porijeklo programske podrške. [Mitnik, 2002, str. 302.-303.]

Prema autoru Bači, provjera nove programske podrške važan je dio sustava zaštite računalnih sustava. „Osnova za to leži u sumnji da nova programska podrška, posebice ona koja dolazi iz nedovoljno poznatog izvora, može sadržavati stražnja vrata kao oblik napada na programsku podršku.“ [Bača, 2004., str. 74] Ako postoji mogućnost, bilo bi poželjno „proučiti i pokušati razumjeti programski kod programske podrške prije njezinog instaliravanja na računalni sustav. Ako postoji i najmanja sumnja na programsku podršku, nije ju poželjno instalirati na računalni sustav.“ [Ibid]

Poznato je kako hakeri šalju žrtvi softver koji je pakiran kao originalni proizvod. Izuzetno je važno da se provjeri porijeklo primljenog softvera prije nego što ga se instalira na računalni sustav, pogotovo ako je taj isti softver došao nenaručen. [Mitnik, 2002, str. 302]

Vješt napadač može otkriti da li je, npr., naša organizacija naručila softver od proizvođača. Koristeći se tom informacijom, napadač može otkazati pravu narudžbu kod proizvođača i sam kupiti spomenuti softver. Kasnije ga on može izmijeniti na način da učini nešto zlonamjerno i može ga poslati našoj organizaciji, u originalnom pakiranju, ukoliko je to potrebno. Kada se proizvod instalira, napadač može kontrolirati sustav. [Mitnik, 2002, str. 302.-303.]

--Ssvatos 22:07, 3. siječnja 2012. (CET)


Napadi na programsku podršku i načini detekcije

„Uz napade na podatke vrlo se često napada i programska podrška. Ova dva napada kod većine korisnika smatraju se sinonimima iako to oni uopće nisu. Načelo rada računala takav je da računala izvršavaju naredbe jednu za drugom, pri čemu je rezultat te obrade, odnosno izvršavanja naredbi u pravilu koristan.“ [Bača, 2004., str. 72.] Međutim, postoje situacije u kojima to izvršavanje naredbi nije korisno već upravo suprotno, odnosno, „rezultat izvršavanja naredbi za posljedicu ima neku malicioznu akciju.“ [Ibid] U današnje vrijeme raspoznajemo mnoge različite vrste programskih prijetnji i one se u pravilu klasificiraju prema svom ponašanju te prema načinu svog širenja. Prije nekoliko godina su se ovi događaji prikazivali u medijima kao virusi, međutim, virusi čine jedan dio malicioznih programa. Većina sigurnosnih alata je dizajnirana s namjerom da ih koriste računalni profesionalci u pronalaženju problema i ranjivosti sustava. Ti su alati automatizirani i sofisticirani. Njihova je svrha izvješćivanje o uočenim problemima, kako bi se isti mogli ukloniti ili korigirati. Međutim, ti se isti alati mogu koristiti i u svrhu traženja sigurnosnih propusta radi njihova iskorištavanja te ih stoga počinitelji vrlo često koriste. „Postoje programi i alati čija je osnovna funkcija napad na računalo.“ [Ibid, str. 73.] Takvi programi su vrlo česti i dostupni na Internetu. Zbog dostupnosti ovih alata, nužno je voditi računa o mogućim ranjivostima računalnog sustava, te ih držati zaštićene i nadzirane. „Postoji vjerovanje da je jedini učinkoviti način sprječavanja počinitelja, pravovremeno nabavljanje i korištenje ovih alata, prije negoli to učine počinitelji.“ [Ibid, str. 73] Potrebno je razumjeti način na koji alati rade i na koji način mogu pomoći u povećanju kvalitete sigurnosti sustava. „Među najčešće napade u ovoj kategoriji ubrajamo: stražnja vrata, session hijacking, vremenske napade i maliciozne računalne programe.“ [Ibid]

Stražnja vrata (engl. Back door) su „klasičan način napada na programsku podršku. Osnovna bit ovog napada je brzo premoštavanje svih sigurnosnih sustava, kako sada, tako i u budućnosti. Osobama koje kreiraju programsku podršku stražnja vrata služe pri samoj izradi programske podrške, kako bi čim brže i kvalitetnije prošli kroz programsku proceduru, a da pri tome ne moraju prolaziti cijelu programsku podršku već da su u mogućnosti preskakati određene dijelove programske podrške.“ [Ibid] Stražnja vrata moraju biti zatvorena ili eliminarana iz završne verzije programske podrške nakon završnog isptivanja programske podrške. Međutim, nekada namjerno ili nenamjerno, neka stražnja vrata ostanu otvorena i nakon završetka ispitivanja programske podrške. Ona imaju smisao u istraživanju računalnog kriminala, a omogućuju ulazak u računalni sustav ili pristup privilegiranim informacijama. Ovo se djelo može spriječiti kontinuiranim provjeravanjem postojanja stražnjih vrata i provjerama obavljaju li se sve operacije korektno. „Načini detekcije ove vrste napada različiti su, a kreću se od iscrpnih testiranja i ispitivanja baziranih na mogućim dokazima do usporedbe programskog koda korak po korak. Kvalitetna detekcija napada, posebice u inicijalnoj fazi, može biti vrlo učinkovita, a može rezultirati i kvalitetnijim dokazima o počinjenom napadu ili djelu.“ [Ibid, str. 75.] Dokazi su programska podrška koja provodi zadatke, a koji nisu predviđeni tom programskom podrškom te sva izvješća koja mogu evidentirati rad te programske podrške. [Ibid]

Otmice sjednica su najjednostavniji napadi koji se mogu provesti protiv računalnog sustava, programske podrške i podataka. „Kod ovog napada počinitelj se služi nesmotrenošću i ležernim ponašanjem legalnog korisnika, te u tim trenucima koristi računalo da bi počinio određeno kazneno djelo ili prekršaj.“ [Ibid, str. 75] „Načini detekcije ove vrste napada različiti su, a kreću se od usporedbe računalnog programskog koda s prijašnjom kopijom, testiranjem neočekivanih događaja s ciljem dolaska do mogućeg počinitelja, detaljna analiza podataka koja uključuje i analizu programskog koda, ispitivanje sumnjivih računalnih programa i pregled tablica s podacima o pristupu računalnom sustavu odnosno računalu. Kvalitetna detekcija napada, posebice u inicijalnoj fazi, može biti vrlo učinkovita, a može rezultirati i kvalitetnijim dokazima o počinjenom napadu ili djelu.“ [Ibid, str. 77]

Vremenski napadi su tehnički složen način neovlaštenog pristupa programskoj podršci ili podacima. Ovaj napad uključuje, tzv., uvjete utrkivanja i neusklađene napade, a to znači da postoje utrke između dva procesa koji se odvijaju unutar računalnog sustava, a ishod određuje tko pobjeđuje u utrci. Neusklađeni napadi predstavljaju drugi način „iskorištavanja prednosti dinamičnosti sustava s ciljem omogućavanja pristupa.“ [Ibid] Detekcija se provodi na isti način kao kod otmica sjednica.

Maliciozni računalni programi se otkrivaju i uklanjaju alatima za uklanjanje sigurnosnih prijetnji, kao što su McAfee Security Center, Trend Micro PC-cillin Internet Security 2004, Ad-aware Standard Edition, Spybot – Search & Destroy, ZoneAlarm, AdsGone Popup Killer i sl.

--Ssvatos 22:07, 3. siječnja 2012. (CET)


Zaštita softvera

Za industriju softvera sve veći problem postoje neovlašteno korištenje i distribuiranje programskog koda. Danas je na Internetu moguće pronaći besplatne, ilegalne kopije gotovo svih postojećih komercijalnih aplikacija. „Iako za borbu protiv ilegalnog korištenja i distribuiranja programskog koda postoje mnogi zakoni, odnosno, pravna regulativa kao što su autorska prava, patenti i razne licence, borba protiv piratstva uključuje i ugrađivanje različitih programskih i sklopovskih zaštita u proizvode.“ [sigurnost.lss.hr, 2010]

„Softver je proizvod koji je teško i skupo razvijati, što dovodi do njegove visoke tržišne cijene, no istovremeno ga je zbog niske cijene CD/DVD medija te Internet pristupa lako umnožavati i distribuirati. Zbog toga se softver često ilegalno kopira i distribuira što se popularno naziva softversko piratstvo.“ [seminarskirad.biz, 2004, str. 4]

Za zaštitu programskog koda postoje razne metode, kao što su „enkripcija, korištenje datoteka s enkriptiranim ključevima, sklopovski implementiranih ključeva ili poslužitelja koji nadziru korištenje programske podrške u lokalnoj mreži.“ [sigurnost.lss.hr, 2010] Takve vrste zaštite proizvođači najčešće sami razvijaju. Međutim, na tržištu su dostupne i mnoge komercijalne aplikacije koje omogućuju zaštitu programskog koda. [Ibid]

Proizvođači softvera su počeli implementirati razne hardverske i softverske metode kako bi zaštitili intelektualno vlasništvo razvijenog softvera i svoje financijske interese. Te metode onemogućavaju neovlašteno kopiranje i distribuciju programa te njihovo korištenje. Navedene zaštite uključuju „provjeru serijskog broja isporučenog softvera, provjeru raznih parametara računala na kojem je softver instaliran, obveznu autentifikaciju svake zasebne kopije softvera, provjeru ispravnosti isporučenih licenci, enkripciju izvršnog koda programa te razne druge metode.“ [seminarskirad.biz, 2004, str. 4]

Unatoč svemu tome, još uvijek ne postoji metoda koja se koristi za zaštitu softvera, a koja je neprobojna.

--Ssvatos 22:07, 3. siječnja 2012. (CET)


Zakonska zaštita softvera

„Osnovni preduvjet za borbu protiv softverskog piratstva je donošenje zakona koji će regulirati prava autora softvera te prava njegovih korisnika.“ [seminarskirad.biz, 2004, str. 5]

„Mogući oblici pravne zaštite kompjuterskog softvera su:

• zaštita autorskim pravom,

• zaštita patentnim pravom,

• zaštita ugovorom,

• zaštita poslovnom tajnom,

• zaštita zakonom o žigu,

• zaštita zakonom o industrijskom obličju.“ [Požgaj, str. 1]

Na softver možemo gledati s dva aspekta. Prema prvom aspektu, „izvorni kod programa te način implementacije različitih algoritama u sintaksi konkretnog programskog jezika se mogu promatrati kao literarno djelo i zbog toga ga je moguće zaštititi pomoću autorskog prava.“ [carnet, str. 5] Prema drugom aspektu, softver je mehanizam koji, „kad se izvrši, može obaviti neki koristan posao, a takve stvari se tradicionalno štite pomoću patenata.“ [seminarskirad.biz, 2004, str. 5]

Programeri nastoje zaštititi svoj softver što bolje kako bi od njega imali što veću financijsku korist, dok korisnici žele da softver bude što „dostupniji, otvoreniji i pristupačniji širokoj javnosti.“ [Ibid, str. 5] Potrebno je pronaći odgovarajuću ravnotežu prema kojoj bi se mogla osigurati dovoljna razina zaštite programerima tako da se stimulira daljnji razvoj softvera, a opet da softver bude dovoljno pristupačan korisnicima. [Ibid]



Autorsko pravo

„Autorsko pravo je najrašireniji način zaštite bilo kojeg intelektualnog vlasništva.“ [Ibid] Ono štiti autora od ilegalnog korištenja njegovog djela. „Zaštita djela koju omogućuje autorsko pravo se može definirati pomoću sljedećih prava:

• pravo umnožavnja djela;

• pravo na izmjene i dopune u djelu;

• pravo distribucije djela;

• pravo javnog izvođenja i prikazivanja djela;

• pravo autora na korištenje njegovog imena uz svaku kopiju djela te zaštita od korištenja imena uz tuđe radove ili uz iskrivljene verzije njegovog djela;

• pravo autora da spriječi iskrivljenje ili uništavanje svojeg djela.“ [Ibid]


„Autorsko pravo načelno štiti originalnu implementaciju i način prikaza neke ideje, a ne samu ideju. U softverskoj industriji to znači da je moguće autorskim pravom zaštiti izvorni i izvršni kod programa, strukturu i organizaciju koda programa, dijelove ili cijelo korisničko sučelje te sve priručnike, upute i ostalu dokumentaciju u digitalnom ili pisanom obliku.“ [Ibid] Međutim, autorsko pravo ne štiti razne programske algoritme ili metode te matematičke metode koje su se koristile u realizaciji softvera. Osim toga, neki drugi autor sličnog programa može dobiti autorsko pravo za svoj program bez obzira na sličnost s već postojećim softverom, te stoga autorsko pravo ne štiti od konkurencije koja samostalno razvija sličan softver. [Ibid]

Autorsko se pravo često koristi zato što se može primijeniti na gotovo svaki oblik softvera, a moguće ga je brzo, lagano i jeftino dobiti.

Svako djelo koje je zaštićeno autorskim pravom je označeno vidljivom oznakom, godinom izdavanja te imenom autora ili nazivom tvrtke koja je nositelj autorskih prava. [Ibid]



Patent

„Patent je zaštita izuma koju izdaje vlada neke države, a sprječava druge osobe ili organizacije da proizvode i prodaju isti ili sličan proizvod.“ [seminarskirad.biz, 2004] On je primjenjiv na svaki koristan mehanizam, proizvodni proces, princip koji je novi, nije očigledan i nije prethodno objavljivan. Patent štiti samu ideju, za razliku od autorskog prava koji štiti prezentaciju neke ideje i oblik izražavanja. „Kod zaštite softvera, patent štiti ideje, algoritme, matematičke postupke korištene u programu, a ne sam programski kod.“ [Ibid]

Softverska se industrija jako brzo razvija te tako postoji jako malo softverskih rješenja koja mogu opstati na tržištu više od nekoliko godina, koliko je potrebno za izdavanje patenta. Iz tog se razloga traženje patenta za softver rijetko isplati i koristi se samo za neke algoritme i postupke „za koje se smatra da su dovoljno fundamentalni da bi mogli ostati u upotrebi desetak ili više godina.“ [Ibid, str. 6]

„Patent je najmoćniji zakonski oblik zaštite softvera jer zabranjuje objavu programa koji ima slične funkcije ili koristi iste softverske metode pa makar bio nezavisno razvijen.“ [Ibid]

Softverske industrije koje zagovaraju patentiranje softvera, to čine iz razloga što žele zaštititi više inovativnosti i originalnosti koja utrošena u razvoj softvera. „Konkurencija može razviti sličan softver jednostavnim proučavanjem funkcionalnosti originalnog rješenja, čak i bez poznavanja izvornog koda, a patent je jedini način da se to spriječi.“ [Ibid] Softver je moguće patentirati u SAD-u, ali ne i u Europi.


Licenca

„Licenca je proširenje autorskog prava na neki softver“. [seminarskirad.biz, 2004, str. 6] Kod softvera koji se nalazi pod licencom, korisnik ne kupuje softver već kupuje licencu za njegovo korištenje, a vlasnik softvera ostaje autor. Ona se smatra posebnom dozvolom u kojoj je točno definirano na koji način korisnik može koristiti navedeni softver. [Ibid]

Licenca definira na koliko se računala softver smije instalirati, u koje se svrhe smije koristiti (komercijalne, obrazovne, osobne...) te koliko je dugo licenca važeća. Nakon isteka licence, ona se mora obnoviti, što znači, ponovno kupiti od autora programa, ili korisnik mora prestati koristiti softver. [Ibid] Softver koji se koristi za nadzor nad softverskim licencama je Borland Product License Manager.


Vrste softvera

„Prema zakonskom obliku zaštite, softver se može podijeliti u sljedeće kategorije:

• Public domain (softver s kojim korisnik može raditi što želi)

• Open Source (softver besplatan za korištenje, umnožavanje i distribuciju. Dozvoljeno je raditi promjene u izvornom kodu te takav softver dalje distribuirati. Jedini uvjet koji se obično nameće korisniku je da promijenjeni softver i dalje bude Open Source. Takav se softver distribuira zajedno s licencijom u kojoj su definirana sva prava i obaveze korisnika.)

Freeware (softver besplatan za korištenje i distribuciju, ali se ne smije mijenjati. Autor zadržava autorsko pravo nad softverom.)

Shareware (sličan kao i freeware, ali se u licenčnom sporazumu obično traži da korisnik pošalje autoru određenu svotu novca. Kod ovog softvera postoji definirano vrijeme u kojem korisnik može besplatno koristiti program, a ako ga želi koristiti i nakon tog razdoblja, mora ga platiti. Novčane su svote obično simbolične za takav softver jer inače ne bi opstao na tržištu.)

• Komercijalni softver (softver koji korisnik mora kupiti te ga smije samo koristiti, a ne kopirati, distribuirati ili mijenjati. Ako korisnik kupi kopiju programa, može ga koristiti na način koji je definiran zakonom o autorskim pravima.)

• Komercijalni softver – licencirani (softver kod kojeg korisnik kupuje samo licencu za korištenje programa. Korisnik može koristiti takav softver samo na način koji je u skladu s licenčnim sporazumom te zakonom o autorskim pravima.)“ [seminarskirad.biz, 2004, str. 6.-7.].

--Ssvatos 22:07, 3. siječnja 2012. (CET)


Softverske i hardverske metode zaštite

„Bez obzira na koji je način softver zakonski zaštićen, u praksi je teško otkriti prekršitelje i još teže na sudu dokazati krivicu. Zbog takve situacije je proizvođačima softvera najčešće lakše i jeftinije spriječiti piratstvo ugradnjom tehnoloških zaštitnih mjera u svoj softver, nego kasnije pokušavati krivično goniti prekršitelje licenčnog sporazuma“ [Ibid, str. 8]

Za zaštitu softvera se koriste različite softverske i hardverske metode. Zadaća je svih tih metoda da od korisnika zahtijevaju neku vrstu autentifikacije prije nego što mu se omogući korištenje softvera. Korisnik mora imati poseban hardver koji se spaja na paralelni ili serijski komunikacijski port računala ili neku vrstu registracijske datoteke ili registracijsku šifru koju mora upisati prilikom instalacije programa. Sve te metode pokušavaju nekako šifrirati ili samo zakomplicirati izvršni kod programa tako da onemoguće pirate u pokušaju razbijanja zaštite. [Ibid, str. 8]


Dongle

Dongle je vrsta uređaja koju je potrebno spojiti na serijski ili paralelni komunikacijski port računala kako bi se mogla pokrenuti određena aplikacija. „Dongle je relativno jednostavna naprava koja sadrži hardverski implementiran ključ za omogućavanje pristupa određenoj aplikaciji i koja je sposobna na zahtjev aplikacije poslati taj ključ.“ [seminarskirad.biz, 2004, str. 8]

Na više se mjesta unutar same aplikacije poziva funkcija koja komunicira s dongle ključem. Ta ista aplikacija šalje razne upite na odgovarajući komunikacijski port i provjerava pristigle odgovore. Ukoliko dongle uređaj nije prisutan, ili, ukoliko ne šalje odgovarajući ključ, program prestaje s radom. [seminarskirad.biz, 2004]

Osim što dongle štiti od ilegalnog kopiranja softvera, on se može koristiti i za onesposobljavanje određenih dijelova programa, ovisno o verziji softvera koja se kupila, odnosno, o kupljenoj licenci. U tom se slučaju kupcima uvijek isporučuje ista verzija programa, ali se isporučuje dongle s drugačijim ključem. Ukoliko korisnik kupi najskuplju verziju softvera, on dobiva dongle koji otključava sve funkcije programa, a ako kupi jeftiniju verziju, dobiva dongle koji omogućava rad programa, ali neke funkcije ostavlja zaključane. [Ibid]

Ključ dongle je iznimno teško kopirati, ali je zato mnogo jednostavnije probiti funkcije za komunikaciju s dongle ključem unutar same aplikacije. Iz tog je razloga nivo sigurnosti koji se postiže ovakvim načinom zaštite najčešće određen izvedbom same aplikacije, a ne izvedbom dongle-a. S druge strane, kod, koji se koristi za provjeru ispravnosti dongle-a unutar aplikacije, se može enkriptirati. Osim toga, može se enkriptirati i sva komunikacija aplikacije i dongle uređaja. [Ibid] Ukoliko je provjera ključa ugrađena na više mjesta u programu, te, ukoliko su ti dijelovi koda enkriptirani, može biti jako teško pronaći i ukloniti sve provjere iz aplikacije. [Ibid]

Kod nekih novih izvedbi dongle uređaja, može se pronaći ugrađena EPROM memorija, koja služi za pohranu programskog koda nekih funkcija u programu. „Funkcije u EPROM-u su enkriptirane i dekriptiraju se direktno u radnu memoriju kod izvršavanja programa. Na taj način je bez originalnog dongle-a praktički nemoguće probiti zaštitu jer dio koda jednostavo nestaje.“ [Ibid]

Unatoč navedenim prednostima, dongle uređaji se danas skoro više uopće ne koriste, a razlozi tome su:

• komplicirana instalacija (pošto je potrebno imati poseban upravljački softver – driver, koji se koristi za ispravan rad dongle ključa),

• visoka cijena (pošto je svakom korisniku osim primjerka aplikacije potrebno isporučiti i poseban primjerak dongle-a),

• nemogućnost distribucije softvera preko Interneta. [Ibid]



UniKey

„Tvrtka SecuTech predstavila je USB stick imena UniKey koji bi trebao štititi softverske uratke od neovlaštene upotrebe.“ [I.Gr., 2008]

Princip je taj da korisnik prilikom korištenja aplikacije, koja je zaštićena UniKeyem u USB priključku, treba imati u USB priključku uključen taj stick, inače će rad s aplikacijom biti onemogućen. [I.Gr., 2008]

Na ovaj način proizvođači softvera mogu kreirati ljusku koja dozvoljava pristup njihovom softveru samo preko UniKeya. „Osim u verziji koja dozvoljava rad samo jednom korisniku, postoje i verzije koje dozvoljavaju mrežni rad s više različitih klijenata. Za rad nije potrebna instalacija nikakvih posebnih drivera.“ [Ibid]

Stick je kompatibilan s Windowsima i Mac OS X-om. [Ibid]

Postoje 4 vrste UniKey uređaja, a to su: UniKey STD, UniKey PRO, UniKey Time i UniKey DRIVE. UniKey PRO je mrežna verzija UniKey dongle-a. Predstavlja evoluciju UniKey STD-a i integrira licencirani sustav upravljanja preko lokalne mreže. [SecuTech Solution Inc., 2010]


Zaštita pomoću instalacijskog medija

„Za ovaj način zaštite, aplikaciju je potrebno distribuirati na mediju kao što je meki ili tvrdi disk ili izbrisivi optički disk (CD-RW) na koji je moguće pisati podatke. U posebnoj datoteci na instalacijskom mediju je zapisan brojač instalacija programa. Nakon svake uspješne instalacije, brojač se poveća i ponovno zapiše u istu datoteku. Kad se dostigne određeni broj instalacija, program više nije moguće instalirati s tog medija.“ [seminarskirad.biz, 2004, str. 8]

Za ispravan rad ove zaštite, potebno je da datoteka s brojačem bude enkriptirana tako da joj je što teže promijeniti sadržaj, a sam medij mora biti što teže kopirati. [Ibid]

I ovaj se mehanizam zaštite rijetko koristi i to iz razloga „kao što su vezanost uz određenu vrstu instalacijskog medija, nemogućnost distribucije softvera preko Interneta, visoka cijena i nepraktičnost.“ [Ibid, str. 9]


Zaštita CD-a protiv kopiranja

„Najjednostavniji oblik zaštite je u obliku provjere da li se ispravan CD nalazi u CD čitaču.“ [Ibid, str. 9] Na taj se način može spriječiti kopiranje i pokretanje programa s tvrdog diska računala, „ali je također nemoguće razlikovati originalni od ilegalnog kopiranog CD-a.“ [Ibid, str. 9]

Čak je takva jednostavna zaštita korisna jer „onemogućava softverske pirate da rade, tzv., ripranje originalnog programa. Ripanje je postupak koji se najčešće primjenjuje za računalne igre, a s njim se s originalnog CD-a uklone sve slike, animacije, zvukovi, DirectX upravljački programi i svi ostali dijelovi koji zauzimaju puno prostora, a nisu nužno potrebni za rad programa.“ [Ibid] Nakon ovog postupka, preostali se sadržaj komprimira i distribuira preko Interneta.

„Kompliciranije zaštite protiv kopiranja CD medija se obično rade tako da se na originalni CD snimi informacija koju je nemoguće kopirati pomoću komercijalno dostupnog softvera za kopiranje CD-ova. Veliki dio softvera provjerava naziv (engl. Label) CD-a koji se trenutno nalazi u čitaču. Ako se za naziv CD-a koriste nestandardni znakovi, to može zbuniti većinu softvera za kopiranje CD medija.“ [Ibid]

Kada se provjerava da li su na CD-u prisutne sve datoteke, izvodi se zaštita CD-a. Naročito se provjeravaju datoteke koje se najčešće uklanjaju prilikom ripanja CD-a. [Ibid]


Fiksna registracijska šifra

Najjednostavniji oblik zaštite je ugrađivanje programske funkcije koja zahtijeva od korisnika unošenje određene šifre za registraciju. Ta je vjerojatnost uvijek ista i ne ovisi ni o kakvim parametrima kao što su korisnički podaci ili podaci o korisnikovom računalu. „Kod takve zaštite je dovoljno da pirat jednom pronađe registracijsku šifru i objavi je na Internetu pa da svatko može besplatno registrirati taj softver.“ [Ibid, str. 9]

Premda je ovaj tip zaštite poprilično jednostavan, on ima i neke prednosti nad ostalim mehanizmima. „Najveća prednost je što ispravna šifra za registraciju ne mora biti pohranjena na disku već je pohranjena negdje u programskom kodu. Tu šifru je nemoguće saznati čitanjem programskog koda jer se obje šifre (šifra pohranjena u kodu i šifra koju upiše korisnik) najprije nekim složenim matematičkim operacijama pretvore u nove vrijednosti koje se tek tada uspoređuju. Ako su te operacije dovoljno komplicirane, može biti jako teško shvatiti ispravan postupak računanja šifre.“ [Ibid]

Način kako ukloniti šifru je prepravljanje dijela koda za provjeru šifre tako da se potpuno zaobiđe provjera i program normalno nastavi s radom. Kako bi se spriječilo ovakvo probijanje zaštite, „moguće je koristiti registracijsku šifru za dekriptiranje dijelova programskog koda. Ako je dio koda enkritpiran pomoću registracijske šifre, onda će ga biti moguće dekriptirati samo pomoću te iste šifre. Čak i ako pirat uspije premostiti algoritam za provjeru šifre kod upisa, program još uvijek neće raditi ispravno.“ [Ibid]

Prije nego što korisnik pokrene funkciju, enkriptirani se dio koda može dekriptirati u memoriji. Kada funkcija više nije potrebna, ponovno se dio koda enkriptira. Ukoliko program ima nekoliko enkriptiranih dijelova, tada će maksimalno jedan dio biti dekriptiran u memoriji u svakom trenutku. To piratima onemogućava snimanje dekriptiranog programskog koda iz memorije. [Ibid]


Promjenjiva registracijska šifra

Jedan od boljih načina zaštite je „generiranje registracijske šifre pomoću parametara koji su sakupljeni iz podataka o korisniku ili tajno prikupljeni iz parametara korisničkog računala.“ [Ibid, str. 9]

Ovime se generira šifra iz korisničkih podataka te se koriste podaci poput korisničkog imena, adrese, naziva tvrtke i slično. „Kada korisnik upiše svoju šifru, program provjerava da li se šifra poklapa s izračunatom šifrom.“ [Ibid]

„Program koji koristi podatke sakupljene iz korisničkog računala radi na sličan način samo što umjesto korisničkih podataka koristi razne podatke o korisničkom računalu poput serijskog broja diska, raznih postavki Windows Registrya i sl. Iz prikupljenih vrijednosti program računa neku vrijednost i pohranjuje je u skrivenoj datoteci na tvrdom disku računala.“ [Ibid] Korisnik je obavezan poslati generirani identifikacijski broj računala proizvođaču softvera. Na osnovi tog broja mu proizvođač vraća odgovarajuću šifru za registraciju softvera. [Ibid]


Serijski broj ovisan o hardveru

Ova se metoda smatra najčešće korištenom metodom hardverske zaštite računala. „Prilikom instalacije programa, generira se pseudo-slučajni serijski broj računala. Aplikacija šifrira taj broj i sakrije ga u posebnu datoteku, a može ga zapisati i u neku od datoteka operacijskog sustava. Serijski broj se generira pomoću serijskog broja isporučene kopije softvera te iz prikupljenih podataka o hardveru računala i konfiguraciji operacijskog sustava.“ [seminarskirad.biz, 2004, str. 10] Na način se postiže jedinstveni generirani broj.

Nakon instalacije je potrebno registrirati broj. „U procesu registracije, generirani se broj šalje proizvođaču softvera koji korisniku vraća registracijsku šifru koja odgovara generiranom serijskom broju hardvera.“ [Ibid, str. 10]


Zaštita pomoću registracijske datoteke

Registracijske datoteke imaju ulogu jednaku registracijskim šiframa, ali je njihova prednost u količini informacija koju je moguće spremiti u njih. „Registracijska datoteka može sadržavati informacije o korisniku, registracijsku šifru za autentifikaciju korisnika, ključeve za dekriptiranje enkriptiranih dijelova izvršnog koda aplikacije i sl.“ [Ibid] Ona je obično enkriptirana tako da je nemoguće pročitati i/ili promijeniti njezin sadržaj.

U registracijskoj datoteci može biti zapisan „dio izvršnog koda aplikacije“ (seminarskirad.biz, 2004) tako da, ukoliko datoteka ne postoji ili je neispravno dekriptirana, aplikaciji nedostaje dio koda i ne može ispravno raditi. U nju je moguće pohraniti podatke o hardveru korisnikovog računala i na taj način je potrebna jedinstvena datoteka za svako računalo. [Ibid]

„Kao i kod registracijskih šifri, iz aplikacije je moguće ukloniti dio koda koji provjerava ispravnost registracijske datoteke. Kako bi se to otežalo, provjera ispravnosti datoteke se ugrađuje u više mjesta u programu i informacije u datoteci se koriste za šifriranje dijelova izvršnog koda.“ [Ibid]


Komercijalni softver

FlexLM „je softver tvrtke Macrovision.“ [seminarskirad.biz, 2004, str. 12] Smatra ga se poprilično kompliciranim sustavom koji služi za nadzor na softverskim licencama i danas predstavlja jedan od najraširenijih komercijalnih rješenja za zaštitu softvera. Ovaj program uključuje „zaštitu izvršnog koda aplikacije, kontrolu ispravnosti registracijskih datoteka na disku, softver za implementaciju na poslužiteljima koji nadziru korištenje licenci u lokalnoj mreži, sustav za lako obnavljanje licenci i centralnu administraciju cijelog sustava.“ [Ibid, str. 12]

FlexLM sustav se sastoji od četiri glavna dijela, a to su:

• „aplikacijski softver

• registracijska datoteka

• poslužitelj za kontrolu licenci

• poslužitelj proizvođača softvera.“ [Ibid, str. 13]


HASP (Hardware Against Software Piracy) je softver koji proizvodi tvrtka Aladdin. Smatra ga se sustavom za „zaštitu aplikacija koji primjenjuje dongle ključeve. Softver podržava dongle ključeve koji se spajaju na skoro sve moguće komunikacijske portove u računalu. Postoje izvedbe donglea za paralelni port, USB port, PCI sabirnicu (kartica koja se ugradi u računalo) te kao PCMCIA kartica.“ [Ibid, str. 13]

PC Guard „je softver kompanije Sofpro“, a namijenjen je „zaštiti softvera i kontroli licenci na Windows platformama.“ [Ibid, str. 14] Ovaj softver štiti softver pomoću „elektroničke omotnice ili API poziva u izvornom kodu aplikacije, slično kao i HASP softver.“ [Ibid]

Zaštita se kod ovog softvera postiže „enkripcijom izvršnog koda i detektiranjem pokušaja analize koda.“ [Ibid]

Postoje dvije posebne verzije PC Gauard-a gdje se jedna koristi za klasične Windows aplikacije, a druga za .NET aplikacije. [Ibid]

--Ssvatos 22:07, 3. siječnja 2012. (CET)


Zaštita izvornog koda programa

„Razvojem i komercijalizacijom softvera, zaštita izvornog programskog koda postala je nužan faktor u radu softverske industrije.“ [sigurnost.lss.hr, 2010, HTML stranica] Iz tog su razloga razvijene razne tehnike kojima se nastoji programski kod učiniti nečitljivim ljudima. Najpopularnija metoda koja se koristi za „skrivanje“ izvornog koda programa je obfuskacija. Međutim, postoje i brojne druge tehnike koje se prilikom izmjene koda kombiniraju. Da bi se obfuskacija i druge metode mogle izvoditi, postoji mnogo besplatnih i komercijalnih alata koji se mogu primijeniti na razne programske jezike. [Ibid]

Obfuskacija spada pod paradigmu „security through obscurity“, odnosno, sigurnost kroz nejasnoće. Ova paradigma označava tehniku koja koristi tajnost i nejasnoće kako bi se povećala sigurnost računalnih sustava i programa. [Ibid]

„Obfuskacija podrazumijeva 'zamračivanje koda', odnosno, stvaranje nečitkog i ljudima nerazumljivog koda programa od izvornog programskog koda.“ [Ibid] Međutim, ona ne može u potpunosti zaštititi izvorni programski kod od zloćudnih napada i inverznog inženjerstva. Ona ima mogućnost na neko vrijeme spriječiti napad i to se smatra njezinim primarnim ciljem. Bolja zaštita od ove se postiže kombinacijom obfuskacije s drugim tehnikama zaštite, kao što su code morphing, enkripcija i druge. [Ibid]


Primjer obfuskacije


Uzmimo najjednostavniji primjer programa, "Hello World!", napisan u C-u. Normalan kod izgleda ovako:

HelloWorld.JPG

Isti programski kod (također napisan u C-u), koji ima istu funkciju, ali je obfusciran, znači, nerazumljiv, izgleda ovako [Parker, 2009]:

Obfuscation.JPG


„Rizik od otkrivanja izvornog koda je veći s tehnologijama kao što su Java i Microsoft.NET koje koriste, tzv., JIT prevođenje (engl. just-in-time) koje omogućuje programerima da se instrukcije programa u stvarnom vremenu prevode u virtualni strojni kod koji razumije računalo.“ [sigurnost.lss.hr, 2010, pdf dokument, str. 6]

Obfuskaciju također koriste i zloćudni programi kako bi sakrili svoju prisutnost i proširili se po računalnom sustavu. To nas dovodi do pojma polimorfizma gdje se govori o programskom kodu koji stalno mijenja svoj izgled, ali mu funkcionalnost ostaje ista. Obfuskacija omogućava polimorfnim zloćudnim programima da mijenjaju svoj kod na više načina, a neki od njih su „dodavanje beskorisnog koda, mijenjanje imena registra, promjena varijabli i konstanti u programu, promjena rasporeda naredbi i dr.“ [sigurnost.lss.hr, 2010, HTML stranica]

Postoje brojni postupci koji se odnose na to kako vratiti izvorni kod originalnog programa. „Deobfuskacija je tehnika dobivanja izvornog koda programa iz obfusciranog programskog koda.“ [Ibid] U njoj se koriste statičke i dinamičke analize kako bi se dobio originalni izvorni kod programa. [Ibid]


Ostale tehnike za zaštitu izvornog koda programa


Enkripcija je „proces transformiranja informacija (engl. plain text) koristeći poseban algoritam (engl. cipher), kako bi se dobila informacija nečitka svima, osim onima koji imaju posebno znanje potrebno za razumijevanje kriptiranog teksta, odnosno, onima koji imaju ključ (engl. key).“ [sigurnost.lss.hr, 2010, pdf dokument, str. 7] Enkripcija aplikacija podrazumijeva zaštitu izvornog programskog koda, enkripciju i dekripciju podataka, kao što su oni pohranjeni na tvrdom disku, elektronička pošta, paketi poslani preko računalne mreže i slično. „Enkripcijom se programski kod može promijeniti na način da više ne bude čitljiv bez pristupa ključu kriptiranja.“ [Ibid]

Neki od alata koji se koriste za enkripciju su Rijndael, Serpent, Twofish. [Ibid]

„Code morphing“ je jedna od tehnika zaštite izvornog koda programa, aplikacija od modifikacija, analiza, inverznog inženjerstva i sličnih nelegalnih radnji. Suština mu je u zamjeni naredbi u kodu s njima sličnima, dok krajnji rezultat ostaje jednak, odnosno, funkcija ostaje nepromijenjena. Ova tehnika mijenja strojni kod, „dakle, programski kod nakon prevođenja“. [Ibid, str. 8]

„Security through obscurity“ je metoda koja koristi tajnost (dizajna, podataka, izvornog koda) kako bi se postigla sigurnost. Ovaj je princip opće prihvaćeni pojam u kriptografiji i steganografiji. On pruža sigurnost, „ali ne potpunu jer je samo pitanje vremena kada će nejasnoća na kojoj počiva cijeli security through obscurity prestati biti nejasnoća, odnosno, kada će ranjivost sustava postati poznata.“ [Ibid] "Security through obscurity" može poslužiti kao određena „blokada“ nekog problema (dok se on ne riješi) koji je programeru poznat. Osim toga, on se koristi da u „relativno kratkom roku smanji rizik od iskorištavanja ranjivosti glavne ili neke od glavnih komponenti sustava.“ [Ibid] Ovaj se princip također može koristiti za zastrašivanje potencijalnih napadača. Bitno je napomenuti kako se ovaj princip može koristiti kao linija obrane, ali ne i za cijelu liniju ili kao primarnu mjeru sigurnosti. [Ibid]

--Ssvatos 22:07, 3. siječnja 2012. (CET)


Područja primjene packing-a

U teoriji računarske složenosti, problem packinga niza blokova je kombinatorički NP-hard („non-deterministic polynomial-time hard“, što je zapravo tip problema kod kojih je najslabiji problem po jačini jednak najjačem problemu u NP-u) problem. [wikipedia.org, 2011, „NP-hard“]

Unutar njega, objekti koji su različitih opsega moraju biti upakirani u konačan broj blokova koji su kapaciteta veličine V na način da se minimizira broj blokova koji se koriste. Postoji mnogo različitih tipova ovog problema, kao što je 2D packing, linarni packing, packing prema težini, packing s obzirom na troškove i slično. Za te tipove postoji mnogo aplikacija, kao što je punjenje spremnika, ukrcavanje u vagone s obzirom na kapacitete težine koje ti vagoni primaju, izrada sigurnosnih kopija na prenosive medije te mapiranje unutar područja programiranja koje je dizajna poluvodičnog čipa. Na problem packinga niza blokova se također može gledati kao na poseban slučaj podjele zaliha. Kada je broj blokova ograničen na jedan i svaka stavka je kategorizirana i s opsegom i s vrijednosti, tada se javlja problem kako prilagoditi vrijednost stavki unutar bloka, što je kod nas poznato pod nazivom „problem naprtnjače“. [wikipedia.org, 2011, „Bin packing problem“]

Packing bez gubitaka od tvrtke Meridian je vlasnička, zakonom zaštićena tehnika za kompresiranje bez gubitaka koja se koristi za kompresiranje PCM („pulse-code modulation“, metoda koja se koristi za digitalni prikaz odabranih analognih signala) audio podataka. Osim toga, ova tehnika predstavlja standardnu metodu kompresije bez gubitaka koja se koristi za DVD-Audio sadržaje i u prosjeku postiže oko 1.5:1 sažimanja na većinu glazbenog materijala. Svi DVD-Audio playeri su opremljeni s ovom tehnikom dekompresije. [wikipedia.org, 2011, „Meridian Lossless Packing“]

Neki tipovi kompresije podataka su bez gubitaka. To znači da se rezultat bit-po-bit savršeno slaže s originalnom kada su podaci dekompresirani. [wikipedia.org, 2011, „Data compression“]

--Ssvatos 22:07, 3. siječnja 2012. (CET)


Packaging i labeliranje

„Packing“ i „packaging“ su termini koje osobama, koje prvi puta počinju razmatrati metodu packing-a, mogu djelovati slično, ili čak isto. Bitno je napomenti kako se ova dva termina ne odnose sasvim na isto, te je zbog toga važno utvrditi razliku. Odnosno, packaging je pojam širi od packing-a. U nastavku je objašnjen packaging kako bi se utvrdilo što on znači, a nakon njega packing, koji je za nas ovdje važniji.

Packaging je znanost, umjetnost i tehnologija obuhvaćanja ili zaštite proizvoda za distribuciju, pohranu, prodaju i uporabu. Packaging se također odnosi na proces dizajniranja, razvoja i izrade paketa. Packaging se može opisati kao koordinirani sustav koji se koristi za pripremu dobara za transport, skladištenje, logistiku, prodaju i krajnju uporabu. On sadrži, štiti, prevozi, obavještava i prodaje. U mnogim je zemljama u potpunosti integriran u vladu, poslovanje, institucije i osobnu uporabu. Laberiranje paketa ili samo laberiranje je bilo koja napisana, elektronička ili grafička komunikacija na upakiranoj ili odvojenoj, ali pridruženoj labeli. [wikipedia.org, 2011, „Packaging and labeling“]

Packaging i laberiranje paketa imaju nekoliko ciljeva, i to u fizičkoj zaštiti, kod zaštite barijerama, kod nagomilavanja, kod prijenosa podataka, marketinga, sigurnosti, koriste se radi pogodnosti i kod kontrole dijelova koji se prenose. [Ibid] Kod prijenosa podataka, paketi i labele komuniciraju u vezi načina na koji treba pakete ili proizvode koristiti, prenositi, reciklirati ili rasporediti. [Ibid]

Kod sigurnosti, packaging igra veliku ulogu u slučaju smanjivanja rizika dostave. Paketi mogu biti projektirani iz razloga da se pomogne reducirati rizik od krađe. Korištenje packaginga je mnogim slučajevima mjera prevencije. [Ibid] Procesi dizajnirani packaging-om redovito angažiraju „rapid“ prototipove, projektiranje s pomoću računala, proizvodnju s pomoću računala i automatizaciju dokumenata. [wikipedia.org, 2011, „Packaging and labeling“]

--Ssvatos 22:07, 3. siječnja 2012. (CET)


Packing kao metoda zaštite softvera

Packing se kod računalne znanosti odnosi na kompresiranje podataka, kao što je bit-packing. [wikipedia.org, 2011, „Packing“] U računalnoj znanosti i informacijskoj teoriji, kompresiranje podataka, kodiranje izvora ili redukcija bitova uključuje enkodiranje informacija pri čemu se radije koristi manje bitova nego originalni, cjelokupni prikaz. [wikipedia.org, 2011, „Data compression“] Kompresija je korisna zato što pomaže reducirati potrošnju skupih izvora, kao što je prostor tvrdog diska ili širina pojasa prijenosa podataka. S druge strane, kompresija podataka mora biti dekompresirana kako bi se mogla koristiti, i ovo dodatno procesiranje može biti štetno za neke aplikacije. [wikipedia.org, 2011, „Data compression“]

Packing je tehnologija „za obmanjivanje“ koja se koristi za zloćudne programe. Ponekada se koristi u svrhu smanjivanja veličine zloćudnog koda, kako bi se kod lakše prenio preko Interneta, međutim, ima i efekt da kod zloćudnog programa učini otpornijim za statističku analizu. [Sun, Ebringer, Boztas, 2008]

Packer“ je program koji (obično) uzme postojeću .exe datoteku, kompresira i/ili šifrira njezin sadržaj te ju zatim pakira u novi .exe fajl. Kada se izvodi, raspakirani, zamjenski, programski element (iliti, engleski, stub) najprije raspakira originalni .exe kod, a zatim prenosi upravljanje (odnosno, kontrolu) na originalni fajl. Izvođenje originalne datoteke je u većini slučajeva nepromijenjeno. [Ibid]

Međutim, kako raste broj različitih programa koji se koriste za packing, razina njihovih lažnjaka također raste. :( Mnogi vješti packeri implementiraju mehanizme zaštite softvera kao što je prekid i kontrola iznimkama preko omana, anti – debugginga, anti – Vmware-a i slično, kako bi omeli analize koje bi se mogle izvoditi. Neki packeri, kao što je tElock i Yodin Kripter sadrže vlastiti modicirani kod kako bi rutina unpacking-a bila dešifrirana prije izvođenja te kako bi bila ponovno šifrirana odmah nakon izvođenja. To se zove višestruko raspakiravanje ili multistage unpacking. Novi packeri koriste tehnologiju zaštite preko virtualnih mašina. Packeri kao što je Themida i VMProtect implementiraju svoju vlastitu virtualnu mašinu koja prenosi dijelove originalnog koda. Na ovaj je način teško analizirati zaštićeni program. [Sun, Ebringer, Boztas, 2008]

Detekcija kod virtualne mašine je svojstvo samoobrane od mnogih zloćudnih programa. Namjena joj je ispitati zloćudni program, te je tako softver za virtualizaciju, poput Vmware-a, vrlo popularan alat među analitičarima. [Zeltser, 2006]

Themida je packer koji uključuje podršku za VM detekciju (otkrivanje). Ona se ubraja pod komercijalne packere. Programeri često računaju na packere kako bi zaštitili legitimne programe od izmjena (kako netko ne bi izmijenio source). Tako je Themida vrlo popularna u Kini zato što ju developeri koriste kako bi zaštitili mobilne aplikacije. Oni žele maksimalnu sigurnost kako bi zaštitili svoje osjetljive komunikacije između softvera i mobilnih uređaja. [Zeltser, 2006]

Themida je bazirana na ranije razvijenom packeru koji je bio zvan Xtreme-Protector. Oba alata su napisana od strane istog autora. [Zeltser, 2006]


Anti-Debugging tehnike koriste različite forme za skrivanje koda, kako bi se on zaštitio od inverznog inženjerstva. Osim toga, na ovaj se način programi automatski analiziraju u virtualnim okruženjima. Softveri koji se koriste kod tehnika anti-debugging-a su ASProtect, Armadillo, Themida, SVKP, VMProtect i slični. [Sriram, 2010]

Koncept anti-debugging-a je kao tehnika bio razvijen od strane isporučitelja softverskih proizvoda, koji su željeli zaštititi svoj izvorni kod. Drugim riječima, oni su htjeli zaštititi kod svojih aplikacija od izmjena. Neke tehnike anti-debugginga uključuju detekciju kontrola debugger-a ili izvođenje koda unutar virtualnog okruženja. Jedna specifična tehnika detekcije debugger-a je Olly koja je implementirana od strane packera Themide. [Sriram, 2010]

VMProtect štiti kod tako što ga izvodi u virtualnoj mašini s nestandardiziranom arhitekturom koja ga čini iznimno složenim za analizirati. Osim toga, na taj se način izvorni kod štiti kako bi se spriječilo krekiranje softvera. VMProtect generira i verificira serijske brojeve, ograničava slobodne nadogradnje (odnosno, samostalna ažuriranja) i drugo. [vmprotect.software.informer.com, „VMProtect“]

VMProtect podržava i 32-bitne i 64-bitne .exe datoteke, dinamički učitane knjižnice i upravljačke programe. Odnosi se na .exe format od Windowsa. VMProtect štiti datoteke koje se pokreću na gotovo svakoj verziji Windowsa. Međutim, ne podržava .NET izvršni format i ima ograničenu podršku za Virtual Box izvršne formate. [vmpsoft.com/products/vmprotect, „VMProtect Features“]

Posljednja verzija VMProtect-a omogućava dodavanje serijskog broja na zaštićene aplikacije. Ovo je obilježje podržano od strane PayPro Globalnog pružatelja e-usluga. [Ibid]

Postoje dvije mogućnosti VMProtect-a, ovisno o korisničkom sučelju, a to su: simple i expert. Simple mod omogućava da se lagano odaberu funkcije za zaštitu, podese opcije i zaštite datoteke sa samo par klikova. Expert mode je za napredne korisnike jer pokazuje kod, omogućava pisanje skripti, skupiti DDL-ove i drugo. Osim toga, kod ovog se moda mogu postaviti i mnoge druge dodatne postavke. [vmpsoft.com/products/vmprotect, „VMProtect Features“]


Kompresija izvršnih datoteka u PE, ELF

Kada kompajler kompajlira kod u C-u, generira jedan objektni fajl, koji je, prema tome, povezan u program. Ovi „objektni“ fajlovi (iliti datoteke) i .exe datoteke imaju poseban format. [www.theparticle.com, 2006] Pod Windowsima, Visual C++ (i svaki Windows kompajler) izvodi PE COFF datoteke. Pod Linuxom, GCC izvodi ELF datoteke (ili neke druge, ovisno o konfiguraciji računala). [Ibid]

ELF je skraćenica za „Executable and Linking Format“, a COFF je skraćenica za „Common Object File Format“. [www.theparticle.com, 2006]

Svaka ELF datoteka se sastoji od jednog ELF zaglavlja koji je popraćen podacima datoteke. Podaci datoteke mogu sadržavati: tabelu zaglavlja programa, koja opisuje nula ili više segmenata; tabelu zaglavlja sekcije, koja opisuje nula ili više sekcija; podatke koji su navedeni u unutrašnjosti tabele zaglavlja programa ili u unutrašnjosti tabele zaglavlja sekcije. Segmenti sadrže informaciju koja je potrebna za vrijeme dok se izvodi datoteka, dok sekcije sadrže bitne podatke za povezivanje i premještanje. Barem jedna sekcija mora posjedovati barem jedan bajt u unutrašnjosti datoteke, ali mogu postojati samostalni bajtovi koje ne posjeduje ni ti jedna sekcija. [wikipedia.org, 2011, „Executable and Linkable Format“]

PE format je struktura podataka koja enkapsulira informacije koje su potrebne za Windowse, kako bi se .exe kod mogao izvoditi. [wikipedia.org, 2011, „Portable Executable“]

Exe kompresija je bilo kakva kompresija .exe datoteke i kombiniranje kompresiranih podataka s dekompresiranim kodom u jedno izvođenje. Kada se izvodi jedno ovakvo izvođenje, dekompresirani kod ponovno provodi originalni kod iz kompresiranog koda. U mnogim se slučajevima ovo transparentno događa, tako da se kompresija može koristiti na isti način kao i orginal. [wikipedia.org, 2011, „Executable compression“]

Na izvršnu kompresiju se može gledati kao na arhivu koja se sama raščlanjuje i gdje su kompresirani podaci pakirani s odgovarajućim dekompresiranim kodom u jednoj .exe datoteci. Neka se kompresija izvršnih datoteka može dekompresirati kako bi se obnovilo originalno izvođenje bez da ga se direktno izvodi. Dva programa koja se koriste za ovo su CUP386 i UNP. [Ibid]

Većina kompresija na izvršne datoteke dekompresira originalni kod u memoriju i većina njih zahtjeva više memorije da bi se mogle pokrenuti. Međutim, neke kompresije imaju dodatne zahtjeve, kao one koje pišu izvršne dekompresije na datotečni sustav prije nego što ga izvode. [Ibid]

Kompresija izvršnih datoteka nije ograničena binarnim izvođenjem, ali može biti primijenjena na komandnu datoteku, kao što je JavaScript. Iz razloga što je većina skriptnih jezika dizajnirana da rade na način čitljiv za korisnike (a to zahtjeva visoku redundanciju), kompresija može biti efektivna i jednostavna. To se, npr., odnosi na zamjenu dugačkih imena varijabli i funkcija kraćim verzijama. [Ibid]

Distributeri softvera koriste izvršnu kompresiju iz različitih razloga, a primarno radi reduciranja sekundarnih zahtjeva pohrane svog softvera; pošto su izvršni kompresori dizajnirani da kompresiraju .exe kod, oni često postižu bolji rang kompresije od standardne podatkovne kompresije, kao što je, npr., zip ili gzip. Ovo omogućava distributerima softvera da ostanu unutar ograničenja svojih odabranih distribucijskih medija (kao što je CD-ROM, DVD-ROM) ili da smanje vrijeme i široki raspon potrošačkih zahtjeva koji pristupaju softveru preko Interneta. [Ibid]

Kompresija izvršnih datoteka se često koristi kako bi spriječila promjene nad kodom ili kako bi prikrila sadržaj izvođenja (npr, kako bi prikrila postojanje zloćudnih programa na računalu, tako da ga antivirusni program ne uoči) i to odgovarajućim metodama kompresije i/ili dodane enkripcije. Kompresija se može koristiti kako bi spriječila direktno rastavljanje, izmjene potpisa. Mada ovo ne eliminira mogućnost inverznog inženjerstva, može ga učiniti težim ili skupljim. [Ibid]

Kompresija zahtjeva manje prostora u datotečnom sustavu, čime je potrebno i manje vremena da se podaci prebace iz datotečnog sustava u memoriju. Mada, s druge strane, zahtjeva dosta vremena za dekompresiranje podataka prije nego što započne izvođenje. [Ibid]

Nedostatak ove metode je taj što, na operacijskim sustavima koji čitaju .exe slike kada dobiju zahtjev od diska, kompresija izvršnih datoteka je manje učinkovita. Dekompresijski, programski element alocira blok memorije gdje se nalaze dekompresirani podaci i to ostaje alocirano dok je god izvođenje učitano, bez obzira na to da li se taj blok memorije koristi ili ne. [Ibid]

Kompresija izvršnih datoteka je bila popularna kada su računala bila ograničena kapacitetom pohrane, disketama i tvrdim diskovima male veličine. Tada je ona omogućavala računalu da pohrani veću količinu softvera. [Ibid]

Packeri koji se koriste kod PE-a su: Armadillo Packer, ASPack, Cexe, Enigma Protector, PECompact, Themida, UniKey Enveloper i drugi. Kod ELF datoteka, to su: gzexe, HASP Envelope, UPX. [Ibid]

Samodekompresirajući kompresori su oni koji kompresiraju originalnu skriptu i izlaz nove skripte koja ima dekompresor ili kompresirane podatke. Ovi kompresori su JsSfx i Packify. [Ibid]

Kompresori koji smanjuju zalihost su oni koji miču prazan prostor, komentare i skraćuju imena varijabli/funkcija bez da utječu na njihovo ponašanje u skripti. To su sljedeći kompresori: Packer, YUI kompresor, Shrinksafe, JSMin. [wikipedia.org, 2011, „Executable compression“]

--Ssvatos 22:07, 3. siječnja 2012. (CET)


.NET Reflector vs Themida

.NET Reflector

.NET Reflektor je „assembly browser“ za .NET platformu. Omogućuje pregled, analizu, dekompajliranje i debugiranje .NET assembly-ja. Dekompajlira uu C#, VB, IL ili F#.

Alat je komercijalan no postoji i demo verzija ograničena na 30 dana korištenja.

Themida

Themida je alat za zaštitu softvera. Sprječava pregled i modificiranje kompajliranje aplikacije. Radi tako što preuzima kontrolu nad procesorom kada je zaštićena aplikacija pokrenuta te provjerava je li korišten softver za krekiranje. Ako je sve uredu, Themida vraća kontrolu procesoru i aplikacija se izvršava kao i obično.

Themida je također komercijalan alat s dostupnom demo verzijom.

Fight

Najprije ću pokazati kako je lako s Reflectorom doći do izvornog koda aplikacije. U primjeru će biti korištena igra Bastion za koju slučajno znam da je pisana u C#.

Potrebno je odabrati assembly datoteku koju želimo dekompajlirati.

ReflectorOdabirDatoteke.JPG

I to je to, sada je moguće pregledavati kod.

ReflectorGotovo.JPG

Ako želimo izmjeniti kod, biramo „Export Assembly Source Code“. Tako dobijemo Visual Studio projekt.

MVSProjekt.JPG

Slijedi postupak zaštite pomoću Themide.

Odaberemo datoteku koju želimo zaštititi.

ThemidaOdabirDatoteke.JPG

Moguće je podesiti brojne opcijeno defaultne vrijednosti će biti ok. Klik na „protect“ pa opet „protect“. I to je to.

ThemidaProtect.JPG

Ako sada pokušamo dekompajlirati exe s Reflectorom nećemo uspjeti.

ReflectorFail.JPG

--Matvidako 12:52, 6. siječnja 2012. (CET)

UPX

UPX (Ultimate Packer for eXexutables) je besplatan, prijenosan i brz packer. Podržava više formata, no među podržanim formatima nije .NET exe. Dolazi bez grafičkog sučečlja.

Za kompresiranje, potrebno je samo upisati upx i putanju do datoteke koju kompresiramo. Da bi datoteku dekompresirali, dodajemo –d.


UpxGotov.JPG

--Matvidako 16:36, 6. siječnja 2012. (CET)

Zaključak

U budućnosti se očekuje razvoj sve sofisticiranijih tehnika zaštite izvornog programskog koda, pa će reverzni inženjering takvog koda biti sve kompliciraniji. S jedne strane to pogoduje proizvođačima komercijalnog softvera čiji će proizvodi tako biti zaštićeniji, no s druge strane to će stvarati dodatne probleme proizvođačima antivirusnih alata koji će sve teže moći detektirati zaštićene zlonamjerne programe. [sigurnost.lss.hr]

--Matvidako 13:33, 6. siječnja 2012. (CET)

Final3.jpg

--Ssvatos 22:26, 3. siječnja 2012. (CET)

Reference

• About .NET Reflector (2012) Članak dostupan 3.1.2012. na: http://www.reflector.net/about/.

• Andress, A. (2004) Surviving Security, How to Integrate People, Process, and Technology (Second Edition). CRC Press LLC, United States of America.

• Anonymous (2004) Hakerski vodič za zaštitu. Kompjuter Biblioteka, Beograd.

• Bača, M. (2004) Uvod u računalnu sigurnost. Narodne novine, Zagreb.

• Berry, T. Packaging and labeling your products. Mplans.com. Članak dostupan 21.12.2011. na: http://articles.mplans.com/packaging-and-labeling-your-products/.

• Bin packing problem. (2011) Wikipedia.org. Članak dostupan 21.12.2011. na: http://en.wikipedia.org/wiki/Bin_packing_problem.

• Boztaş, S., Ebringer, T., Sun, L. (2008) An automatic anti-anti-Vmware technique applicable for multi-stage packed malware. Članak dostupan 21.12.2011. na: http://wenku.baidu.com/view/d84440d184254b35eefd344f.html.

• Contos, B.T. (i suradnici) (2007) Physical and Logical Security Convergence. Syngress Publishing, Burlington, United States of America.

• Data compression. (2011) Wikipedia.org. Članak dostupan 21.12.2011. na: http://en.wikipedia.org/wiki/Data_compression.

• Dragičević, D. (2004) Kompjuterski kriminalitet i informacijski sustavi. IBS, Zagreb.

• Executable and Linkalbe Format. (2011) Wikipedia.org. Članak dostupan 21.12.2011. na: http://en.wikipedia.org/wiki/Executable_and_Linkable_Format.

• Executable compression. (2011) Wikipedia.org. Članak dostupan 26.12. na: http://en.wikipedia.org/wiki/Executable_compression.

• Feinstein, K. (2005) Kako se boriti protiv neželjene pošte, virusa i špijunskih programa. Mikro knjiga, Zagreb.

• I.Gr. (2008) Hardverska zaštita softvera. Članak dostupan 16.12.2011. na: http://www.bug.hr/vijesti/hardverska-zastita-softvera/88436.aspx.

• Meridian Lossless Packing. (2011) Wikipedia.org. Članak dostupan 21.12.2011. na: http://en.wikipedia.org/wiki/Meridian_Lossless_Packing.

• Mitnick, K.D., Simon, V.L. (2003) Umjetnost obmane, utjecaj ljudskog faktora na sigurnost. Mikro knjiga, Beograd.

• Nacionalni CERT, LS&S. (2010) Metode zaštite dokumenata. CARNet. Članak dostupan 16.12.2011. na: http://sigurnost.lss.hr/documents/LinkedDocuments/NCERT-PUBDOC-2010-04-296.pdf.

• Nacionalni CERT, LS&S (2004). Zaštita softvera. CARnet, Zagreb. Članak dostupan 16.12.2011. na: http://www.seminarskirad.biz/seminarski/zastita_softvera.pdf.

• NP – hard. (2011) Wikipedia.org. Članak dostupan 24.12.2011. na: http://en.wikipedia.org/wiki/NP-hard.

• Packaging and labeling. (2011) Wikipedia.org. Članak dostupan 21.12.2011. na: http://en.wikipedia.org/wiki/Packaging_and_labeling.

• Packing. (2011) Wikipedia.org. Članak dostupan 21.12.2011. na: http://en.wikipedia.org/wiki/Packing.

• Parker, B. (2009) Obfuscation. Članak dostupan 4.1.2011. na: http://www.brandonparker.net/code_obf.php.

• Petrocelli, T. (2006) Data Protection and Information Lifecycle Management. Pearson Education, Massachusetts, United States of America.

• Portable Executable. (2011) Wikipedia.org. Članak dostupan 21.12.2011. na: http://en.wikipedia.org/wiki/Portable_Executable.

• Požgaj. Normativna zaštita softvera. Ekonomski fakultet, Zagreb. Članak dostupan 16.12.2011. na: http://web.efzg.hr/dok//inf/pozgaj/pisani%20materijali/T13%20Normativna%20za%C5%A1tita.pdf.

• SecuTech Solution Inc. (2010) Unikey Family. Članak dostupan 16.12.2011. na: http://www.esecutech.com/software-protection/unikey-family/unikey-family.html.

• Software protection method. (2006) International Patent Classification. Članak dostupan 16.12.2011. na: http://www.freepatentsonline.com/EP1851670.pdf.

• Themida Overview (2011) Članak dostupan 3.1.2012. na: http://www.oreans.com/themida.php.

• Trends in Anti-Debugging. (2010) Computer Forensics, Data Acquired and Frozen. Članak dostupan 21.12.2011. na: http://computer-forensics.co.in/tag/latest-trends-in-anti-debugging/.

• VMProtect. Software.informer. Članak dostupan 21.12.2011. na: http://vmprotect.software.informer.com/.

• VMProtect Features. VMProtect software. Članak dostupan 21.12.2011. na: http://vmpsoft.com/products/vmprotect/.

• What are ELF, COFF, and PE COFF? (2006) Theparticle.com. Članak dostupan 21.12.2011. na: http://www.theparticle.com/cs/bc/os/elfpecoff.html.

• Zaštita izvornog koda programa, Sigurnost informacijskih sustava. (2010) Laboratorij za Sustave i Signale (LSS). Članak dostupan 16.12.2011. na: http://sigurnost.lss.hr/Novi-dokumenti/zastita-izvornog-koda-programa.html.

• Zaštita izvornog koda programa, Sigurnost informacijskih sustava. (2010) Laboratorij za Sustave i Signale (LSS). Članak u pdf dokumentu dostupan 16.12.2011. na: http://sigurnost.lss.hr/images/dokumenti/lss-pubdoc-2010-11-006.pdf.

• Zaštita softvera. (2010) Edicija dokumenata iz područja informacijske sigurnosti. Članak dostupan 16.12.2011. na: http://sigurnost.lss.hr/documents/Zatitasoftvera.html.

• Zeltser, L. (2006) Virtual Machine Detection in Malware via Commercial Tools. ISC Diary. Članak dostupan 21.12.2011. na: http://isc.sans.edu/diary.html?storyid=1871.

• Zhenxiang, J.W., Virtual Machine Protection Technology and AV industry. Microsoft Malware Protection Center. Članak dostupan 21.12.2011. na: http://www.f-secure.com/weblog/archives/Zhenxian_Wang-Virtual_machine_protection.pdf.

Podjela posla

Matej:

• .NET Reflector vs Themida

• UPX

• zaključak

Snježana:

• sve ostalo

Osobni alati
Imenski prostori
Inačice
Radnje
Orijentacija
Traka s alatima