1 Securitatea reţelelor. Viermele Internetului



    Internet este o structură deschisă, la care se poate conecta un număr mare de calculatoare fiind deci greu de controlat. De aceea putem vorbi de vulnerabilitatea reţelelor manifestată pe variate planuri. Un aspect crucial al reţelelor de calculatoare, în special al comunicaţiilor prin Internet îl constituie securitatea informaţiilor.


Categorii de atacuri asupra reţelelor

Ameninţările la adresa securităţii unei reţele de calculatoare pot avea următoarele origini: dezastre sau calamităţi naturale, defectări ale echipamentelor, greşeli umane de operare sau manipulare, fraude. Primele trei tipuri de ameninţări sunt accidentale, în timp ce ultima este intenţionată. Câteva studii de securitate a calculatoarelor estimează că jumătate din costurile implicate de incidente sunt datorate acţiunilor voit distructive, un sfert dezastrelor accidentale şi un sfert greşelilor umane. Acestea din urmă pot fi evitate sau, în cele din urmă, reparate printr-o mai bună aplicare a regulilor de securitate (salvări regulate de date, discuri oglindite, limitarea drepturilor de acces).
În ameninţările datorate acţiunilor voite, se disting două categorii principale de atacuri: pasive şi active.
1) Atacuri pasive - sunt acelea în cadrul cărora intrusul observă informaţia ce trece -prin "canal", fără să interfereze cu fluxul sau conţinutul mesajelor. Ca urmare, se face doar analiza traficului, prin citirea identităţii părţilor care comunică şi "învăţând" lungimea şi frecvenţa mesajelor vehiculate pe un anumit canal logic, chiar dacă conţinutul acestora este neinteligibil. Atacurile pasive au următoarele caracteristici comune:
•    Nu cauzează pagube (nu se şterg sau se modifică date);
•    Încalcă regulile de confidenţialitate;
•    Obiectivul este de a "asculta" datele schimbate prin reţea; .
•    Pot fi realizate printr-o varietate de metode, cum ar fi supravegherea legăturilor telefonice sau radio, exploatarea radiaţiilor electromagnetice emise, rutarea datelor prin noduri adiţionale mai puţin protejate.
2) Atacuri active - sunt acelea în care intrusul se angajează fie în furtul mesajelor, fie -in modificarea, reluarea sau inserarea de mesaje false. Aceasta înseamnă că el _ poate şterge, întârzia sau modifica mesaje, poate să facă inserarea unor mesaje â false sau vechi, poate schimba ordinea mesajelor, fie pe o anumită direcţie, fie pe -ambele direcţii ale unui canal logic. Aceste atacuri sunt serioase deoarece modifică starea sistemelor de calcul, a datelor sau a sistemelor de comunicaţii. Există . următoarele tipuri de ameninţări active:
•    Mascarada - este un tip de atac în care o entitate pretinde a fi o altă entitate. De exemplu, un utilizator încearcă să se substitue altuia sau un serviciu pretinde a fi un alt serviciu, în intenţia de a lua date secrete (numărul cărţii de credit, parola sau cheia algoritmului de criptare). O "mascaradă" este însoţită, de regulă, de o altă ameninţare activă, cum ar fi înlocuirea sau modificarea mesajelor;
•    Reluarea - se produce atunci când un mesaj sau o parte a acestuia este reluată (repetată), în intenţia de a produce un efect neautorizat. De exemplu, este posibilă reutilizarea informaţiei de autentificare a unui mesaj anterior. În conturile bancare, reluarea unităţilor de date implică dublări şi/sau alte. modificări nereale ale valorii conturilor;
•    Modificarea mesajelor - face ca datele mesajului să fie alterate prin modificare, inserare sau ştergere. Poate fi folosită pentru a se schimba beneficiarul unui credit în transferul electronic de fonduri sau pentru a modifica valoarea acelui credit. O altă utilizare poate fi modificarea câmpului destinatar/expeditor al poştei electronice;
•    Refuzul serviciului - se produce când o entitate nu izbuteşte să îndeplinească propria funcţie sau când face acţiuni care împiedică o altă entitate de la îndeplinirea propriei funcţii;
•    Repudierea serviciului - se produce când o entitate refuză să recunoască un serviciu executat. Este evident că în aplicaţiile de transfer electronic de fonduri este important să se evite repudierea serviciului atât de către emiţător, cât şi de către destinatar.

