SECOS_Notiuni de securitate.doc

download SECOS_Notiuni de securitate.doc

of 47

Transcript of SECOS_Notiuni de securitate.doc

FACULTATEA DE ELECTRONICA, TELECOMUNICATII SI TEHNOLOGIA INFORMATIEI

FACULTATEA DE ELECTRONICA, TELECOMUNICATII SI TEHNOLOGIA INFORMATIEI

Indrumtor,

Conf. dr. ing. tefan StncescuPartea I. Gestiunea sigur a drepturilor i a resurselor locale.Vidracu MihaiPartea a II-a. Principalele tipuri de atac la sistem: atacuri din interior, erori conceptuale, malware. Tic Andra MariaPartea a III-a. Modaliti de imbuntire a securitii sistemelor de operare. Lecu Radu SerbanGrupa 432A-2011-Partea I . Gestiunea sigur a drepturilor i a resurselor locale

1. Conceptul de securitate

Deseori termenii de securitate i protecie se folosesc interschimbabil. Totui, este util o difereniere ntre problemele care apar la asigurarea faptului c fiierele nu sunt citite sau modificate de ctre persoane neautorizate, i mecanismele specifice sistemului de operare, folosite pentru a oferi securitate. Pentru a elimina orice confuzie, voi folosi securitate pentru a face referire la problem, n general, i mecanisme de protecie pentru mecanismele specifice sistemului de operare, folosite pentru pstrarea sigur a informaiei n calculator. Totui, grania intre cei doi termeni nu este bine definit. Securitatea mai multe aspecte. Cele mai importante se concretizeaz n ameninari, intruziuni n sistem i pierdere accidental de date.

1.1 Ameninrile

Din punctul de vedere al securitaiii, calculatorul are de indeplinit 4 sarcini majore, fiecare avnd anumite ameninari asociate (figura 1). Confidenialitatea informaiilor: datele secrete trebuie s rmn secrete. Mai precis, dac detinatorul sistemului a decis ca anumite date sa poat fi accesate de anumite persoane i de nimeni altcineva, sistemul trebuie sa garanteze faptul ca acele informaii nu vor ajunge la altcineva. Ca serviciu minim, proprietarul ar trebui sa poat specifica cine poate vedea i ce, iar sistemul s accentueze aceste specificaii.

ScopAmeninare

Confidenialitatea datelorExpunerea datelor

Integritatea datelorModificari ale datelor

Disponibilitatea sistemuluiImposibilitatea folosirii serviciilor

Excluderea intruilorPreluarea controlului de ctre virui

FIG. 1: Sarcinile unui calculator n privinta securitaiii

Al doilea scop, integritatea datelor, presupune ca utilizatorii neautorizai s nu poat modifica datele fr acordul proprietarului. Modificarea nseamn nu numai schimbarea lor, ci i tergerea sau adugarea de alte informaii, care pot fi false/eronate.

Disponibilitatea sistemului, al treilea scop, nseamn ca nimeni nu poate deranja sistemul, pentru a-l face inutilizabil. Astfel de atacuri, imposibilitatea accesului la servicii, devin din ce n ce mai comune. Un exemplu: pentru un server de internet, cererile flood l pot bloca, consumd tot timpul de procesare al CPU prin primirea de cereri i respingerea lor. Exist tehnologii pentru respingerea acestor atacuri, dar pentru cele de tip lips de acces la servicii, problema este mai dificil.

Un alt tip de ameninare este preluarea controlului computer-ului de ctre intrui (folosind virui sau alte mijloace) i executarea comenzilor acestora. Deseori, aceste atacuri sunt folosite pentru a trimite mesaje spam, astfel nct cei care iniiaza atacul s fie mai greu de urmrit.

Mai exist i ameninari care tintesc ntreaga societate, n locul unui utilizator individual. Este cazul persoanelor care au o antipatie pentru un anumit grup etnic sau chiar pentru ntreaga societate, i care doresc s distrug ct mai mult din infrastructura, indiferent cine sunt victimele. Astfel de atacuri nu sunt concentrate pe ceva concret.

Un alt aspect al problemei securitaii l constituie intimitatea; protecia individului fa de informaii eronate despre el. n cazul acesta se ajunge la probleme de legalitate i de moral.

1.2 Intruii

n domeniul acesta, intruii se definesc ca persoane care acceseaza date care n mod normal sunt destinate altor utilizarori sau sunt secrete. Ei acioneaza n 2 moduri diferite: cei pasivi doar citesc informaiile la care nu au acces autorizat. Cei activi, provoac mai multe pagube: ei modific datele n mod neautorizat. La proiectarea sistemului trebuie inut cont de ce tip de intrui trebuie respini (unii mai mult dect ceilali):

Curiozitate ocazional din partea utilizatorilor nespecializai: de exemplu, utilizatorii conectai la un server de partajare (sharing), vor incerca s citeasca e-mail-urile celorlalti sau s acceseze fiierele lor dac nu exist de la inceput o metoda de blocare.

Spionajul din interior: operatori, programatori de sistem i alte persoane specializate care considera compromiterea securitaiii sistemelor locale o provocare. Sunt foarte priceputi i investesc mult timp i efort n aceste acivitati.

Incercari de castig financiar: unii programatori din banci au incercat sa fure bani de la locul de munca. Metodele variaza de la modificarea software-ului pentru a pstra o cantitate mic de bani la fiecare tranzacie sau extragerea de fonduri de la conturi nefolosite de mult timp, pn la antaj.

Spionaj comercial sau militar. Spionajul se refer aici la o incercare bine organizata de un competitor sau de o alta ara de a fura programe, idei patentabile, secrete comerciale, tehnologie etc.

Aceste categorii difera enorm intre ele, deci efortul investit n protejarea sistemelor depinde de cine este presupusul inamic.

O alt categorie de probleme de securitate este virusul. Pe scurt, un virus este o secven de cod care se cloneaza i introduce anumite defeciuni (creatorul virusului poate fi i el considerat un intrus, cu cunostiinte avansate). Diferenta intre un intrus simplu i n virus este ca primul este o persoana reala, un individ care incearc sa intre n sistem i sa provoace pagube, iar ultimul este un program scris de o astfel de persoana, care este lansat n sperana ca va ajunge ntr-un loc unde va provoca stricciuni. Intruii folosesc atacuri specializate, tintind anumite obiective, n timp ce creatorul virusului vrea sa provoace defecte la modul general, indiferent unde i cui.

1.3 Pierderile accidentale de dateInafar de neajunsurile provocate de intrui i de virui, datele se mai pot pierde i accidental. Cauze comune:

Acte divine: incendii, calamitai naturale, rzboaie, sau ghinion pur.

Erori hardware sau software: funcionare incorect a CPU, imposibilitatea citirii suportului de memorie, erori de telecomunicaie, erori de program etc.

Erori umane: introducere incorect a datelor, incarcarea unui CD-ROM gresit, suport pierdut sau alte greeli similare.

O soluie este pstrarea unor copii de siguranta, preferabil n zona diferit de locul de origine. Dei este mai usor de implementat protecia impotriva accidentelor, dect impotriva intruilor, cele mai multe pagube sunt provocate de prima categorie dect de ultima.

2. Mecanisme de protecie

Este mai usor de realizat un mediu de lucru sigur dac se cunoaste clar ceea ce trebuie protejat i ce este permis i ce nu. Exist multe mecanisme de protecie i soluii. n continuare sunt prezentate cteva modele generale i metodele de implementare.

2.1 Domenii de protecie

Un computer are multe obiecte de protejat, att hardware (CPU, segmente de memorie, hard-disk, periferice), ct i software (procese, fiiere, baze de date etc).

Fiecare obiect are un nume unic dupa care este identificat, i asupra lui este permis realizarea unui numar finit de operaii de ctre procese. Evident, este necesar o cale de a bloca accesul proceselor n locaii neautorizate. De asemenea, mecanismul trebuie sa poat constrange procesele la un set de operaii atunci cand este nevoie (exemplu: un proces poate citi un fiier, dar nu poate scrie n el).

Un domeniu este un set de perechi (obiect - drepturi). Fiecare pereche specifica un obiect i un subset de operaii pe care poate sa le execute. Un drept, n acest context nseamn permisiunea de a executa o anumit operaie. Deseori, un domeniu corespunde unui singur utilizator, specificandu-i ce poate face i ce nu, dar poate fi extins i la un grup de utilizatori. Exemplu: membrii unei echipe de programare care lucreaz la un proiect aparin toti aceluiai domeniu i pot accesa toti fiierele proiectului. Modul n care obiectele sunt alocate unui domeniu se face n funcie de cine are acces i la ce. Un concept de baz este POLA (Principle Of Least Authority), sau strictul necesar. n general, securitatea este mai stricta i mai eficient implementat cand fiecare domeniu are un minim de obiecte i de privilegii, suficiente pentru a-i indeplini sarcinile, i nimic mai mult.

Figura 2 ilustreaz 3 domenii, indicand fiecare obiect din domeniu i drepturile asociate (R citire, X execuie, W scriere). De observat c imprimanta 1 (Printer1) se afl n doua domenii simultan i are aceleai drepturi n ambele. La fel i fiierul 1 (File1), ns are drepturi diferite n fiecare domeniu.

FIG. 2: Domenii de protecie

In fiecare moment de timp, fiecare proces ruleaz ntr-un domeniu de protecie. Altfel spus, exist o colectie de obiecte pe cale le poate accesa, iar pentru fiecare obiect are un set de drepturi. Procesele pot s i treaca dintr-un domeniu n altul n timpul execuiei, totui, regulile de schimbare a domeniului sunt puternic dependente de sistem.

Un exemplu concret: UNIX. Aici, domeniu unui proces este delimitat de UID i GID al lui. Cand un utilizator se logheaza, shell-ul lui primete UID i GID coninute n fiierul cu parola, iar acestea sunt mostenite i de procesele pe care le va incepe acesta. tiind combinaia (UID, GID), se poate crea o list complet a tuturor obiectelor (fiiere, dispozitive I/O descrise de fiiere specializate etc,) care pot fi accesate, indiferent dac se scriu, citesc sau executa. Dou procese cu aceeai pereche (UID, GID) vor avea acces la acelai set de obiecte. Procesele cu (UID, GID) vor avea acces la seturi diferite de fiiere, dei se pot intercala.

In plus, fiecare proces n UNIX este divizat n doua: jumtatea pentru utilizator i cea pentru kernel. Cand procesul iniiaza un apel de sistem, va comuta de la partea de utilizator la cea de kernel. Aceasta are acces la un set diferit de obiecte fa de jumtatea pentru utilizator. Exemplu: kernel-ul poate accesa toate paginile din memoria fizica, ntregul hard-disk, i toate celelalte resurse protejate. Deci apelul de sistem iniiaz o comutare de domeniu.

Cand un proces face o execuie pe un fiier cu bitul SETUID sau SETGID setat, va lua un UID sau GID efectiv nou. Cu o combinaie (UID, GID) diferit, are la dispozitie noi fiiere i noi operaii. n final, rularea unui program cu SETUID sau SETGID produce o comutare de domeniu.

O problema este modul n care sistemul stie ce obiect aparine carui domeniu. Conceptual, se poate imagina o matrice, unde randurile sunt domeniile i coloanele sunt obiectele. Fiecare intrare listeaza drepturile, dac exist, pe care domeniul le are pentru obiectul respectiv. Matricea pentru domeniile din figura 2 se afla n figura 3. tiind aceasta matrice i numarul domeniului curent, sistemul poate spune dac este permis accesul la un anumit obiect, din punctul de vedere al citirii, scrierii sau execuiei.

