ot Nick Angelow(7-01-2005)

reiting (-71)   [ dobre ]  [ zle ]

Printer Friendly Variant za otpechatvane

FILOSOFIQTA I ARHITEKTURATA NA NT SRESHTU UNIX OT GLEDNA TOCHKA NA SIGURNOSTTA

Kris Kasperski

23/09/2004 || Biblioteka kum LinuksTSentur

Iztochnik: WASM.RU

Za izbiagvane na nedorazumeniia, pod termina „NT“, ako izrichno ne e ugovoreno drugo, shte se razbirat vsichki operatsionni sistemi ot semeistvoto NT – samiiat Windows NT, Windows 2000 i Windows XP.

Sushtestvuva mnenie, che razprostranenieto na elektronno-izchislitelnite mashini donese poveche problemi, otkolkoto razreshi. CHovechestvoto v po-goliamata si chast nito moralno, nito etichno, nito psihologicheski e gotovo za vsichko tova i kompyuturnata tehnika popadna v rutsete na hora, chiito intelekt e nasochen samo kum razrushenie. I, ako do poiavata na Internet, virusnata zaplaha se svezhdashe osnovno do problema za „mrusnite rutse“ i bezkontrolnoto kopirane na softuer, to dnes situatsiiata e korenno promenena.

UVOD

Stepenta na sigurnost na vashiiat kompyutur v goliama stepen zavisi ot suvurshenstvoto na instaliranata na nego operatsionna sistema. Preuvelichavaiki malko, mozhe da kazhem, che maksimalnata sigurnost na otdelnata mashina nikoga ne mozhe da bude po-goliama ot sigurnostta na samata operatsionna sistema (razbira se, ako samata mashina ne e oborudvana s nikakvi dopulnitelni sistemi za vunshna zashtita, kato zashtitni steni).