În cazul atacurilor active se înscriu şi unele programe create cu scop distructiv şi care afectează, uneori esenţial, securitatea calculatoarelor. Există o terminologie care poate fi folosită pentru a prezenta diferitele posibilităţi de atac asupra unui sistem. Acest vocabular este bine popularizat de "poveştile" despre "hackeri". Atacurile presupun, în general, fie citirea informaţiilor neautorizate, fie (în cel mai frecvent caz) distrugerea parţială sau totală a datelor sau chiar a calculatoarelor. Ce este mai grav este posibilitatea potenţială de infestare, prin reţea sau copieri de dischete, a unui mare număr de maşini. Dintre aceste programe distructive amintim următoarele:
•    Viruşii - reprezintă programe inserate în aplicaţii, care se multiplică singure în alte programe din spaţiul rezident de memorie sau de pe discuri; apoi, fie saturează complet spaţiul de memorie/disc şi blochează sistemul, fie, după un număr fixat de multiplicări, devin activi şi intră într-o fază distructivă (care este de regulă exponenţială);
•    Bomba software - este o procedură sau parte de cod inclusă intr-o aplicaţie "normală", care este activată de un eveniment predefinit. Autorul bombei anunţă evenimentul, lăsând-o să "explodeze", adică să facă acţiunile distructive programate;
•    Viermii - au efecte similare cu cele ale bombelor şi viruşilor. Principala diferenţă este aceea că nu rezidă la o locaţie fixă sau nu se duplică singuri. Se mută în permanenţă, ceea ce îi face dificil de detectat. Cel mai renumit exemplu este Viermele INTERNET ului, care a scos din funcţiune o parte din INTERNET în noiembrie 1988;
•    Trapele - reprezintă accese speciale la sistem, care sunt rezervate în mod normal pentru proceduri de încărcare de la distanţă, întreţinere sau pentru dezvoltatorii unor aplicaţii. Ele permit însă accesul la sistem, eludând procedurile de identificare uzuale;
•    Calul Troian - este o aplicaţie care are o funcţie de utilizare foarte cunoscută şi care, intr-un mod ascuns, îndeplineşte şi o altă funcţie. Nu creează copii. De exemplu, un hacker poate înlocui codul unui program normal de control "login" prin alt cod, care face acelaşi lucru, dar, adiţional, copiază într-un fişier numele şi parola pe care utilizatorul le tastează în procesul de autentificare. Ulterior, folosind acest fişier, hacker-ul va penetra foarte uşor sistemul.

Modelul de securitate în reţele

Modelul de securitate pentru un calculator seamănă cu o ceapă. Niveluri de securitate înconjoară subiectul ce trebuie protejat. Fiecare nivel izolează subiectul şi îl face mai greu de accesat în alt mod decât în cel în care a fost planificat.
1)    Securitatea fizică reprezintă nivelul exterior al modelului de securitate şi constă, în general, în încuierea echipamentelor informatice într-un birou sau într-o altă incintă. Securitatea fizică merită o consideraţie specială. Problema cea mai mare o constituie salvările pentru copii de rezervă ale datelor şi programelor şi siguranţa păstrării suporţilor de salvare. În aceste situaţii, reţelele locale sunt de mare ajutor: dacă toate fişierele schimbate frecvent rezidă pe un server, aceleaşi persoane (sigure şi de încredere), care lansează salvările pentru mainframe-uri, pot face acelaşi lucru şi la server. Calculatorul, ca orice piesă costisitoare, ar trebui să fie protejat şi. de pericolul furtului. Păstrarea în afara zonelor publice este una dintre cele mai bune forme de protecţie. Simpla încuiere a echipamentelor va preveni mutările ascunse precum şi furtul. Într-un sistem în care prelucrarea este distribuită, prima măsură de securitate fizică care trebuie avută în vedere este prevenirea accesului la echipamente. Pentru a învinge orice alte măsuri de securitate, trebuie să se dispună de acces fizic la echipamente. Acest lucru este comun tuturor sistemelor de calcul, distribuite sau nu.
2)    Securitatea logică constă din acele metode care asigură controlul accesului Ia resursele şi serviciile sistemului. Ea are, la rândul ei, mai multe niveluri, împărţite în două grupe mari: niveluri de securitate a accesului (SA) şi niveluri de securitate a serviciilor (SS).
3)    
•    Securitatea accesului (SA) cuprinde:    
•    accesul la sistem (AS), care este răspunzător de a determina dacă şi când reţeaua este accesibilă utilizatorilor. EI poate fi, de asemenea, răspunzător pentru decuplarea unei staţii, ca şi de gestiunea evidenţei accesului. AS execută, de asemenea, deconectarea forţată, dictată de supervizor. AS poate, de exemplu, să prevină conectarea în afara orelor de serviciu şi să întrerupă toate sesiunile, după un anumit timp;
•    accesul la cont (AC), care verifică dacă utilizatorul care se conectează cu un anumit nume şi cu o parolă există şi are un profil utilizator valid;
•    drepturile de acces (DA), care determină ce privilegii de conectare are utilizatorul (de exemplu, contul poate avea sesiuni care totalizează 4 ore pe zi sau contul poate utiliza doar staţia 27).

