oe vypolnyaet dlya vas takoj poisk. UCHETNYE FAJLY Veroyatno, naibolee vazhnym sredi protokol'nyh fajlov yavlyaetsya uchetnyj fajl. V uchetnom fajle imeetsya zapis' o kazhdom i vsyakom pro- cesse, zapuskaemom v sisteme. Tochnuyu strukturu mozhno posmotret' v fajle /usr/include/sys/acct.h. V odnom iz polej etoj struktury zapi- sany processy, imeyushchie superpol'zovatel'skie vozmozhnosti. Kogda kto-libo vhodit v sistemu cherez kornevuyu dver', dlya shell- interpretatora, kotoryj on zapuskaet, i dlya vseh processov, kotorye on porozhdaet, vladel'cem yavlyaetsya koren' (superpol'zovatel'). V uchet- nom fajle otrazhen nomer terminala, s kotorogo zapushchen process, poeto- mu vy mozhete uvidet' kornevye processy, zapushchennye s takih termina- lov, na kotoryh pol'zovatelyam ne razreshen superpol'zovatel'skij dostup. Esli u vas imeyutsya obychnye linii s naborom nomera, to vse takie zapisi mogut predstavlyat' ne odnogo i togo zhe pol'zovatelya. Drugie vhody v sistemu mogut imet' odinakovyj nomer terminala, no raznye pol'zovatel'skie identifikatory. Odnako, vy mozhete znat', kto obychno imeet dostup k nekotorym vydelennym liniyam. Uchetnye fajly mogut horosho razoblachit' processy, imeyushchie ne ta- koj pol'zovatel'skij identifikator, kak u lica, zapustivshego eti pro- cessy. Poishchite processy, vladel'cem kotoryh byl izvestnyj pol'zova- tel', no kotorye imeyut superpol'zovatel'skie vozmozhnosti. Sredi nih mogut byt' korrektnye zapisi, naprimer lpr, tak kak otobrazhayutsya vse sistemnye programmy, zapushchennye so vzvedennym bitom setuid. Zapisi, kotorye my ishchem, otnosyatsya k shell-interpretatoram s ustanovlennym uchetnym flagom superpol'zovatelya. |to vydaet tot fakt, chto byla vy- polnena programma potajnoj dveri. Izuchite podklyuchaemyj fajl acct.h, chtoby uvidet' vse opredeleniya. Ispol'zuya bit ASU dlya proverki polya, my mozhem izolirovat' flagovuyu oblast', otrazhayushchuyu privilegiyu super- pol'zovatelya. Samyj luchshij sposob rassmotret' etu strukturu - napi- sat' programmu na yazyke Si, pechatayushchuyu vse elementy struktury. V sle- duyushchej raspechatke pokazany nekotorye vazhnye uchetnye polya: -------------------------- | | cmd f uid tty btime | | more 0 russ 0 Sat Jul 5 01:25:59 1986 | ls 0 russ 0 Sat Jul 5 01:31:12 1986 | ps 0 russ 0 Sat Jul 5 01:31:59 1986 | id 0 russ 0 Sat Jul 5 01:34:00 1986 | pwd 0 russ 0 Sat Jul 5 01:34:12 1986 | sh 1% russ 0 Sat Jul 5 01:33:51 1986 | \__ kornevoj shell s effektivnym pol'zovatel'skim identifikatorom | | sync 0 russ 0 Sat Jul 5 01:34:21 1986 | df 0 russ 0 Sat Jul 5 01:34:27 1986 | id 0 root 0 Sat Jul 5 01:34:37 1986 | sh 2# root 0 Sat Jul 5 01:34:33 1986 | \__ kornevoj shell s real'nym pol'zovatel'skim identifikatorom, | 2# oboznachaet bit superpol'zovatelya, | vladelec izmenen na root | Otmetim, chto shell-interpretatory s effektivnym pol'zovatel'skim identifikatorom maskiruyut bit vo flage superpol'zovatelya, no vladel'- cem ih processov yavlyaetsya obychnyj pol'zovatel'. Ne izvestno, vse li sistemy primenyayut znachenie 1 v kachestve flaga shell-interpretatora s effektivnym pol'zovatel'skim identifikatorom. Pohozhe, chto Berkeley postupaet imenno tak, a System V net. KOMANDA su Kak my uzhe otmechali, UNIX predostavlyaet pol'zovatelyam obychnyj sposob stat' superpol'zovatelem - eto komanda su. Kak vidno iz predy- dushchego izlozheniya, sut' komandy su zaklyuchaetsya v sistemnom vyzove exec. Tot, kto primenyaet komandu su, dolzhen znat' kornevoj parol', tranzakciya protokoliruetsya v fajle /usr/adm/sulog, a komanda ps ogla- shaet tot fakt, chto aktiven kornevoj shell. |tot priem ne samyj hitro- umnyj. DOSTUP K TERMINALU SUPERPOLXZOVATELYA Pomnite o tom, chto NIKOGDA nel'zya ostavlyat' bez prismotra termi- nal, na kotorom vy rabotaete v kachestve superpol'zovatelya? Poka vy otsutstvuete, kto-to mozhet vospol'zovat'sya etim terminalom, chtoby vy- polnit' komandu chmod s cel'yu ustanovki bita pol'zovatel'skogo iden- tifikatora. Horosho podgotovlennyj narushitel' uzhe imeet otkompiliro- vannuyu programmu potajnoj dveri, vladel'cem kotoroj yavlyaetsya superpol'zovatel', i zhdet, kogda budut izmeneny prava dostupa. Ne os- tayutsya li konsol'nye terminaly dostupnymi v kachestve superpol'zova- tel'skih noch'yu, vo vremya dejstvij po rezervnomu kopirovaniyu? Esli os- tayutsya, to nautro administrator mozhet okazat'sya v nezavidnom polozhenii! BOLEE PODROBNO O POLXZOVATELE bin My uzhe upominali o "lazejke" v nekotoryh sistemah, pozvolyayushchih pol'zovatelyu "bin" bez truda zavladet' superpol'zovatel'skim dostu- pom. Problema "bin" imeet eshche ryad aspektov. Esli nesankcionirovannye pol'zovateli mogut vojti v sistemu cherez bin (yavlyayushchijsya vladel'cem bol'shinstva distributivnyh ispolnyaemyh modulej), to oni pochti naver- nyaka smogut poluchit' prava superpol'zovatelya. Prezhde vsego, v nekoto- ryh versiyah vladel'cem vseh ispolnyaemyh modulej, razmeshchennyh v kata- logah /bin i /usr/bin, yavlyaetsya bin. |to znachit, chto narushiteli mogut perezapisat' ili podpravit' ispolnyaemye moduli svoimi sobstvennymi variantami, vypolnyayushchimi nekotorye osobye dejstviya, naprimer "chmod 4755 door", a zatem vosstanovit' na mesto ishodnuyu versiyu ispolnyaemo- go modulya. Eshche odin sposob prostogo prevrashcheniya bin v superpol'zovatelya zaklyuchaetsya v modifikacii /etc/rc - fajla zapuska komand ("run command"). On zapuskaetsya kazhdyj raz, kogda mashina zagruzhaetsya v mno- gopol'zovatel'skom rezhime. Zapisyvaya v nego "chmod 777 /etc/passwd", narushitel' mozhet prevratit' parol'nyj fajl v obychnyj pol'zovatel'skij posle togo, kak mashina zagruzitsya. Poslednij sposob - ispol'zovat' fajl /usr/lib/crontab. |tot put' izmenen v poslednej versii System V. Teper' polnoe imya etogo fajla /usr/spool/cron/crontabs/xxx, gde xxx - fajl crontab dlya kazhdogo pol'zovatelya. V starom variante vladel'cem fajla /usr/lib/crontab inogda yavlyaetsya bin. Kto-nibud' mozhet otredaktirovat' etot fajl i po- mestit' v nego takie, naprimer, komandy: * * * * * chmod 777 /etc/passwd * * * * * chmod 4755 /tmp/door * * * * * /bin/su root -c "chmod 777 /etc/passwd" Vse eto srabatyvaet po toj prichine, chto cron vypolnyaetsya proces- som init. Poskol'ku init - odin iz pervyh zapushchennyh processov, ego vladel'cem yavlyaetsya superpol'zovatel'. Poetomu lyubaya komanda, kotoruyu vypolnyaet cron, imeet kornevye privilegii. Zvezdochki oznachayut, chto cron dolzhen vypolnit' ukazannye komandy v ocherednoj vozmozhnyj moment vremeni. Cron zapuskaet process, izmenyayushchij prava dostupa k ukazanno- mu fajlu. Narushiteli mogut pomenyat' parol'nyj fajl (chto neskol'ko bo- lee opasno) ili prosto aktivizirovat' programmu potajnoj dveri. Esli dve pervye komandy ne srabotayut, to vladelec budet izmenen na super- pol'zovatelya metodom gruboj sily - vypolneniem komandy su, a zatem peredachej komandy chmod shell-interpretatoru, zapushchennomu komandoj su. Vy dolzhny pochashche proveryat' fajly crontab i /etc/rc! VOZMOZHNOSTX ZAPISI V SPECIALXNYE FAJLY |to redko primenyaemyj metod. On predpolagaet, chto obychnyj pol'- zovatel' imeet pravo na zapis' v ispolnyaemyj modul' ili v special'nyj fajl. Esli kto-to mozhet pisat' v ispolnyaemyj modul', skazhem ls, to on mozhet pomestit' tuda nekotoryj kod, kotoryj ustanavlivaet potajnuyu dver', a zatem zamenyaet sebya nastoyashchej utilitoj. |to rabotaet eshche luchshe, kogda etu komandu zapuskaet pol'zovatel' s kornevymi vozmozh- nostyami, tak kak togda komanda vypolnyaetsya kak privilegirovannyj pro- cess. Takoj sposob upryatyvaniya koda v programmu s vozmozhnost'yu zapus- ka ee ne vyzyvayushchim podozreniya pol'zovatelem nazyvaetsya "troyanskim konem". On vyglyadit bezvrednym, no to, chto spryatano u nego vnutri, krepko b'et po zashchite sistemy. Kak my uzhe otmechali, periodicheskaya proverka kontrol'nyh summ dlya standartnyh ispolnyaemyh modulej - odno iz protivoyadij ot "troyanskih konej". Esli narushiteli ovladevayut vozmozhnost'yu chteniya ili zapisi fajlov ustrojstv, oni mogut prochitat' v etih fajlah informaciyu o superbloke i fajlovoj sisteme i poluchit' dostup k lyubomu fajlu. Im mozhet ponado- bit'sya projti po fajlovoj sisteme v poiskah nuzhnogo fajla, podpravit' ego i zapisat' obratno v fajl ustrojstva. Lyudi, kotorye etim zanima- yutsya i sovershayut pri etom oshibki, mogut dobit'sya kraha vsej sistemy. Esli fajl ustrojstva nahoditsya v pamyati, pol'zovateli mogut prosmatrivat' informaciyu o processah ili yadre neposredstvenno v pamya- ti. Mozhet byt' ispol'zovan staryj priem otslezhivaniya spiskov clist na predmet postupleniya parolya pol'zovatelya, vhodyashchego v sistemu. |to trebuet bol'shih znanij o tom, gde dannaya informaciya razmeshchaetsya v pa- myati i kak k nej dobrat'sya, poetomu etim metodom pol'zuyutsya, veroyat- no, tol'ko opytnye narushiteli. PEREZAGRUZKA SISTEMY V nekotoryh sistemah byvaet, chto posle perezagruzki mashiny na konsoli rabotaet superpol'zovatel'skij shell. Takoe mozhet proizojti v odnopol'zovatel'skom rezhime ili na mikro-|VM, sluzhashchej konsol'yu dlya bol'shoj mashiny. Ochevidnoe reshenie - ogranichit' fizicheskij dostup k konsoli. ISPOLXZOVANIE PREIMUSHCHESTV PEREMENNOJ $PATH Koe-kto mozhet vospol'zovat'sya situaciej, kogda pol'zovatel' ime- et katalog $HOME/bin vperedi sistemnyh katalogov /bin i /usr/bin v svoej peremennoj PATH. Pomeshchaya podpravlennuyu programmu v registraci- onnyj katalog bezvrednogo pol'zovatelya, narushitel' zastavlyaet etu programmu vypolnyat'sya vmesto nastoyashchej, poskol'ku sistema ispolnyaet pervyj fajl, sovpadayushchij s imenem komandy, kotoryj ona obnaruzhivaet v hode prosmotra opredelennogo pol'zovatelem marshrutnogo spiska. Prime- rom mogla by sluzhit' komanda ls. Kogda komanda vypolnyaetsya, ona zapuskaetsya s temi zhe pravami dostupa, chto i zapustivshij ee pol'zovatel'. Konechnaya cel' narushitelej - dobit'sya prav superpol'zovatelya, poskol'ku togda oni smogli by vy- polnit' lyubuyu komandu. Diversionnaya programma mozhet podgotovit' po- tajnuyu dver' dlya ovladeniya pravami superpol'zovatelya ili dazhe nes- kol'ko takih dverej. Ona mozhet udalit' sebya, chtoby pri ocherednom vyzove dannoj komandy vypolnyalas' nastoyashchaya komanda. Nastoyatel'naya neobhodimost' dlya administratora - proveryat' nalichie v rabochem prost- ranstve opasnyh fajlov (v chastnosti, ispolnyaemyh modulej). FALXSHIVYE VERSII NA LENTAH My ne slyshali, chtoby kto-libo eto delal, no imeet smysl ot etogo zashchitit'sya. Staratel'nyj narushitel' mog by snachala podgotovit' pravki dlya sistemy, pomestit' ih na lentu i pereslat' ih vam, administrato- ru. Vy, veroyatno, predpolozhili by, chto eto pravil'nye modifikacii sistemy i ustanovili by ih. I vasha sistema poluchila by "podarochek" ot narushitelya. Poetomu administrator mozhet zahotet' sverit' novye versii s ih izgotovitelem pered tem, kak ustanavlivat' ih u sebya. ZASHIFROVANNAYA BAZA DANNYH Hotya my ne mozhem dat' garantiyu, chto kto-nibud' smekalistyj ne opishet, kak raskolot' parol'nuyu zashchitu, kodirovanie parolya v sisteme UNIX po algoritmu DES schitaetsya dovol'no sekretnym. (Rassmotrenie me- hanizma DES vyhodit za predely dannoj knigi.) K etoj zashchite dobavlya- etsya odna veshch' - dva simvola, generiruemye sluchajnym obrazom, nazyva- emye "sol'yu" (salt) i hranimye v fajle /etc/passwd dlya kazhdoj zapisi. "Sol'" ispol'zuetsya dlya opredeleniya togo, kakoj iz 4096 variantov al- goritma DES primenyaetsya dlya kodirovaniya zadannogo parolya. Narushitel' mog by zahvatit' parol', ispol'zovat' ego "sol'" i zashifrovat' spisok izvestnyh parolej. Esli by rezul'tat sovpadal s probnym parolem, vzlom byl by osushchestvlen. Narushitelyu prishlos' by imet' dostup k nekotoroj dovol'no chuvs- tvitel'noj metodike, chtoby dobit'sya svoego. Nelishnyaya mera, kotoruyu mozhet predprinyat' administrator,- sledit' za chrezmernym ispol'zovani- em komandy crypt (esli ona est' v vashej sisteme). |ta komanda speci- al'no skonstruirovana tak, chtoby zanimat' mnogo processornogo vremeni - ne nastol'ko mnogo, chtoby prichinyat' neudobstva zakonnym pol'zovate- lyam, no dostatochno mnogo, chtoby vyyavit' popytki avtomatizirovannogo vzloma. ZAPADNYA Zapadnya rabotaet tol'ko na special'no vydelennyh liniyah. Kogda UNIX ozhidaet, chto kto-to budet vhodit' v sistemu, ona pechataet re- gistracionnuyu stroku iz fajla /etc/gettydefs. Pol'zovatel' vvodit svoe registracionnoe imya i parol' i popadaet v sistemu. Programma zapadni izvlekaet iz etogo vygodu. Ona imitiruet pove- denie ekrana vo vremya registracii. Kogda pol'zovatel' vvodit svoe imya i parol', takaya programma pechataet soobshchenie "login incorrect" ("ne- vernaya registraciya"), a zatem zapuskaet nastoyashchuyu registracionnuyu programmu. Pol'zovatel' dumaet, chto on sdelal oshibku i povtoryaet po- pytku vhoda v sistemu, na etot raz uspeshno. Registracionnoe imya i pa- rol' mozhno kuda-nibud' otlozhit' dlya posleduyushchego izucheniya. Samaya luch- shaya zashchita administratora ot etogo - obuchenie pol'zovatelej. Vidimo, s pomoshch'yu regulyarnoj pochty ili byulletenej nuzhno napominat' im, chto esli im kazhetsya, chto oni nabrali parol' pravil'no, no poluchili pri etom soobshchenie "incorrect", to oni dolzhny nemedlenno smenit' svoj pa- rol' i soobshchit' ob etom proisshestvii administratoru. Byvayut sluchai, kogda pol'zovatel' dejstvitel'no oshibaetsya pri vvode parolya, no k bol'shomu kolichestvu takih proisshestvij nuzhno otnestits' so vsej ser'- eznost'yu. KOMANDA MONTIROVANIYA Komanda montirovaniya byla sozdana dlya togo, chtoby pozvolit' pri- soedinyat' k sisteme neskol'ko diskovyh ustrojstv. Ran'she, v epohu mi- nikomp'yuterov edinstvennym vidom diskovyh ustrojstv byli bol'shie na- kopiteli, v kotorye vstavlyalis' bol'shie diskovye pakety. Oni obychno nahodilis' v mashinnom zale, i tol'ko administrator montiroval ih. Teper' mnogie sistemy imeyut gibkie diski. Oni gorazdo personal'- nee i namnogo men'she, chem bol'shie diskovye pakety. |to umen'shenie razmera oshchutimo vozdejstvuet na vazhnost' samogo ob®ekta. Pohozhe, chto teper' kazhdyj pol'zovatel' mozhet imet' delo so svoimi diskami, i ad- ministratoru bol'she net neobhodimosti zanimat'sya etim. Takoj scenarij raboty privodit k sleduyushchemu. Obychnoe dejstvie, predprinimaemoe v nebol'shih sistemah dlya togo, chtoby dat' pol'zovatelyam vozmozhnost' rabotat' s ih sobstvennymi gib- kimi diskami,- eto ustanovka bita pol'zovatel'skogo identifikatora dlya fajla komandy /etc/mount. Takim obrazom, kogda zapuskaetsya koman- da montirovaniya, ee pol'zovatel'skij identifikator stanovitsya korne- vym, i ona mozhet smontirovat' gibkij disk. Komanda demontirovaniya dolzhna byt' podgotovlena analogichno. Kto-to mozhet izvlech' vygodu iz togo, chto komanda mount mozhet po- luchit' vo vremya svoej raboty prava superpol'zovatelya. Obychno v ne- bol'shih sistemah odna mashina otkryta dlya eksperimentov nesankcioniro- vannogo pol'zovatelya. On mozhet stat' superpol'zovatelem v vashej sisteme, podgotovit' programmu potajnoj dveri i pomestit' ee na gib- kij disk. Vladel'cem yavlyaetsya superpol'zovatel', a prava dostupa 4755. Zatem narushitel' mozhet razmontirovat' gibkij disk i vojti v za- shchishchennuyu sistemu. S etogo momenta narushitel' mozhet prosto vhodit' v sistemu kak obychnyj pol'zovatel', bez vsyakih special'nyh prav dostupa i montiro- vat' gibkij disk, na kotorom imeetsya programma potajnoj dveri. Kogda gibkij disk montiruetsya, fajlovaya sistema gibkogo diska vstraivaetsya v fajlovuyu sistemu zhestkogo diska, i dve sistemy slivayutsya v odnu. |to oznachaet, chto potajnaya dver' dlya ovladeniya pravami superpol'zova- telya gotova dlya fajlovoj sistemy na zhestkom diske. Kogda narushitel' zapuskaet programmu potajnoj dveri na gibkom diske, proishodit to zhe samoe, chto proishodilo by, esli by eta prog- ramma byla na zhestkom diske. Mera predotvrashcheniya - kontrolirovat' is- pol'zovanie komandy mount v vashej sisteme. Dostup k komande mount dolzhen byt' ogranichen opredelennym krugom pol'zovatelej, ona ne dolzh- na razreshat' montirovat' fajly s ustanovkoj pol'zovatel'skogo identi- fikatora. AVTONOMNYJ shell (SASH) V sistemah UNIX s gibkimi diskami zagruzochnyj disk obychno zagru- zhaetsya s gibkogo nakopitelya. Podrazumevaetsya, chto gibkij disk prime- nyaetsya dlya podgotovki zhestkogo diska i kopirovaniya vseh fajlov siste- my UNIX s gibkogo diska na zhestkij. No za etim kroetsya nechto bol'shee. Na samom dele zagruzhaemyj gibkij disk - eto kompaktnaya, pereno- simaya versiya sistemy UNIX. YAdro adaptirovano k tomu, chtoby razmeshchat'- sya na gibkom diske, a ne na zhestkom. Kogda vy ego zagruzhaete, vy po- luchaete interpretator shell i sredu tochno tak zhe, kak pri rabote s zhestkogo diska. Vot pochemu takoj shell nazyvaetsya avtonomnym (SASH, standalone shell). Kornevaya fajlovaya sistema na gibkom diske dazhe vyglyadit tochno tak zhe, kak fajlovaya sistema zhestkogo diska. Fakticheski vy mozhete smontirovat' zagruzhaemyj disk i skopirovat' utility s zhestkogo diska na gibkij. Nuzhny dve vazhnye komandy: mount i umount. Ogranicheniem yav- lyaetsya razmer gibkogo diska. Na nego ne tak mnogo pomeshchaetsya. Scenarij, s pomoshch'yu kotorogo nesankcionirovannyj pol'zovatel' mozhet primenit' SASH dlya vhoda v sistemu s superpol'zovatel'skimi privilegiyami, vyglyadit primerno tak. Snachala on dolzhen otklyuchit' pi- tanie ili perezagruzit' zashchishchennuyu sistemu. Zatem on dolzhen zagruzit' SASH i smontirovat' kornevuyu fajlovuyu sistemu zhestkogo diska v tochku montirovaniya svoej fajlovoj sistemy gibkogo diska. Komandy mogut byt' takimi: # /etc/mount /dev/fp001 /mnt <-- dlya System V # /etc/mount /dev/hd0a /mnt <-- dlya XENIX |to daet narushitelyam dostup na zhestkij disk pri pomoshchi obrashcheniya /mnt/*. Vse, chto im nuzhno dlya redaktirovaniya fajla /etc/passwd - eto projti vniz po derevu katalogov. Dlya etogo mozhno primenit' takie ko- mandy: # /mnt/bin/vi /mnt/etc/passwd # sync Teper' zhestkij disk izmenen, i ego mozhno vernut' na mesto. Naru- shitel' mozhet ostanovit' avtonomnyj variant UNIX i perezagruzit'sya s zhestkogo diska. On mozhet ispol'zovat' novoe registracionnoe imya, soz- dannoe pri pomoshchi SASH. My ne znaem, naskol'ko chasto lyudi mogut predprinimat' takie popytki. Nebol'shie sistemy bolee uyazvimy, no v nih i men'she pol'zovatelej (i potencial'nyh zlodeev). Vo mnogih slu- chayah nizhnej granicej "logicheskoj zashchity" stanovitsya "fizicheskaya zashchi- ta". Bol'shinstvo lyudej, imeyushchih bol'shie mashiny ili dazhe mini-|VM, postoyanno osoznayut, chto im est' chto zashchishchat'. A mikro-|VM vyglyadyat nastol'ko "druzhestvennymi" i prostymi, chto lyudi obychno zabyvayut, chto informaciya, kotoraya soderzhitsya na mikrokomp'yuterah, pri opredelennyh obstoyatel'stvah mozhet okazat'sya nastol'ko zhe zhelaemoj i znachitel'noj, kak i na bol'shih mashinah. PRAVKI ISHODNYH TEKSTOV CHashche vsego pravki ishodnyh tekstov yavlyayutsya samym moshchnym, hotya i ne samym legkim sposobom proniknoveniya narushitelej v sistemu. Vnedryaya svoj sobstvennyj kod v podhodyashchih mestah, nesankcionirovannye pol'zo- vateli mogut izvlech' vsyu sekretnuyu informaciyu, kotoraya im nuzhna. Od- nako, pravki koda mogut byt' polezny takzhe i dlya administratora. Ad- ministratoru mozhet ponadobit'sya vnesti pravki v registracionnuyu programmu, chtoby posmotret', kto i kak chasto pytaetsya zaregistriro- vat'sya na mashine. Drugoj variant - vnesenie pravok v programmy s us- tanovkoj pol'zovatel'skogo identifikatora i v drugie dostupnye ogra- nichennomu krugu lic programmy, chtoby oni registrirovali svoj seans raboty v sekretnom protokol'nom fajle. YADRO Eshche odno mesto, v kotorom nuzhno sledit' za nesankcionirovannymi pravkami - biblioteki yadra. Podpravlennye ob®ektnye moduli mozhno leg- ko pomestit' v biblioteki nezamechennymi. Drugim bibliotekam grozit ta zhe opasnost'. Dopolnitel'nye razumnye usovershenstvovaniya yadra mozhno obnaruzhit' v sistemnyh vyzovah chmod i chown. Kogda vypolnyayutsya eti sistemnye vyzovy, oni proveryayut, imeete li vy pol'zovatel'skij iden- tifikator 0. Esli net, to vash zapros ne udovletvoryaetsya. Otmeniv etu proverku, lyuboj obychnyj pol'zovatel' mog by izmenit' vladel'ca fajla na superpol'zovatelya, a takzhe izmenit' rezhim zashchity fajla, chtoby vzvesti bit ustanovki pol'zovatel'skogo identifikatora. |to pozvolilo by uspeshno obojti zashchitnyj bar'er. PROGRAMMA passwd Programma passwd - ohrannik vorot sistemy UNIX. Tochno tak zhe, kak mnogie drevnie goroda pali iz-za togo, chto vragi podkupili ohran- nika vorot, tak i horosho zashchishchennaya sistema UNIX mozhet byt' prevrashche- na v shiroko otkrytuyu, esli kto-libo podpravit etu programmu. Poskol'- ku pol'zovateli primenyayut programmu passwd dlya izmeneniya svoih parolej, podpravlennaya versiya mozhet zapisyvat' novyj parol', vvodimyj pol'zovatelem dlya izmeneniya, v sekretnyj fajl, prinadlezhashchij narushi- telyu. |to mozhet obescenit' kazhdyj vnov' sozdavaemyj v sisteme parol'. Vnutri programmy passwd parol' yavlyaetsya prosto simvol'nym massivom, poetomu s etimi dannymi legko upravit'sya. PROGRAMMA crypt Potencial'noj pravkoj programmy shifrovaniya fajlov crypt mozhet byt' nakoplenie imen fajlov i klyuchej shifra pri kazhdom ispol'zovanii programmy. Takim metodom vy mozhete prosledit', kto zapuskaet etu ko- mandu, kakoj fajl on ispol'zuet i kakoj klyuch primenyaetsya dlya togo, chtoby poluchit' dostup k etomu fajlu. Nepriyatnosti, svyazannye s poslednimi dvumya sluchayami, zaklyuchayutsya v tom, chto kto-nibud' mozhet razrushit' mery sistemnoj bezopasnosti. Esli vy schitaete, chto v vashej sisteme est' zamanchivye, vazhnye dannye, to vam kak administratoru sleduet pochashche proveryat' eti programmy (po kontrol'noj summe ili sravneniem) na predmet povrezhdeniya. KOMANDA su Poskol'ku komanda su predostavlyaet superpol'zovatel'skij dostup dlya obychnyh pol'zovatelej, imeyushchih kornevoj parol', eto eshche odna po- tencial'naya lazejka v zashchite sistemy. Obshchaya shema raboty komandy su vyglyadit tak: -------------------------------------------- | | Poluchit' informaciyu o pol'zovatele: pol'zovatel'skij identifikator, | gruppovoj identifikator, parol', nomer terminala, ... | Esli parol' pustoj ili pol'zovatel'skij identifikator raven nulyu, | To projti mimo voprosov o parole. | | Zapros parolya | Esli zashifrovannyj variant togo, chto bylo tol'ko chto nabrano, | ne sovpadaet s parol'noj strokoj iz fajla /etc/passwd, | To zaprotokolirovat' neudachnuyu popytku primeneniya su, | napechatat' soobshchenie "sorry" (sozhalenie po povodu neudachi), | vyjti. | Parol' proshel: | zaprotokolirovat' uspeshnuyu popytku primeneniya su, | vypolnit' sistemnye vyzovy dlya togo, chtoby vvesti v dejstvie | pol'zovatel'skij i gruppovoj identifikator, | ustanovit' sredu, esli eto trebuetsya, | vydat' na konsol' soobshchenie, esli eto kornevoj shell, | a vy ne za sistemnoj konsol'yu, | organizovat' argumenty dlya pokaza su v komande ps, | vypolnit' interpretator shell. | Dlya podpravlennoj versii potrebovalis' by lish' nebol'shie izmene- niya v privedennoj vyshe posledovatel'nosti. Vmesto togo, chtoby srazu zhe zashifrovyvat' parol', su mogla by proverit' "sekretnyj" parol' na- rushitelya. Esli vveden takoj parol', to proverku parolya i dejstviya po pro- tokolirovaniyu mozhno obojti, poetomu zapreshchennyj dostup ne otrazilsya by v protokole. Nesankcionirovannyj pol'zovatel' dobilsya by togo, chto DRUGIE paroli dlya komandy su zapisyvalis' by v "sekretnyj" fajl. V rezul'tate on by potihon'ku poluchil vse interesuyushchie ego paroli dlya potencial'nogo ispol'zovaniya. Dlya pol'zovatelya komanda su srabatyvala by uspeshno, esli parol' pravil'nyj, a narushitel' poluchal by v svoe rasporyazhenie parol'. KOMANDA login Nesankcionirovannyj pol'zovatel' mozhet povredit' komandu login pri pomoshchi teh zhe metodov, chto i dlya passwd. Tem ne menee, administ- rator mozhet sdelat' nechto bol'shee, chem prosto zashchitit' dannuyu prog- rammu ot povrezhdeniya. Po teorii, nailuchshej zashchitoj yavlyaetsya napade- nie. Poetomu administrator mozhet vnesti v komandu login svoi sobstvennye pravki i primenyat' ee kak sistemu opoveshcheniya o vmeshatel'- stve. Kazhdyj raz, kogda kto-to vhodit v sistemu ili pytaetsya vojti, mozhno izmenit' zapis' ob ispol'zuemyh imeni i parole. |to mozhet sig- nalizirovat' vam o lyubyh popytkah narushitelej ugadat' paroli metodom gruboj sily. V silu sposoba, kotorym realizovana komanda login, trebuetsya tol'ko odno izmenenie. Algoritm proverki kak pol'zovatel'skogo paro- lya, tak i parolya pri nabore nomera dlya modemnoj svyazi vyzyvaet odnu i tu zhe podprogrammu. K sozhaleniyu, my ne mozhem privesti ee zdes', tak kak nesankcionirovannye pol'zovateli smogli by primenit' ee dlya sbora parolej v svoih korystnyh celyah. Dalee, esli vy zaveli vash sobstven- nyj sekretnyj fajl dlya protokolirovaniya popytok vhoda v sistemu, to vy dolzhny popytat'sya ubedit' narushitelej, chto oni ne smogut prochitat' ego i ostanutsya so svoimi zabotami. Vy mozhete sdelat' sleduyushchee, hotya eto uvelichilo by nakladnye rashody: zashifrovat' utilitoj crypt paroli v protokol'nom fajle s primeneniem vashego sobstvennogo sekretnogo klyucha. Togda dazhe esli kto-to prochitaet etot fajl, on ne smozhet vos- pol'zovat'sya etoj informaciej. PROSTITELXNYE GREHI Rassmatrivaemye nizhe sluchai predstavlyayut soboj menee, no vse zhe potencial'no boleznennye problemy bezopasnosti. Oni ne privlekayut sposobov ovladeniya superpol'zovatel'skimi privilegiyami, no yavlyayutsya sposobami naduvatel'stva sistemy i begstva iz nee. SISTEMNYJ REZHIM Dannyj priem, pozhaluj, redko primenyaetsya, esli tol'ko u vas net cheloveka, kotoryj ochen' blizko znakom s nizkourovnevym funkcionirova- niem togo ili inogo processora, ispol'zuemogo v vashej mashine. On mo- zhet proniknut' v serdce apparatnogo oborudovaniya i pristroit'sya po- verh operacionnoj sistemy. Tem ne menee, administratory dolzhny osoznavat', chto takie veshchi vozmozhny. Vo mnogih processorah, naprimer v processore Motorola 68000, imeetsya registr sostoyaniya processora (Processor Status Register), na- zyvaemyj obychno PSW, hotya u raznyh processorov on mozhet nazyvat'sya po -raznomu. PSW soderzhit bit, opredelyayushchij, rabotaet li mashina v "su- pervizornom" ili v pol'zovatel'skom rezhime. |tot rezhim vazhen dlya mno- gopol'zovatel'skoj apparatury, poskol'ku vse pol'zovatel'skie prog- rammy rabotayut v pol'zovatel'skom rezhime, chto segmentiruet i zashchishchaet pamyat' ot "kollizij" mezhdu processami. S drugoj storony, yadro rabotaet v supervizornom rezhime. |to oz- nachaet, chto zashchita pamyati ne dejstvuet i central'nyj processor mozhet izmenyat' soderzhimoe lyuboj yachejki pamyati vo vsej mashine. YAdru neobho- dima takaya vozmozhnost', poskol'ku yadro podderzhivaet mehanizm svoppin- ga dlya peremeshcheniya processa v zashchishchennuyu pamyat' i iz nee, kogda pro- cess vypolnyaetsya. Esli narushiteli bezopasnosti mogut poluchit' v prgrammu, rabotayushchuyu v sistemnom rezhime, to oni poluchayut vozmozhnost' izmenyat' vsyu pamyat' v sisteme. Posledstviya mogut var'irovat'sya ot absolyutnogo razrusheniya, nap- rimer zapisyvaniya nulej v kazhduyu yachejku pamyati, do sposobnosti chitat' i sortirovat' dannye v pamyati, vklyuchaya paroli i druguyu informaciyu s ochen' ogranichennym k nej dostupom. Dlya togo chtoby dobit'sya sistemnogo rezhima, narushitelyu neobhodima vozmozhnost' sgenerirovat' i ustanovit' novoe yadro. Ispol'zuemyj metod zavisit ot togo, est' li u narushitelya ishodnyj tekst programm yadra. Privodimye nami podrobnosti otnosyatsya k processoru 68000, no mogut byt' analogichnymi dlya drugih processorov. SISTEMNYJ VYZOV Pervyj metod - sozdat' "pol'zovatel'skij" sistemnyj vyzov. Sis- temnye vyzovy nahodyatsya v ishodnyh fajlah s imenami vida os/sys?.c. |to primerno 60 sistemnyh vyzovov, i kazhdyj iz nih imeet specifiches- kij nomer. |tot nomer opredelyaetsya tablicej sistemnyh vhodov - tabli- cej adresov tochek vhoda v sistemnye vyzovy. Dlya dobavleniya novogo sistemnogo vyzova neobhodimo podgotovit' ego ishodnyj kod. Kogda yadro perekompilirovano i ustanovleno, mozhno proizvodit' sistemnyj vyzov iz lyuboj programmy v sisteme. Kak tol'ko takoj vyzov aktivizirovan, on mozhet perevesti mashinu v sistemnyj rezhim. K schast'yu, ne tak uzh legko dlya "obychnogo" pol'zovatelya perekom- pilirovat' i pereustanovit' yadro sistemy. |tot metod, veroyatno, tre- buet "vnutrennej raboty". Pomoglo by hranenie vashih ishodnyh tekstov podal'she ot sistemy, no esli vam nuzhno imet' sistemnyh programistov, regulyarno modificiruyushchih eti ishodnye teksty, to vse, chto v vashih si- lah - ogranichit' dostup (i podobrat' nadezhnyh lyudej)! PSEVDOUSTROJSTVO Vtoroj metod mozhet byt' ispol'zovan temi narushitelyami, kotorye ne imeyut ishodnyh tekstov, no imeyut vse biblioteki, obrazuyushchie yadro. Zdes' podhod neskol'ko drugoj, no rezul'tat tot zhe. V sootvetstvii s toj zhe ideej sistemnogo rezhima, cel' zaklyuchaet- sya v tom, chtoby v registre PSW central'nogo processora byl ustanovlen privilegirovannyj dostup ("supervizornyj" ili "sistemnyj rezhim"). Vmesto togo, chtoby ispol'zovat' nadlezhashchim obrazom yadro, etot metod pol'zuetsya vneshnim drajverom, kotoryj svyazyvaetsya s yadrom. |to vypol- nyaetsya putem sozdaniya psevdoustrojstva. Psevdoustrojstvo podobno nas- toyashchemu ustrojstvu, no ego imya ne vedet ni k kakoj fizicheskoj perife- rii. Dostup k psevdoustrojstvu osushchestvlyaetsya s pomoshch'yu vseh teh zhe samyh primitivov (otkryt', zakryt', chitat', pisat'), no eto dostup k logicheskoj oblasti, a ne k fizicheskoj. Dlya togo chtoby opredelit' psevdoustrojstvo, nuzhno modificirovat' glavnyj fajl ustrojstva. V glavnom fajle (kotoryj nazyvaetsya /etc/master ili /usr/sys/conf/master) imeetsya tablica vseh imen draj- verov ustrojstv, svyazannyh s kazhdym primitivom. Kogda sozdaetsya psev- doustrojstvo, v tablicu drajverov ustrojstv pomeshchaetsya novaya zapis'. V etoj tablice soderzhatsya imena vseh podprogramm, podderzhivayushchih pri- mitivy. Privilegirovannogo rezhima mozhno dobit'sya pri pomoshchi otkrytiya psevdoustrojstva. Sistemnyj vyzov open peredaet upravlenie drajveru ustrojstva, t.e. dobavlennomu kodu. V moment zapuska etogo koda mashi- na uzhe nahoditsya v sistemnom rezhime, poskol'ku kogda vypolnyalsya vyzov open, on byl "pojman" sistemoj i peredan programme obrabotki, funkci- oniruyushchej v sistemnom rezhime. Posle etogo drajver ustrojstva mozhet delat' to, chto on hochet. NARUSHITELX VYDAET SEBYA ZA UDALENNYJ UZEL uucp Esli komanda login podobna storozhu kreposti, to programma uucp podobna zabroshennomu spasatel'nomu tunnelyu, cherez kotoryj vragi mogut proniknut' vo dvorec. S prihodom mezhmashinnyh kommunikacij voznikaet celyj ryad proboin v zashchite sistemy. Pri pomoshchi uucp nesankcionirovannye pol'zovateli mogut popast' v sistemu, vydav sebya za udalennyj uzel uucp. |to ochen' legko sdelat'. Narushiteli mogut zaglyanut' v fajl /usr/lib/uucp/L.sys v vashej sisteme i obnaruzhit', gde nahodyatsya udalennye sistemy, putem poiska vhodov v sistemu na drugih mashinah. Zatem oni mogut posmotret' v fajle /etc/passwd takie vhody v sistemu, kotorye zapuskayut programmy uucico vmesto obychnogo shell-interpretatora. Esli oni obnaruzhat sootvetstvu- yushchie paroli, oni mogut popytat'sya primenit' nekotorye veroyatnye paro- li ili ispol'zovat' odin iz metodov vneseniya pravok, rassmotrennyh ranee, s cel'yu perehvata parolej. Zatem narushitel' mozhet izmenit' imya uzla svoej sistemy na imya uzla udalennoj sistemy, chtoby vydat' sebya ne za togo, kem on na samom dele yavlyaetsya. On mozhet vojti v sistemu pod imenem uucp ili pod spe- cial'nym registracionnym imenem, prednaznachennym dlya udalennoj mashi- ny. Programmy uucp peredayut eto uzlovoe imya (kotoroe yavlyaetsya pod- del'nym) v vashu sistemu. Narushiteli mogut perekachat' pochtu, fajly i t.d. iz vashej sistemy na svoyu mashinu. Esli u vas est' chto-nibud' v ocheredi, ozhidayushchej otp- ravki na zakonnuyu udalennuyu mashinu, narushiteli mogut srazu tam ochu- tit'sya. Vy mozhete stolknut'sya s nepriyatnostyami, kogda odin iz vashih operatorov zakonnoj udalennoj sistemy zvonit i sprashivaet vas, pochemu on nedelyami ne poluchaet ot vas ni pochty, ni programmnyh zaprosov! Od- nako, kovarnyj narushitel' mog by pereslat' kopiyu ukradennyh fajlov obratno k vam i ispol'zovat' progressivnye sredstva dlya otpravki ih na zakonnuyu udalennuyu mashinu. PODDELKA POCHTY |tot priem dovol'no horosho izvesten, no my vklyuchaem ego dlya pol- noty izlozheniya. Pohozhe, odnako, chto on rabotaet ne vo vseh versiyah sistemy UNIX. On rabotaet v System V, no ne rabotaet v XENIX, System III i Berkeley 4.2. Dannyj metod zaklyuchaetsya v izmenenii pol'zova- tel'skoj peremennoj sredy LOGNAME. Poskol'ku komanda mail ispol'zuet ee, chtoby identificirovat' vas pri otpravke vam pochty, menyaetsya zago- lovok pochty. Obychno eto vsego lish' melkaya nepriyatnost', no vy dolzhny uvedomit' ob etom pol'zovatelej, chtoby oni ochen' vnimatel'no otnosi- lis' k takim soobshcheniyam, kotorye kazhutsya nesvojstvennymi dlya ih mni- mogo otpravitelya. SKRYTYE IMENA FAJLOV PRI RABOTE S REDAKTOROM vi Poleznoj praktikoj dlya obespecheniya bezopasnosti yavlyaetsya vypol- nenie sluchajnyh komand ps. Takaya mera bolee-menee ravnosil'na perio- dicheskomu patrulirovaniyu s cel'yu uvidet', ne proishodit li chto-nibud' opasnoe. Neobhodimo, odnako, otmetit', chto lica, ispol'zuyushchie redak- tor vi dlya nesankcionirovannoj raboty, mogut zamesti svoi sledy, vy- biraya takoe imya redaktiruemogo fajla, chtoby ono ne poyavlyalos' v ras- pechatke komandy ps. Samyj prostoj sposob, kotorym oni mogut eto sdelat' - vyzvat' vi bez ukazaniya imeni fajla. Tem samym vi zapuska- etsya s pustym fajlom. Zatem oni mogut primenit' komandu ex dlya redak- tirovaniya nuzhnogo im fajla. |to uberezhet imya fajla ot raspechatki ko- mandoj ps, tak kak ono ne yavlyaetsya chast'yu nabora argumentov komandy vi. Massiv argumentov formiruetsya pri vyzove komandy vi, a ne posle ee zapuska. Drugoj sposob - ispol'zovat' maskirovku. Narushiteli mogut perei- menovat' fajl, kotoryj oni hotyat redaktirovat', v nichego ne oznachayu- shchee imya, naprimer tmp, a potom ispol'zovat' imya tmp pri vyzove redak- tora vi. V rezul'tate v massiv argumentov zanesetsya imya tmp. Ono i poyavitsya v raspechatke komandy ps. -------------------------------------------------------- IMYA: access -------------------------------------------------------- access NAZNACHENIE Ishchet v parol'nom fajle vse registracionnye zapisi, ne imeyushchie parolej. FORMAT VYZOVA access PRIMER VYZOVA access Vydaet spisok vseh besparol'nyh vhodov v sistemu TEKST PROGRAMMY 1 : 2 # @(#) access v1.0 Show all free access logins Author: Russ Sage 4 if [ "$#" -gt "0" ] 5 then echo "access: too many arguments" >&2 6 echo "usage: access" >&2 7 exit 1 8 fi 10 grep '^[^:]*::' /etc/passwd || echo "All logins protected" OPISANIE ZACHEM NAM NUZHEN KOMANDNYJ FAJL access? My uzhe otmechali, chto zapisi o vhode v sistemu v parol'nom fajle sozdayut vozmozhnost' narusheniya zashchity, esli s nimi ne svyazany paroli, t.e. esli pole parolya pustoe. Problema zaklyuchaetsya v tom, chto v bol'- shih sistemah parol'nyj fajl mozhet sil'no razrastis'. Iskat' v takom fajle vruchnuyu registracionnye zapisi, v kotoryh otsutstvuyut paroli, bylo by utomitel'nym i privodilo by k oshibkam. Pochemu by ne poruchit' sisteme sdelat' za vas etu rabotu? CHTO DELAET access? Komandnyj fajl access ispol'zuet komandu grep s shablonom poiska, opisyvayushchim registracionnuyu zapis', ne imeyushchuyu parolya. Kogda takaya zapis' popadaetsya, ona pechataetsya v standartnyj vyvod. Esli ukazannyh zapisej ne najdeno, vyvoditsya soobshchenie "All logins protected" ("Vse vhody v sistemu zashchishcheny"). POYASNENIYA Pervoe, chto delaet access (v strokah 4-8) - proveryaet, pravil'no li ona byla vyzvana. Poskol'ku opcij ne predusmotreno, v komandnoj stroke nichego ne dolzhno byt'. Esli kolichestvo argumentov v komandnoj stroke bol'she nulya, to na standartnoe ustrojstvo registracii oshibok vydaetsya soobshchenie ob oshibke i komandnyj fajl zavershaetsya. Operator v stroke 10 vypolnyaet poisk v parol'nom fajle. Primenya- etsya utilita grep, t.k. my ispol'zuem v etoj komande vyrazhenie. Esli by my ispol'zovali fiksirovannuyu stroku, bolee predpochtitel'noj byla by utilita fgrep, potomu chto ona bystree. Vyrazhenie, zadayushchee poisk, oznachaet sleduyushchee: nachinaya s nachala stroki, najti vse simvoly, ot- lichnye ot dvoetochiya, vplot' do obnaruzheniya dvuh dvoetochij podryad. Es- li vy zaglyanete v fajl /etc/passwd, to uvidite, chto pervoe pole predstavlyaet soboj imya (ot nachala stroki do pervogo dvoetochiya). Zatem mezhdu pervym i vtorym dvoetochiem razmeshchaetsya parol'. Esli parol' ot- sutstvuet, to posle pervogo dvoetochiya srazu zhe sleduet vtoroe - imen- no eto sootvetstvuet nashemu shablonu poiska. Poisk vypolnyatsya v fajle /etc/passwd. Esli grep uspeshno obnaruzhil hotya by odnu zapis', to kod vozvrata nulevoj. Esli grep nichego ne obnaruzhil, to kod vozvrata edi- nica. Togda aktiviziruetsya poslednyaya chast' stroki 10 i vyvoditsya so- obshchenie o tom, chto vse zapisi o vhode v sistemu zashchishcheny. ---------------------------------------------------- IMYA: chkset ---------------------------------------------------- chkset NAZNACHENIE Vydaet spisok vseh fajlov, imeyushchih vklyuchennyj bit razresheniya us- tanovki pol'zovatel'skogo/gruppovogo identifikatora. FORMAT VYZOVA chkset [-l] [dir ...] PRIMER VYZOVA chkset -l Vesti poisk, nachinaya s kornevogo kataloga, poskol'ku katalog ne ukazan. S pomoshch'yu komandy "ls -d" vydat' spisok fajlov, dlya kotoryh ustanovlen v edinicu bit razresheniya ustanovki identifikatora pol'zo- vatelya libo identifikatora gruppy. Rezul'tat otsortirovat' po imeni fajla. (Bit ustanovki pol'zovatel'skogo identifikatora S_ISUID i bit ustanovki gruppovogo identifikatora S_ISGID yavlyayutsya atributami zashchi- ty fajla naryadu s bitami prav dostupa na chtenie/zapis'/vypolnenie i opredeleny v podklyuchaemom fajle /sys/stat.h. - Primech. perev.) TEKST PROGRAMMY 1 : 2 # @(#) chkset v1.0 Check for set bits on Author: Russ Sage 4 FORM="-print" 5 SORT="sort" 7 if [ "`echo $1 | cut -c1`" = "-" ] 8 then case $1 in 9 -l) shift 10 FORM="-exec ls -ld {} ;" 11 SORT="sort +7";; 12 *) echo "usage: chkset [-l][file/dir ...]" >&2 13 exit 1;; 14 esac 15 fi 17 if [ "$#" -gt 0 ] 18 then SRC="$*" 19 else SRC="/" 20 fi 22 find $SRC \( -perm -4000 -o -perm -2000 \) $FORM | $SORT PEREMENNYE SREDY VYPOLNENIYA FORM Komanda i opcii dlya listinga SORT Komanda i opcii dlya sortirovki rezul'tata SRC Ishodnyj katalog, ot kotorogo nuzhno nachinat' poisk OPISANIE ZACHEM NAM NUZHEN KOMANDNYJ FAJL chkset? My uzhe rassmotreli problemy bezopasnosti, kotorye mogut voznik- nut', kogda dlya ispolnyaemyh fajlov ustanovlen v edinicu bit razreshe- niya ustanovki identifikatora pol'zovatelya. |to oznachaet, chto oni mo- gut zapuskat' interpretator shell s kornevoj ili s drugoj privilegiej vysokogo urovnya. S toj zhe cel'yu mozhet byt' ustanovlen v edinicu bit razresheniya ustanovki identifikatora gruppy. Poetomu sistemnyj admi- nistrator dolzhen nepreryvno razyskivat' i proveryat' vse fajly v sis- teme, dlya kotoryh ustanovleny eti bity, chtoby posmotret', ne ispol'- zuyutsya li oni dlya nesankcionirovannyh celej. Ne dlya vseh interpretatorov shell, narushayushchih zashchitu, vladel'cem yavlyaetsya superpol'zovatel' (root). Odin pol'zovatel' mozhet zapustit' shell, vladel'cem kotorogo yavlyaetsya drugoj pol'zovatel', imeyushchij bo- lee vysokie privilegii. |to fakticheski predostavlyaet pol'zovatelyu, zapustivshemu shell, vse vozmozhnosti vladel'ca fajla. Najti shell-interpretatory, ustanavlivayushchie identifikator pol'- zovatelya ili gruppy, byvaet legko, a byvaet i trudno, v zavisimosti ot ih avtorstva. Legko najti takie, kotorye: a) imeyut neobychnye imena (nekotorye narushiteli lyubyat vystav- lyat' svoi dostizheniya napokaz); b) soderzhat v ispolnyaemom fajle simvol'nye stroki, kotorye mozhno prochitat'; v) razmeshcheny v neobychnom ili ochevidnom kataloge; g) ne imeyut ogranichenij otnositel'no togo, kto mozhet ih zapus- tit'. Dlya izoshchrennyh shell-interpretatorov harakterno sleduyushchee: a) oni imeyut imena, pohozhie na obychnye komandy sistemy UNIX; b) imeyut razmery fajlov, kotorye sootvetstvuyut drugim fajlam, razmeshchennym nepodaleku ot nih; v) soderzhat upryatannye simvol'nye stroki, kotorye ne tak-to legko prochitat'; g) imeyut, vozmozhno, special'nuyu opciyu, zapuskayushchuyu shell, ili dazhe special'nyj parol', neobhodimyj dlya ego zapuska. Samye huliganskie iz ni