Obiect

File1File2File3File4File5File6Printer1Plotter2

1RRW

2RRWXRWW

3RWXWW

FIG. 3: Matrice de protecie

Comutarea domeniului poate fi usor inclus n modelul matricii considernd domeniul ca obiect, cu operaia de intrare (E Enter). Figura 4 ilustreaz aceeai matrice de mai sus, cu deosebirea ca acum sunt incluse i cele 3 domenii ca obiecte. Se observa ca procesele din domeniul 1 care comuta n domeniul 2 nu se pot intoarce. Acesta situatie modeleaz execuia unui program cu SETUID n UNIX. (Alte comutri nu sunt permise n acest exemplu).

Obiect

File1File2File3File4File5File6Printer1Plotter2Domeniu1Domeniu2Domeniu3

1RRWEnter

2RRWXRWW

3RWXWW

FIG 4: Matrice de protecie cu domenii ca obiecte.

2.2 Liste de control al accesuluiPractic, stocarea efectiv a matricii din figurile precedente se face foarte rar, deoarece este foarte mare. Majoritatea domeniilor nu au acces deloc la multe obiecte, deci ocuparea unor locaii cu spaii goale nseamn o mare riipa de memorie. Doua situatii mai pracice sunt stocarea matricii numai pe randuri sau pe coloane, i apoi pstrarea elementelor care nu sunt goale (numai a lor). Dei par similare, cele doua metode sunt foarte diferite.

2.2.1 Stocarea pe coloane

Aceasta metod const n asocierea fiecarui obiect a unei liste ordonate care conine toate domeniile care pot accesa domeniul, mpreun cu modul de acces. Aceasta lista se numeste lista de control al accesului (ACL Access Control List), i este ilustrata n figura 5. Se observa 3 procese, fiecare aparinand unui domeniu diferit, A, B, C, i 3 fiiere F1, F2, F3. Pentru simplitate, se presupune c fiecare domeniu corespunde unui singur utilizator (user-ii A, B i C, denumiti i subiecti).

Spaiul utilizatorului

Spaiull kernel-ului

FIG 5: Folosirea listelor de control al accesului.

Fiecare fiier are asociat un ACL. Fiierul F1 are doua intrri n ACL-ul lui. Prima indica faptul ca orice proces iniiat de utilizatorul A poate ciri i scrie n fiier. A doua intrare spune ca orice proces al utilizatorului B poate citi F1. Toate celelalte accesri ale acestor utilizatori sunt nepermise, iar cele ale altor user-i sunt total interzise. De reinut ca drepturile sunt date de ctre utilizator, nu de proces, i ca fiierul F1 poate fi accesat de orice proces de la A (nu conteaza ID-ul lui).

Fiierul F2 are 3 intrri n ACL: A, B i C pot citi fiierul, iar B poate sa il i scrie. F3 este executabil numai de ctre B i C, iar B poate scrie.

Acest exemplu ilustreaz funcionarea de baz a proteciei cu ACL, n realitate se folosesc sisteme complexe. De asemenea, i numarul de drepturi este mai mare, unele aplicndu-se tuturor obiectelor, altele numai anumitor obiecte. Exemplu de drepturi valabile pentru toate obiectele: destroy i copy. Exemplu de drepturi specifice anumitor obiecte: append message pentru obiectele din cutia potal i sort alphabetically pentru obiectul director.

Pn acum am analizat cazul n care campurile din ACL se refereau la utilizatori individuali. Majoritatea sistemelor suporta i grupuri de utilizatori. Grupurile au nume care pot fi incluse n ACL. Exist 2 variante n privinta semnificatiei grupurilor. n unele sisteme fiecare proces are un ID de utilizator (UID) i un ID de grup (GID). n astfel de sisteme, campurile au forma aceasta:

UID1, GID1: drepturi_1; UID2, GID2: drepturi_2 ...

In aceste conditii, cand se face o cerere de acces la un obiect, se face o verificare folosind UID i GID apelantului. Dac se afla n ACL, sunt gasite i drepturile, iar dac nu, accesul nu este permis. Folosind astfel grupurile, se poate introduce conceptul de rol. Exemplu: fie A administratorul de sistem (aparine grupului sysadmin). Se prespune ca firma are niste departamente, iar M face parte din cel al contabililor. Membrii departamentului aparin grupului CNT i au acces la computerele firmei pentru baza de date financiara. O parte din ACL arata ca n figura urmtoare:

FiierACL

ParolaM, sysadmin: RW

Finante.dataang1, CNT: RW; M, CNT: RW...

FIG 6: Doua liste de control al accesului

Dac M incearc sa acceseze unul din aceste fiiere, rezultatul depinde de grupul n care este logat. La logare, sistemul cere sa aleaga un grup, sau exist nume i parola diferit pentru fiecare, pentru a fi separate. Scopul este de a preveni accesul la parola cand M este logat ca aparinand grupului de contabili. Exist inca cazuri cand anumite fiiere pot fi accesate indiferent de grupul n care este logat. Astfel se introduce conceptul de wildcard, care nseamn toata lumea. De exemplu:

M, *:RW

pus la fiierul Parola da posibilitatea accesului la parola indiferent de grupul pe care este logat. O alta situatie este aceea n care unui utilizator care aparine oricarui grup care are anumite drepturi, sa i se poat permite accesul. Avantajul aici este acela ca un utilizator care aparine mai multor grupuri nu este nevoit sa schimbe grupul pentru a avea anumite drepturi. Dezavantajul este un grad mai mic de incapsulare. Folosirea grupurilor i a wildcard-urilor introduce posibilitatea de a bloca selectiv accesul unor utilizatori la fiier. Exemplu:

V, *: ; *,*: RWAceasta intrare da permis de scriere i citire tuturor, mai putin lui V. Aceasta metoda funcioneaza pentru ca intrrile sunt scanate n ordine, iar prima este ce care se aplica. Cand se descopera potrivirea cu numele la verificare, lui V ii sunt alocate drepturile specificate, n cazul de fa nici unul, iar ce urmeaza n intrare dupa acestea nici nu mai este luat n considerare.

O alta metoda de a utiliza grupuri este aceea de a nu avea ACL care sa contina perechi (UID, GID), ci numai un UID sau GID. Exemplu:

D:RW; P: RW; CNT:RW;

Aceasta intrare semnifica faptul ca D, P i toti membrii CNT au drepturi de R i W pentru fiier. Uneori se intampla ca detinatorul fiierului sa anuleze anumite drepturi. n ACL, acest lucru se face simplu, editand intrrile. Totui, ACL este verificat de sistem numai la deschidere, deci modificarea va avea loc la urmtoarea deschidere. Orice fiier care este deja deschis va avea aceleai drepturi pe care le avea la deschidere, chiar dac cel care le-a deschis nu mai este autorizat sa le foloseasca.

2.2.2 Stocarea pe linii. Accesul folosind capabilitati

Cealalta metoda de reorganizare a matricii din figura 4 se face pe randuri. Cand se folosete aceasta metoda, fiecare proces are asociata o lista de obiecte pe care le poate accesa, mpreun cu o indicatie care specifica de operaii sun permise pe fiecare, altfel spus, domeniul lui. Aceasta lista se numeste lista de capabilitati (C-list) i fiecare obiect din ea se numeste capabilitate. n figura 7 este un set de 3 procese i capabilitatile lor. Fiecare capabilitare permite proprietarului anumite drepturi asupra unui anumit obiect. n figura 7, procesul utilizatorului A poate citi fiierele F1 i F2. n general, o capabilitate consta ntr-un fiier (sau, mai general, un obiect) identificator, i o harta de biti (bitmap) care descrie drepturile. n sistemele similare UNIX, identificatorul de sistem este, cel mai probabil, numarul nodului i (i-node). Listele de capabilitati sunt ele insele obiecte care pot fi indicate de alte liste de capabilitati, facilitand impartirea pe subdomenii.

Spaiu user

Spaiu kernel

FIG 7: La utilizarea listelor de capabilitati, fiecare proces are o lista

Este evident ca lista de capabilitati trebuie protejata de utilizatori. Sunt cunoscute 3 metode. Prima necesita arhitectura cu etichete, care din proiectarea hardware presupune ca fiecare cuvant din memorie sa aiba un bit n plus (o eticheta) care sa spuna dac acel cuvant conine o capabilitate sau nu. Acest bit poate fi modificat numai de programele care ruleaz n mod de kernel. Au fost construite masini cu arhitectura pe etichete, obtinandu-se performante rezonabile (ex: IBM AS/400).

A doua metoda este pstrarea C-list-urilor n interiorul sistemului de operare. n acest caz, capabilitatile sunt referite prin pozitia lor n lista.

A treia metoda consta n pstrarea C-list-urilor n spaiul utilizatorului, dar gestiunea lor sa se faca criptografic, astfel nct utilizatorii sa nu le poat modifica. Aceasta metoda este folosita n sistemele distribuite i funcioneaza n modul urmtor. Cand un proces client trimite un mesaj unui server de a crea un obiect pentru el, serverul il creaza i genereaza un numar lung, aleator (campul de verificare) pe care il trimite mpreun cu obiectul. n tabelul de fiiere al serverului este rezervat un slot pentru obiect i campul de verificare este stocat acolo mpreun cu adresele blocurilor discului. n termeni UNIX, campul de verificare este stocat n server n nodul i. Nu este trimis inapoi la user i nu este pus niciodata pe retea. Serverul apoi genereaza i intoarce o capabilitate utilizatorului, avnd forma ilustrat n figura 8.

ServerObiectDrepturif(Obiecte, Drepturi, Verificare)

FIG 8: Capabilitate protejata criptografic

Capabilitatea returnata conine identificatorul serverului, numarul obiectului (indicele n tabelul serverului) i drepturile, stocate ca bitmap. Pentru un obiect nou creat, toate drepturile sunt disponibile (proprietarul poate face orice). Ultimul camp consta n concatenarea obiectului, drepturilor i a campului de verificare, realizata printr-o funcie criptografica neinversabila f.

Cand utilizatorul incearc sa acceseze obiectul, trimite capabilitatea ctre server, ca parte a cererii, Serverul extrage numarul obiectului pentru a-l identifica n tabela lui i calculeaza f(Obiect, Drepturi, Verificare), luand primii 2 parametrii din capabilitate i al treilea din tabela proprie. Dac rezultatul este egal cu al patrulea camp din capabilitate, cererea este servita; altfel, este respins. Dac un utilizator incearc sa acceseze fiierele altcuiva, nu va reui deoarece al patrulea camp nu va fi obtinut corect.

Un utilizator poate cere serverului sa produca o capabilitate mai slaba, de exemplu, pentru acces read-only. Mai intai, serverul verifica validitatea capabilitatii. Dac rezultatul este pozitiv, calculeaza f(Obiect, Drept_nou, Verificare), i genereaza o noua capabilitate pe care o stocheaza n al patrulea camp. Aceasta noua capabilitate este trimisa la procesul care a iniiat cererea. Utilizatorul poate acum sa o trimita cuiva printr-un mesaj. Dac acel cineva seteaza bitii de drepturi care ar trebuie sa fie pe 0, serverul va detecta acest lucru cand capabilitatea este folosita, deoarece valoarea funciei f nu corespunde cu campul de drepturi false.