•    Securitatea serviciilor (SS), care se află sub SA, controlează accesul la serviciile sistem, cum ar fi fire de aşteptare, I/O la disc şi gestiunea server ului. Din acest nivel fac parte:
•    controlul serviciilor (CS), care este responsabil cu funcţiile de avertizare şi de raportare a stării serviciilor; de asemenea, el activează şi dezactivează diferitele servicii;
•    drepturile la servicii (DS), care determină exact cum foloseşte un anumit cont un serviciu dat; de exemplu, un cont poate avea numai dreptul de a adăuga fişiere la spooler-ul unei imprimante, dar are drepturi depline, de a adăuga şi şterge fişiere, pentru o altă imprimantă.

O dată stabilită conexiunea, SA validează şi defineşte contul. Operaţiile ce trebuie executate sunt controlate de SS, care împiedică cererile ce nu sunt specificate în profilul utilizatorului. Accesul intr-un sistem de securitate perfect trebuie să se facă prin aceste niveluri de securitate, de sus în jos. Orice sistem care vă lasă să evitaţi unul sau mai multe niveluri ale modelului de securitate implică riscul de a fi nesigur.

Viermele Internet-ului

Introducere

În seara zilei de 2 noiembrie 1988, după ora 17, un program ciudat era executat pe mai multe dintre calculatoarele Internet. Acest program aduna informaţii despre host-uri, reţele şi utilizatori şi folosea aceste informaţii pentru a stabili conexiuni reţea şi pentru a pătrunde pe alte maşini. El folosea anumite defecte sau slăbiciuni prezente în anumite programe. După această pătrundere, programul se multiplica, iar copia sa încerca infectarea altor sisteme, în aceeaşi manieră. Chiar dacă programul nu a infectat decât sistemele Sun Microsystems Sun 3 şi calculatoarele VAX pe care rulau variante ale lui 4 BSD UNIX, el s-a extins rapid, creând confuzie şi consternare în rândul administratorilor de sistem şi al utilizatorilor, atunci când aceştia au descoperit invazia produsă în sistemele lor. Deşi se cunoştea că UNIX-ul are câteva slăbiciuni de securitate, în special în modul obişnuit de operare în medii deschise, totuşi scopul şi modul în care acestea au fost folosite a constituit o surpriză mare pentru toată lumea.
Programul era ciudat pentru utilizatori, în special din punctul de vedere al punctelor de apariţie. Au fost introduse fişiere neobişnuite în directoarele lusrltmp, iar unele mesaje stranii au apărut în fişierele unor utilitare, cum ar fi sendmail. Totuşi, cel mai notabil efect a fost faptul că sistemele au devenit din ce în ce mai încărcate cu procese datorită infectării multiple. Cu trecerea timpului, unele dintre maşini au devenit atât de încărcate, încât nu au mai fost capabile să lucreze; unele maşini au fost blocate complet, atunci când spaţiul de evacuare (swaping) sau tabela de procese au fost saturate.
În dimineaţa zilei de 3 noiembrie, personalul de la Universitatea Berkeley din California şi de la Institutul de Tehnologie Massachusetts au "capturat' copii ale programului şi au început să le analizeze. Utilizatori din alte locuri au început, de asemenea, să studieze programul şi au fost dezvoltate metode de eradicare a acestuia. O caracteristică a programului a ieşit în evidenţă: modifica resursele sistemului într-un fel care nu putea fi detectat rapid. Au fost alterate fişiere şi distruse informaţiile, ceea ce a impus căutarea unei soluţii. După ora 5 am la mai puţin de 13 ore de la prima descoperire a programului, Computer Systems Research Group de la Berkeley a stabilit un set provizoriu de măsuri, în vederea opririi extinderii. Printre acestea se afla şi o modificare la serviciul sendmail şi sugestia de a redenumi compilatoarele C şi încărcătorul, pentru a preveni utilizarea lor. Aceste sugestii au fost publicate în listele de poştă electronică şi prin sistemul de ştiri din reţeaua Usenet, cu toate că extinderea viermelui a fost împiedicată, cel mai adesea prin deconetarea sistemelor de la INTERNET, în încercarea de a le dezinfecta ulterior.
Pe la orele 9 pm, în aceeaşi zi, a fost descoperită şi publicată la Purdue University o altă metodă simplă pentru stoparea invaziei acestui program. Îmbunătăţiri soft au fost anunţate şi de către grupul Berkeley, pentru a "astupa" fisurile ce permiteau programului să invadeze sistemele. Tot ceea ce rămânea de făcut era de a se analiza codul care a generat aceste probleme şi de a descoperi cine şi de ce lansat viermele.

Cronologia evenimentelor

Este foarte interesant de remarcat viteza şi profunzimea cu care Viermele s-a extins şi este semnificativ de urmărit rapiditatea cu care a fost identificat şi-a oprit utilizându-se aceeaşi reţea pentru comunicarea între specialişti a rezultatelor. Este, credem noi, foarte interesant şi instructiv de urmărit desfăşurarea în timp a răspândirii 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 specialiştilor.

2 Noiembrie 1988

•    17.00. Viermele este executat pe o maşină la Cornell University;
•    18.00. Maşina prep.ai.mit.edu a lui MIT a fost infectată. Prep era o maşină cu acces public, utilizată pentru stocarea şi distribuirea soft-ului prin proiectul GNU. Maşina a fost configurată cu câteva vulnerabilităţi de securitate de notorietate, care permiteau . utilizatorilor de la distanţă să introducă fişiere în sistem;
•    18.30. Maşina infectată de la Pittsburgh Univerity a infectat o maşină a corporaţiei RAND;
•    21.00. Viermele este descoperit pe maşinile de la Stanford University; 21.30. Este invadată o primă maşină la Minnesota University;
•    21.34. Maşina gateway a Universităţii Berkeley din California este invadată. Se descoperă o neobişnuită incărcare a maşinii cu procese de poştă;
•    22.34. Este infectată maşina gateway a Universitţăii Princeton;
•    22.40. Maşini de la Universitatea Norih Carolina sunt infectate şi sunt încercări de a invada alte maşini;
•    22.48. Sunt infectate maşini ale SRI via sendmail (poştă);
•    22.52. Viemele incearcă să invadeze maşina andrew.cmu.edu de la Universitatea Carnegie-Mellon (poştă);
•    22.54. Calculatoarele gateway de la Universitatea din MaryJand sunt atacate prin . . procesul din fundal corespunzător programului fingerd;
•    22.59. Maşinile de la Universitatea din Pennsylvania sunt atacate, dar sunt "insen-sibile". Vor fi depistate 210 încercări de infectare în următoarele 13 ore, prin poştă; 23.48. Calculatorul mimsy.umd.edu de la Universitatea din Maryland este infectat via sendmail (poştă);
•    23.40. Cercetătorii de la Berkeley descoperă ţintele de atac ca fiind sendmail şi rsh. Ei incep să închidă serviciile pentru alte reţele, ca măsură de precauţie;
•    23.45. Maşinile de la Dartmouth şi Laboratorul de Cercetări Balistice al Armatei (BRL) sunt atacate şi infectate (poştă, NCSC);
•    23.49. Gateway-urile de la Universitatea din Utah sunt infectate. În următoarea oră numărul încercărilor va ajunge la 100;

3 Noiembrie 1988

•    00.07. Este infectată maşina Univesităţii din Arizona, prin poştă;
•    00.21. Este infectată maşina principală a Universităţii Princeton (un VAX 8650). Numărul încercărilor ajunge la 68 şi maşina clachează;
•    00.33. Este infectată maşina dewey.udel.edu a Universităţii din Delaware;
•    01.30. Maşinile de la UCLA sunt infectate;
•    02.00. Viermele este identificat pe maşinile de la Universitatea Harvard;
•    02.38. De la Berkeley se transmite un mesaj prin poştă cu conţinutul: "Suntem atacaţi". Domeniile menţionate ca fiind infectate sunt: U.C.Berkeley, U.C.San Diego, LLL, Stanford şi NASA Ames;
•    03.15. Sunt infectate maşiniie de la Universitatea din Chicago. Una dintre maşinile de la Departamentuf de fizică suferă 225 de încercări de infectare, via fingerd, de la maşini 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 să fie oprit Viermele, urmate de "Sper că acestea ajută, dar mai mult, sper că este vorba de o farsă.". 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. Datorită încărcării reţelei şi maşinilor, avertismentul nu este propagat ir următoarele 24 de ore;
•    04.00. Universitatea Colorado este şi ea supusă atacului; 04.00. Maşinile de la Universitatea Purdue sunt infectate;
•    05.54. Se transmite prin poştă un avertisment cu privire la Virme şi, în plus, c măsură de protecţie minimală referitoare la programul sendmail. Mesajul său este preluat de grupul de ştiri Usenix;
•    06.45. Se sună la National Computer Security Center şi se informează despre Vierme;
•    07.00. Maşini ale Institutului de Tehnologie din Georgia sunt infectate. Maşina gateway (un VAX 780) suferă peste 30 de încercări;
•    07.30. Se descoperă infectarea maşinilor de la Universitatea Purdue. Maşinile sun atât de încărcate, încât nu se puteau citi mesajele primite prin poştă, inclusiv mesajul despre Vierme;
•    08.07. La Berkeley se identifică atacul Viermelui prin intermediul programului fingerd, dar mesajul trimis prin poştă nu poate fi citit mai bine de 13 ore;
•    08.18. Se retransmite avertismentul despre Vierme grupului de ştiri Usene news.announce.important şi altor 30 de site-uri. Acestea au fost primele informaţii despre Vierme, aflate de cei vizaţi în cursul întregii zile, acest grup a schimb de  mesaje prin poştă cu privire la progresul şi 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 această oră încă nu est cunoscut;
•    11.30. Defense Communications Agency inhibă bridge-urile de poştă între Arpane şi Milnei;
•    13.00. Sunt blocate peste 130 de maşini ale SRI;'
•    14.50. Personalul de la Purdue descoperă maşini infectate cu variante noi de programe sendmail instalate. Se transmite un mesaj prin poştă referitor la faptul c noua versiune de sendmail nu constituie o măsură de protecţie suficientă. Acel lucru era cunoscut deja în multe locuri, inclusiv la Berkeley şi MIT de mai bine câte ore, dar nu se publicase încă nimic;
•    16.00. Administratorii de sisteme de la Purdue se întâlnesc pentru a stabili strateg locală. Versiunile de Vierme capturate au furnizat o variantă de prevenire a infecţie prin crearea unui director cu numele sh în directorul lusr tmp;
•    18.00. La Purdue s-a descoperit cum lucrează Virmele, cu defecţiunea din program finger,
•    19.00. La MIT, s-a reconstituit atacul Viermelui prin intermediul programului fingerd' şi s-a telefonat la Berkeley pentru a se anunţa aceasta. Nu a fost transmis nimic prin poştă despre acest mod de atac;
•    19.19. S-au transmis noile îmbunătăţiri aduse programelor sendmail şi fingerd, dar aceste mesaje au fost recepţionate abia a doua zi;
•    19.37. De la Universitatea din Rochester a fost trimisă prin poştă o descriere a atacului prin intermediul programului fingerd;
•    21.30. Grupul de la Berkeley începe decompilarea Viermelui, pentru a determina sursa în C.


1 4 Noiembrie 1988

•    00.50. Se trimite prin poştă o descriere a atacului prin intermediul fingerd. Se fac şi primele comentarii referitoare la stilul de cod al autorului Viermelui;
•    05.00. Grupul MiT încheie decompilarea codului;
•    09.00. Grupul de la Berkeley încheie decompilarea codului;
•    11.00. Sunt reinstalate bridge-urile de poştă între Milnet-Arpanet;
•    14.20. Se retransmit prin poştă modificările aduse la programul fingerd;
•    15.36. De la MIT, se transmit clarificări asupra modului de operare a Viermelui; • 17.2d. Se transmite un set final de îmbunătăţiri pentru sendmail şi fingerd;
•    21.30. Autorul Viermelui este identificat din două surse independente ca fiind Robert T Morris, fiut directorului ştiinţific al Centrului Naţional de Securitate a Calcutatoarelor (GNSC), Robert Morris.
•    Până pe 8 noiembrie, marea majoritate a maşinilor au fost reconectate la INTERNET şi traficul a revenit la normal. În aceeaşi dimineaţă, aproximativ 50 de cercetători s-au intâlnit cu oficialităti din Centru! National de Securitate. Cu această ocazie, au fost identificate direciiile ulterioare de acţiune în acest domeniu. Analizatorii de trafic al reţelei au continuat să identifice încercări de infectare încă existente pe maşinile INTERNET-ului. O ultimă încecare a fost identificată la începutul lunii decembrie 1988.

Despre autorul Viermelui

