Internet este o structura deschisa, la care se poate conecta un numar mare
de calculatoare fiind deci greu de controlat. De aceea putem vorbi de vulnerabilitatea
retelelor manifestata pe variate planuri. Un aspect crucial al retelelor de
calculatoare, in special al comunicatiilor prin Internet il constituie
securitatea informatiilor.
Categorii de atacuri asupra retelelor
Amenintarile la adresa securitatii unei retele de calculatoare pot avea urmatoarele
origini: dezastre sau calamitati naturale, defectari ale echipamentelor, greseli
umane de operare sau manipulare, fraude. Primele trei tipuri de amenintari sunt
accidentale, in timp ce ultima este intentionata. Cateva studii
de securitate a calculatoarelor estimeaza ca jumatate din costurile implicate
de incidente sunt datorate actiunilor voit distructive, un sfert dezastrelor
accidentale si un sfert greselilor umane. Acestea din urma pot fi evitate sau,
in cele din urma, reparate printr-o mai buna aplicare a regulilor de securitate
(salvari regulate de date, discuri oglindite, limitarea drepturilor de acces). u1y16yg
In amenintarile datorate actiunilor voite, se disting doua categorii principale
de atacuri: pasive si active.
1) Atacuri pasive - sunt acelea in cadrul carora intrusul observa informatia
ce trece -prin "canal", fara sa interfereze cu fluxul sau continutul
mesajelor. Ca urmare, se face doar analiza traficului, prin citirea identitatii
partilor care comunica si "invatand" lungimea si frecventa
mesajelor vehiculate pe un anumit canal logic, chiar daca continutul acestora
este neinteligibil. Atacurile pasive au urmatoarele caracteristici comune:
• Nu cauzeaza pagube (nu se sterg sau se modifica date);
• Incalca regulile de confidentialitate;
• Obiectivul este de a "asculta" datele schimbate prin retea;
.
• Pot fi realizate printr-o varietate de metode, cum ar fi supravegherea
legaturilor telefonice sau radio, exploatarea radiatiilor electromagnetice emise,
rutarea datelor prin noduri aditionale mai putin protejate.
2) Atacuri active - sunt acelea in care intrusul se angajeaza fie in
furtul mesajelor, fie -in modificarea, reluarea sau inserarea de mesaje false.
Aceasta inseamna ca el _ poate sterge, intarzia sau modifica
mesaje, poate sa faca inserarea unor mesaje a false sau vechi, poate schimba
ordinea mesajelor, fie pe o anumita directie, fie pe -ambele directii ale unui
canal logic. Aceste atacuri sunt serioase deoarece modifica starea sistemelor
de calcul, a datelor sau a sistemelor de comunicatii. Exista . urmatoarele tipuri
de amenintari active:
• Mascarada - este un tip de atac in care o entitate pretinde a
fi o alta entitate. De exemplu, un utilizator incearca sa se substitue
altuia sau un serviciu pretinde a fi un alt serviciu, in intentia de a
lua date secrete (numarul cartii de credit, parola sau cheia algoritmului de
criptare). O "mascarada" este insotita, de regula, de o alta
amenintare activa, cum ar fi inlocuirea sau modificarea mesajelor;
• Reluarea - se produce atunci cand un mesaj sau o parte a acestuia
este reluata (repetata), in intentia de a produce un efect neautorizat.
De exemplu, este posibila reutilizarea informatiei de autentificare a unui mesaj
anterior. In conturile bancare, reluarea unitatilor de date implica dublari
si/sau alte. modificari nereale ale valorii conturilor;
• Modificarea mesajelor - face ca datele mesajului sa fie alterate prin
modificare, inserare sau stergere. Poate fi folosita pentru a se schimba beneficiarul
unui credit in transferul electronic de fonduri sau pentru a modifica
valoarea acelui credit. O alta utilizare poate fi modificarea campului
destinatar/expeditor al postei electronice;
• Refuzul serviciului - se produce cand o entitate nu izbuteste
sa indeplineasca propria functie sau cand face actiuni care impiedica
o alta entitate de la indeplinirea propriei functii;
• Repudierea serviciului - se produce cand o entitate refuza sa
recunoasca un serviciu executat. Este evident ca in aplicatiile de transfer
electronic de fonduri este important sa se evite repudierea serviciului atat
de catre emitator, cat si de catre destinatar.
In cazul atacurilor active se inscriu si unele programe create
cu scop distructiv si care afecteaza, uneori esential, securitatea calculatoarelor.
Exista o terminologie care poate fi folosita pentru a prezenta diferitele posibilitati
de atac asupra unui sistem. Acest vocabular este bine popularizat de "povestile"
despre "hackeri". Atacurile presupun, in general, fie citirea
informatiilor neautorizate, fie (in cel mai frecvent caz) distrugerea
partiala sau totala a datelor sau chiar a calculatoarelor. Ce este mai grav
este posibilitatea potentiala de infestare, prin retea sau copieri de dischete,
a unui mare numar de masini. Dintre aceste programe distructive amintim urmatoarele:
• Virusii - reprezinta programe inserate in aplicatii, care se multiplica
singure in alte programe din spatiul rezident de memorie sau de pe discuri;
apoi, fie satureaza complet spatiul de memorie/disc si blocheaza sistemul, fie,
dupa un numar fixat de multiplicari, devin activi si intra intr-o faza
distructiva (care este de regula exponentiala);
• Bomba software - este o procedura sau parte de cod inclusa intr-o aplicatie
"normala", care este activata de un eveniment predefinit. Autorul
bombei anunta evenimentul, lasand-o sa "explodeze", adica sa
faca actiunile distructive programate;
• Viermii - au efecte similare cu cele ale bombelor si virusilor. Principala
diferenta este aceea ca nu rezida la o locatie fixa sau nu se duplica singuri.
Se muta in permanenta, ceea ce ii face dificil de detectat. Cel
mai renumit exemplu este Viermele INTERNET ului, care a scos din functiune o
parte din INTERNET in noiembrie 1988;
• Trapele - reprezinta accese speciale la sistem, care sunt rezervate
in mod normal pentru proceduri de incarcare de la distanta, intretinere
sau pentru dezvoltatorii unor aplicatii. Ele permit insa accesul la sistem,
eludand procedurile de identificare uzuale;
• Calul Troian - este o aplicatie care are o functie de utilizare foarte
cunoscuta si care, intr-un mod ascuns, indeplineste si o alta functie.
Nu creeaza copii. De exemplu, un hacker poate inlocui codul unui program
normal de control "login" prin alt cod, care face acelasi lucru, dar,
aditional, copiaza intr-un fisier numele si parola pe care utilizatorul
le tasteaza in procesul de autentificare. Ulterior, folosind acest fisier,
hacker-ul va penetra foarte usor sistemul.
Modelul de securitate in retele
Modelul de securitate pentru un calculator seamana cu o ceapa. Niveluri de
securitate inconjoara subiectul ce trebuie protejat. Fiecare nivel izoleaza
subiectul si il face mai greu de accesat in alt mod decat
in cel in care a fost planificat.
1) Securitatea fizica reprezinta nivelul exterior al modelului de securitate
si consta, in general, in incuierea echipamentelor informatice
intr-un birou sau intr-o alta incinta. Securitatea fizica merita
o consideratie speciala. Problema cea mai mare o constituie salvarile pentru
copii de rezerva ale datelor si programelor si siguranta pastrarii suportilor
de salvare. In aceste situatii, retelele locale sunt de mare ajutor: daca
toate fisierele schimbate frecvent rezida pe un server, aceleasi persoane (sigure
si de incredere), care lanseaza salvarile pentru mainframe-uri, pot face
acelasi lucru si la server. Calculatorul, ca orice piesa costisitoare, ar trebui
sa fie protejat si. de pericolul furtului. Pastrarea in afara zonelor
publice este una dintre cele mai bune forme de protectie. Simpla incuiere
a echipamentelor va preveni mutarile ascunse precum si furtul. Intr-un
sistem in care prelucrarea este distribuita, prima masura de securitate
fizica care trebuie avuta in vedere este prevenirea accesului la echipamente.
Pentru a invinge orice alte masuri de securitate, trebuie sa se dispuna
de acces fizic la echipamente. Acest lucru este comun tuturor sistemelor de
calcul, distribuite sau nu.
2) Securitatea logica consta din acele metode care asigura controlul accesului
Ia resursele si serviciile sistemului. Ea are, la randul ei, mai multe
niveluri, impartite in doua grupe mari: niveluri de securitate a
accesului (SA) si niveluri de securitate a serviciilor (SS).
3)
• Securitatea accesului (SA) cuprinde:
• accesul la sistem (AS), care este raspunzator de a determina daca si
cand reteaua este accesibila utilizatorilor. EI poate fi, de asemenea,
raspunzator pentru decuplarea unei statii, ca si de gestiunea evidentei accesului.
AS executa, de asemenea, deconectarea fortata, dictata de supervizor. AS poate,
de exemplu, sa previna conectarea in afara orelor de serviciu si sa intrerupa
toate sesiunile, dupa un anumit timp;
• accesul la cont (AC), care verifica daca utilizatorul care se conecteaza
cu un anumit nume si cu o parola exista si are un profil utilizator valid;
• drepturile de acces (DA), care determina ce privilegii de conectare
are utilizatorul (de exemplu, contul poate avea sesiuni care totalizeaza 4 ore
pe zi sau contul poate utiliza doar statia 27).
• Securitatea serviciilor (SS), care se afla sub SA, controleaza accesul
la serviciile sistem, cum ar fi fire de asteptare, I/O la disc si gestiunea
server ului. Din acest nivel fac parte:
• controlul serviciilor (CS), care este responsabil cu functiile de avertizare
si de raportare a starii serviciilor; de asemenea, el activeaza si dezactiveaza
diferitele servicii;
• drepturile la servicii (DS), care determina exact cum foloseste un anumit
cont un serviciu dat; de exemplu, un cont poate avea numai dreptul de a adauga
fisiere la spooler-ul unei imprimante, dar are drepturi depline, de a adauga
si sterge fisiere, pentru o alta imprimanta.
O data stabilita conexiunea, SA valideaza si defineste contul. Operatiile ce
trebuie executate sunt controlate de SS, care impiedica cererile ce nu
sunt specificate in profilul utilizatorului. Accesul intr-un sistem de
securitate perfect trebuie sa se faca prin aceste niveluri de securitate, de
sus in jos. Orice sistem care va lasa sa evitati unul sau mai multe niveluri
ale modelului de securitate implica riscul de a fi nesigur.
Viermele Internet-ului
Introducere
In seara zilei de 2 noiembrie 1988, dupa ora 17, un program ciudat era
executat pe mai multe dintre calculatoarele Internet. Acest program aduna informatii
despre host-uri, retele si utilizatori si folosea aceste informatii pentru a
stabili conexiuni retea si pentru a patrunde pe alte masini. El folosea anumite
defecte sau slabiciuni prezente in anumite programe. Dupa aceasta patrundere,
programul se multiplica, iar copia sa incerca infectarea altor sisteme,
in aceeasi maniera. Chiar daca programul nu a infectat decat sistemele
Sun Microsystems Sun 3 si calculatoarele VAX pe care rulau variante ale lui
4 BSD UNIX, el s-a extins rapid, creand confuzie si consternare in
randul administratorilor de sistem si al utilizatorilor, atunci cand
acestia au descoperit invazia produsa in sistemele lor. Desi se cunostea
ca UNIX-ul are cateva slabiciuni de securitate, in special in
modul obisnuit de operare in medii deschise, totusi scopul si modul in
care acestea au fost folosite a constituit o surpriza mare pentru toata lumea.
Programul era ciudat pentru utilizatori, in special din punctul de vedere
al punctelor de aparitie. Au fost introduse fisiere neobisnuite in directoarele
lusrltmp, iar unele mesaje stranii au aparut in fisierele unor utilitare,
cum ar fi sendmail. Totusi, cel mai notabil efect a fost faptul ca sistemele
au devenit din ce in ce mai incarcate cu procese datorita infectarii
multiple. Cu trecerea timpului, unele dintre masini au devenit atat de
incarcate, incat nu au mai fost capabile sa lucreze; unele
masini au fost blocate complet, atunci cand spatiul de evacuare (swaping)
sau tabela de procese au fost saturate.
In dimineata zilei de 3 noiembrie, personalul de la Universitatea Berkeley
din California si de la Institutul de Tehnologie Massachusetts au "capturat'
copii ale programului si au inceput sa le analizeze. Utilizatori din alte
locuri au inceput, de asemenea, sa studieze programul si au fost dezvoltate
metode de eradicare a acestuia. O caracteristica a programului a iesit in
evidenta: modifica resursele sistemului intr-un fel care nu putea fi detectat
rapid. Au fost alterate fisiere si distruse informatiile, ceea ce a impus cautarea
unei solutii. Dupa ora 5 am la mai putin de 13 ore de la prima descoperire a
programului, Computer Systems Research Group de la Berkeley a stabilit un set
provizoriu de masuri, in vederea opririi extinderii. Printre acestea se
afla si o modificare la serviciul sendmail si sugestia de a redenumi compilatoarele
C si incarcatorul, pentru a preveni utilizarea lor. Aceste sugestii au
fost publicate in listele de posta electronica si prin sistemul de stiri
din reteaua Usenet, cu toate ca extinderea viermelui a fost impiedicata,
cel mai adesea prin deconetarea sistemelor de la INTERNET, in incercarea
de a le dezinfecta ulterior.
Pe la orele 9 pm, in aceeasi zi, a fost descoperita si publicata la Purdue
University o alta metoda simpla pentru stoparea invaziei acestui program. Imbunatatiri
soft au fost anuntate si de catre grupul Berkeley, pentru a "astupa"
fisurile ce permiteau programului sa invadeze sistemele. Tot ceea ce ramanea
de facut era de a se analiza codul care a generat aceste probleme si de a descoperi
cine si de ce lansat viermele.
Cronologia evenimentelor
Este foarte interesant de remarcat viteza si profunzimea cu care Viermele s-a
extins si este semnificativ de urmarit rapiditatea cu care a fost identificat
si-a oprit utilizandu-se aceeasi retea pentru comunicarea intre
specialisti a rezultatelor. Este, credem noi, foarte interesant si instructiv
de urmarit desfasurarea in timp a raspandirii Viermelui, cel mai
important eveniment de securitate din istoria INTERNET-ului, dar -este la fel
de util de a vedea rapiditatea cu care s-a cristalizat riposta specialistilor.
2 Noiembrie 1988
• 17.00. Viermele este executat pe o masina la Cornell University;
• 18.00. Masina prep.ai.mit.edu a lui MIT a fost infectata. Prep era o
masina cu acces public, utilizata pentru stocarea si distribuirea soft-ului
prin proiectul GNU. Masina a fost configurata cu cateva vulnerabilitati
de securitate de notorietate, care permiteau . utilizatorilor de la distanta
sa introduca fisiere in sistem;
• 18.30. Masina infectata de la Pittsburgh Univerity a infectat o masina
a corporatiei RAND;
• 21.00. Viermele este descoperit pe masinile de la Stanford University;
21.30. Este invadata o prima masina la Minnesota University;
• 21.34. Masina gateway a Universitatii Berkeley din California este invadata.
Se descopera o neobisnuita incarcare a masinii cu procese de posta;
• 22.34. Este infectata masina gateway a Universittaii Princeton;
• 22.40. Masini de la Universitatea Norih Carolina sunt infectate si sunt
incercari de a invada alte masini;
• 22.48. Sunt infectate masini ale SRI via sendmail (posta);
• 22.52. Viemele incearca sa invadeze masina andrew.cmu.edu de la Universitatea
Carnegie-Mellon (posta);
• 22.54. Calculatoarele gateway de la Universitatea din MaryJand sunt
atacate prin . . procesul din fundal corespunzator programului fingerd;
• 22.59. Masinile de la Universitatea din Pennsylvania sunt atacate, dar
sunt "insen-sibile". Vor fi depistate 210 incercari de infectare
in urmatoarele 13 ore, prin posta; 23.48. Calculatorul mimsy.umd.edu de
la Universitatea din Maryland este infectat via sendmail (posta);
• 23.40. Cercetatorii de la Berkeley descopera tintele de atac ca fiind
sendmail si rsh. Ei incep sa inchida serviciile pentru alte retele, ca
masura de precautie;
• 23.45. Masinile de la Dartmouth si Laboratorul de Cercetari Balistice
al Armatei (BRL) sunt atacate si infectate (posta, NCSC);
• 23.49. Gateway-urile de la Universitatea din Utah sunt infectate. In
urmatoarea ora numarul incercarilor va ajunge la 100;
3 Noiembrie 1988
• 00.07. Este infectata masina Univesitatii din Arizona, prin posta;
• 00.21. Este infectata masina principala a Universitatii Princeton (un
VAX 8650). Numarul incercarilor ajunge la 68 si masina clacheaza;
• 00.33. Este infectata masina dewey.udel.edu a Universitatii din Delaware;
• 01.30. Masinile de la UCLA sunt infectate;
• 02.00. Viermele este identificat pe masinile de la Universitatea Harvard;
• 02.38. De la Berkeley se transmite un mesaj prin posta cu continutul:
"Suntem atacati". Domeniile mentionate ca fiind infectate sunt: U.C.Berkeley,
U.C.San Diego, LLL, Stanford si NASA Ames;
• 03.15. Sunt infectate masiniie de la Universitatea din Chicago. Una
dintre masinile de la Departamentuf de fizica sufera 225 de incercari
de infectare, via fingerd, de la masini din Cornell;
• 03.39. Avertismentul despre Vierme este transmis de la foo@bar.arpa
sub forma: "Este probabil un virus pierdut prin INTERNET.". Urmau
trei scurte fraze despre cum sa fie oprit Viermele, urmate de "Sper ca
acestea ajuta, dar mai mult, sper ca este vorba de o farsa.". Cel ce transmitea
s-a dovedit a fi Andy Sudduth de fG Narvard, care a fost sunat prin telefon
de presupusul autor al Viermelui, Robert T Morris. Datorita incarcarii
retelei si masinilor, avertismentul nu este propagat ir urmatoarele 24 de ore;
• 04.00. Universitatea Colorado este si ea supusa atacului; 04.00. Masinile
de la Universitatea Purdue sunt infectate;
• 05.54. Se transmite prin posta un avertisment cu privire la Virme si,
in plus, c masura de protectie minimala referitoare la programul sendmail.
Mesajul sau este preluat de grupul de stiri Usenix;
• 06.45. Se suna la National Computer Security Center si se informeaza
despre Vierme;
• 07.00. Masini ale Institutului de Tehnologie din Georgia sunt infectate.
Masina gateway (un VAX 780) sufera peste 30 de incercari;
• 07.30. Se descopera infectarea masinilor de la Universitatea Purdue.
Masinile sun atat de incarcate, incat nu se puteau citi
mesajele primite prin posta, inclusiv mesajul despre Vierme;
• 08.07. La Berkeley se identifica atacul Viermelui prin intermediul programului
fingerd, dar mesajul trimis prin posta nu poate fi citit mai bine de 13 ore;
• 08.18. Se retransmite avertismentul despre Vierme grupului de stiri
Usene news.announce.important si altor 30 de site-uri. Acestea au fost primele
informatii despre Vierme, aflate de cei vizati in cursul intregii
zile, acest grup a schimb de mesaje prin posta cu privire la progresul si comportarea
Viermelui;
• 10.36. Se transmite prima descriere cu privire la modul de lucru al
Viermelui cele din lista nntp-managers. Atacul prin programul fingerd la aceasta
ora inca nu est cunoscut;
• 11.30. Defense Communications Agency inhiba bridge-urile de posta intre
Arpane si Milnei;
• 13.00. Sunt blocate peste 130 de masini ale SRI;'
• 14.50. Personalul de la Purdue descopera masini infectate cu variante
noi de programe sendmail instalate. Se transmite un mesaj prin posta referitor
la faptul c noua versiune de sendmail nu constituie o masura de protectie suficienta.
Acel lucru era cunoscut deja in multe locuri, inclusiv la Berkeley si
MIT de mai bine cate ore, dar nu se publicase inca nimic;
• 16.00. Administratorii de sisteme de la Purdue se intalnesc
pentru a stabili strateg locala. Versiunile de Vierme capturate au furnizat
o varianta de prevenire a infectie prin crearea unui director cu numele sh in
directorul lusr tmp;
• 18.00. La Purdue s-a descoperit cum lucreaza Virmele, cu defectiunea
din program finger,
• 19.00. La MIT, s-a reconstituit atacul Viermelui prin intermediul programului
fingerd' si s-a telefonat la Berkeley pentru a se anunta aceasta. Nu a fost
transmis nimic prin posta despre acest mod de atac;
• 19.19. S-au transmis noile imbunatatiri aduse programelor sendmail
si fingerd, dar aceste mesaje au fost receptionate abia a doua zi;
• 19.37. De la Universitatea din Rochester a fost trimisa prin posta o
descriere a atacului prin intermediul programului fingerd;
• 21.30. Grupul de la Berkeley incepe decompilarea Viermelui, pentru
a determina sursa in C.
4 Noiembrie 1988
• 00.50. Se trimite prin posta o descriere a atacului prin intermediul
fingerd. Se fac si primele comentarii referitoare la stilul de cod al autorului
Viermelui;
• 05.00. Grupul MiT incheie decompilarea codului;
• 09.00. Grupul de la Berkeley incheie decompilarea codului;
• 11.00. Sunt reinstalate bridge-urile de posta intre Milnet-Arpanet;
• 14.20. Se retransmit prin posta modificarile aduse la programul fingerd;
• 15.36. De la MIT, se transmit clarificari asupra modului de operare
a Viermelui; • 17.2d. Se transmite un set final de imbunatatiri
pentru sendmail si fingerd;
• 21.30. Autorul Viermelui este identificat din doua surse independente
ca fiind Robert T Morris, fiut directorului stiintific al Centrului National
de Securitate a Calcutatoarelor (GNSC), Robert Morris.
• Pana pe 8 noiembrie, marea majoritate a masinilor au fost reconectate
la INTERNET si traficul a revenit la normal. In aceeasi dimineata, aproximativ
50 de cercetatori s-au intalnit cu oficialitati din Centru! National de
Securitate. Cu aceasta ocazie, au fost identificate direciiile ulterioare de
actiune in acest domeniu. Analizatorii de trafic al retelei au continuat
sa identifice incercari de infectare inca existente pe masinile
INTERNET-ului. O ultima incecare a fost identificata la inceputul
lunii decembrie 1988.
Despre autorul Viermelui
Dupa ce Viermele a fost oprit, au fost puse, inevitabil, doua intrebari:
"cine?" si "de ce?".
La prima intrebare raspunsul a aparut rapid prin identificarea lui Robert
T. Morris de catre New York Times. Exista multe elemente care sustin identificarea
facuta. Multe oficialitati federale au afirmat ca au dovezi, obtinute de la
persoane distincte, prin care se specifica faptul ca Morris a discutat cu aceste
persoane despre Vierme si cercetarile sale in aceasta directie. Ei sustin,
de asemenea, ca au inregistrari de pe calculatoarele de la Universitatea
Cornell reprezentand versiuni de inceput ale codului Viermelui testate
pe masini din campus si, de asemenea, sustin ca au copii ale Viermetui gasite
in contul lui Morris. Raportut furnizat de Oficiul Rectoratului Universitatii
din Cornelt il indica de asemenea pe Morris ca fiind culpabil si prezinta
motive convingatoare pentru a sustine aceasta concluzie.
Dar daca autorul era stabilit, motivul acestei actiuni ramanea neclar,
plasat intre un experiment gresit si pana la un act inconstient
de razbunare a lui Morris impotriva tatalui sau. Din studiul facut de
multe persoane asupra codului decompilat, au rezultat doua concluzii:
O prima concluzie se refera la faptul ca programul nu contine, in mod
explicit, portiuni de cod care ar provoca explicit distrugeri ale sistemelor
pe care ar rula. Luand in considerare abilitatea si cunostintele
evidentiate de cod, pentru autor ar fi constituit o chestiune simpla introducerea
unor astfel de comenzi, daca aceasta ar fi fost intentia lui. In cele
din urma, eliberarea prematura in retea a Viermelui arata ca intentia
autorului de a distruge sau perturba structuri si sisteme nu poate fi luata
in considerare in mod explicit;
A doua concluzie se refera fa faptul ca in cod nu este inclus un mecanism
pentru a opri dezvoltarea Viermelui. Luand in considerare acest
lucru, precum si complexitatea sirului utilizat ca argument, necesar pentru
a declansa Viermele, multe persoane care au examinat codul nu considera ca Viermele
a fost declansat accidental sau ca intentia a fost de a nu fi propagat puternic.
Avand in vedere aceste lucruri, sunt ciudate incercarile facute
pentru a justifica actiunea lui Morris, sustinandu-se ca intentia lui
era de a demonstra ceva despre securitatea 7NTERNET ului sau ca a fost un experiment
nevinovat. Raportul Rectoratului Universitatii din Cornell nu incearca
sa scuze comportamentul lui Morris. Aceasta actiune este etichetata ca fiind
neetica si contrara standardelor profesionale. Actiunea sa este considerata
a fi indreptata impotriva politicii Universitatii si practicii acceptate
si ar fi fost de asteptat ca, avand in vedere experienta pe care
o are in acest domeniu, sa cunoasca ca astfel de actiuni sunt nepermise.
Cei care cred ca Viermele constituie un accident sau un experiment nefericit
sunt de parere ca autorul sa nu fie pedepsit, mergand pana la a
cere pedepsirea administratorilor si operatorilor de pe sistemele si masinile
afectate, pentru neglijenta cu care au tratat aspectele ,de securitate. Ceilalti
considera ca autorul trebuie sa fie pedepsit sever, inclusiv cu privarea de
libertate. Comisia de la Cornell a recomandat unele pedepse, dar nu atat
de severe incat sa afecteze cariera ulterioara a lui Morris. In
acea recomandare este specificata suspendarea lui Morris din Universitate pentru
minimum un an. Faptul ca nu s-au intamplat mari nenorociri poate
constitui un accident si este posibil ca intentia autorului sa fi fost de a
supraincarca lNTERNET-ul, asa cum s-a si intamplat. Scuzarea
unor astfel de acte de vandalism, sub declaratia ca autorii nu au vrut sa creeze
mari neajunsuri, nu poate conduce la descurajarea repetarii unor astfel de incercari,
ba chiar mai mult, acestea sunt incurajate.
Vulnerabilitati exploatate de Vierme
Viermele utilizeaza o serie de defecte sau slabiciuni existente in software-ul
standard al multor sisteme UNIX. Unele dintre aceste defecte sunt descrise in
continuare.
Programul Fingerd
Programul fingerd este un utilitar care permite obtinerea de informatii despre
utilizatori. De obicei, este folosit pentru a identifica numele intreg
sau numele de conectare (login) al unui utilizator, daca acesta se afla in
sesiune si posibil, alte informatii despre persoana respectiva, cum ar fi numerele
de telefon etc. Acest program este rulat ca daemon sau proces in fundal
(background), pentru rezolvarea cererilor de informatii venite de la distanta,
utilizandu-se protocolul fingerd, Acest program accepta conexiuni de.
la programe ce ruleaza in alta parte, citeste linia de intrare si trimite
raspuns receptorului care a adresat intrebarea.
Punctul slab exploatat, prin care se "sparge" acest program, implica
modificarea buffer ului de intrare folosit de acesta. Biblioteca f/0 a limbajului
C are cateva rutine care citesc intrarea fara a verifica limitele buffer-ului
implicat in aceasta operatiune. In particular, apelul functiei gets
preia datele de intrare intr-un buffer, fara a face verificarea limitelor
acestuia. Apelul acestei functii a fost exploatat de Vierme. Rutina gets nu
este singura care are acest neajuns. O intreaga familie de rutine din
biblioteca C-ului face posibila depasirea buffer ului, atunci cand se
decodifica intrarea sau cand se formateaza iesirea, daca utilizatorul
nu specifica explicit numarul de caractere pentru conversie.
Cu toate ca programatorii experimentati sunt cunoscatori ai acestor probleme,
multi dintre ei continua sa foloseasca aceste rutine. Necazul este ca orice
server de retea sau program privilegiat, care utilizeaza aceste functii, poate
fi compromis datorita utilizarii unei intrari improprii. Interesant este ca
recent, au mai fost descoperite inca doua comenzi in standardul
BSD UNIX, care au aceasta problema.
Dupa atacul asupra INTERNET-ului au fost relevate mai multe probleme potentiale
si mai multe modalitati de a le inlatura, dar cu toate acestea, biblioteca
cu aceste rutine continua sa fie utilizata.
Programul Sendmail
Programul sendmail este un serviciu de posta electronica, destinat sa ruteze
scrisorile intr-o retea eterogena. Programul are mai multe moduri de operare,
dar unul dintre acestea este exploatat de Vierme si implica lansarea serviciului
ca proces in background (daemon). In acest mod de lucru, procesul
se afla in starea de "ascultare" la un port TCP (25), pentru
a face distribuirea postei sosite prin protocolul standard INTERNET, SMTP (Simple
Mail Transfer Protocon. Cand o astfel de situatie este detectata, procesul
intra intr-un dialog cu un alt proces de la distanta, pentru a determina
expeditorul, destinatarul, instructiunile de distribuire si continutul mesajului.
Punctul slab exploatat in sendmail este legat de o optiune de depanare
a codului. Viermele transmite comanda DEBUG la sendmail si apoi specifica destinatarul
mesajului, ca un set de comenzi si nu ca o adresa utilizator. Intr-o operatiune
normala, acest lucru nu este permis; insa, in activitatea de depanare
a codului este posibila verificarea postei sosite pentru un anumit destinatar,
fara a se apela rutinele de adresare. Prin utilizarea acestei optiuni, testele
pot rula programe care sa afiseze starea sistemului de posta, fara trimiterea
de mesaje sau stabilirea unei conexiuni. Aceasta optiune de depanare este adesea
utilizata tocmai datorita complexitatii configurarii lui sendmail.
Programul sendmail este de mare importanta, mai ales pentru sisteme UNIX derivate
din BSD, deoarece manuieste procese complexe de rutare si distribuire
a postei. Totusi, in ciuda importantei mari si a utilizarii largi, cea
mai mare parte a administratorilor de sisteme stiu putin despre felul in
care lucreaza sendmail. Desi sunt relatate multe aparitii de driver e scrise
de administratori de sisteme sau modificari aduse Kernel-ului, nimeni nu a adus
inca modificari la sendmail sau la configuratia fisierelor sale. In
concluzie, punctele slabe prezentate in sendmail sunt putin cunoscute,
iar unele dintre ele sunt depistate si comunicate pe masura descoperirii lor.
Parole
Una din "piesele de rezistenta" ale Viermelui implica incercarea
de a descoperi parolele utilizatorilor. In sistemele UNIX, utilizatorul
furnizeaza o parola ca semn de verificare a identitatii. Parola este criptata,
utilizand o versiune a algoritmului DES, iar rezultatul este comparat
cu rezultatul criptarii anterioare, prezent in fisierul letclpasswd. Daca
acestea coincid, accesul este permis. In acest fisier nu sunt incluse
parolele in clar si algoritmul se presupune a fi neinversabil; deci, fara
cunoasterea parolei nu avem acces.
Organizarea parolelor in UNIX permite unor comenzi neprivilegiate sa utilizeze
informatii din fisierul /etc/passwd si sa acceseze schema de autentificare a
parolelor. Deci se permite un atac prin criptarea unei liste cu parole posibile
si compararea rezultatelor cu fisierul letclpasswd, fara a se face apel la o
functie sistem, special dedicata. De fapt, securitatea parolelor este asigurata
in principal prin numarul mare de incercari ce trebuie efectuate
pentru a le determina, cu toate combinatiile de caractere posibile. Din nefericire,
exista masini care lucreaza rapid si costul unei astfel de actiuni este in
continua descrestere, datorita rapiditatii dezvoltarii produselor hard.
Divizand procesul pe mai multe procesoare, se reduce mult timpul necesar
determinarii unei parole. Astfel de atacuri sunt usurate mult, atunci cand
utilizatorul alege drept parola un cuvant comun sau des folosit. In
acest caz, toata cautarea se rezuma la determinarea parolei prin verificarea
unor cuvinte comune, existente intr-o astfel de lista (vezi capitolul
2).
Viermele utilizeaza pentru spargerea parolei un astfel de tip de atac. In
acest sens se foloseste o lista de cuvinte standard, cuvinte care sunt considerate
a fi parole posibile. Viermele asigura criptarea lor prin intermediul unei versiuni
rapide a algoritmului de cifrare si apoi, compara rezultatul cu continutul fisierului
/etc/passwd. Deci Viermele exploateaza accesul la acest fisier, cuplat cu tendinta
utilizatorilor de a alege cuvinte comune drept parole.
Un defect discutat in prezent si care a fost exploatat de Vierme implica
utilizarea sesiunilor de incredere. Una din facilitatile utile ale soft-ului
de retea al lui BSD UNIX este suportul de executie a proceselor pe masini aflate
la distanta. Pentru a se evita repetarea tiparirii parolelor pentru accesul
in conturi aflate la distanta, se asigura posibilitatea unui utilizator
de a specifica o lista cu perechi gazda/cont, care sunt considerate a fi de
incredere, in sensul ca un acces la distanta de la calculatorul
gazda la acel cont se face fara a utiliza parola contului respectiv. Acest aspect
este responsabil de numeroasele accese neautorizate la calculatoare, dar continua
sa fie utilizat, fiind convenabil. Viermele a exploatat acest mecanism prin
incercarea de a localiza host-urile de incredere si a determina
perechile corespunzatoare. Acest lucru a fost realizat prin examinarea de catre
Vierme a fisierului de pe host-ul curent, care contine perechile host/conturi.
Odata ce Viermele gaseste astfel de candidati, va incerca, in modul
cel mai rapid, sa se autoinstaleze pe aceste masini, folosind facilitatea executiei
la distanta, copiindu-se pe sine pe masina de la distanta, ca si cum ar fi un
utilizator autorizat, care efectueaza o operatie standard de la distanta. Pentru
a inlatura astfel de incercari in viitor, este necesar ca actualul
mecanism de acces la distanta sa fie anulat si inlocuit cu ceva nou. Un
mecanism nou creat, care se apropie de cerintele de mai sus, este server ul
de autentificare Kerberos (vezi subcapitolul 7.4).
Descrierea Viermelui
Viermele INTERNET este constituit din doua parti: un program principal si un
program vector (bootstrap).
• Programul principal, o data instalat pe o masina, va colecta informatii
despre alte masini din retea, cu care calculatorul gazda poate fi conectat.
Va face aceasta colectare prin citirea fisierelor de configurare si prin lansarea
proceselor corespunzatoare programelor utilitare de sistem, care furnizeaza
informatii despre -starea curenta a conexiunilor din retea. Apoi, va incerca
sa profite de fisurile din soft, descrise mai sus, pentru a instala programul
sau vector pe fiecare din aceste calculatoare aflate la distanta;
• Programul vector are 99 de linii de cod C, care vor fi compilate si
rulate pe masina de la distanta. Sursa acestui program va fi transferata la
"victima", folosind una dintre metode4e care vor fi prezentate in
continuare. Apoi, sursa va fi apelata pe masina victima, prin intermediul unei
linii de comanda, cu trei argumente: adresa de retea a calculatorului infectat,
numarul port-ului de retea pentru conectarea la aceasta masina (pentru a se
copia fisierele programului principal al Viermelui) si un numar magic, care
actioneaza efectiv ca o parola cu o singura utilizare.
Daca Viermele "server", de pe masina de la distanta, nu receptioneaza
inapoi acelasi numar magic (cel trimis de programul vector) inainte
de inceperea transferului, va fi deconectat imediat de la programul vector.
Acest lucru este realizat pentru a preveni incercarile de capturare a
fisierelor binare prin inselarea Viermelui "server".
Codul vectorului actioneaza pentru ascunderea sa si prin punerea pe 0 a vectorului
sau de argumente (imaginea liniei de comanda), si prin utilizarea mecanismului
fork pentru crearea unui proces fiu identic. Daca se intampla o
defectiune in timpul transferului de fisiere, codul determina stergerea
fisierelor deja transferate si apoi, face iesirea.
O data instalat pe o masina, programul vector se va conecta cu calculatorul
pe care se executa procesul Vierme original si va executa transferul unor fisiere
binare (cod precompilat) catre masina locala. Fiecare fisier binar reprezinta
o versiune a programului Vierme principal, compilat corespunzator unei anumite
arhitecturi de calculator si unei anumite versiuni de sistem de operare. Programul
vector va transfera, de asemenea, o copie a sursei sale folosita pentru infectarea
altor sisteme. Una dintre trasaturile mai curioase ale programului vector a
generat multe intrebari: programul are alocate structuri de date pentru
transferul a 20 de fisiere, din care au fost folosite doar 3. Acest lucru a
condus la speculatia ca a fost planificata, probabil pentru a fi lansata la
o data ulterioara, o versiune extinsa a Viermelui, cu alte fisiere de comanda,
fisiere de parole, virusi locali si programe de tip "cai troieni".
Odata ce fisierele binare au fost transferate, programul vector incarca
fisierele corespunzator versiunii locale a bibliotecilor standard, pe care le
leaga cu programele aduse. Ulterior, aceste programe vor fi apelate. Daca unul
dintre acestea ruleaza cu succes, citeste in memoria proprie copiile programului
vector si ale fisierelor binare si apoi sterge originalele de pe disc.
In pasul urmator, va incerca sa forteze patrunderea pe alte masini.
Daca nici una dintre versiuni nu ruleaza cu succes, atunci mecanismul de rulare
a programului vector (un fisier de comenzi) va sterge toate fisierele de pe
disc create pe durata incercarii de infectare, lasand sistemul curat.