Pe langa drepturile specifice dependente de obiect, capabilitatile (i cele protejate de kernel i criptografic) au i drepturi generice aplicabile tuturor obiectelor. Exemple:

1. Copierea capabilitatii: crearea unei noi capabilitati pentru acelai obiect;

2. Copierea obiectului: crearea unui obiect duplicat cu o capabilitate noua;

3. tergerea unci capabilitati: eliminarea unei intrri din C-list, fr a afecta obiectul;

4. Distrugerea obiectului: eliminarea permanenta a obiectului i a capabilitatii.

De reinut ca n sistemele bazate pe capabilitati, revocarea accesului la un obiect se face greu n versiunea gestionata de kernel. Este dificil pentru sistem sa gaseasca toate capabilitatile unui obiect pentru a le modifica, din moment ce ele pot fi stocare n C-list-uri pe tot discul. O abordare este aceea ca fiecare capabilitate sa indice ctre un obiect indirect, n locul obiectului adevarat. Pstrand un obiect indirect, sistemul poate intrerupe oricand legatura, invalidand toate capabilitatile.

In cealalta schema, revocarea este mai usoara. Trebuie schimbat doar campul de verificare stocat mpreun cu obiectul, i toate capabilitatile existente sun invalidate. ns nici una din scheme nu permite revocarea selectiva, o problema majora n sistemele bazate pe capabilitati.

Pe scurt, ACL-urile i capabilitatile au proprieti complementare. Capabilitatile sunt eficiente deoarece nu este necesar nici o verificare, n timp ce la ACL, o cautare (uneori lunga) trebuie facuta n tot ACL-ul. Dac grupurile nu sunt suportate, atunci permiterea accesului tuturor se face prin enumerarea tuturor utilizatorilor n ACL. Capabilitatile permit incapsularea usoara a unui proces, n timp ce ACL nu. Totui, ACL permit o revocare selectiva a drepturilor, lucru care nu se poate face n cazul capabilitatilor. Aditional, apar probleme dac se elimina capabilitatea i rmne obiectul, sau invers (se elimina obiectul i rmne capabilitatea). Acest neajuns nu apare la ACL.

3. Sisteme trusted. Baza calculului trustedSistemele trusted sunt sisteme care au fost declarate sigure i care indeplinesc conditiile de securitare. La baza fiecarui sistem trusted se afla un TCB (Trusted Computing Base) care consta n tot ceea ce nseamn hardware i software utilizat pentru a creste securitatea. Dac TCB funcioneaza corect, securitatea sistemului nu poate fi compromisa, indiferent dac orice altceva nu funcioneaza corespunzator.

In general, TCB consta n majoritatea hardware-ului (mai putin dispozitivele I/O care nu afecteaza securitatea), o portiune din kernel-ul sistemului de operare i majoritatea sau chiar toate programele utilizatorului. Funciile sistemului de operare care trebuie sa faca parte din TCB includ crearea de procese, comutarea lor, managementul memoriei, i o parte a managementului de fiier i de I/O. ntr-o proiectare sigura, TCB este separat de restul sistemului de operare. O parte importanta a TCB este monitorul de referinte, ilustrat n figura 9. El accepta toate apelurile de sistem care implica securitatea, ca deschiderea de fiiere, i decide dac ar trebui procesate sau nu. Permite ca toate deciziile de securitate sa se ia ntr-un singur loc, fr posibilitatea de a trece peste controlul acesta.

Se fac cercetari pentru a reduce dimensiunea TCB de la cateva milioane de linii de cod la cateva zeci de mii. n kernel-ul sistemului de operare MINIX 3 ruleaz doar 4000 de linii de cod, restul ruland ca set de procese ale utilizatorului. Unele din ele, ca sistemul de fiiere i managerul de procese, sunt parte a TCB, deoarece pot compromite usor securitatea sistemului.

4. Modele formale de sisteme sigure

Matricile de protective nu sunt statice, se schimba frecvent, pe masura ce se creaza noi obiecte, se distrug cele vechi, sau proprietarii decid sa aduge sau sa anuleze drepturi. S-a incercat sa se proiecteze sisteme n care aceasta matrice sa se poate schimba mai usor. n 1976, au fost identificate 6 operaii primitive: creare/tergere de obiect i de domeniu, inserarea la stanga i inserarea la dreapta. Aceste primitive pot fi combinate n comenzi de protecie, pe care utilizatorul le poate executa pentru a modifica matricea. ns nu sunt direct executabile, de exemplu, cand se creaza un obiect nou, sistemul verifica mai intai dac nu cumva exist deja altul cu acelai nume. n orice moment, matrice determina de poate face un proces ntr-un domeniu, nu ce este autorizat sa faca. Sistemul intareste ceea ce este inregistrat n matrice. Setul tuturor matricelor posibile poate fi divizat n doua seturi disjuncte: setul starilor autorizate i cel al starilor neautorizate. n 1976 s-a dovedit ca n cazul unei configuratii arbitrare pentru un mecanism de protecie arbitrar, securitatea este relativa. ns, pentru un sistem specific, se poate dovedi dac se poate trece dintr-o stare autorizata ntr-una neautorizat.

5. Securitatea multi-nivel

Majoritatea sistemelor de operare permit utilizatorilor individuali sa hoarasca cine poate citi sau scrie fiierele i obiectele lor. Aceasta politica se numeste controlul discretionar al accesului. Acest sistem funcioneaza bine n anumite situatii, dar nu i n cazul n care este necesar un nivel de securitate mai avansat (in domeniu militar, spitale, departamente ale marilor companii etc). n aceste domenii se folosete controlul accesului delegat.

5.1 Modelul Bell-La Padula

A aparut n 1973, creat de Bell i La Padula, i este cel mai raspandit model de securitate multi-nivel. A fost proiectat pentru a gestiona securitatea n domeniul militar, dar s-a raspandit i n alte zone. Aici, documentele sunt claificate pe nivele de acces: libere, confidentiale, secrete i super-secrete (top secret). La fel i personalul care are acces la ele. Un proces rulat de un utilizator cu un anumit grad de acces, are i el acelai nivel.

Acest model are reguli care gestioneaza modul n care informaiile sunt accesate:

1. Proprietatea simpla de securitate: un proces care ruleaz la nivelul de securitate k poate accesa numai obiecte aflate la nivelul lui sau mai jos.

2. Proprietatea *: Un proces care ruleaz la nivelul de securitate k poate scrie numai obiecte la nivelul sau sau mai sus. Pe scurt, procesele pot citi n jos i scrie n sus, invers nu. Dac sistemul implementeaza riguros aceste 2 reguli, atunci se poate demonstra ca nu exist nici o scurgere de informaii de la nivelele mai inalte. Proprietatea * a fost denumita asa din simplul motiv ca autorii nu au gasit un nume mai potrivit pentru ea, i au pus * pn la stabilirea unuia (i * a ramas).

Modelul Bell-La Padula se refer la structura de organizare, dar n final, trebuie ntrit de sistemul de operare. O metoda de implementare este alocarea unui nivel de securitate fiecarui utilizator, care sa fie stocat mpreun cu informaiile specifice lui (ca UID i GID). La logare, shell-ul va prelua nivelul de securitate al utilizatorului. Dac un proces care ruleaz la un nivel de securitate k incearc sa acceseze un fiier sau un obiect aflat la un nivel mai mare de securitate, cererea va fi respins.

5.2 Modelul BibaSingurul avantaj al modelului precedent este acela ca permite pstrarea secretelor, dar nu asigur i integritatea datelor. Informaiile false pot urca de la personalul cu nivel de securitate inferior pn la cel mai inalt nivel, deci o persoana neautorizat poate induce un grad mare de dezinformare, acordandu-i-se dreptul de scriere la fiierele/obiectele din niveluri mai inalte. Pentru a garanta integritatea datelor, modelul Biba inverseaz cele doua proprieti:

1. Proprietatea integritatii simple: un proces care ruleaz la un nivel de securitate k poate numai sa scrie obiecte aflate la un nivel inferior (sau la acelai nivel). Nu poate scrie n sus.2. Proprietatea *: un proces care ruleaz la un nivel de securitate k poate numai sa citeasca obiecte aflate la un nivel superior (sau la acelai nivel). Nu poate citi n jos.Cele doua modele se afla n conflict direct, deci este foarte dificil implementarea simultan a avantajelor amndurora.

6. Canalul acoperit o metoda de a ocoli mecanismele de protecieSingura problem este c toate aceste modele i sisteme presupuse sigure nu funcioneaza. Chiar i ntr-un sistem care are un model adecvat de securitate implementat i care este dovedit ca fiind sigur, vor exista scurgeri de informaii (chiar dac s-a demonstrat matematic c acest lucru nu este posibil).

In 1973, Lampson a formulat un model pentru un singur sistem care folosete tehnica time sharing, dar aceleai idei pot fi adaptate i pentru LAN-uri i alte medii cu utilizatori multiplii. n cea mai simpla form, implica 3 procese care ruleaz pe o masina protejata. Primul proces doreste ca al doilea sa execute o sarcina, dar cele doua procese nu au incredere unul n celalalt. Exemplu: un client folosete un server care il ajuta sa completeze un formular bancar. Clientul nu are deplina incredere n server, pentru ca acesta poate stoca datele financiare i trimite cuiva neautorizat. Serverul nu are incredere n client deoarece acesta poate incerca sa fure programul care gestioneaza datele financiare.

Al treilea proces este un colaborator, care lucreaz mpreun cu serverul pentru a fura datele clientului. De obicei, serverul i colaboratorul aparin aceluiai utilizator. n figura urmtoare, sunt ilustrate cele 3 procese

FI

FIG 10: Clientul, serverul i colaboratorul. Serverul are o scurgere de

informaii prin canal

Din punctul de vedere al proiectantului, scopul este de a incapsula serverul astfel nct sa nu lase colaboratorul sa preia informaii de la el. Folosind matricea de protecie, putem usor garanta ca serverul nu poate comunica ci colaboratorul scriind un fiier la care el sa aiba acces. Nici prin mecanismul de comunicare inter-proces nu poate trimite informaii colaboratorului. ns exist alte canale de comunicaii mai subtile. De exemplu, serverul poate comunica printr-un stream binar astfel: pentru a trimite un bit 1, va calcula intens pentru o anumit perioada de timp. Pentru a trimite un 0, nu va avea acivitate o perioada de timp identica.

Colaboratorul poate incerca sa detecteze bitii, monitorizand cu atentie timpii de raspuns. Va primi un raspuns mai bun cand srverul trimite 0-uri, dect atunci cand trimite 1. Acest canal de comunicaii se numeste canal ascuns. Este afectat de zgomot, dar folosind o codare corectoare de erori, se pot transmite fiabil informaii. Un neajuns al acestui canal ascuns este banda limitata, deci introducerea unei codari ar limita i mai mult latimea de banda, ns chiar i asa se obtin suficiente date. Modularea utlizarii CPU nu poate fi eliminata prin mecanisme ca matricea de protecie.

i rata de paginare poate fi modulata (pentru un 1: multe page faults; pentru un 0: 0 page faults). Dac sistemul permite o blocare a fiierelor, atunci serverul poate bloca unele fiiere pentru a indica un 1, i debloca pentru a indica un 0. Pe unele sisteme, este posibil ca un proces sa detectese dac un fiier e blocat sau nu, chiar dac nu il poate accesa. n figura urmtoare este exemplificat un astfel de procedeu (se transmite un ir: 10110):

FIG 11: Canal ascuns folosind blocarea unui fiier.