După ce Viermele a fost oprit, au fost puse, inevitabil, două întrebări: "cine?" şi "de ce?".
La prima întrebare răspunsul a apărut rapid prin identificarea lui Robert T. Morris de către New York Times. Există multe elemente care susţin identificarea făcută. Multe oficialităţi federale au afirmat că au dovezi, obţinute de la persoane distincte, prin care se specifică faptul că Morris a discutat cu aceste persoane despre Vierme şi cercetările sale în această direcţie. Ei susţin, de asemenea, că au înregistrări de pe calculatoarele de la Universitatea Cornell reprezentând versiuni de început ale codului Viermelui testate pe maşini din campus şi, de asemenea, susţin că au copii ale Viermetui găsite în contul lui Morris. Raportut furnizat de Oficiul Rectoratului Universităţii din Cornelt îl indică de asemenea pe Morris ca fiind culpabil şi prezintă motive convingătoare pentru a susţine această concluzie.
Dar dacă autorul era stabilit, motivul acestei acţiuni rămânea neclar, plasat între un experiment greşit şi până la un act inconştient de răzbunare a lui Morris împotriva tatălui său. Din studiul făcut de multe persoane asupra codului decompilat, au rezultat două concluzii:
O primă concluzie se referă la faptul că programul nu conţine, în mod explicit, porţiuni de cod care ar provoca explicit distrugeri ale sistemelor pe care ar rula. Luând în considerare abilitatea şi cunoştinţele evidenţiate de cod, pentru autor ar fi constituit o chestiune simplă introducerea unor astfel de comenzi, dacă aceasta ar fi fost intenţia lui. În cele din urmă, eliberarea prematură în reţea a Viermelui arată că intenţia autorului de a distruge sau perturba structuri şi sisteme nu poate fi luată în considerare în mod explicit;
A doua concluzie se referă fa faptul că în cod nu este inclus un mecanism pentru a opri dezvoltarea Viermelui. Luând în considerare acest lucru, precum şi complexitatea şirului utilizat ca argument, necesar pentru a declanşa Viermele, multe persoane care au examinat codul nu consideră că Viermele a fost declanşat accidental sau că intenţia a fost de a nu fi propagat puternic. Având în vedere aceste lucruri, sunt ciudate încercările făcute pentru a justifica acţiunea lui Morris, susţinându-se că intenţia lui era de a demonstra ceva despre securitatea 7NTERNET ului sau că a fost un experiment nevinovat. Raportul Rectoratului Universităţii din Cornell nu încearcă să scuze comportamentul lui Morris. Această acţiune este etichetată ca fiind neetică şi contrară standardelor profesionale. Acţiunea sa este considerată a fi îndreptată împotriva politicii Universităţii şi practicii acceptate şi ar fi fost de aşteptat ca, având în vedere experienţa pe care o are în acest domeniu, să cunoască că astfel de acţiuni sunt nepermise. Cei care cred că Viermele constituie un accident sau un experiment nefericit sunt de părere ca autorul să nu fie pedepsit, mergând până la a cere pedepsirea administratorilor şi operatorilor de pe sistemele şi maşinile afectate, pentru neglijenţa cu care au tratat aspectele ,de securitate. Ceilalţi consideră că autorul trebuie să fie pedepsit sever, inclusiv cu privarea de libertate. Comisia de la Cornell a recomandat unele pedepse, dar nu atât de severe încât să afecteze cariera ulterioară a lui Morris. În acea recomandare este specificată suspendarea lui Morris din Universitate pentru minimum un an. Faptul că nu s-au întâmplat mari nenorociri poate constitui un accident şi este posibil ca intenţia autorului să fi fost de a supraîncărca lNTERNET-ul, aşa cum s-a şi întâmplat. Scuzarea unor astfel de acte de vandalism, sub declaraţia că autorii nu au vrut să creeze mari neajunsuri, nu poate conduce la descurajarea repetării unor astfel de încercări, ba chiar mai mult, acestea sunt încurajate.

Vulnerabilităţi exploatate de Vierme

Viermele utilizează o serie de defecte sau slăbiciuni existente în software-ul standard al multor sisteme UNIX. Unele dintre aceste defecte sunt descrise în continuare.

Programul Fingerd
Programul fingerd este un utilitar care permite obţinerea de informaţii despre utilizatori. De obicei, este folosit pentru a identifica numele întreg sau numele de conectare (login) al unui utilizator, dacă acesta se află în sesiune şi posibil, alte informaţii despre persoana respectivă, cum ar fi numerele de telefon etc. Acest program este rulat ca daemon sau proces în fundal (background), pentru rezolvarea cererilor de informaţii venite de la distanţă, utilizându-se protocolul fingerd, Acest program acceptă conexiuni de. la programe ce rulează în altă parte, citeşte linia de intrare şi trimite răspuns receptorului care a adresat întrebarea.
Punctul slab exploatat, prin care se "sparge" acest program, implică modificarea buffer ului de intrare folosit de acesta. Biblioteca f/0 a limbajului C are câteva rutine care citesc intrarea fără a verifica limitele buffer-ului implicat în această operaţiune. În particular, apelul funcţiei gets preia datele de intrare într-un buffer, fără a face verificarea limitelor acestuia. Apelul acestei funcţii a fost exploatat de Vierme. Rutina gets nu este singura care are acest neajuns. O întreagă familie de rutine din biblioteca C-ului face posibilă depăşirea buffer ului, atunci când se decodifică intrarea sau când se formatează ieşirea, dacă utilizatorul nu specifică explicit numărul de caractere pentru conversie.
Cu toate că programatorii experimentaţi sunt cunoscători ai acestor probleme, mulţi dintre ei continuă să folosească aceste rutine. Necazul este că orice server de reţea sau program privilegiat, care utilizează aceste funcţii, poate fi compromis datorită utilizării unei intrări improprii. Interesant este că recent, au mai fost descoperite încă două comenzi în standardul BSD UNIX, care au această problemă.
După atacul asupra INTERNET-ului au fost relevate mai multe probleme potenţiale şi mai multe modalităţi de a le înlătura, dar cu toate acestea, biblioteca cu aceste rutine continuă să fie utilizată.

