Documente Academic
Documente Profesional
Documente Cultură
PROIECT LA
TWAAOS
SUCEAVA 2020
//trebuie sa alegem un titlu bos ne recomanda A survey of the main types of attacks on webified devices"
1
1. Introducere
Într-o lume condusă din ce în ce mai mult de rețele sociale, tranzacții online, informații
gestionate prin internet sau procese automatizate efectuate prin utilizarea sistemelor informatice,
securitatea informațiilor și confidențialitatea datelor se confruntă permanent cu riscuri majore de
a fi furate și folosite în alte scopuri[12]. Odată cu dezvoltarea de noi instrumente și tehnici,
criminalitatea cibernetică crește constant în ceea ce privește numărul de atacuri și nivelul de
daune cauzate victimelor sale.
Dezvoltarea de noi modalități de a obține acces neautorizat la rețele sau programe și date,
atacatorii urmăresc să compromită confidențialitatea, integritatea și disponibilitatea informațiilor,
alegându- și țintele, de la persoane fizice, la companii mici, mijlocii sau chiar giganți de afaceri.
În fiecare an pare să fie un număr mai mare de atacuri în general, dar și un număr mai mare de
atacuri care înfrâng securitatea companiilor extrem de mari, afectând astfel securitatea
informațiilor, totodată încrederea clienților scade tot mai tare. Tendința din ce în ce mai mare a
atins noi vârfuri în 2014, cunoscută drept „anul atacurilor cibernetice”, dar omenirea consideră că
aceasta nu va fi apogeul decât dacă se vor lua măsuri la scară globală.
2. Aplicație web
O aplicație web (World Wide Web) poate fi descrisă ca un program care este dezvoltat
pentru a efectua procese specifice. Există o mulțime de tehnologii disponibile astăzi pentru a ne
ajuta să dezvoltăm aceste aplicații. Cele mai utilizate tehnologii web sunt prezentate in imaginea
următoare.
După cum s-a descris anterior, aplicația web se bazează pe principiile de securitate a
informațiilor, unele dintre aceste principii includ următoarele[14]:
- Confidențialitate - permite accesul numai la datele utilizatorului curent.
- Integritate - asigură că utilizatorii neautorizați nu vor accesa date.
- Disponibilitate – asigură disponibilitatea datelor pentru utilizatori atunci când se
solicită.
La baza resurselor fundamentale de securitate a aplicațiilor web, sunt incluse următoarele
categorii : autentificarea, autorizarea și verificarea. Autorizarea permite ca utilizatorul să
acceseze doar o parte din resurse care îi aparțin, cu alte cuvinte, ceea ce puteți face cu aceste
resurse sunt ca și modificări în contul dvs., modificarea fișierelor și a tabelelor bazei de date.
2.2 Securitatea rețelei
Ideea cea mai principală este că securitatea rețelei, trebuie să fie implementată pentru a ne
proteja resursele, deoarece infrastructura de rețea, cum ar fi router-ele, switch-urile și firewall-
urile trebuie să fie bine configurate pentru a fi securizate împotriva atacurilor. Este foarte
important să ne protejăm rețeaua nu numai de atacuri la TCP / IP, ci și cu parole puternice ce sunt
greu de găsit. Un alt obiectiv este de a asigura integritatea traficului. Router-ul este responsabil
pentru expedierea pachetelor IP. Una dintre sarcinile sale este să blocheze traficul neautorizat și
este primul punct de defensivă din rețeaua noastră. Dacă nu avem acces la setările router-ului, nu
avem prea multe de făcut cu privire la securitatea de rețea a acestui dispozitiv decât să contactăm
ISP-ul (Internet Service Provider) nostru pentru a obține informații despre securitatea pe care o
implementează la nivelul rețelei. În caz contrar, unele configurații și măsuri de securitate care ar
putea fi implementate, este controlul accesului administrativ. Trebuie să se asigure că are cel mai
recent software, actualizări de patch- uri și poate detecta un atac nedorit.
Funcția principală a comutatorului este de a îmbunătăți performanța rețelei din partea
administrativă. Comutatorul transmite pachetele către segmentele de rețea sau gazde. Unele
măsurători includ configurația rețelei locale de rețea virtuală VLAN (Virtual Local Area
Network) și controlul accesului, criptarea, controlul accesului la sistemul de administrare al
comutatorului pentru a împiedica intrușii să facă configurații greșite./// Aici poate o enumerare
cu bllet points a elementelor? Și eventual un articol citat sau - daca este opinia dv. - puneți
explicit acest lucru: "Noi propunem următoarele..."Ion
Serverele web sunt vulnerabile, avem nevoie de metodologii pentru a preveni atacurile.
Indiferent de sistemul de operare pe care serverul nostru web îl utilizează fiind IIS (Internet
Information Services), .NET sau Apache, configurația de securitate trebuie efectuată la acest
nivel pentru a diminua nivelurile de vulnerabilitate. Principalele amenințări la adresa unui server
Web sunt: Profilarea, refuzul serviciului, accesul neautorizat, lipsa privilegiilor configurate,
executarea codului arbitrar, viruși, viermi și cai troieni.
Firewall-ul permite sau blochează traficul în port, monitorizează cererile de trafic care vin
și previne atacurile cunoscute împotriva serverelor noastre. Unele configurații efectuate în
firewall includ: patch-uri, actualizări, filtre, perimetrul de înregistrare și detectarea intruziunii.
Sistemul de operare al acestuia ar trebui să fie actualizat regulat și controlat prin acces
administrativ.
Securitatea începe cu o înțelegere a modului în care funcționează sistemul sau rețeaua care trebuie
securizată.// "Cele mai cunoscute" conform cui? Exista vreo statistică? Sili
Cele mai cunoscute amenințări în rețea sunt [14]:
- Negarea serviciului.
- Deturnarea sesiunii.
- Falsificarea.
- Sniffing.
- Colectarea de informații.
2.3 Principii de securitate a aplicațiilor
Se pare că cea mai expusă și cea mai puțin protejată parte a platformelor este aplicația
web care are cod, în principiu pentru, gestionarea cererii / procesarea către / de la server.
Arhitectura de aplicații cunoscută pentru serverele web este modelul de vizualizare-controler;
Cunoscut sub numele de MVC și este implementat mai ales cu Apache și folosit în cadre precum
CodeIgniter. În arhitectura MVC putem găsi vizualizarea care reprezintă codul front-end, acesta
poate fi înțeles ca un HTML (HyperText Markup Language) pentru utilizator.// Conform cui ("se
pare")? MVC nu-și are rostul aici pentru ca este o paradigmă de dezvoltare -nu afectează per se
securitatea... Daca motivați că da, trebuie să veniti cu o justificare clară... Ion
Controlerul este considerat poarta fluxului de lucru, codul care gestionează logica și
procesul pentru a asigura siguranța ieșirii de către codul de vizualizare. Controlerele din partea
serverului ajută la validarea datelor de intrare ale utilizatorului împotriva problemelor de
securitate cunoscute înainte de a analiza datele la modelul pentru proces. Acest lucru asigură
integritatea ieșirii din controlerul de vizualizare.
În cele din urmă, modelul poate fi văzut ca metoda de a face față proceselor pentru a se
asigura că codul nu este expus erorilor. Acesta este motivul pentru care modelul este responsabil
pentru prevenirea injecției SQL. Responsabilitatea modelului este de a testa datele în
conformitate cu regulile stabilite. De exemplu, dacă un model stochează date într-un fișier, codul
trebuie să fie verificat pentru comenzile de injecție ale sistemului de operare, dacă fișierele nu
sunt verificate, poate fi ușor de inclus cod injectat SQL care deturnează securitatea.
//:D Bineînteles ca trebuie să fie cele mai sigure posibil; nimenni nu face o aplicatie web
nesigură "by design"... Eventual aveti o sursă pentru a sustine numeric (sau textual) că
majoritatea atacurilor au loc la acest "model" (adică la datele stocate în BD)? Adi
Sintaxa și apelurile corespunzătoare ale modelului către serverul de date trebuie să fie cât mai
sigure posibil, deoarece cele mai slabe găuri se găsesc cu interogări dinamice prin introducerea
utilizatorului neverificat. Cea mai bună performanță și cea mai înaltă securitate este adesea
obținută prin procedurile stocate parametrizate, urmate de interogări parametrizate (cunoscute și
sub denumirea de instrucțiuni pregătite) cu introducerea puternică a parametrilor și a schemelor.
Minimizarea traficului de rețea pentru o tranzacție în mai multe etape sau eliminarea
informațiilor sensibile la securitate din traversarea rețelei este unul dintre motivele principale
pentru utilizarea procedurilor stocate. Oricum, procedurile stocate nu sunt întotdeauna cea mai
bună soluție a problemei.
//Conform cui? Poate niște referințe? Sili Următoarele principii relevante de securitate
explicate mai jos ne pot ajuta să realizăm o mai bună planificare și implementare a securității:
- O infrastructură sigură (rețea), așa cum a fost explicată anterior, este necesară pentru a
vă asigura că nivelul aplicației este securizat, aceeași regulă se aplică și pentru serviciile noastre
web.
- Examinarea arhitecturii aplicației. Proiectarea aplicației noastre este foarte importantă
pentru securitate. Părțile critice ale codului nostru care gestionează procesele precum
autentificarea, managementul, validarea intrării, trebuie examinate cu atenție.
- Nu aveți încredere în securitate prin obscuritate. Explicat ca un control de securitate
slab, aproape întotdeauna eșuează atunci când este singurul control, ceea ce înseamnă că
securitatea sistemelor de chei nu ar trebui să depindă de păstrarea datelor ascunse.
- Control validare intrare. Aceasta este una dintre modalitățile comune de exploatare a
atacatorilor. Unele atacuri includ injecția SQL (Structured Query Language;), XSS (cross site
scripting), injecția de cod. Un formular poate fi ușor validat, dar întrebarea este dacă are metoda
corectă, ce introducere este permisă sau respinsă. În calitate de dezvoltator bun, o modalitate
bună de a controla validarea este de a valida utilizatorii noștri mai întâi la poartă și nu se bazează
pe validarea din partea clientului, ci pe validarea serverului.
Un exemplu tipic este prin faptul că intrarea va duce la o interogare SQL. Până acum,
aceasta este cea mai vulnerabilă metodă pentru atacurile de injecție SQL. Cum validăm
interogările pentru baza de date este întrebarea care răspunde la problema acestui tip de atacuri
primare.
Cum ne folosim de autentificarea aplicației și modul în care codul gestionează cererile
este unul dintre cei mai importanți pași în procesul de securitate nu numai pentru codul însuși, ci
pentru probleme legate de parole slabe necriptate în server sau tabele SQL, peste conturi
privilegiate și sesiuni lungi. Este într-adevăr ușor să obțineți acces la sisteme, dispozitive de
rețea, baze de date și fiecare sistem care necesită o parolă. Există mai multe instrumente de
conectare disponibile care pot fi utilizate în scopuri legale sau de testare, unul este HYDRA.
///Referință către HYDRA. Dacă găsiți un articol știintific care explică ce este/cum se folosește -
cu atât mai bine (treceți ref. către articol ȘI catre site-ul HYDRA). Pentru cautare dați pe IEEE și
ScienceDirect un search după HYDRA... Adi
Principiul privilegiului cel mai mic, //Un principiu f. importantîn domeniul securități.
Originat de Jerome Saltzer (https://en.wikipedia.org/wiki/Principle_of_least_privilege - de aici veți
lua ca ref lucrarea lui la ACM din '74 - referința 6 din pagina de Wiki pe care v-am dat-o)... Adi
vizează reducerea privilegiului utilizatorului pentru a efectuarea unui proces, reducerea accesului
la sistemul de fișiere, limitele procesorului, memoria și rețeaua. în baza de date și cum este
controlat accesul la resursele fiecărui nivel de sistem, depinde securitatea noastră.
Vulnerabilitățile autorizării pot duce la dezvăluirea informațiilor, modificarea datelor și ridicarea
privilegiilor, astfel trebuie minimizată cât mai mult suprafața de atac. Ca măsură de securitate
pentru reducerea suprafeței atacului, este mai bine de revizuit codul pentru acele zone cu
vulnerabilități care pot fi eliminate doar prin crearea autentificării utilizatorului sau eliminarea
unei funcții din codul care duce la expunere.
De exemplu, o aplicație web implementează ajutor online cu o funcție de căutare. Funcția
de căutare poate fi vulnerabilă la injecția SQL. Dacă funcția de ajutor a fost limitată la utilizatorii
autorizați, atacul este redus. Dacă căutarea funcției de ajutor include rutine de validare a datelor;
capacitatea de a efectua injecția SQL este redusă. Multe companii folosesc procesul și modelele
persoanelor externe. Cum putem influența sau controla procesul lor? Cred că nu există nicio
garanție de securitate în acest sens, deoarece politicile și dezvoltatorii lor nu pot respecta
standardul nostru, de aceea partenerii terți pot expune securitatea sistemului nostru. Uneori
simplitatea față de tehnicile complexe de codare va ajuta în cazul în care avem nevoie de o
abordare simplă. De exemplu, utilizarea de variabile globale. După ce a fost descoperită o
problemă de securitate, ea trebuie corectată și este necesar să folosiți instrumente de testare
specifice în funcție de cauza principală a problemei și să dezvoltați soluția potrivită pentru
problemă.
Îmbunătățirea securității aplicațiilor web înseamnă să ne cunoaștem amenințările, după
care putem analiza aplicațiile noastre. O abordare bună de securitate este de a urmări procesul de
model de amenințare. Windows se bazează pe identificarea amenințărilor noastre pentru a ști ce
anume trebuie să securizăm și cum să facem.
Atacurile Web cele mai intalnite in anul 2018 sunt prezentate in figura urmatoare:
3.9 Denial-of-service
Un atac de refuz de serviciu (DoS) are loc atunci când utilizatorii legitimi nu pot accesa sisteme de informații,
dispozitive sau alte resurse de rețea din cauza acțiunilor unui act de amenințare cibernetică dăunătoare. Serviciile
afectate pot include e-mail, site-uri web, conturi online (de exemplu, servicii bancare) sau alte servicii care se bazează
pe computerul sau rețeaua afectată. O condiție de refuz de serviciu se realizează prin inundarea cu trafic a gazdei
vizate sau a rețelei până când ținta nu poate răspunde sau pur și simplu se prăbușește, împiedicând accesul
utilizatorilor legitimi. Atacurile DoS pot costa o organizație atât timp, cât și bani, în timp ce resursele și serviciile lor
sunt inaccesibile.
Există multe metode diferite pentru efectuarea unui atac DoS. Cea mai comună metodă de atac apare atunci când un
atacator inundă un server de rețea cu trafic. În acest tip de atac DoS, atacatorul trimite mai multe solicitări către
serverul țintă, supraîncărcându-l cu trafic. Aceste solicitări de servicii sunt nelegitime și au adrese de retur fabricate,
care induc în eroare serverul atunci când încearcă să autentifice solicitantul. Întrucât solicitările de junk sunt procesate
constant, serverul este supraîncărcat, ceea ce provoacă o condiție DoS pentru legitimații.
Într-un atac de tip Smurf, atacatorul trimite pachete de transmisie Internet Control Message Protocol către un
număr de gazde cu o adresă IP Protocol (sursă) distorsionată care aparține mașinii țintă. Beneficiarii acestor pachete
răsfățate vor răspunde apoi, iar gazda vizată va fi inundată cu aceste răspunsuri.
O inundație SYN are loc atunci când un atacator trimite o solicitare de conectare la serverul țintă, dar nu
finalizează conexiunea prin ceea ce este cunoscut sub numele de strângere de mână cu trei căi - o metodă utilizată
într-o rețea de transmisie de protocol (TCP) / IP pentru a crea o conexiune între un gazdă / client local și server.
Strângerea de mână incompletă lasă portul conectat într-un statut ocupat și indisponibil pentru alte solicitări. Un
atacator va continua să trimită solicitări, să satureze toate porturile deschise, astfel încât utilizatorii legitimi să nu se
poată conecta.
Rețelele individuale pot fi afectate de atacuri DoS fără a fi direcționate direct. Dacă furnizorul de servicii de
internet (ISP) sau furnizorul de servicii cloud a fost vizat și atacat, rețeaua va avea, de asemenea, pierderi de servicii.
Un alt mod de a descoperi dacă aplicația este vulnerabilă este de a verifica prezența paginilor cu extensia .stm,
.shtm și .shtml. Totuși, lipsa acestui tip de pagini nu înseamnă că aplicația este protejată împotriva atacurilor SSI.
În orice caz, atacul va avea succes numai dacă serverul web permite executarea SSI fără o validare
corespunzătoare. Acest lucru poate duce la accesul și manipularea sistemului și a procesului de fișiere sub
permisiunea proprietarului procesului serverului web.
Atacatorul poate accesa informații sensibile, cum ar fi fișierele cu parolă, și să execute comenzi shell.
Instrucțiunile SSI sunt injectate în câmpuri de intrare și sunt trimise serverului web. Serverul web analizează și execută
directivele înainte de furnizarea paginii. Apoi, rezultatul atacului va putea fi afișat data viitoare când pagina va fi
încărcată pentru browserul utilizatorului.
//Niște idei: puteti lua baza de date CVE (care listează vulnerabilități în aplicații) și să faceți niște analized pe acele
date folosind un tool de analiză (RapidMiner sau orice alt tool de analiză statistică) - dupac ce separați
vulnerabilitățile pentru WEB (nu vreți și cel pentru programe desktop și sisteme de operare). Puteți vedea dacă se
oferă și informații privind severitatea lor precum și gradul de acoperire (câte sisteme se estimează ca pot fi
impactate)... Ar trebui sa descărcați fisierele și să le procesați (eventual le deschideți vizual întâi să vedeți cum sunt
structurate datele)...
https://cve.mitre.org/data/downloads/index.html
https://www.cvedetails.com/
https://nvd.nist.gov/ Ion
6. Bibliografie
[1] J.D. Meier, Alex Mackman, Michael Dunner, Srinath Vasireddy, Ray Escamilla and
Anandha Murukan Microsoft Corporation http://msdn.microsoft.com/en-
us/library/ff648636.aspx (ultima accesare:13.04.2020 )
[2] OWASP Foundation, A Guide to Building Secure Web Applications and Web Services
2.0 Black Hat Edition July 27, 2005 (ultima accesare:18.04.2020 )
[3] J.D. Meier, Alex Mackman, Michael Dunner, Srinath Vasireddy, Ray Escamilla and
Anandha Murukan Microsoft http://msdn.microsoft.com/en-us/library/ff648651.aspx (ultima
accesare:15.04.2020 )
J.D. Meier, Alex Mackman, Michael Dunner, Srinath Vasireddy, Ray Escamilla and Anandha
Murukan http://msdn.microsoft.com/en-us/library/ff648650.aspx (ultima accesare:23.04.2020 )
[4] https://www.owasp.org/index.php/Testing:_Introduction_and_objectives (ultima
accesare:18.04.2020 )
[5] OWASP Foundation, 2010 The ten Most Critical Web Application Security Risks.
http://www.owasp.org/index.php/Top_10 (ultima accesare:30.04.2020 )
[6] http://www.thc.org/thc-hydra/ (ultima accesare:18.04.2020 )
[7] https://www.owasp.org/index.php/Category:OWASP_SQLiX_Project (ultima
accesare:2.05.2020 )
[8] http://www.mavitunasecurity.com/netsparker/ (ultima accesare:05.05.2020 )
[9] http://www.fiddler2.com (ultima accesare 05.05.2020 )
[11 ] http://www.mavitunasecurity.com/e-mail-address-disclosure/ (ultima accesare:03.05.2020
)https://ww.owasp.org/index.php/Top_10_2010-A9 (ultima accesare:3.05.2020 )
[12] https://lists.oasis-open.org/archives/was/200308/pdf00000.pdf (ultima accesare:3.05.2020 )
[13] https://merehead.com/blog/web-development-trends-2018/
[14] http://panmore.com/the-cia-triad-confidentiality-integrity-availability
[15] http://ict-industry-reports.com.au/wp-content/uploads/sites/3/2008/04/2006-managing-
denial-of-service-attacks-tisn-dcita.pdf
[16] https://www.ptsecurity.com/ww-en/analytics/web-application-attacks-2019/