Un alt aspect care poate compromite securitatea unui sistem este factorul uman. Un exemplu graitor: la o mare companie (al carei nume nu a fost facut public) s-a anuntat ca n zilele urmtoare va soi o comiie care va evalua securitatea ntregului sistem informaic. ntr-o noapte, niste membrii ai comiiei au aruncat cateva stick-uri de memorie USB n parcarea firmei. Dimineata, personalul le-a gasit i le-au introdus n calculatoare pentru a le verifica. ns conineau un virus nou care a reusit sa adune toate parolele n cursul a cateva zile. [6]

Concluzie

Securitatea este un aspect foarte important n domeniu calculatoarelor, mai ales n ziua de astazi, cand majoritatea informaiilor importante sunt stocate i prelucrate electronic (nu numai), de la e-mailul personal pn la informaiile bancare i documentele oficiale (carti de identitate, pasapoarte etc). Majoritatea sistemelor de operare implementeaza mecanisme complexe de protecie, unele implementate pe baza celor amintite mai sus, altele folosind tehnici mult mai avansate, ns intotdeauna vor exist ameninari care creaza necesitatea inventarii unor metode noi de protecie.

Bibliografie:

1. www.wikipedia.com.

2. http://www.cs.odu.edu/~mukka/cs772f05/Lectures/securitymodels.pdf.

3. http://www.softpanorama.org/Access_control/Security_models/biba_model.shtml.

4. nathanbalon.com/projects/cis576/Biba.ppt5. Andrew S. Tanenbaum: Modern Operaing Systems, 3-rd Edition, Editura Pearson Prentice Hall, 2008.6. Seminar pe probleme de securitate i metode de protecie, Galaciuc, 2008.

Partea a II-a. Principalele tipuri de atac la sistem1. Atacuri din interiorul sistemului

Spre deosebire de atacurile la sistem survenite din exterior, cele din interior sunt realizate de persoane care fac parte din companii de profil (programatori sau ali angajai) i care au cunotine avansate asupra sistemului in cauz. In cele ce urmeaz o s exemplificm cazurile cele mai intlnite in trecut. Fiecare dintre aceste exemple se deosebete prin cine atac i ce se urmrete prin atacul respectiv.

1.1 Bombe logice

In perioadele de masive disponibilizri chiar i programatorii incep s-i fac griji in legtur cu pierderea stabilitii locului lor de munc. Cteodat unii dintre acetia iau in calcul posibiliti precum antajul indirect, strategia fiind aplicat prin introducerea in sistem a unor secvene de program numite bombe logice. Acestea constau in coduri scrise de actuali angajai ai unei companii, introduse in sistem in mod secret. Atta timp cat programatorul respectiv introduce parola programului zilnic, acesta rmne inactiv. Astfel, in momentul in care programatorul este inlturat fara preaviz din sistem i nu-i mai introduce parola, bomba logic se activeaz. Aceast activare poate avea diferite consecine nefaste, conform instructiunilor introduse de creator: tergerea discului, tergerea de fiiere in mod aleatoriu, realizarea de schimbri greu de detectat in programe importante, criptare de fiiere. In aceast situaie compania este pus in situaia dificil de a contacta poliia sau de a reangaja programatorul respectiv pentru a face reparaia necesar contra unuei sume mari de bani. In al doilea caz compania se expune la posibilitatea plantrii unor noi bombe, in timp ce in primul caz, risc s nu gseasca soluia problemelor create. Cteodata aceste bombe logice sunt programate s acioneze la un moment dat de timp i in acest caz vorbim de bombe programate.

1.2 Capcane

O alta metod de a ataca din interior securitatea sistemului este reprezentat de capcane. Aceast problem este creat de un cod introdus in sistem de un programator de sistem care realizeaza de obicei verificri de rutin. De exemplu, un programator poate s adauge cod in programul de logare pentru a las s se conecteze la sistem pe oricine cu un id prestabilit de el, indiferent de parola introdus. Exemplu:

while(true)

{

v=check_validity(name,password);

if(v) break;

}

while(true){

v=check_validity(name, password);

if(v|| strcmp(name, user)==0) break;

}

Prima secven de program este cea normal. In a doua, apelnd functia strcmp se verific dac user-ul introdus este cel presetat de programator. La introducerea id-ului respectiv, logarea se realizeaz indiferent de parola introdus.

O posibilitate pentru companii de a prevenii aceste logari este s realizeze periodic verificarea codurilor scrise. O dat ce programatorul a terminat implementarea unui cod acest modul trebuie verificat si stocat intr-o baza de date. Toi programatorii trebuie s se intlneasca periodic s-i explice in faa celorlali codurile realizate, linie cu linie. Aceste msuri reduc substanial posibilitatea unor atacuri la sitem de acest tip.

1.3 Colectarea de parole

La acest tip de atac, cel care acioneaz este un utilizator legitim care incearc s obin parolele de logare a altor utilizatori. Este o tehnic in general intlnit la organizaiile ale cror LAN-uri sunt formate din multe calculatoare folosite de useri multiplii. Un exemplu este cazul universitilor care dispun de sli de calculatoare unde studenii se pot loga la orice calculator.

Normal, cnd nimeni nu este logat pe un calculator, in sistemul UNIX de exemplu, apar pe ecran dou locaii unde pot fi tastate id-ul si parola. Cnd utilizatorul le introduce, acesta se logheaza la calculatorul respectiv.

Putem ins considera si un alt scenariu. Un utilizator ru intenionat, scrie un program care afieaza ecranul prezentat mai sus, cu cele dou locaii respective. Cnd un alt utilizator se loghez cu userul si parola, acestea sunt pstrate intr-un fiier. In acest moment contul utlizatorului ru intenionat se inchide, iar pe ecran apare mesajul c utilizatorul pgubit a greit parola. Acesta reincearc i de aceast dat logarea se realizeaz cu succes, dar parola lui se afl i in posesia altcuiva. Deoarece acum utilizatorul care a folosit programul are 2 parole de logare, acesta continu in acest fel colectarea de alte parole, aciunea lui fiind din ce in ce mai rapid cu ct numrul de calculatoare pe care e logat ilegal si actioneaz programul respectiv este mai mare.

O soluie pentru inlturarea acestui risc este de a implementa inceperea secvenei de logare cu o combinaie de taste care nu pot fi implementate prin programe. Windows-ul folosete combinaia CTRL-ALT-DEL in acest scop. In acest caz, cnd un utilizator incepe logarea prin tastarea acestor taste, userul care era logat (cel ru intenionat) este automat delogat, mecanismul de logare avnd in acest fel loc in mod sigur. Aceast cale nu poate fi ocolit prin niciun fel de alt mecanism.

2. Expluatarea erorilor conceptuale de program (code bugs)

Dup ce am studiat modalitaile in care securitatea poate fi atacat din interior, a venit timpul s studiem cum poate fi atacat sistemul din exterior, in general prin Internet. Majoritatea mecanismelor de atac se folosesc de micile scpri ale sistemelor de programare sau a aplicaiilor precum Internet Explorer si Microsoft Office. Scenariul tipic sun in felul urmtor: cineva descoper o excepie la buna funcionare a unui program si apoi gsete o cale de a o expluata pentru a compromite calculatoare care ruleaz codul respectiv.

In urmtoarea seciune vom examina cteva metode de atac care folosesc erori de program des intlnite. La general, o cale de a expluata o astfel de excepie de funcionare este dat de urmtorii pai:

Rularea unei scanri automate de porturi pentru a cuta maini care accept conexiuni telnet.

Incercarea de logare prin ghicirea de id-uri si parole.

Odat intrat in sistem, se ruleaza programul cu intrri care se folosesc de bug-urile descoperite.

Activarea unor programe care ascult comenzi printr-un port IP.

Setarea ca programul s inceap mereu la incrcarea sistemului.

Acest script poate s ruleze pentru mult timp, existnd posibilitatea ca la un moment dat s-i ating scopurile.

Alt scenariu des intlnit este acela cnd se lanseaza un virus care infecteaz dispozitive prin intermediul Internetului, expluatnd de fiecare data bug-ul cnd ajung s ruleze pe masini noi. In majoritatea cazurilor programul va rula pe maina virusat, aproape intotdeauna fr ca proprietarul sa tie despre prezena acestuia.

2.1 Depirea capacitii buffer-ului (buffer overflow)

O surs de atac este dat de faptul c majoritatea sistemelor si cele mai multe programe de sistem sunt scrise in limbajul de programare C. Din pcate, niciun compilator C nu verific limitele tablourilor.

Un exemplu este evideniat in cele ce urmeaz:

Fig.2.1. Spaiul de adrese in cele trei cazuri

In prima figur vedem spatiul de adrese virtuale cnd ruleaz programul principal (main) si variabilele sale locale in stiv. La un moment dat este apelat o procedura A, conform celei de-a doua figuri. Secvena standard de apelare incepe prin impingerea adresei returnate pe stiva (push). Apoi controlul este transferat procedurii A care decrementeaz pointerul de stiv pentru a aloca loc de memorare a variabilelor sale locale.

S presupunem c scopul procedurii A este s achiziioneze calea ctre un fiier (file path) i apoi s-l deschid pentru a face altceva cu el. A dispune de un buffer B de dimensiune fix pentru a pstra numele fiierului. Dispunnd de un buffer de lungime fix uureaza cu mult programarea dect in cazul cnd s-ar determina mai inti dimensiunea necesar i apoi alocarea ei dinamic.

Din pcate acest raionament are un neajuns. S presupunem c utilizatorul programului furnizeaz un fiier al crui nume e de 2000 caractere. Cnd acest nume este folosit, acesta nu se va deschide, deoarece in sistemele de operare de obicei numele sunt limitate la 255 caractere. Atacatorul nu este afectat de acest lucru. Cnd procedura copiaz numele fiierului in buffer, dimensiunea numelui depete capacitatea buffer-ului i rescrie memorie, lucru ilustrat cu gri in figura a treia. Mai mult, dac numele este destul de lung, rescrie de asemenea adresa de intoarcere, aa c intoarcerea in programul principal nu se mai realizeaz corect, aceast adres fiind corupt. Astfel, execuia programului va sri la o adresa oarecare i ulterior va genera erori.

Dar dac numele fiierului conine un program valid i totul a fost bine sincronizat astfel inct adresa de intoarcere s corespund adresei de start a acestui program ? In acest caz, la terminarea execuiei procedurii A, nu se va mai continua executarea programului principal ci se va incepe execuia programului dat ca nume de fiier. Cu alte cuvinte, atacatorul a scris in memorie propriul program si a mijlocit executarea acestuia.

Pe acelai principiu se pot folosi i string-uri lungi, locaii de introducere de date destinate user-ilor sau orice altceva unde programatorul a creat un buffer fix pentru a manipula string-uri scurte.

Funcia gets a limbajului C, care citete un ir de caractere intr-un buffer fix, este foarte folosit la astfel de atacuri. Unele compilatoare chiar detecteaz folosirea acestei funcii si avertizeaz riscurile existente la implementarea ei.

Un alt exemplu de o gravitate i mai mare este cazul in care programul atacat este root-ul SETUID din UNIX. Codul inserat poate s faca acum apeluri de sistem pentru a integra codul atacatorului pe disc in root-ul SETUID, astfel inct cnd acesta este executat s aiba drepuri administrative de super user. Din acest moment, atacatorul devine de neoprit: poate schimba biblioteci, s descarce de pe Internet programe si script-uri pe care s le stocheze pe disc si s creeze procese pe care s le ruleze. Aceste procese pot asculta la un port IP specific ateptnd comenzi de afar, maina devenind un zombi. Pentru a inltura pierderea acestor disfuncionaliti cnd sistemul este restartat, atacatorul trebuie s seteze ca noile scripturi si programe s fie incrcate odata cu incrcarea sistemului. Acest lucru se realizeaz foarte simplu att in sistemele Windows ct i UNIX.

Majoritatea problemelor de securitate au drept cauz acest lucru i sunt greu de rezolvat deoarece foarte multe programe in C nu verific depirea capacitii bufer-ului dei este o operaie destul de simpl. Din pcate, faptul c unele programe sunt vulnerabile la un astfel de atac este detectat dup ce atacul a fost realizat cu succes.

2.2 Atacuri de tip format string

Unora din programatori nu le place s tasteze mult dei au capacitatea de a face acest lucru. Nu vd utilitatea folosirii de variabile cu nume lungi cnd o denumire de doar unul, dou caractere poate s-i ating la fel de bine scopul. Acest lucru este o aparen, deoarece uneori poate duce la erori de sistem catastrofice.

Vom da un exemplu destul de simplu. Considerm programul C urmtor:

char *s=Hello Bug!!!;

printf(%s,s);

Acest cod este corect din toate punctele de vedere. El afieaza un ir de caractere, funcia printf avnd dou argumente: formatul de ir de caratere (format string) %s si adresa acestuia in memorie, s.

Un alt programator poate scrie acelai cod astfel:

char *s=Hello Bug!!!;

printf(s);

Acest cod nu va genera eroare dar s in acest caz va fi un format string si nu adresa irului de caractere. Afiarea unui format string poate rescrie memoria, fiind un alt mecanism de care ali programatori mai experimentai pot profita. Ei pot acum s rescrie adresa de intoarcere a funciei printf in stiv i s sar in alta parte, de exemplu, in noul format string introdus. Aceast tehnica se numete atac de tip format string.

Astfel, inc o data, odata ce programatorul are posibilitatea s rescrie in memorie i s foreze salturi la alte noi coduri introduse, programul are toate drepturile pe care programul atacat le avea.

2.3 Atacul la intoarcerea in librria libc

Cele dou tipuri de atacuri prezentate anterior constau in introducerea in stiv de coduri si apoi executarea acestora, execuia programului principal ne mai avnd loc. O cale de a combate aceste atacuri este s marcm paginile stivei ca scrise/citite, dar fr s executam. Unitile centrale de prelucrare a procesoarelor Pentium moderne pot face acest lucru. Dar exist un alt tip de atac care va funciona chiar dac programele din stiv nu sunt executate. Este cunoscut ca fiind atacul la intoarcerea in librria libc.

Majoritatea programelor in C sunt legate de librria libc, care conine funciile cheie de care au nevoie aceste programe. O astfel de functie este strcpy care copiaz un ir de caractere de la o adres la alta. Aceast funcie poate fi pclit s copieze codul atacatorului in segmentul de date pentru a fi executat.

In urmtoarele dou figuri sunt reprezentate spaiul de adrese inainte si dup atac.

In prima figur observm stiva inainte ca programul main s apeleze o functie F. Presupunem c acest program ruleaz cu privilegii super user si are un bug care poate fi expluatat astfel inct s permit atacatorului s-i copieze codul in memorie. Se observ c dupa atac in locul adresei de intoarcere in main avem adresa strcpy-ului. Cnd strcpy se termin, codul va fi copiat in segmentul de date executabil, iar intoarcerea se va realiza tocmai la adresa de inceput a acestui cod. Din acest moment codul copiat va rula cu drepturile programului atacat si poate crea scripturi pentru a monitoriza porturi IP i s atepte comenzi. Si in acest caz maina atacat devine un zombi i poate fi folosit la transmiterea de spam-uri sau la lansarea atacurilor de tip denial-of-service.

Fig.2.2 Stiva inainte si dup atac

2.4 Depirea maximului dimensiunii acceptate in bii a unei variabile de tip Integer

Calculatoarele realizeaz operaii aritmetice cu numere de lungimi fixe, in general de 8, 16, 32 sau 64 bii lungime. Dac suma a dou numere depaete dimensiunea maxim in care poate fi reprezentat un integer are loc ceea ce se numete o depaire (overflow). Programele in C nu detecteaz acest tip de eroare ci doar stocheaz i folosesc aceast valoare incorect rezultat.

Acest inabilitate de a detecta depairi numerice poate fi folosit la un eventual atac. O cale de a face acest lucru este s se furnizeze programului ca parametrii 2 numere valide dar foarte mari, tiind deja c la adunarea lor va rezulta o depire.

De exemplu, unele programe grafice, la primirea unei imagini ca parametru, pot converti imaginea respectiv la alte dimensiuni. Dac dimensiunile dorite sunt gndite pentru a depi maximul admis, programul va calcula greit ct memorie ii trebuie pentru a stoca imaginea i va apela malloc pentru a aloca in acest caz un buffer mult prea mic. Ajungem din nou la depirea buffer-ului. Expluatri similare pot avea la realizarea sumei sau produsului a doi intregi cu semn +, rezultatul fiind de semn opus.

2.5 Atacuri prin injectare de cod

Este un alt caz cnd un program ajunge in urma unui atac s execute coduri fr ca cineva s realizeze acest lucru. S considerm un program care la un moment dat are nevoie s faca o copie unui fiier:

int main(int argc, char *argv[])

{

char sursa[100], dest[100], aux[205]=cp;

gets(sursa);

strcat(aux,sursa);

strcat(aux, );

gets(dest);

strcat(aux,dest);

system(aux);

}

In acest cod comanda cp este realizat prin intermediul funciei system, care la primirea parametrului cp, il execut ca pe o comand. Dac utilizatorul furnizeaz ca sursa fis1 i ca destinaie fis2, comanda executat este urmtoarea: cp fis1 fis2, care copiaz coninutul fiierului fis1 in fis2.

Din pcate acest program poate mijloci ceea ce se numete tehnica injectrii de cod. S presupunem c user-ul folosete acest program i introduce ca prim parametru fis1 iar ca al doilea fis2; rm rf/. Comanda construita i executat in acest caz va fi:

cp fis1 fis2; rm rf/

Aceasta in prima faz copiaz fiierul fis1 in fis2, dar apoi incepe s tearg recursiv fiecare fiier i director din sistem, prin inermediul celei de-a doua comenzi introduse rm -rf/. Dac programul ruleaz cu drepturi de super user, atacul se va realiza cu succes, tergnd fiierele sistemului.

3. Malware

Precursorii acestui tip de programe au fost tinerii pasionai de domeniul IT care incepnd cu anii 90 au inceput s le dezvolte i s le rspndeasc in lume. Acest tip de software, care include cai Troien, virui, viermi, au fost incadrai in categoria malware (programe malicioase) i sunt foarte rspndii in lume in zilele noastre.

La inceput aceste programe nu au fost scrise cu scopuri precise sau in ateptarea unor remuneraii, dei pierderile materiale i de date erau la fel de mari. In limba engleza, faptul c acest software era scris mai mult in glum, fr anumite scopuri, s-ar traduce just for the heck of it, de unde a aprut denumirea programatorilor care se ocupau de aceste lucruri ca fiind heckeri.

Momentan lucrurile s-au schimbat, aceste programe fiind scrise la cerere, contra unor sume mari de bani. Majoritatea sunt concepute astfel inct s se imprtie foarte repede pe Internet i s infecteze ct mai multe maini. Cnd o maina este infectat, software-ul instalat furnizeaz adresa acesteia altor maini, care de obicei se afl in tri cu sisteme judiciare corupte. Pe maina infectat este de asemenea instalat o aplicaie de tip backdoor care permite celor care au furnizat malware-ul s comande respenctiva main. O astfel de main infectat se numete zombi, iar mai multe astfel de maini formeaza o colecie numita botnet, o prescurtare de la robot network.

O alt aplicaie care poate fi instalat pe o main infectat este una de tip keylogger. Acest program inregistreaz tot ceea ce s-a tastat la maina respectiv, lucrurile vizate in mod special fiind: numerele si codurile de identificare ale crilor de credit, date despre persoane pentru a fi utilizate la furturi de identitate.

Malware-urile sunt folosite i in industrie pentru a diminua competiia prin aciuni de sabotaj.

Dup aceste cteva exemple, ne punem inc intrebarea de ce acest soft se rspndete att de repede. Motivele sunt numeroase. 90 % din computerele din lume ruleaza un singur sistem de operare, Windows, care este usor de infectat tocmai prin natura lui user-friendly. In schimb, daca pe pia ar exista 10 sisteme de operare fiecare in proportie de 10%, rspndirea de malware care s funcioneze in cazul acestei diversificri ar fi drastic redus.

In continuare vom studia principalele tipuri de malware, cum sunt implementate si cum se rspndesc. Mai departe, in seciunea a treia vom examina metodele prin care ne putem proteja contra acestor atacuri.

3.1 Cai Troieni

O metod clasic de implementare a programelor malicioase este de a scrie programe foarte utile, care includ si cod malware. In acest fel oamenii vor downloada si instala aceste programe in mod voluntar, netiind c odata cu software-ul respectiv ii infecteaza calculatorul. Acest soft poarta numele de cal Troian prin analogie cu celebrul episod descris in Odisea lui Homer.

Cnd programul instalat este executat, se apeleaz o funcie care scrie malware-ul pe disc pentru a-l executa. Din acest moment, programul instalat poate realiza ceea ce a fost programat s faca: s tearg, s modifice sau s encripteze fiiere, s caute numere de cari de credit, parole, sau alte lucruri care pot fi folosite in mod ilegal. Mai mult, malware-ul realizeaz comenzile necesare pentru a asigura existena lui i dup restartarea calculatorului.

Aplicabilitatea acestui tip de atac const in faptul c autorul nu trebuie s fac nimic pentru a infecta calculatorul altor useri. Utilizatorii ii infecteaz singuri calculatorul.

O alt modalitate de infectare este aceea in care caii Troieni sunt inserai in directoare complicate, accesate foarte rar, numele lor fiind reprezentate de erori de comenzi foarte uzuale. Sansa ca cineva s comita o astfel de eroare este destul de mare. In cazul cel mai ru, daca un super user realizeaz aceast comanda greit malware-ul se activeaz, avnd drepturi depline asupra mainii. Cele mai multe programe se afl in /bin sau /usr/bin. S presupunem cprogramatorul ru intenionat introduce la in /usr/bin/X11 in care se afl i comanda foarte folosit ls. Dac un user tasteaz la in loc de ls, programul la se activeaza, ii realizeaz scopul, iar apoi semnaleaz ca la nu este o comand valid.

Aceste exemplificri nu sunt simple supoziii, ci fac parte din intmplri adevrate care au dus la numeroase pierderi materiale, de date sau de identitati.

Exemplu:

Keyloggerii sunt cei mai simpli troieni. Singura operaie pe care o realizeaz este aceea de a inregistra fiecare tast apasat de victima. In majoritatea cazurilor aceti troieni repornesc de fiecare dat cnd se incarc Windows-ul. Prezint posibilitatea de a lucra att in mod online ct i in mod offline. In modul online ei inregistreaz si trimit in mod direct informaia. Modul offline este activat in momentul in care victima nu mai este conectat la reea (internet), informaia inregistrat fiind salvat pe harddisk-ul victimei asteptnd s fie transferat.

Ca exemplu , Blue Pill si tehnica de detectare a acestuia, Red Pill. Denumirile acestora sunt date in analogie cu conceptele prezentate in Matrix si anume, daca se aleagea pastila albastra omul isi continua viata in Matrix fara sa stie ca aceasta este de fapt o iluzie (sistemul e compromis) iar daca alegea pe cea rosie, adevarata lume iesea la iveala, adica keylogger-ul este detectat si neutralizat.

3.2 Virui

Virusul este un program care se autoreproduce prin ataarea codului su altui program, analog viruilor biologici. El poate fi scris in orice limbaj de programare (de exemplu, assembler, C) i apoi este inserat intr-un program folosind un utilitar numit dropper. Programul infectat rezultat este apoi distribuit pe Internet, mai ales prin coleciile de software free. Programul poate fi un joc, o versiune piratat a unui soft comercial cutat sau orice altceva care poate fi cutat, dorit de ali utilizatori. Astfel acest program infectat este downloadat.

Odat instalat pe maina victimei, virusul nu actioneaz pn cnd programul respectiv nu este executat. La execuie, el incepe prin infectarea altor programe instalate pe maina respectiv dar nu acioneaza dect dup o perioad de timp cnd o mare parte din aplicaiile sistemului respectiv sunt corupte.

In continuare vom examina pincipalele 7 categorii de virui, clasificarea fiind fcuta dup tipul aplicaiilor afectate: viruii companioni, viruii care infecteaz programe executabile, cei care atac memoria, sectorul de boot si driver-ele, macro viruii i virui de tip cod surs.

Viruii companioni nu infecteaz propriu-zis programe dar ruleaz in acelai timp cu programul respectiv.

Pentru e explica conceptul mai usor propunem urmatorul exemplu: in MS-DOS cnd un utilizator tasteaza prog , MS-DOS prima dat caut un program numit prog.com. Dac nu-l gsete, caut un altul numit prog.exe. In Windows se intmpl acelai lucru cnd tastm Start si apoi Run. Doar c in zilele noastre majoritatea programelor au extensia .exe, fiierele de tip .com fiind foarte rare. Astfel deoarece extensia .com inc are intietate cnd se apeleaz un program la linia de comand, un programator poate profita de acest lucru pentru a denumi virusul cu numele prog.com. Astfel, de fiecare dat cnd cineva va dori s ruleze prog, mai inti va fi executat virusul. D-abea apoi prog.exe va fi executat , dar utilizatorul nu va tii c a apelat i alt program in paralel cu comanda prog.

Un alt exemplu este legat de folosirea unor prescurtri in Windows pentru a apela programe. Virusul poate schimba scopul acestor prescurtri, realizndu-se astfel apelul unor virui i nu a aplicaiilor dorite. Dup ce exectuia virusului s-a terminat, aplicaia dorit va fi i ea apelat.

Viruii care afecteaz executabilele

Aceti virui sunt mai compleci. Cel mai simplu realizat practic rescrie programul executabil cu propriul cod. Se mai numesc i virui de suprascriere. Aceti virui au codul relativ redus (fiiere text de capacitate mai mic de 2KB). Ludwig a publicat in 1998 un cod in assembler complet pentru MS-DOS care infecteaz toate fiierele, in aceast versiune asamblat avnd numai 44B.

Este interesant de tiut c antiviruii (programele care depisteaz i indeprteaz viruii) folosesc logica virusilor de a gsi fiierele executabile i a le infecta, cnd depisteaz programele corupte pentru a indeparta codurile malicioase. Astfel, putem spune c este necesar s intelegem in detaliu cum funcioneaza viruii pentru a fi capabili s-i inlturm.

Din punctul de vedere al programatorilor ru intenionati, aceast tehnic este prea uor de detectat deoarece user-ul va sesiza instantaneu schimbrile. Scopul lor este s gseasca metode ca viruii s lucreze in paralel cu programele de drept pentru a nu trezi imediat suspiciuni. Aceti virui se mai numesc si parazii.

Viruii parazii se pot ataa la inceputul, la sfritul sau in interiorul unui program executabil. In urmtoarea figur sunt prezentate cele trei tipuri.

Dac un virus se ataeaz la inceput (front loader), el trebuie mai inti s copieze programul respectiv in RAM, s se autoinsereze la inceput si apoi s recopieze tot din RAM. Pentru a evita aceste manevre complexe, cei mai folosii virui sunt cei back loaders, adic cei care se ataeaz la sfritul executabilului.

Fig.3.1 Cele trei tipuri de virui parazii

Formatele programelor executabile complexe, precum fiierele .exe in Windows, permit programului s aib segmente multiple de date sau de text. La acest sistem de operare toate segmentele sunt multiplii de 512B. Nu toate aceste segmente sunt pline, iar unii virui incearc s se ascund in locurile libere. Aceti virui se mai numesc i virui de cavitate.

Viruii rezideni in memorie

Acest tip de virus rmne in memoria RAM tot timpul, ascunzndu-se la captul superior al ei sau la baz, unde se afl un spaiu de cteva sute de B care in general rmn nefolosii. Un virus evoluat poate induce in eroare bitmap-ul memoriei RAM fcnd sistemul s cread c intr-adevr locaiile de memorie unde rezid virusul sunt ocupate, pentru a inltura posibilitatea unei rescrieri a acestuia.

Viruii sectorului de boot

La deschiderea unui calculator BIOS-ul incarc inregistrarea master boot din discul de bootare in RAM i o execut. Acest program determin care partiie este activ i citete in sectorul de boot din acea partiie dup care o execut. De aici a venit ideea crerii unui virus care s rescrie acea inregistrare master boot, rezultatele fiind dezastroase. Aceti virui sunt acum foarte comuni.

In mod normal, un astfel de virus copiaz prima data adevratul sector de boot intr-un loc sigur pe disc, pentru a putea boota sistemul de operare dup terminarea sarcinilor sale. Cnd sistemul este restartat virusul se autocopiaza pe RAM, fie la inceputul sau la sfritul memoriei. In acest moment maina este in modul de lucru kernel, pe ea nerulnd nicun sistem de operare si niciun program antivirus. Acesta este momentul propice s actioneze.

O problema pe care o are este ins cum s preia controlul i mai trziu. Metoda obinuit este s expluateze datele disponibile in legtur cu felul in care sistemul de operare lucreaz cu vectorii de intreruperi.

Viruii pentru drivere

Driverele sunt un tip de program executabil care rezid pe disc i sunt incrcate la bootare. Dac unul dintre ele este infectat, virusul va fi mereu oficial incrcat odat cu incrcarea sistemului de operare.

Macro virui

Multe programe precum Word i Excel permit utilizatorilor s foloseasc macrocomenzi, adic la o combinaie de taste s fie executate un grup de comenzi. In Microsoft Office o singur macrocomand poate duce la executarea unui intreg program in Visual Basic. Aceste comenzi sunt stocate odat cu documentele cruia ii aparin.

Probleme pot aprea in momentul in care cineva scrie un document Word i creeaz o macrocomand pe care o ataeaza functiei OPEN FILE. Aceasta conine un macro virus. Acest document este trimis prin e-mail victimei care il va deschide. Deoarece macrocomanda poate conine un program, ea poate s infecteze alte documente Word, s tearga fiiere i multe altele.

In mod curent, Word-ul d un mesaj de avertizare cnd trebuie s deschid un fiier care are ataate marocomenzi, dar foarte muli utilizatori nu ineleg importana acestei avertizri i deschid fiierul.

Aceti virui sunt foarte uor de scris, ceea ce evideniaz de asemenea problema scrierii de virui de ct mai muli oameni care nu au legatur neaprat cu lumea IT-ului.

Viruii de tip cod surs sunt cei mai portabili virui. Ei caut programe in C pentru a introduce dou linii de cod - calea lor de acces. Infectarea se produce prin inserarea liniei #include la inceputul fiecrui program C. Mai este inserat i instruciunea de apelare a virusul in interiorul programului: run_virus(); . Odat apelat, programul poate face orice a fost proiectat, in principal s rspndeasc infectarea i la celelalte programe C.

Ca o concluzie la acest subcapitol dedicat viruilor vom pune in eviden principalele modaliti de rspndire a acestora.

Scenariul clasic de rspndire a unui virus conine mai multe etape: codul virusului este scris, apoi este inserat in alt program de interes pentru ali utilizatori i postat pe un site de descrcare de soft fr licen. Eventual cineva va descrca acest program i-l va instala. Pentru inceput virusul va infecta ct mai multe fiiere de pe hard, pentru a facilita i mai mult rspndirea in cazul in care aceast victim va trimite unul dintre aceste fiiere altor utilizatori.

Exist i alte posibiliti de rspndire. Virusul poate fi conceput s verifice dac maina deja afectat se afla conectat la un LAN. Tocmai prin aceast legatur virusul poate s afecteze fiiere de pe toate serverele conectate la LAN-ul respectiv. Unii dintre useri pot avea instalate programe de protecie i vor anuna administratorii reelei. Dac administratorul va inspecta problema fiind logat ca super user , toate mainile din reea vor fi afectate.

De multe ori, calculatoarele legate intr-o retea LAN au autorizaie s se logheze la distan la alte maini. Acest lucru ofer i mai multe oportunii viruilor s se rspndeasc, o mica greeal ducnd la infectarea intregii companii.

Legat de imprtierea actualilor virui este i rspndirea tehnologiei de a concepe virui. Exist grupuri de arhiteci de virui care lucreaz impreun pentru a crea noi tehnologii de virusare. Pentru muli acest lucru este poate doar un hobby dar rezultatele sunt la fel de devastatoare. O alt categorie de scriitori de malware fac parte din armat. Ei vd viruii ca pe o arm intr-un poteial rzboi, folosit la distrugerea calculatoarelor inamicului.

Despre virui se pot discuta multe lucruri i o sa revenim asupra lor in partea a treia, cnd vom dicuta despre tehnicile de protecie contra acestora.

3.3 Viermi

Prima violare a securitii a avut loc in anul 1988, cnd un student absolvent la Cornell, Robert Tappan Morris a rspndit un vierme prin intermediul Internetului. Acest program a distrus calculatoare din universiti, corporaii i laboratoare guvernamentale din toata lumea pn a fost depistat si indeprtat. Cnd a fost desoperit, Morris a fost judecat de curtea federala. Ulterior i-a dat doctoratul la universitatea Harvard i momentan este profesor la M.I.T.

Povestea incepe cndva in acelai an cnd Morris a descoperit dou erori conceptuale in UNIX-ul Berkeley de care se putea folosi pentru a ctiga accesul neautorizat la maini de oricunde conectate la Internet. De unul singur, el a scris un program care se auto-replica in cteva secunde in fiecare main infectat.

La fel ca i cei biologici, viruii de obicei cltoresc n spinarea altor programe, care foreaz celulele organismului gazd s-I multiplice. Programul cel nou era ns autonom i de aceea a fost numit vierme: era un organism de sine-stttor, capabil s se multiplice i s atace de la sine alte calculatoare.

Cercettorii au atacat viermele prin mai multe metode: au nceput s-l dezasambleze i s descifreze instruciunile din care era compus. au creat maini-capcan pe care s le infecteze, care nregistrau o mulime de detalii despre ceea ce se petrecea cu ele insele. au creat maini-mutant pe care le paralizau parial, pentru a descoperi care sunt serviciile de care viermele are nevoie pentru a se putea multiplica.

Viermele era construit din dou programe: bootstrap-ul i worm proper-ul. Primul era alctuit din 99 de linii de cod in C numit l1.c. Era compilat i executat de sistemul atacat.

