CATEGORII DOCUMENTE |
Securitatea retelelor. Viermele Internetului
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.
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).
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 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.
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.
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).
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.
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.
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.
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 'insensibile'. 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;
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.
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.
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.
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 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 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.
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).
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.
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 1096
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved