|
ot Nick Angelow(7-01-2005)
reiting (-71)
[ dobre ]
[ zle ]
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 registrirat)
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-sigurna
i obratno. Razbira se, osven slozhnostta,
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 iadroto
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 ruka.
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 XP.
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 komponenti
(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 tsena.
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“.
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
arhivirane,
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 superpotrebitel.
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:
drugi
buferi i promenlivi na programata;
sluzhebni
danni – v chastnost, adres na vrushtane
ot funktsii;
izpulnim
kod;
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 usluga.
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 stek
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 ogranichena.
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:
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;
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:
samostoiatelno
da reshava koi protses mozhe da vzaimodeistva
s nego i koi ne mozhe;
da
umee da opredelia avtentichnostta na
protsesite izprashtachi i na protsesite
poluchateli;
da
mozhe da kontrolira tsialostta na
predavanite ili priemanite danni;
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
krupka,
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
<< Vuvedenie kum zashtitnite steni | The best things in life are free: Mozilla Firefox >>
|
|