Odata rulat, fcea conexiunea cu maina de unde venise, incrca viermele principal i-l executa. Incercnd in acelai timp s -i ascund existena, viermele cuta in tabelele de rutare ale victimei alte maini in care se putea rspndi: inti incerca s se transfere intre calculatoare pe care acelai utilizator avea conturi diferite i intre care utilizatorul ii configurase acces fr parole (folosind fiierele .rhosts). dac nu reuea folosind acest mecanism, incerca s foloseasc o slabiciune din programul send mail, care i la ora actual este cel mai folosit program pentru procesarea potei electronice. Pe multe calculatoare send mail era instalat si compilat cu o configuraie de depanare, care permitea executarea unor comenzi de la distan. viermele exploata un bug din implementarea programului finger, care este folosit inmod normal pentru a vedea cine lucreaz pe un calculator la distan. Viermele expluata pentru prima oar un tip de bug care este la ora actuala extrem de folosit de alte malware de acelai gen si despre care am mai discutat i anume buffer overflow. Viermele trimitea programului finger, care primete ntrebri despreutilizatori prin reea, un nume de utilizator foarte lung, care depea memoria alocat pentru recepia mesajului. Numele era att de lung inct suprascria stiva programului i modifica valoarea salvat a registrului PC. Aceasta cauza un salt la o adres dinainte stabilit, aflat in numele foarte lung, unde viermele coninea codul care prelua controlul. odat instalat pe un calculator, viermele ncerca s decripteze unele din parolele utilizatorilor folosind un dicionar de parole obinuite, pentru a pune mna pe noi conturi din care s re-atace folosind prima metod. Viermele se propaga in dou etape pe un nou calculator pe care-l infecta: inti trimitea un scurt program scris n C, care era compilat pe maina locala, care apoi aducea i restul viermelui, care consta n module pre-compilate pentru Sun si VAX. in plus, in interiorul viermelui toate irurile de caractere (inclusiv comenzile pe care viermele le lanseaz in execuie i dictionarul de parole inclus) erau ascunse.

Viermele nu efectua aciuni distructive, cum ar fi tergerea de fiiere sau instalarea de conturi ascunse: singurul efect negativ provenea din faptul c mainile erau infectate in mod repetat i repede, deci nu fcea altceva dect s execute copii ale viermelui.

O varietate de ali viermi au fost concepui de atunci, in general dup acelai principiu, doar c expluateaz alte bug-uri de sistem. Acetia tind s se rspndeasc mult mai repede pentru c fa de ali malware ei se pot mica independent odat lansai.

Tipuri de viermi:

Viermii care se transmit prin e-mail E-mail-ul este una din cele mai folosite metode de imprastiere a viermilor. De obicei, este sub forma unui e-mail cu atasament (o poza sau un fisier text), iar cand utilizatorul ruleaza acest atasament, viermele va infecta calculatorul. Dupa ce calculatorul este infectat, viermele va incerca sa gaseasca alte adrese de e-mail pe calculator (de obicei in fisierele de configurare ale clientilor de e-mail) si se va trimite automat la toate adresele pe care le gaseste, pornind astfel un nou ciclu.

Viermii care se transmit prin IM (Internet Messaging) Viermii care se transmit prin IM se vor imprastia folosind clienti de IM (Yahoo, MSN, AOL.).Ei actioneaza trimitind tuturor celor din lista celui infectat un link spre un fisier infectat sau spre un site. Cand este dat click pe linkul respectiv, viermele este downloadat si rulat. Astfel se va infecta calculatorul respectiv. Viermele va incepe sa scaneze lista de contacte a calculatorului respectiv, trimitand acelasi link la toti cei din lista, pornind astfel un nou ciclu.

Viermii care se transmit prin Internet Exista posibilitatea infectarii cu un vierme doar fiind conectat la Internet. Unii viermi cauta calculatoare vulnerabile (fara update-uri de securitate, fara firewall). Odata gasit un calculator vulnerabil, va incerca sa se copieze si sa se instaleze pe acesta.

Viermii care se transmit prin retea Sunt viermi care se copiaza automat intr-un director care este vizibil in reteaua locala (share), si se redenumeste automat astfel incat sa atraga atentia, fiind apoi downloadat de catre utilizatorii din retea. Utilizatorii care cred ca downloadeaza o oarecare aplicatie, se vor infecta cu acel vierme.

Viermele Cuebot-K Sistemul antipiraterie creat de Windows, Windows Genuine Advantage (WGA), era acuzat de catre utilizatori ca fiind de fapt o forma despyware. Microsoft a incercat sa rezolve problema creand o versiune noua a programului, lucru de care au profitat programatorii de virusuri creand viermele Cuebot-K. Acest program din 2006 a aparut pe net pretinzand ca este noua versiune Microsoft. Se lansa singur cand deschideai computerul si afisa mesaje cum ca dezinstalarea lui va face computerul sa se blocheze. Dar ce facea cel mai rau, era sa deschida o usa din spate (backdoor) prin care hackerii puteau sa corupa sistemul.

3.4 Spyware

Acest tip de malware este i el instalat in calculatorul victimei fr tiina acestuia, lucreaz in background-ul sistemului. Termenul de spyware este in general greu de definit fr a ne pcli asupra adevratei lui semnificaii.

Barwinski i echipa sa au hotarat in 2006 c aceast categorie de soft are patru principale caracteristici. In primul rnd, este un soft inteligent care se ascunde si nu poate fi uor depistat de ctre victim. In al doilea rnd, el colecteaz date despre utilizator, precum pagini web vizitate, parole, cri de credit folosite. Mai mult, el comunic datele colectate la distan, celui care la inserat in reea. Nu in ultimul rnd, el se lupta s reziste incercrilor repetate de eliminare.

Tot Barwinski i echipa sa i-au catalogat in trei categorii:

de tip marketing: doar colecteaz informaii pe care le trimite inapoi la surs.

de supraveghere: de exemplu unele companii instaleaza spyware pe calculatoarele angajailor pentru a-i monitoriza i a vedea ce pagini web acceseaz.

spyware clasic care o dat ce a infectat o main aceasta devine zombi, fiind coordonat din afara sistemului.

Actiuni tipice ale spyware-ilor:

schimb home page-ul browser-ului

modific paginile favorite

adaug noi instrumente

schimb motorul de cutare setat de user

adaug noi iconie pe desktop

insereaz reclame in cutiile de dialog standard ale Windows-ului

genereaz iruri lungi de pop-up care se deschid.4. Concluzii

Computerele conin de cele mai multe ori date valoroase precum numere de cri de credit, planuri de afaceri i multe altele pe care proprietarii incearc sa le protejeze. O cale este de a folosi criptarea i parolarea acestora.

In toate sistemele cu securitate ridicat fiecare user se autentific inaintea accesrii oricrui sistem. In prima parte am exemplificat cum chiar aceti useri pot cauza neplceri din interiorul sistemului.

Am vzut de asemenea cum pot fi din interior expluatate diferitele bug-uri de sistem i la ce riscuri se expun utilizatorii care nu acorda atenie proteciei atunci cnd acceseaz pagini de internet.

In urmtoarea parte o sa vedem metodele de protecie dar i posibiliti de autoprotecie a sistemelor.

Dar inainte am trecut in revista principalele 10 amenintari informatice in Romania, la ora actuala.

Peisajul malware din Romania este dominat de viermele Win32.Worm.Downadup.Gen cu 10.24% si de Trojan.Autorun.Inf, doua amenintari informatice care isi mentin pozitia de lider in topurile BitDefender de mai bine de un an.

Daca familia Downadup are aproximativ 14 procente din totalul infectiilor din Romania, clanul Autorun este prezent in top cu nu mai putin de trei membri Trojan.Autorun.INF.Gen, Trojan.Autorun.AET si Worm.Autorun.VHG - clasati pe locurile 2, 3 si respectiv 10.

Locul 4 - cu 4.48% din numarul infectiilor din Romania - este ocupat de Win32.Sality.OG, un virus polimorf care se ataseaza de fisierele .exe si .scr. Un alt reprezentant al acestei familii este si Win32.Sality.3, clasat pe locul 7 cu 2.64% din numarul total de infectii. Acesti virusi sunt protejati de un rootkit care le ascunde prezenta pe calculatorul infectat si, in acelasi timp, incearca sa blocheze antivirusul instalat pe sistem. Pentru a doua luna consecutiv in topul celor mai importante amenintari informatice, Trojan.Crack.I se afla pe locul 5, cu 3.55% din totalul infectiilor inregistrate in Romania. Acest troian vine deghizat sub forma unui crack, o aplicatie pentru eliminarea protectiei comerciale a produselor software, care va incerca sa instaleze un backdoor si sa colecteze detalii despre celelalte aplicatii instalate pe sistem.

Pe locul 6 in clasament, cu 3.47% din numarul total de infectii se afla Win32.Worm.DownadupJob.A, o detectie pentru identificarea sarcinilor programate pe care viermele Downadup le creeaza pentru a-si lansa in executie fisierul DLL in fiecare zi.

Locul 8 este ocupat de Gen: Variant.Kazy.9625, un vierme ce se propaga prin dispozitivele de stocare USB si exploateaza functia autorun prezenta in sistemele de operare de la Windows XP la Windows Vista SP1. Gen: Variant.Adware.HotBar.1 ocupa pozitia 9 in topul BitDefender pe luna februarie, cu 1.64% din numarul de infectii detectate in Romania. Aceasta familie de malware afiseaza utilizatorului reclame prin initializarea unor noi ferestre de browser si redirectionarea acestora catre continutulpromovat.

BitDefender Top 10 amenintari informatice in Romania:Win32.Worm.Downadup.Gen - 10,24%Trojan.AutorunINF.Gen - 7,64%Trojan.Autorun.AET - 4,59%Win32.Sality.OG - 4,48%Trojan.Crack.I - 3,55%Win32.Worm.DownadupJob.A - 3,47%Win32.Sality. - 32,64%Gen:Variant.Kazy.9625 - 2,15%Gen:Variant.Adware.Hotbar. - 11,64%Worm.Autorun.VHG - 1,50%Altele - 58,10%

Aceasta statistica a fost publicata intr-un articol al revistei ComputerWorld din 3.03.2011.Bibliografie1. Modern Operating Systems, Andrew S. Tanenbaum, Ed. a 3-a

2. Primii pasi in securitatea retelelor, Tom Thomas 3. Computer Viruses, Dr. Frederick B. Cohen

4. The Little Black Book of Email Viruses, Ludwig5. http://ro.wikipedia.org/wiki/Virus_informatic6. http://en.wikipedia.org/wiki/Computer_worm7. www.computerworld.ro8. http://en.wikipedia.org/wiki/Keystroke_logging9. http://en.wikipedia.org/wiki/Blue_Pill_%28malware%29Partea a III-a. Modaliti de imbuntire a securitii sistemelor de operare1) Ce reprezint sistemele de protecie?

Prin sistem de protecie se nelege totalitatea metodelor de realizare a proteciei n cadrul unui sistem de calcul.

Prin protecie se nelege

protecie antivirus sau a oricror programe de tip virus, spyware, malware

securizarea unor informaii, fiiere, baze de date astfel nct s nu poat fi accesate dect de utilizatori autorizai.

Unul din cele mai importante concepte reprezint securitatea n adncime. Prin aceasta se nelege c este necesar ca protecia s se realizeze pe mai multe straturi. Principul care st la baz este c dac un anumit strat este strpuns mai sunt alte straturi care nc pot proteja sistemul.