Izglezhda razumno i logichno da se izsledvat niakoi ot nai-populiarnite operatsionni sistemi, da se izbere ot tiah nai-zashtitenata i ... tuk stava iasno, che:

  • podobno izsledvane vse oshte ne e provezhdano, vuv vseki sluchai, materialite namereni po tazi tema v mrezhata imat subektiven i povurhnosten harakter, obvurzani sa silno s nedostatutsite na konkretnite operatsionni sistemi, po-goliamata chast ot koito otdavna sa otstraneni s porednata krupka;

  • ako semeistvoto na NT se sustoi samo ot tri operatsionni sistemi – samiiat NT, Windows 2000 i Windows XP, koito prakticheski imat identichni arhitekturi, to pustrotata na UNIX podobnite sistemi ne podlezhi na opisanie;

  • mnogo e trudno da se izberat adekvatni kriterii za sigurnost – kolichestvoto otbeliazani probivi v dadena operatsionna sistema ne e pokazatelia, koito ni e neobhodim, purvo zashtoto tochna statistika po printsip niama i ne mozhe da bude napravena (v momenta, kato pravilo uspeshnite probivi ne se registrirat1) i vtoro, podobna statistika otraziava ne sigurnostta, a razprostranenieto na edna ili druga sistema i v znachitelna stepen e izkrivena ot momentniia interes na hakerite (ili kazano po-prosto – ot modata); a kolichestvoto namereni uiazvimosti samo po sebe si ne pokazva nishto (dazhe i po spomenatite po-gore prichini).

    Zatova reshihme da se abstrahirame ot osobenostite na konkretnite realizatsii i da sravniavame potentsialnata kontseptualna uiazvimost na operatsionnite sistemi ot NT i UNIX semeistvata. Kakvo e tova „potentsialna uiazvimost“? Tova e svoistvo na arhitekturata na operatsionnata sistema, koeto pri opredeleni obstoiatelstva, s opredelena veroiatnost mozhe da dovede do namaliavane na neinata sigurnost. V chastnost, slozhnostta se smiata za edna ot potentsialnite kontseptualni uiazvimosti i pri ravni drugi usloviia, po-malko slozhnata sistema se obiaviava za po-sigurna2 i obratno. Razbira se, osven slozhnostta3, goliama rolia igrae i profesionalizma na razrabotchitsite, kachestveniia kontrol i taka natatuk. No tui kato tezi faktori prakticheski ne se poddavat na obektivno otchitane (samo ne kazvaite, che LINUX se testva ot milioni hora po zemnoto kulbo – znaem kak ia testvat), po-dobre da ne gi otchitame izobshto, otkolkoto da gi otchitame nepravilno.

    Po tozi nachin, nie shte razglezhdame samo kontseptualni uiazvimosti, toest takiva uiazvimosti, koito sa zaroveni tolkova dulboko v sistemata, che ne mogat budat otstraneni bez seriozna hirurgicheska namesa v arhitekturata na iadroto4

    FILOSOFSKI KONTSEPTSII

    OPEN SOURCE VS DIZASEMBLER

    Spored opredelenieto na Ilia Medvedovski, atakata vurhu kompyuturna sistema e deistvie, predpriemano ot zlostornik, koeto se sustoi v tursene i izpolzvane na edna ili druga uiazvimost. Sushtestvuvat mnogo i raznoobrazni metodiki za tursene i namirane na uiazvimosti, no nali se razbrahme da ne se spirame na konkretni realizatsii. Zatova shte razdelim vsichki metodiki na dve protivopolozhni kategorii – na sliapo i na tselenasocheno tursene.

    Slepite metodiki razglezhdat zashtitniiat mehanizum kato cherna kutiia s vhod i izhod. Metodichno izbiraiki vsevuzmozhni vhodni stoinosti, zlostornikut se opitva da otdeli tezi ot tiah, koito shte narushat normalnata rabota na zashtitniia mehanizum ili v edna ili druga stepen shte namaliat sigurnostta na mashinata. Tazi izvunredno prosta i intelektualno neprivlekatelna strategiia za probiv e mnogo populiarna sred nachinaeshtite hakeri, procheli dostatuchno mnogo evtina fantastika i sviato viarvashti v svoiata izklyuchitelnost. Mezhdu drugoto, sled n-iat opit za probiv, turpenieto na „hakera“ svurshva i tsialata euforiia vnezapno izchezva. Razbira se, ot vreme na vreme, niakoi osobeno golemi kusmetlii uspiavat vse pak da proniknat v edna ili v druga zashtitena sistema, no tezi ataki ne predstavliavat osobena opasnost imenno poradi svoiata malobroinost.

    Deistvitelno, zashtiten mehanizum s neizvesten printsip na deistvie mozhe da bude probit samo s metoda na grubata sila – toest imame napulno predskazuema stepen na sigurnost. Poradi tova, vsiaka pone malko po-seriozna aktsiia zapochva s izuchavane na atakuvaniia obekt (tselenasochen probiv), otkudeto sledva, che pri ravni drugi usloviia stepenta na zashtitenost na sistemata e obratnoproportsionalna na lekotata na analiz na neiniia kod. A lekotata na analiz se opredelia nai-veche ot dostupnostta na izhodniia kod na zashtitniia mehanizum!

    Povecheto operatsionni sistemi ot UNIX semeistvoto se dostaviat zaedno s izhodniia si kod, dokato v sushtoto vreme, izhodniia kod na NT operatsionnite sistemi e nedostupen, a analiza na dizasembliran kod ne samo e izvunredno trudoemuk i izmoritelen sam po sebe si, no i iziskva seriozna profesionalna podgotovka, koiato se pritezhava dalech ne ot vsichki. Osven tova, zashtitnata podsistema na NT e mnogo po-slozhna ot analogichnata podsistema na povecheto UNIX sistemi, kato pri tova e dokumentirana dosta povurhnostno, koeto i otbluskva po-goliamata chast ot potentsialnite zlostornitsi.

    Kato sledstvie idva fakta, che uiazvimostite, otkriti v NT za tsialoto vreme na neinoto sushtestvuvane mozhe da se suberat na prustite na ednata ruka5. Pri UNIX polozhenieto e tochno obratnoto – uiazvimosti se otkrivat postoianno. No ot druga strana ...

    NA VSEKI HAKER – PO SISTEMA!

    ... ot druga strana, stepenta na opasnost na „uiazvimostta“ zavisi ne tolkova ot neinite „lineini razmeri“, kolkoto ot razprostranenostta na operatsionnata sistema, v koiato tia e otkrita. Ogromnoto kolichestvo klonove na UNIX postavia tazi operatsionna sistema v tvurde pechelivsho (ot gledna tochka na sigurnostta) polozhenie. Pri tova, postoianno obnoviavanite ili prosto alternativni iadra dazhe na edna-edinstvena sistema se razprostraniavat v tsialoto semeistvo, blagodarenie na koeto, uiazvimostta namerena v edna ot versiite na iadroto, mnogo chesto ne e aktualna za vsichki ostanali.

    V rezultat na vsichko tova, mogushtestvoto na hakera, otkril uiazvimost v UNIX, se okazva mnogo po-niska, otkolkoto ako beshe otkrita dupka s podobni razmeri v NT (poradi malkoto si raznovidnosti, vsiaka, otdelno vzeta versiia na NT, e instalirana na znachitelno poveche mashini, otkolkoto e instaliran UNIX). Imenno zatova NT se probiva ili se opitvat da probiiat. Sublazunta v tazi rabota e tolkova goliama, che hakerite ne se spirat nito ot lipsata na izhodniia kod, nito trudnostta na analiza. Osven tova, iadroto na NT ne se obnoviava vseki den i na praktika, vsichki uiazvimosti, namereni v Windows NT 4.0 ostavat aktualni i v Windows 2000, a dazhe i v Windows XP6.

    Obratno, ako niakoia operatsionna sistema e instalirana na ogranichen broi kompyutri v sveta, da ia probivat mozhe da bude rabota samo za mazohisti. Vuv vseki sluchai, na hakera shte e nuzhen mnogo silen stimul za izuchavaneto na sistemata. Razbira se, ako tazi sistema zashtitava kompyutur v banka, suhraniavasht miliardi elektronni dolari, to za negovata sigurnost nito edin administrator niama da riskuva da garantira, koeto ne e iznenadvashto, tui kato slabo razprostranenite operatsionni sistemi prakticheski sa izpadnali ot vnimanieto na spetsialistite po informatsionna bezopasnost, v rezultat na koeto chesto sudurzhat goliamo kolichestvo trivialni i lesno otkrivaemi greshki, koito mogat da budat namereni dazhe i pri povurhnosten analiz.

    Vupreki tova, instalatsiiata na slabo razprostranena operatsionna sistema avtomaticheski otriazva goliamata chast ot hakerite, koito izpolzvat chuzhdi eksploiti za ataka. A za da ne ni atakuva profesionalist, e neobhodimo da suzdadem vtoro nivo na zashtita – vuzel s proverena ot vremeto i seriozno analizirana ot spetsialisti operatsionna sistema.

    Ne e losha ideiata na preden plan v otbranata da se postavi niakakuv „redkozemen“ klon na UNIX, a na vtori – NT sistema. Povecheto hakeri, kakto pokazva praktikata, osnovno se spetsializirat na edna operatsionna sistema, i samo v izklyuchitelni sluchai – ednovremenno na dve.

    UNIX – TOVA E LESNO!

    Slozhnostta na nastroivane i proverka na kompyuturnite programi stremitelno se uvelichava s uvelichavane na tiahnata slozhnost. I zapochvaiki ot niakakvo nivo, zagubite za shtatelno „shlifovane“ na programite zapochvat da nadhvurliat obshtiia dohod ot tiahnata prodazhba, prinuzhdavaiki razrabotchitsite da se ogranichavat samo s povurhnostni proverki (ako programata ne e zabie po vreme na startiraneto si – tova veche e dobre).

    Suvremennite operatsionni sistemi otdavna sa preminali prez tazi granitsa i nito edna ot tiah ne e zastrahovana ot greshki. S veroiatnost, kloniashta kum edinitsa, mozhe da se tvurdi, che vuv vsiaka edna operatsionna sistema s obshto prednaznachenie ima kritichni greshki, poradi koeto vseki vuzel v mrezhata mozhe da bude garantirano probit, koeto e vupros samo na vreme i polozheni usiliia.

    Mezhdu drugoto, greshkite sa silno neednorodni po svoiata priroda – edni lezhat, kakto se kazva, na povurhnostta i se otkrivat dazhe ot avtomatichnite sredstva za kontrol na kachestvoto na programniia kod, drugi sa zaroveni tolkova dulboko, che mogat da budat otkriti samo sluchaino. Osnoven problem na opravianeto na greshki e, che vsiaka, dazhe i nai-neznachitelnata modifikatsiia na programniia kod predizvikva poiavata na kaskada ot greshki, poiaviavashti se na nai-neochakvani mesta. I zatova, vnasianeto na kakvito i da sa izmeneniia vuv vutreshnostta na operatsionnata sistema ili v prilozheniiata kum neia, triabva da bude suprovodeno s pulen tsikul ot povtorni proverki. No takava proverka, kakto beshe posocheno po-gore, da se izpulni e prosto nevuzmozhno.

    Prekomernata slozhnost na NT, zaedno s ogromnoto kolichestvo izmeneniia, koito se izvurshvat v koda na vsiaka nova versiia, obiasniava loshoto kachestvo na neiniiat kachestven kontrol. Nezavisimo ot vsichki usiliia, predpriemani ot Microsoft, uiazvimostta na NT e zalozhena oshte v samata politika na neinoto razvitie, poradi koeto e printsipno neotstranima toest tia e fundamentalna.

    Obratno, povecheto operatsionni sistemi ot UNIX semeistvoto sa dostatuchno kompaktni i sudurzhat minimalnoto kolichestvo neobhodimi za funktsioniraneto na sistemata komponenti7 (ili pone pozvoliavat da budat ogranicheni do podobno sustoianie). Osven tova, tiahnoto bavno, evolyutsionno (a ne revolyutsionno, kakto e pri NT) razvitie po nikakuv nachin ne spomaga za poiavata na grubite, lesno otkrivaemi greshki, s koito e izvesten NT.

    OTDALECHENIQT DOSTUP – ORUZHIE NA PROLETARIATA

    Edna ot kontseptualnite razliki vuv filosofiite na NT i UNIX se sustoi v tova, che UNIX ne pravi nikakva prakticheska razlika mezhdu lokalniia i otdalechen dostup do mashinata. Pri NT e tochno obratnoto – samo niakoi deistviia mogat da budat izpulniavani otdalecheno, a za pulnotsenno upravlenie na survura, administratora e prinuden da izpolzva fizicheski dostup.

    Nikoi ne iska da spori – otdalechenoto upravlenie na survur e mnogo udobno, no neka se zamislim – dokolko e bezopasno? Za suzhalenie, niama udobstvo, za koeto da ne triabva da se plati niakakva tsena8. Kolkoto e udobno da administrirame, tolkova udobno e i da atakuvame. Zatova spomagat i razvitite komandni interpretatori, poddurzhashti pulnotsenni ezitsi za programirane, iarko otlichavashti se ot izrodite, koito predlaga primitivnata obvivka na NT. Izobshto, v NT s otdalechen dostup mozhe da se praviat mnogo malko neshta (triabva da se spomene, che ot Windows 2000 v neia se poiavi poveche ili po-malko usuvurshenstvan mehanizum za otdalecheno upravlenie).

    Oshte poveche, che ne e neobhodimo da izpadame v krainosti i napulno da se otkazvame ot vuzmozhnostite, koito predlaga otdalechenoto administrirane. Razbira se, s pulnata zabrana za otdalechen dostup, vie v znachitelna stepen shte uvelichite sigurnostta na vashiia survur, no ... shte budete prinudeni postoianno da se namirate neposredstveno do nego. SHTe popitate – zashto? A koi shte goni hakerite?! Nali e vuzmozhno da se pronikne na atakuvanata mashina prez vsiaka instalirana na neia usluga (naprimer WEB) za zatova e kraino nezhelatelno da se lishite ot vsichki sredstva da distantsionno nablyudenie i upravlenie na survura.

    S edna duma, otdalecheniiat dostup e kato toiaga – ima dva kraia, ednovremenno namaliava sigurnostta na vuzela, no usilvaiki operativnostta pri otkrivane i neutralizatsiia na zlostornitsite. Ot druga strana, v otgovorni sluchai e po-dobre da se otkazhem napulno ot otdalecheniia dostup, zameniaiki go sus zakovan kum survura operator.

    KOMPLEKTATSIQ NA STANDARTNATA INSTALATSIQ

    Komplekta ot standartni programi, vlizashti v poveche UNIX operatsionni sistemi, vklyuchva v sebe si ogromno kolichestvo raznoobrazni programi, varirashti ot igri do kompilatori i interpretatori. A kolkoto poveche prilozheniia sa instalirani na mashinata, tolkova po-goliama e veroiatnostta za obrazuvane na „dupki“ v sistemata za sigurnost. Osven tova, nalichieto na kompilatori (ili interpretatori) na atakuvanata mashina ulesniava znachitelno pronikvaneto v neia, tui kato, zasilva prenosimostta na eksploitite, pozvoliava da se avtomatizira atakata i predostavia dostup do funktsii i uslugi, nedostupni ot komandnata obvivka na operatsionnata sistema.

    Operatsionnite sistemi ot semeistvoto na NT sa komplektovani s mnogo po-skromen nabor ot prilozhni programi i v tova otnoshenie izglezhdat po-sigurni. Mezhdu drugoto, tova ne e printsipna razlika – gramotniiat administrator shte mahne ot UNIX vsichko izlishno.

    ARHITEKTURNI KONTSEPTSII

    MEHANIZMI ZA UDOSTOVERQVANE

    Mehanizmite za udostoveriavane na potrebitelite (kazano po-prosto – algoritmite za proverka na pravilnostta na parolite) i pri UNIX, i pri NT sa postroeni prakticheski na identichni printsipi, a imenno – etalonnata parola ne se suhraniava nikude, a vmesto neia se izpolzva neiniiat hesh (grubo kazano – kontrolna suma). Potrebitelia vuvezhda svoiata parola, operatsionnata sistema ia heshira po edin ili drug algoritum i sravniava polucheniia rezultat s hesh-sumata na etalonnata parola, suhraniavana v spetsialna baza s paroli. Ako te suvpadnat, vsichko e nared i obratno. Podobna shema (pri otsustvie na greshki v realizatsiiata) garantira, che dazhe zlostornika da poluchi dostup do bazata s paroli, toi vse pak niama da uspee da pronikne v sistemata po nikakuv nachin, osven s metoda na grubata sila. No ako slezem na greshnata zemiata ot visinite na idealiziranite matematicheski kontseptsii, shte otkriem che „normalnite geroi vinagi zaobikaliat“9. V chastnost, v povecheto UNIX sistemi, vuvezhdanata parola se predava v chist tekst po mrezhata i pri nalichie samo na edno uiazvim vuzel vuv verigata, mozhe da da bude prehvanata ot haker. Pri NT sistemite, parolata nikoga ne se predava v otkrit tekst (osven ako administratora ne nastroi sistemata po suotvetniia nachin) i izpolzvanata pri tiah sistema za udostoveriavane e ustoichiva kum prehvashtane na trafika.

    Ot druga strana, NT se otnasia kraino nebrezhno kum ohranata na bazata s paroli ot posegatelstva na hakeri. Na pruv pogled, izglezhda che niama nikakuv problem, tui kato dostup do tazi baza imat samo sistemata, administratorite i ogranichen broi, spetsialno posocheni ot administratora potrebiteli (naprimer operatorite za arhivirane10, koito suhraniavat periodichno bazata na arhivni nositeli). A v niakoi, viarno mnogo malko, UNIX sistemi, faila s parolite e svobodno dostupen za vsichki potrebiteli na sistemata i mnogo chesto dazhe e „vidim“ po mrezhata! E i, kakvo ot tova? - shte popitate vie – Nali paroli v tozi fail niama, a „obrushtaneto“ na hesha po metoda na grubata sila otnema tvurde mnogo vreme, neka hakera da probva, shtom tova mu haresva... Dobre, no togava vuznikva sledniia vupros: vuzmozhno li e s edno edinstveno izpolzvane na vsichki vuzmozhni kombinatsii da probiem vsichki sistemi v mrezhata? Ne burzaite da otgovariate s „ne“, tui kato pravilniia otgovor e „da“! Obemut na tvurdite diskove veche e tolkova goliam, che hakerut mozhe da suhrani na nego heshovete na vsichki izprobvani paroli, kato e bez znachenie vremeto, koeto shte otneme tozi protses – mesetsi ili godini – nali sled tova zlostornika shte poluchi vuzmozhnost prakticheski mignoveno da vuzstanovi parolata po neiniia hesh, stiga samo da pritezhava bazata s paroli. Ne stiga, che pri NT rezervnite kopiia na bazata s paroli po podrazbirane se suhraniavat v obshtodostupni direktorii, no algorituma za udostoveriavane ne izpolzva privurzvane (salt), v rezultat na koeto, heshovete na ednakvite paroli v NT vinagi shte suvpadat, znachitelno ulesniavaiki samiiat probiv! Mezhdu drugoto, privurzvaneto ne pomaga pri podobni ataki, samo udulzhava malko „agoniiata“ na sistemata.

    POVISHAVANE NA SOBSTVENITE PRAVA

    Modelut na pravata na potrebitelite i mehanizma za kontrol na pravata za dostup sa klyuchovi i zaedno s tova, nai-uiazvimoto (spored statistikata) zveno ot podsistemata za sigurnost na vsiaka edna mnogopotrebitelska operatsionna sistema. V obshtiia sluchai kum neia se prediaviavat slednite iziskvaniia:

  • modelut na potrebitelite triabva da bude dostatuchno guvkav, udoben i intuitivno razbiraem, v protiven sluchai greshkite pri administriraneto na sistemata sa neizbezhni;

  • mehanizmut za kontrol na pravata za dostup triabva ne samo da garantira nevuzmozhnostta za nesanktsionirano povishavane na sobstvenite prava, no i da bude maksimalno ustoichiv kum greshki na programistite;

  • i samata operatsionna sistema, i raboteshtite na neia potrebiteli triabva da polzvat minimalno neobhodimite za nivoto prava.

    Analizut pokazva, che goreizbroenite iziskvaniia ne sa izpulneni v nito edna operatsionna sistema s masovo prednaznachenie, poradi koeto vsichki te v edna ili druga stepen sa uiazvimi. Mezhdu drugoto, stepenta na sigurnost na UNIX i NT e razlichna.

    Modelut na pravata na potrebitelite, izpolzvan v povecheto UNIX operatsionni sistemi e na edno nivo i pozvoliava sushtestvuvaneto samo na dva tipa potrebiteli – obiknoveni potrebiteli i superpotrebitel11. V NT obratno – se izpolzva ierarhichen model, pri koito osven administratora ima oshte edin superpotrebitel – samata sistema. Kakvo oznachava tova? Oznachava, che v NT operatsionnite sistemi, za razlika ot UNIX, vseki potrebitel poluchava minimalno neobhodimite mu prava i nikoga ne gi povishava bez osobena neobhodimost. SHiroko razprostranena zabluda glasi, che pravilnoto administrirane na UNIX pozvoliava da se postigne tochno razpredelenie na pravata za dostup, kakvoto e v NT, makar i s tsenata na poveche vreme i polozheni usiliia. V deistvitelnost tova ne e tochno taka.

    Lipsata na sistemen potrebitel v UNIX vodi do nevuzmozhnost na izpulnenie na tsial red deistviia, osven s vremenno povishavane na pravata na startiranata programa do root. Neka vzemem klasicheskata zadacha za smiana na parolata. Potrebitelite mogat (i triabva!) periodichno da smeniat svoite paroli. No v UNIX (kakto i v NT), parolite na vsichki potrebiteli se suhraniavat v edin fail, kato izpolzvaniiat model na pravata za dostup, ne ni pozvoliava da dadem na razlichnite chasti ot faila razlichni prava za dostup. No nali potrebitelia triabva da mozhe da promenia svoiata parola? V UNIX tazi zadacha se reshava po sledniiat nachin: prilozhnata programa, otgovorna za promiana na parolata na potrebitelia, prisvoiava na potrebitelia spetsialen atribut, pozvoliavasht mu pri neobhodimost da poluchi prava na administrator, koeto tia i pravi. Ako tozi mehanizum se izpolzvashe samo za promiana na parolite, niamashe da bude goliam problem. No v deistvitelnost, tozi atribut e neobhodim na mnogo goliamo kolichestvo prilozhni programi, v chastnost na WEB i mail survurite. Zamislete se za malko, kakvo bi stanalo, ako v niakoia ot programite, izpulniavashti se s nai-visoki prava, se otkrie greshka, pozvoliavashta predavaneto na upravlenieto na hakerskiia kod? A takiva greshki se sipiat ot UNIX programite kato ot rog na izobilieto.

    Suvsem druga e situatsiiata pri NT operatsionnite sistemi. Neprivilegirovanite potrebiteli sa prinudeni da povishavat svoite prava do administratorskite samo v izklyuchitelni sluchai, kato v ostanaloto vreme te izpolzvat API-funktsiite na operatsionnata sistema, izpulniavashti potentsialno opasni deistviia s „rutsete“ na samata operatsionna sistema. Dazhe da ima dopusnata greshka v niakoe ot tezi prilozheniia i upravlenieto se poeme ot haker, toi shte nasledi minimalni prava i shte prichini na sistemata minimalna vreda.

    Po tozi nachin, NT operatsionnata sistema e ustoichiva kum greshki na programistite, dokato UNIX operatsionnite sistemi sa izklyuchitelno chuvstvitelni kum takiva greshki.

    PREPULVANE NA BUFERA

    Prepulvaneto na bufera e „nai-populiarnata“ i v sushtoto vreme nai-kovarna greshka, koiato prakticheski se sreshta vuv vsiako edno, nezavisimo kolko slozhno, prilozhenie. Nakratko, negovata sushtnost e v tova, che ako otdeleniiat ot programista razmer na bufera se okazhe nedostatuchen za razpolagane na vsichki kopirani v nego danni, to sudurzhanieto na pametta sled kraia na bufera shte se okazhe razrusheno (po-skoro zamesteno) ot nesubralite se v bufera danni. V zavisimost ot konkretnata situatsiia, sled kraia na bufera mozhe da se namirat:

    1. drugi buferi i promenlivi na programata;

    2. sluzhebni danni – v chastnost, adres na vrushtane ot funktsii;

    3. izpulnim kod;

    4. nezaeta ili lipsvashta stranitsa ot pametta.

    Nai-goliama opasnost predstavliavat tochki b. i c., tui kato te davat vuzmozhnost za poluchavane na pulen kontrol nad uiazvimata programa. Tochka d. e po-malko kovarna i v nai-loshiia sluchai mozhe da dovede do realizirane na ataka za otkaz ot usluga12. Zaplahata pri situatsiia ot tochka a. v znachitelna stepen zavisi ot vida i prednaznachenieto na promenlivite, namirashti se sled kraia na prepulneniia bufer i makar che na teoriia, uiazvimoto prilozhenie e sposobno na vsichko, na praktika zaplahata se okazva ne tolkova goliama.

    Ima i oshte edno obstoiatelstvo – za pulnotsenno prehvashtane na upravlenieto, hakerut triabva da ima vuzmozhnost da izpulniava na otdalechenata mashina sobstven kod, obiknoveno predavan prez samiiat prepulvan bufer. V zavisimost ot razpolozhenieto na uiazvimiia bufer i „haraktera“ na operatsionnata sistema, izpulnenieto na predadeniia ot hakera kod mozhe da bude ili razresheno ili ne.

    Vsichki operatsionni sistemi, i UNIX, i NT potentsialno dopuskat sushtestvuvaneto na tochki a., b. i d., izklyuchvaiki tochka c. Sledovatelno, te v ednakva stepen da podlozheni na zaplaha ot prepulvane na bufera. Osven tova, i UNIX, i NT imat izpulnim stek13 i zabraniavat izpulnenieto na kod v segmenta za danni. A tova oznachava, che prepulvaneto na buferite, sudurzhashti se v avtomatichnite (toest stekovi) promenlivi nosi v sebe si zaplahata ot ustanoviavane na pulen kontrol nad uiazvimata programa. V interes na istinata, za niakoi UNIX operatsionni sistemi sushtestvuvat krupki, premahvashti vuzmozhnostta za izpulnenie na kod v steka, no oblastta na tiahnoto prilozhenie e tvurde ogranichena14.

    Nai-zabavnoto e, che i UNIX, i NT sa napisani na C – programen ezik, nepoddurzhasht avtomatichen kontrol na granitsite na masivite i poradi koeto sa podlozheni na greshki pri prepulvane. Veterani tvurdiat, che v niakoi versii na UNIX, greshkata pri prepulvane e prisustvala dazhe pri vuvezhdaneto na imeto na potrebitelia pri registratsiia v sistemata.

    DOSTUP DO CHUZHDO ADRESNO PROSTRANSTVO

    Za zashtitata na adresnoto prostranstvo na protsesora se nosi ogromno kolichestvo sluhove, intrigi, legendi, kakto i obiknoveno nerazbirane na samata filosofiia na zashtita. Populiarnite rukovodstva postoianno izpuskat ot vnimanie, che tazi zashtita e prednaznachena edinstveno za nepredumishlen dostup, toest che ima za tsel edinstveno protsesut, minal v „razhod“ da ne otnese sus sebe si i vsichki ostanali protsesi, izpulniavashti se paralelno s nego.

    Pulnotsenna zashtita ot umishlen dostup v chuzhdo adresno prostranstvo na praktika niama nito v UNIX, nito v NT. UNIX izobshto ne predstavia podobni sredstva za vzaimodeistvie, osven za spodelenite (suvmestno izpolzvani) oblasti na pametta, no tova ne e sushtoto. NT osiguriava dosta guvkav kontrol na dostupa do adresnoto prostranstvo na protsesora, no vse pak znachitelno izostava ot UNIX po otnoshenie na bezopasnostta, poradi slednite prichini:

    1. v NT dostuput do chuzhdo adresno prostranstvo po podrazbirane e razreshen za vsichki, dazhe i za gosti i ako niakoi protses (po-skoro negoviiat sobstvenik) ne iska da mu se burkat v negovoto adresno prostranstvo, e dluzhen da go zaiavi iavno;

    2. v UNIX, za nastroivane na protsesite e neobhodimo protsesut, koito se nastroiva ne samo da e dal suglasie za tova, no i da e izpulnil niakoi deistviia, kato pri tova nastroivaneto na veche startirani protsesi e zabraneno! NT pozvoliava bezproblemno da se pipa po aktivnite protsesi i da se zapochva i da se zapochva nastroivane na novi, estestveno s naslediavane na vsichki klonove na nastroivaniia protses (v obshtiia sluchai, nastroivaneto na po-privilegirovani protsesi ot po-malko privilegirovani e nevuzmozhna).

    Kazano nakratko, NT predostavia dosta izgodni usloviia za sushtestvuvane na stealth virusi, klaviaturni i parolni shpioni, kakto i na vsiakakvi drugi gadini, narushavashti spokoistvieto na sistemata.

    KOMUNIKATSII MEZHDU PROTSESITE

    Ot edna strana, protsesite v pametta triabva da imat vuzmozhnost da obmeniat danni – tova e bezsporno, zashtoto v protiven sluchai sistema, v koiato tezi protsesi ne mogat da obmeniat danni pomezhdu si ne e neobhodima na nikogo. Ot druga strana, nalichieto na kakvito i da sa sredstva za vzaimodeistvie mezhdu protsesite, pozvoliava na atakuvashtiia da vuzdeistva pagubno vurhu chuzhdiia protses, prichiniavaiki na negoviia sobstvenik edni ili drugi nepriiatnosti. Naprimer, da nakara zhertvata da priema golemi obemi bezsmislena informatsiia, koito tia kategorichno ne iska da prieme. Sledovatelno, vseki edin ot vzaimodeistvashtite si protsesi triabva da ima vuzmozhnost:

    1. samostoiatelno da reshava koi protses mozhe da vzaimodeistva s nego i koi ne mozhe;

    2. da umee da opredelia avtentichnostta na protsesite izprashtachi i na protsesite poluchateli;

    3. da mozhe da kontrolira tsialostta na predavanite ili priemanite danni;

    4. da mozhe da suzdava zashtiteni kanali za vruzka, ustoichivi kum prehvashtane na trafika.

    Mnogoobrazieto na sredstvata za vzaimodeistvie mezhdu protsesite, poddurzhani ot suvremennite operatsionni sistemi, izvunredno mnogo zatrudniava otgovora na vuprosa: „izpulniavat li se na praktika goreizbroenite iziskvaniia?“ Poradi ogranicheniia razmer na statiiata, nie shte razgledame samo dve ot nai-populiarnite sredstva za vzaimodeistvie mezhdu protsesite – kanali, soketi i suobshteniia.

    Neimenovanite kanali pozvoliavat svurzvaneto samo na srodni protsesi i zatova napulno otgovariat na uslovieto ot tochka a. Dazhe ako po niakakuv nachin stranichniiat protses uspee da poluchi deskriptora na neimenovaniia kanal na nesroden protses, izvun konteksta na svoia protses deskriptora gubi svoia smisul i zlostornika niama da mozhe da napravi nishto s nego. Ako zlostornikut uspee da pronikne v sroden protses i se opita, naprimer da zalee svoia sused s goliamo kolichestvo informatsionen bokluk, to i togava niama da stane nishto osobeno. Ako protsesut poluchatel ne uspee da „pogulne“ izprashtanite mu danni, sistemata avtomatichno shte prekrati protsesa na predavane, ne pozvoliavaiki na atakuvaniia protses da se „zadavi“, pri koeto zhertvata e svobodna sama da reshi dali da produlzhi da ponasia i v budeshte podobni izdevatelstva ili prosto da zatvori kanala i da izprati nevuzpitaniia haker niakude po-dalech.

    Za naimenovanite kanali sa dostupni vsichki protsesi v sistemata, a pri NT – i protsesi, izpulniavashti se vurhu ostanalite vuzli ot mrezhata. Estestveno, za otvarianeto na imenovan kanal triabva da pritezhavame suotvetnite privilegii, no za suzdavane na nov takuv kanal, takiva privilegii ne sa zadulzhitelni, kato pri NT operatsionnite sistemi dazhe ne sushtestvuvat legalni metodi za opredeliane „samolichnostta“ na suzdatelia na edin ili drug kanal. Otchitaiki, che imenovanite kanali aktivno se izpolzvat ot sistemata za kriptirano predavane na paroli i otdalecheno upravlenie na registura, zaplahata ot vnedriavane na falshivi kanali veche ne e neznachitelna. Tozi problem se reshava chastichno s instalatsiia na suotvetnata krupka15, koiato predotvratiava suzdavaneto na falshifikat na veche suzdaden naimenovan kanal, kato vuzmozhnostta za suzdavane na takuv kanal „ot nulata“ ostava, kakto i produlzhavashtoto otsustvie na mehanizmi za identifikatsiia na suzdatelite na kanali vuv WIN32 API. Lokalnostta na imenovanite kanali v UNIX e ednovremenno i silna, i slaba strana. No otsustvieto na otdalechen dostup do kanalite ne e povod za otpuskane – vuzmozhnost za suzdavane na falshiv kanal ima dazhe i gosta v sistemata, koeto v reditsa sluchai mu pozvoliava uspeshno da atakuva i po-privilegirovani protsesi.

    Imenovanite kanali imat oshte edin seriozen nedostatuk – obrabotkata na vsiako novo vklyuchvane iziskva niakakvo kolichestvo sistemni resursi, a maksimalnoto kolichestvo ekzempliari na kanala, koito mogat da budat suzdadeni, obiknoveno ne e ogranicheno. Suzdavaiki vse poveche i poveche novi ekzempliari, zlostornikut shte izkonsumira vsichki resursi, koeto rano ili kusno shte dovede do spirane na sistemata. Dazhe i da ima ogranichenie za maksimalnoto kolichestvo ekzempliari, rezultatut pak shte bude sushtiiat – zaemaiki vsichki svobodni kanali, zlostornikut shte narushi normalnata rabota na vsichki ostanali legalni protsesi. Naistina, sistemata niama da spre, no polzata ot tova shte bude malka ... Reshenieto na problema e vuv vuvezhdaneto na kvoti ot klientskata strana (a ne ot stranata na survura), no purvo ne e mnogo iasno kak da se realizira v mrezhova sreda, i vtoro – klientskata zashtita vinagi mozhe da bude lesno preodoliana.

    Soketite, osnovno izpolzvani pri vzaimodeistviia na protsesi mezhdu razlichni vuzli (makar, che v UNIX te se izpolzvat shiroko i za lokalen obmen na danni) sushto sa katastrofalno nezashtiteni pred opitite za zaemane na vsichki svobodni resursi i ogromnoto kolichestvo postoianno provezhdani flooding attack sa nai-dobroto dokazatelstvo za tova. Mezhdu drugoto, sushtestvuvaneto na „surovi“ (RAW) soketi v UNIX, gi prevrushta v platforma nomer edno za vsiaka pone malko po-seriozna TCP/IP ataka. Operatsionnite sistemi ot semeistvoto na NT dulgo vreme ne pozvoliavaha „ruchnoto“ suzdavane na mrezhovi paketi, poradi koeto ne beshe vuzmozhno osushtestviavane na ataki ot vida Land, Teardrop i Bonk (koeto ne oznachava, che NT e ustoichiva na takiva ataki). Ne e li tova prichina za patologichnata lyubov na povecheto hakeri kum UNIX? Naistina, dnes samo murzeliviiat niama da nameri NDIS-draiver za NT, pozvoliavasht da se raboti s TCP/IP paketi na nisko nivo, taka che reputatsiiata na UNIX kato chisto hakerska platforma obeshtava da se promeni.

    I posledno – suobshteniiata predstavliavat oshte edin vid nesanktsionirano vzaimodeistvie mezhdu protsesite. Pri NT operatsionnite sistemi, vseki protses, nezavisimo ot nivoto na svoite prava mozhe da izprati suobshtenie v prozoretsa na drug protses (v tova chislo i na protses s po-golemi prava?!), pri tova niama nikakva vuzmozhnost da se ustanovi koi e podatelia na suobshtenieto. A nie si razkazvame prikazki za bezopasnost! Namirame prozoretsa na niakakvo privilegirovano prilozhenie (a nie imame takava vuzmozhnost), poluchavame deskriptora na interesuvashtiiat ni element ot upravlenieto (buton, menyu, red za redaktirane) i ... emulirame vhod ot potrebitelia!!! Privilegirovaniia protses shte napravi vsichko za nas i dazhe niama da zapodozre nishto neredno! Po tozi nachin, izpolzvaneto na sredstva za administrirane e bezopasno samo na izklyuchitelno „sterilna“ mashina (po mrezhata ne se predavat suobshteniia, po-tochno ne se predavat pri standartnata konfiguratsiia na NT, no reditsa prilozheniia za otdalechen dostup pozvoliavat obmen na suobshteniia i po mrezhata).

    Dobilata shiroka izvestnost dupka v sigurnostta, svurzana s predavane na shell-kod v reda za redaktirane na privilegirovan protses, s posledvashto initsializirane na taimer, izpulniavasht tozi kod v adresnoto prostranstvo i s pravata na atakuvaniia protses, v momenta spored tvurdeniiata na Microsoft e veche otstranena. Podrobnosti za „lechenieto“ kum momenta na napisvaneto na tezi redove vse oshte ne sa izvestni, no kakto izglezhda te se svezhdat do proverka na adresa na taimernata protsedura – tia ne triabva da se namira v bufera na kakuvto i da e prozorets. Mozhe bi sa zabranili i predavaneto na suobshtenie WM_TIMER kum po-privilegirovani protsesi. Napulno da se zabrani (ili zashtiti) razprashtaneto na suobshteniia mezhdu protsesite e nevuzmozhno, tui kato tia e chast ot filosofiiata na prozorechnata sistema na Windows i vsichki opiti da se vuvedat kakvito i da e ogranicheniia, nezabavno shte se sbluskat s problemi za suvmestimostta i shte dovedat do neraboteshto sustoianie goliamo kolichestvo prilozhni programi.

    Prozorechnata sistema na UNIX e dobra s tova, che ne e nerazdelna chast ot sistemata i pri zhelanie mozhe da se otkazhete ot neia, ogranichavaiki se s nadezhdniia i bezopasen tekstov rezhim. Osven tova, suobshteniiata v grafichnite sredi na UNIX obiknoveno se osushtestviavat po TCP/IP protokoli, koito zashtitavat prozortsite i elementite na upravlenie na protsesa ot posegatelstva ot strana na vsichki ostanali (ako, razbira se, samiiat protses-sobstvenik ne pozhelae tova).

    I taka – obmena mezhdu protsesite i pri UNIX, i pri NT e realiziran mnogo losho i zatova ne e bezopasen, kato pri tova adekvatni sreshta za zashtita ot razgledanite po-gore ataki niama da se poiaviat nito v blizkoto budeshte, nito v po-dalechnoto, tui kato „kucheto e zaroveno“ na nivo bazovi idei i filosofiia na ednata i drugata sistema. A filosofiiata ne mozhe da se promeni s porednata krupka.

    SBORNA TABLITSA

    I vse pak, koia sistema e po-sigurna? V idealniiat sluchai bi triabvalo da dadem na vsiaka edna harakteristika neino sobstveno „teglo“ i da presmetnem obshtite tochki na dvete sistemi. Tui kato „tegloto“ e subektivno poniatie, nishto ne ni struva da nastroim izmeritelnata skala po takuv nachin, che po-sigurna da se okazhe nashata lyubima sistema, kato pri tova podobno naglasiavane na rezultatite mozhe da se napravi i podsuznatelno i zatova v tablitsata, pokazana po-dolu vuobshte ne se izpolzvat nikakvi teglovni kategorii.

    Ne triabva da zabraviame, che otsenkata na bezopasnostta na sistema e mnogo chuvstvitelna kum kolichestvoto i vida na sravniavanite harakteristiki. Izklyuchvaiki edni ili dobaviaiki drugi, nie mozhem da vliiaem znachitelno vurhu krainiia rezultat. Taka che tova izsledvane ne triabva da se priema kato istina ot posledna instantsiia...

    Tablitsa 1. Sravnenie na osnovnite harakteristiki na operatsionnite sistemi ot UNIX i NT semeistvata, imashti priako ili kosveno otnoshenie kum sigurnostta.
    Neudachnite harakteristiki sa otbeliazani sus siv tsviat.

    HARAKTERISTIKA

    NT

    UNIX

    kachestvo i pulnota na dokumentatsiiata

    dokumentirana e povurhnostno

    dokumentirana e mnogo podrobno

    dostupnost na izhodniiat tekst

    izhodniiat tekst e nedostupen

    izhodniiat tekst e dostupen

    trudnost na analiza

    visoka

    umerena

    razprostranenost

    sushtestvuva ogranicheno kolichestvo predstaviteli ot tova semeistvo, kato se nablyudava iasno izrazena priemstvenost v uiazvimostite ot edna versiia na sistemata v druga versiia.

    sushtestvuva ogromno kolichestvo raznoobrazni klonove, kato pri tova greshkite v edna versiia na sistemata chesto otsustvat v ostanalite.

    slozhnost na koda

    kodut e izlishno slozhen

    kodut e izklyuchitelno prost

    poddruzhka na otdalecheno administrirane

    chastichno se poddurzha

    poddurzha

    komplektnost na standartnata dostavka

    sudurzha minimalno kolichestvo ot neobhodimite prilozheniia

    sudurzha ogromno kolichestvo prilozheniia, v tova chislo i neprovereni

    mehanizmi za udostoveriavane

    ustoichiv kum prehvashtane na parolite

    predava se otkrita parola

    izpolzvane na vruzki

    ne izpolzva

    izpolzva

    izpulnenie na privilegirovani operatsii

    izpulniavat se ot operatsionnata sistema

    izpulniavat se ot samite prilozheniia s vremenno povisheni prava

    model na potrebitelite

    ierarhichna

    ednostepenna

    zashtita ot prepulvane na bufera

    niama, kato samata operatsionna sistema e napisana na ezik, provokirasht takiva greshki

    niama, kato samata operatsionna sistema e napisana na ezik, provokirasht takiva greshki

    vuzmozhnost za dostup v adresnoto prostranstvo na chuzhd protses

    ima, razreshena po podrazbirane

    niama

    vuzmozhnost za nastroivane na protsesi

    ima, razreshena po podrazbirane

    ima, no e svurzana s reditsa ogranicheniia

    vuzmozhnost za nastroivane na aktivni protsesi

    ima, no e neobhodimo da se pritezhavat suotvetnite prava

    niama

    otdalechen dostup do imenovani kanali

    ima

    ne

    suzdavane na falshivi imenovani kanali

    ima, vuzmozhno e da se suzdade i kanal, i dazhe falshiv ekzempliar na veche otvoren kanal

    ima, no e vuzmozhno samo suzdavaneto na falshiv kanal

    zashtita na imenovanite kanali ot nesanktsioniran dostup

    niama

    niama

    zashtita na soketi ot nesanktsioniran dostup

    niama

    niama

    vuzmozhnost za emulirane na vhod v po-privilegirovan protses

    ima

    niama

    ZAKLYUCHENIE

    Ne e li naistina zabavno – NT e zashtitena mnogo po-slabo (privedenata po-gore tablitsa dokazva neoproverzhimo tova), no vse pak po-chesto se razbivat UNIX sistemi, a ne NT. Paradoks? Ili vse pak lipsata na izhodniiat kod okazva vliianie? Vuv vseki sluchai, nie drugi prichini prosto ne vizhdame ... Edinstvenoto, koeto mozhe da predpolozhim e, che NT se probiva, no poradi uspeshniiat probiv (i poradi uiazvimostta na samata operatsionna sistema) tezi probivi prosto ne mogat da se registrirat. Nai-obshto kazano, tuk ima vurhu kakvo da se pomisli.

    prevod: Nikolai Angelov



    1 osven na saitove kato http://www.zone-h.org/.

    2 ne sluchaino, v open source dvizhenieto, na osobena pochit e printsiput KISS, pridurzhaneto kum koito bi doneslo polza ne samo v oblastta na informatsionnite tehnologii (tova ot lichen opit).

    3 mezhdu drugoto, slozhnostta se izmerva ne s obema na napisaniia programen kod, a s kolichestvoto vzaimni vruzki mezhdu otdelnite komponenti na programata – (K.K)

    4 i niama li da poluchim sled takava namesa korenno razlichna operatsionna sistema? – (K.K)

    5 kato pri tova, po-goliamata chast ot tiah sa otkriti suvsem sluchaino – (K.K)

    6 podrobno za tova se razkazva v knigata na Kris Kasperski, „Tehnika na mrezhovite ataki“ – (K.K)

    7 ne triabva da se burkat s razlichnite paketi, vklyuchvani v razlichnite distributsii.

    8 tuk e momenta da spomenem i sukrashtenieto TANSTAAFL.

    9 koeto mi napomnia otgovora na edin uchen (koi tochno, ne pomnia sus sigurnost) za sushtnostta na negoviia metod za preodoliavane na prepiatstviiata, koiato se sustoiala v tiahnoto zaobikaliane.

    10 v terminologiiata na NT – backup operators ili backup administrators

    11 toi e root ili administrator – (K.K)

    12 pri obrushtane kum otsustvashta stranitsa ot pametta, protsesora shte generira izklyuchenie (exception), vodeshto do avariino zavurshvane na uiazvimoto prilozhenie – (K.K)

    13 toest pozvoliavat izpulniavaneto na kod v steka – (K.K)

    14 izpulnimiiat stek e neobhodim na mnogo napulno legalni programi, v chastnost – na kompilatorite – (K.K)

    15 v chastnost, za Windows 2000 tova e Service Pack 2 – (K.K)



    << Vuvedenie kum zashtitnite steni | The best things in life are free: Mozilla Firefox >>