Programul Sendmail
Programul sendmail este un serviciu de poştă electronică, destinat să ruteze scrisorile într-o reţea eterogenă. Programul are mai multe moduri de operare, dar unul dintre acestea este exploatat de Vierme şi implică lansarea serviciului ca proces în background (daemon). În acest mod de lucru, procesul se află în starea de "ascultare" la un port TCP (25), pentru a face distribuirea poştei sosite prin protocolul standard INTERNET, SMTP (Simple Mail Transfer Protocon. Când o astfel de situaţie este detectată, procesul intră într-un dialog cu un alt proces de la distanţă, pentru a determina expeditorul, destinatarul, instrucţiunile de distribuire şi conţinutul mesajului.
Punctul slab exploatat în sendmail este legat de o opţiune de depanare a codului. Viermele transmite comanda DEBUG la sendmail şi apoi specifică destinatarul mesajului, ca un set de comenzi şi nu ca o adresă utilizator. Într-o operaţiune normală, acest lucru nu este permis; însă, în activitatea de depanare a codului este posibilă verificarea poştei sosite pentru un anumit destinatar, fără a se apela rutinele de adresare. Prin utilizarea acestei opţiuni, testele pot rula programe care să afişeze starea sistemului de poştă, fără trimiterea de mesaje sau stabilirea unei conexiuni. Această opţiune de depanare este adesea utilizată tocmai datorită complexităţii configurării lui sendmail.
Programul sendmail este de mare importanţă, mai ales pentru sisteme UNIX derivate din BSD, deoarece mânuieşte procese complexe de rutare şi distribuire a poştei. Totuşi, în ciuda importanţei mari şi a utilizării largi, cea mai mare parte a administratorilor de sisteme ştiu puţin despre felul în care lucrează sendmail. Deşi sunt relatate multe apariţii de driver e scrise de administratori de sisteme sau modificări aduse Kernel-ului, nimeni nu a adus încă modificări la sendmail sau la configuraţia fişierelor sale. În concluzie, punctele slabe prezentate în sendmail sunt puţin cunoscute, iar unele dintre ele sunt depistate şi comunicate pe măsura descoperirii lor.

Parole
Una din "piesele de rezistenţă" ale Viermelui implică încercarea de a descoperi parolele utilizatorilor. În sistemele UNIX, utilizatorul furnizează o parolă ca semn de verificare a identităţii. Parola este criptată, utilizând o versiune a algoritmului DES, iar rezultatul este comparat cu rezultatul criptării anterioare, prezent în fişierul letclpasswd. Dacă acestea coincid, accesul este permis. În acest fişier nu sunt incluse parolele în clar şi algoritmul se presupune a fi neinversabil; deci, fără cunoaşterea parolei nu avem acces.
Organizarea parolelor în UNIX permite unor comenzi neprivilegiate să utilizeze informaţii din fişierul /etc/passwd şi să acceseze schema de autentificare a parolelor. Deci se permite un atac prin criptarea unei liste cu parole posibile şi compararea rezultatelor cu fişierul letclpasswd, fără a se face apel la o funcţie sistem, special dedicată. De fapt, securitatea parolelor este asigurată în principal prin numărul mare de încercări ce trebuie efectuate pentru a le determina, cu toate combinaţiile de caractere posibile. Din nefericire, există maşini care lucrează rapid şi costul unei astfel de acţiuni este în continuă descreştere, datorită rapidităţii dezvoltării produselor hard.
Divizând procesul pe mai multe procesoare, se reduce mult timpul necesar determinării unei parole. Astfel de atacuri sunt uşurate mult, atunci când utilizatorul alege drept parolă un cuvânt comun sau des folosit. În acest caz, toată căutarea se rezumă la determinarea parolei prin verificarea unor cuvinte comune, existente într-o astfel de listă (vezi capitolul 2).
Viermele utilizează pentru spargerea parolei un astfel de tip de atac. În acest sens se foloseşte o listă de cuvinte standard, cuvinte care sunt considerate a fi parole posibile. Viermele asigură criptarea lor prin intermediul unei versiuni rapide a algoritmului de cifrare şi apoi, compară rezultatul cu conţinutul fişierului /etc/passwd. Deci Viermele exploatează accesul la acest fişier, cuplat cu tendinţa utilizatorilor de a alege cuvinte comune drept parole.
Un defect discutat în prezent şi care a fost exploatat de Vierme implică utilizarea sesiunilor de încredere. Una din facilităţile utile ale soft-ului de reţea al lui BSD UNIX este suportul de execuţie a proceselor pe maşini aflate la distanţă. Pentru a se evita repetarea tipăririi parolelor pentru accesul în conturi aflate la distanţă, se asigură posibilitatea unui utilizator de a specifica o listă cu perechi gazdă/cont, care sunt considerate a fi de încredere, în sensul că un acces la distantă de la calculatorul gazdă la acel cont se face fără a utiliza parola contului respectiv. Acest aspect este responsabil de numeroasele accese neautorizate la calculatoare, dar continuă să fie utilizat, fiind convenabil. Viermele a exploatat acest mecanism prin încercarea de a localiza host-urile de încredere şi a determina perechile corespunzătoare. Acest lucru a fost realizat prin examinarea de către Vierme a fişierului de pe host-ul curent, care conţine perechile host/conturi. Odată ce Viermele găseşte astfel de candidaţi, va încerca, în modul cel mai rapid, să se autoinstaleze pe aceste maşini, folosind facilitatea execuţiei la distanţă, copiindu-se pe sine pe maşina de la distanţă, ca şi cum ar fi un utilizator autorizat, care efectuează o operaţie standard de la distanţă. Pentru a inlătura astfel de încercări în viitor, este necesar ca actualul mecanism de acces la distanţă să fie anulat şi înlocuit cu ceva nou. Un mecanism nou creat, care se apropie de cerinţele de mai sus, este server ul de autentificare Kerberos (vezi subcapitolul 7.4).

Descrierea Viermelui

Viermele INTERNET este constituit din două părţi: un program principal şi un program vector (bootstrap).
•    Programul principal, o dată instalat pe o maşină, va colecta informaţii despre alte maşini din reţea, cu care calculatorul gazdă poate fi conectat. Va face această colectare prin citirea fişierelor de configurare şi prin lansarea proceselor corespunzătoare programelor utilitare de sistem, care furnizează informaţii despre -starea curentă a conexiunilor din reţea. Apoi, va încerca să profite de fisurile din soft, descrise mai sus, pentru a instala programul său vector pe fiecare din aceste calculatoare aflate la distanţă;
•    Programul vector are 99 de linii de cod C, care vor fi compilate şi rulate pe maşina de la distanţă. Sursa acestui program va fi transferată la "victimă", folosind una dintre metode4e care vor fi prezentate în continuare. Apoi, sursa va fi apelată pe maşina victimă, prin intermediul unei linii de comandă, cu trei argumente: adresa de reţea a calculatorului infectat, numărul port-ului de reţea pentru conectarea la această maşină (pentru a se copia fişierele programului principal al Viermelui) şi un număr magic, care acţionează efectiv ca o parolă cu o singură utilizare.

Dacă Viermele "server", de pe maşina de la distanţă, nu recepţionează înapoi acelaşi număr magic (cel trimis de programul vector) înainte de începerea transferului, va fi deconectat imediat de la programul vector. Acest lucru este realizat pentru a preveni încercările de capturare a fişierelor binare prin înşelarea Viermelui "server".
Codul vectorului acţionează pentru ascunderea sa şi prin punerea pe 0 a vectorului său de argumente (imaginea liniei de comandă), şi prin utilizarea mecanismului fork pentru crearea unui proces fiu identic. Dacă se întâmplă o defecţiune în timpul transferului de fişiere, codul determină ştergerea fişierelor deja transferate şi apoi, face ieşirea.
O dată instalat pe o maşină, programul vector se va conecta cu calculatorul pe care se execută procesul Vierme original şi va executa transferul unor fişiere binare (cod precompilat) către maşina locală. Fiecare fişier binar reprezintă o versiune a programului Vierme principal, compilat corespunzător unei anumite arhitecturi de calculator şi unei anumite versiuni de sistem de operare. Programul vector va transfera, de asemenea, o copie a sursei sale folosită pentru infectarea altor sisteme. Una dintre trăsăturile mai curioase ale programului vector a generat multe întrebări: programul are alocate structuri de date pentru transferul a 20 de fişiere, din care au fost folosite doar 3. Acest lucru a condus la speculaţia că a fost planificată, probabil pentru a fi lansată la o dată ulterioară, o versiune extinsă a Viermelui, cu alte fişiere de comandă, fişiere de parole, viruşi locali şi programe de tip "cai troieni".
Odată ce fişierele binare au fost transferate, programul vector încarcă fişierele corespunzător versiunii locale a bibliotecilor standard, pe care le leagă cu programele aduse. Ulterior, aceste programe vor fi apelate. Dacă unul dintre acestea rulează cu succes, citeşte în memoria proprie copiile programului vector şi ale fişierelor binare şi apoi şterge originalele de pe disc.
În pasul următor, va încerca să forţeze pătrunderea pe alte maşini. Dacă nici una dintre versiuni nu rulează cu succes, atunci mecanismul de rulare a programului vector (un fişier de comenzi) va şterge toate fişierele de pe disc create pe durata încercării de infectare, lăsând sistemul curat.

Cele mai ok referate!
www.referateok.ro