2) Firewall-ul

Firewall-ul reprezint o main conectat la internet pe care vor fi implementate politicile de securitate.

Exist 2 tipuri principale de firewall:

firewall-uri hardware

firewall-uri software

Prin firewall-ul de tip hardware se nelege o placa de reea este conectat la internet, iar cealalt placa la reeaua local. El are rolul de a separa dou conexiuni la dou reele diferite.

Orice pachet de informaie care vine din Internet i vrea s ajung n reeaua local trebuie nti s treac prin firewall. Astfel c firewall-ul devine locul ideal pentru implementarea politicilor de securitate de reea i pentru controlul accesului din exterior. De asemenea firewall-ul nu permite trecerea unor fiiere din interior spre exterior dect prin trecerea prin Firewall.

Pentru un firewall exist dou moduri principale de abordare:

a) Interzice totul n mod prestabilit i permite explicit trecerea anumitor pachete.

b) Permite totul n mod prestabilit i interzice explicit trecerea anumitor pachete.

Firewall-urile de tip software numite i firewall-uri personale funcioneaz similar cu cele de tip hardware. Ele sunt implementate software n interiorul sistemului de operare kernel i filtreaz pachetele n acelai fel ca i cele de tip hardware.

Dei firewall-urile contribuie la protecia sistemelor de calcul acestea nu sunt ntotdeauna eficiente. De aceea urmtorul strat este protecia malware numita protecie antivirus.

3) Antivirus i tehnici antivirus

Programele antivirus contribuie la protejarea calculatoarelor mpotriva viruilor, viermilor, cailor troieni precum i a altor "invadatori" care pot ataca un calculator. Rolul acestora este de a detecta prezena viruilor ntr-un calculator, a dezinfecta sau terge fiierele infestate i a preveni infectarea acestuia.

Un astfel de program se instaleaz de obicei rezident n memorie, adic ruleaz n fundal tot timpul cat calculatorul este pornit (in Windows, noi observam acest lucru prin apariia unei iconie n bara de jos din dreapta). Fiind rezident n memorie, antivirusul ncearc s scaneze fiierele pe care le accesm, ns poate fi folosit i pentru a scana ntreg calculatorul.

Viruii sunt astfel creai nct ei ncearc s se ascund, timp n care utilizatorul ncearc s i gseasc. De cele mai multe ori viruii sunt astfel creai nct ei s fie orientai ctre rspndirea cat mai rapida.

3.1) Scanarea antivirus

Odat ce un antivirus a intrat n sistem, unul din primele lucruri pe care l face este s ncerce s se ascund. n scopul deteciei acestor virui au fost dezvoltate programe software specializate.

Odat instalat programul antivirus pe sistemul de calcul, primul lucru pe care l face este s scaneze fiecare fiier executabil de pe disc i s caute orice virus care se gsete n baza lui de date cu virui cunoscui. Aceste baze de date sunt actualizate frecvent astfel c programul cunoate n permanenta noile tipuri de virui. Din acest motiv bazele de date conin un numr foarte mare de virui i, n acelai timp, discurile conin un numr foarte mare de fiiere astfel c programele antivirus trebuie programate inteligent pentru a funciona rapid.

In bazele de date ale unui antivirus este stocat semntura digitala a fiecrui virus. Semntura digital a unui virus este un model de poziionare a informaiilor ntr-un virus, aceasta fiind caracteristic fiecrui virus n parte.

Tot prin scanare antivirus se nelege scanarea noilor fiiere aduse din reelele externe.

Dei scanarea antivirus reprezint unul din cele mai bune moduri de eliminare a viruilor aceasta are i numeroase deficiene.

Dac s-a fcut scanarea la un moment dat i s-a determinat c discul nu conine virui la momentul respectiv nu nseamn c i dup un anumit interval de timp (de exemplu o sptmna) nu vor aprea ali virui. Acest lucru arat c pentru o protecie eficienta este necesara o scanare frecventa. Deoarece programele antivirus sunt lente, o metod eficienta de scanare este aceea de a cuta numai fiierele care au fost modificate de la data ultimei scanri.

O metod de detecie a fiierelor care au fost infectate este stocarea dimensiunii fiierelor de pe disk. Dac s-a detectat modificarea dimensiunii fiierului aceasta arat c acesta poate fi infectat. Acest lucru poate fi observat n figura 3b. Fiierele inteligente pot face compresia coninutului fiierului astfel nct n final noua form a fiierului, care conine virusul (Figura 3.c), s ia dimensiunea veche a fiierului (figura 3a).

O alt metod prin care viruii ncearc s scape de detecie este aceea de a nu aprea reprezentai pe disk la fel cum sunt reprezentai n baza de date a antivirusului. n cest mod viruii se pot ascunde de ctre programele de detecie antivirus (Figura 3d). Aceasta metod este realizata de exemplu prin criptarea sa cu o noua cheie pentru fiecare fiier infectat. nainte de a infecta un nou fiier virusul creeaz cheia de 32 bii aleator aleasa. Aceasta cheie este stocat n fiier. Bineneles, pentru a rula, virusul trebuie s se autodecripteze.

In prezent sistemele antivirus sunt astfel create nct ele caut cheia de decriptare i ncearc s decripteze fiierele astfel nct s gseasc virusul n interiorul acestora.

La rndul sau cheia de decriptare poate fi deghizata. Aceasta poate fi fcut prin iftri la stnga, la dreapta, negri ale codului i altele.

Un virus care se modifica la fiecare copie poart numele de virus polimorfic.

In multe cazuri este posibila adugarea de instruciuni sau modificarea celor existente cu unele echivalente care nu au ca efect schimbarea funcionalitii codului. Un cod care poate face astfel de modificri poart numele de motor de mutaie iar viruii le folosesc pentru a modifica decriptorii de la o copie la alta. Astfel se obine ultima form de virui (Figura 3e).

Bineneles sistemele antivirus au fost astfel concepute nct s descopere toate aceste tipuri de antivirus. Ele pot cuta n cod sau chiar simula ce face codul. Scopul principal al realizrii acestor forme de virui nu este de a le ascunde, ci i de a-l face mai dificil de detectat nct creste foarte mult timpul de scanare a calculatorului.

Dac un virus a fost gsit nu nseamn c acesta va putea fi i ters. Uni virui au modaliti de a se apra, prin diferite metode, fcnd dificila tergerea lor.

3.2) Verificarea integritiiO metod complet diferita de detecie a viruilor este verificarea integritii. Odat ce antivirusul a scanat calculatorul i s-a determinat c nu mai are virui el realizeaz o sum de verificare pentru fiecare fiier executabil. Schimbarea coninutului fiierului duce la schimbarea proprietarilor sale deci se poate detecta uor dac executabilul a fost modificat. Spre exemplu se poate face tratarea tuturor cuvintelor ca nite ntregi i se face suma lor pe 32 sau 64 de bii sau se poate face o criptare care nu poate fi inversata. Schimbarea coninutului fiierului ar duce la schimbarea valorii sumei, iar n cazul criptrii, duce la o criptare diferita. Astfel se poate detecta uor existenta unui virus.

Principala problema n acest caz este c virusul este astfel conceput nct cunoate modul n care antivirusul funcioneaz. Astfel el poate terge suma de verificare sau fiierul de verificare criptat sau chiar le poate modifica. Antivirusul poate ncerca s ascund aceste rezultate de verificare, dar n continuare virusul le poate detecta i schimba.

3.3) Verificri comportamentaleO a III-a metod folosit de antivirus este verificarea comportamentului programelor care ruleaz n sistem. Antivirusul urmrete activitatea ntregului calculator i caut s determine orice pare suspect. Un exemplu este acela c nici un program normal nu ar trebui s acceseze sectorul de butare. O astfel de activitate este aproape sigur un virus.

Sunt situaii n care nu este sigur detecia. Spre exemplu editarea unui fiier executabil poate fi fcut de ctre un compilator, n caz contrar acesta este foarte posibil s fie un virus. Dac antivirusul nu poate determina cine a fcut modificarea se lanseaz un warning. Dac utilizatorul a fcut modificarea el va ti acest lucru. n caz contrar modificrile au avut loc datorit unui virus.

3.4) Evitarea viruilorDe multe ori, odat ce un virus a infectat calculatorul, acesta este mult mai greu de detectat i ters dect de evitat.

Acestea sunt cteva lucruri pe care utilizatorul ar trebui s le fac pentru a reduce problemele considerabil:

Utilizarea unui sistem de operare cu un mare nivel de securitate

Utilizarea de softuri originale. Aceasta metod nu este ntotdeauna sigur deoarece s-au ntlnit cazuri ale unor angajai care au introdus virui n cadrul softurilor. Descrcarea de programe de pe site-uri neautorizate aduce cu sine factori de risc

Folosirea unui antivirus eficient i folosirea lui urmrind instruciunile date. Foarte important este actualizarea regulat a antivirusului

Folosirea cu grij a email-ului deoarece textul scris n cod ASCII este perfect sigur dat fiierele ataate sunt metode prin care viruii se pot transmite.

Stocarea datelor pe CD-uri, harduri externe, sau alte metode de stocare care nu implica folosirea permanenta a lor. n cazul n care calculatorul a fost virusat i se pierd anumite date de pe calculator, ele pot fi n continuare obinute. Este posibil ca datele stocate recent s fie pierdute dar cele mai vechi nu.

Descrcarea de programe free reprezint un potenial pericol, mai ales cele de la surse necunoscute.

4) Code Signing (Semnarea codului)

Verificarea integritii de multe ori este o soluie ineficienta. S presupunem c avem un fiier executabil care conine un virus. Acesta nu este detectat prin scanare i nu a mai fost scanat nici o data. Este imposibila detecia prin aceasta metod deoarece la prima scanare deoarece nu exist o data de verificare deci va fi stocat una a fiierului care conine virusul. La urmtoarea scanare se va determina aceiai valoare iar executabilul rmne nc virusat.

O metod similara dar mult mai eficienta este aceea de a semna softurile originale. Astfel antivirusul poate determina dac fiierul executabil a suferit vreo modificare sau nu din momentul n care a plecat de la fabrica.

Acest lucru este foarte important mai ales cnd se descarc programe de la magazine online. Dac programul descrcat provine de la o companie foarte cunoscut este foarte posibil ca acesta s nu conin un virus.

Un mod de a recunoate aceste softuri este folosirea de semnturi digitale (Code Signing).

O semntur digital se utilizeaz pentru a autentifica orice tip de informaii digitale (documente, mesaje de pot electronic i macro-comenzi) folosind criptografia informatic. Procesul de confirmare a identitii se face prin verificarea semnturilor digitale utilizate pentru semnarea codului. Semnturile digitale atest autenticitatea softului, integritatea lui i asumarea rspunderii din partea productorului.

Semnturile digitale sunt:

- Autenticitatea. Semntura digital constituie un indiciu, mai important dect site-ul de provenien, care ne demonstreaz c semnatarul este i cel care pretinde a fi.

- Integritatea. Semntura digital ne arat dac un coninut a fost modificat sau nemodificat, din momentul aplicrii semnrii.

- Asumarea rspunderii din partea productorului. Semntura digital demonstreaz tuturor prilor implicate originea coninutului semnat, iar productorul nu se poate disocia ulterior, negndu-i responsabilitatea.

Semnturile digitale sunt create folosind un algoritm de generare cu cheie public. Acest