Din terminologia utilizată de hackeri

În acest articol o să descriu succint, dar sper pe înțelesul vostru, câțiva din termenii utilizați des de cercetătorii în domeniul securității sistemelor informatice (numiți de media și hackeri).

Ca o scurtă notă, comunitatea ”hackerilor” a apărut dintr-o nevoie, una pe care acum poate societatea o resimte tot mai aproape, după expansiuea rețelelor de socializare și binențeles a internetului. Ca exemplu, o să vă dau o lege din constituția SUA, care permite oricărui cetățean să dețină o armă pentru a se putea apăra de guverul SUA.
Nu este scopul acestui articol să intre în polemici de etică, conduită sau morală așa că o să trec direct la subiect.

PoC: prescurtarea de la Proof of Concept, respectiv un document, o prezentare, sau o legătură care poate fi folosită pentru a dovedi că o presupusă vulnerabilitate chiar există, și deci poate fi reprodusă. Un astfel de exemplu este prezentarea lui Barnaby Jack.

RCE: Remote Code Execution, este un tip de vulnerabilitate prin care un sistem poate fi manipulat să ruleze secvențe de cod specificate și/sau comenzi trimise de pe o altă mașină – de la distanță.

Un exemplu elocvent sunt cele raportate recent cu mașina virtuală Java. De exemplu folosind această metodă la vizitarea unei pagini web care încarcă un applet Java ce conține un cod specific de evaziune, mașina virtuală care rulează pe sistemul vizitatorului pentru a executa applet-ul din pagina web, poate fi manipulată să execute un fișier specific de pe disc – de exemplu notepad.exe sau shudtown.exe.
Desigur că Java a fost actualizat și este acum mai sigur însă ar fi o idee bună să verificați dacă aveți instalată ultima versiune.

Buffer Overflow/Underflow: un tip de vulnerabilitate care permite abuzul memoriei rezervat unei aplicații. Acestea cauzează blocarea sau oprirea forțată a soft-ului în cauză și uneori poate duce la blocarea mașinii pe care ruleză softul afectat. Un exemplu este cea cu antetul Range în Apache versiunea 2.0. Aceasta permitea trimiterea unei cantități mari de de valori care se suprapun în antetul Range, printr-o cerere către un server Apache 2.0, ducând la suprautilizarea de resurse hardware. Adesea acest tip de vulnerabilități sunt folosite pentru a provoca atacuri de tip DoS.

CSRF/XSRF: prescurtarea de la Cross-Site Request Forgery, este un tip de vulnerabilitate care permite trimiterea unei cereri automate din domeniul X la domeniul B în sesiunea mașinii/utilizatorului autorizate pe domeniul B.

Mai pe larg, acest tip de atac profită de fereastra de autorizare garantată de primul domeniu. Atunci cînd vă autentificați pe un site, (domeniul B.com), pentru a vă recunoaște, navigatorul dvs. primește de la aplicație bucăți de informații pe care le salvează într-o memorie temporară, numite și cookie-uri. Navigatorul dvs va re-trimite aceste ”prăjiturele” la domeniul B.com cu fiecare cerere (la fiecare încărcare de pagină) și astfel serverul știe că sunteți autentificat, și mai ales sub ce identitate sunteți autentificat. Să zicem că postați ceva pe saitul de pe domeniul B.com și apoi navigați la un alt sait pe domeniul X.net. Acesta din urmă, nu are acces la ”prăjiturelele” pe care navigatorul dvs. le-a primit de la domeniul B.com, însă nici nu are nevoie de ele, deoarece poate face o cerere către domeniul B.com, în timp ce dvs. încărcați una dintre paginile sale, pe domeniul X.net. Deoarece cererea se face direct din navigatorul dvs., și merge direct la domeniul B.com, acesta va include ”prăjiturelele” în anetele cererii. Astfel domeniul B.com este ”păcălit” că dvs. ați inițiat în mod voit cererea, și va proceda la autentificarea și autorizarea ei. Ceea ce conține această cerere este la alegerea atacatorului, și cel mai probabil strâns legată de specificul aplicației de pe domeniul B.com. De la publicarea unui mesaj pe o platformă de socializare până la transferul de bani într-un cont.

Pentru a vă proteja de acest tip de atacuri puteți apela la următoarele tehnici:

  • Folosiți navigatorul în ”mod incognito” (CTRL+Shift+N) pentru a accesa saituri importante. Astfel toate cookie-urile sesiunii sunt șterse la închiderea navigatorului;
  • Dați click be butonul de Logout (Deautentificare) înainte de a părăsi saiturile pe care sunteți autentificat;

XSS: este un acronim pentru de la Cross-Site Scripting și implică posibilitatea de expolatare a unei vulnerabilități într-o aplicație web, astfel încât să afecteze funcționarea respectivei aplicații, sau să permită accesul la informații considerate confidențiale între server și client. Este unul dintre cele mai răspândite tipuri de atacuri, de unde putem deduce că este și una dintre cele mai răspândite vulnerabilități în aplicațiile web.

Un exemplu poate fi o secțiune de comentarii, care permite postarea de comentarii, însă nu reușește să filtreze codul scris în Javascript înainte de afișarea comentariilor. Astfel un comentator poate include cod în Javascript în comentariul său. Când acest comentariu va fi afișat, va fi executat și codul Javascript, pe navigatoarele celor care vizitează pagina. Astfel atacatorul pate redirecționa utilizatorii la o altă pagină sau să afle cookie-urile stocate în navigatoarele lor.

SQL Injection: este un tip de vulnerabilitate ce permite unui atacator să execute cereri directe către un server de baze de date, prin intermediul aplicației web care este autorizată să facă conexiunea.

O sursă foarte răspândita pentru astfel de vulnerabilități ne-sanitizarea parametriilor de intrare (GET și POST) în aplicațiile web. Astfel, un atacator poate executa o cerere SQL special contruită, pentru a accesa sau modifica date care nu sunt accesibile decât aplicației web și utilizatorilor autorizați.

Un exemplu poate fi o pagină care listează profilele utilizatorilor, și oferă o funcție de căutare. Dacă aplicația nu sanitizează parametrii de căutare, un hacker poate insera în parametrii, o cerere specială către baza de date, care să listeze adresele de e-mail ale utilizatorilor sau chiar să schimbe parolele unor utilizatori. Mai multe exemple găsiți aici.

Information disclosure: este un tip de vulnerabilitate care permite aflarea de date confidențiale despre un utilizator sau un serviciu, apelând la servicii similare care stochează date similare pentru a filtra informația.

De exemplu, unele saituri de socializare afișează prietenilor adresa de e-mail și câteva cifre din numărul de telefon. Să presupunem că afișează primele 4 cifre din numărul de telefon. Știind că pe alte saituri, dacă ceri resetarea parolei pentru o adresă de e-mail la ultimul pas se vor afișa ultimele 4 cifre din numărul de telefon… mai rămâne de ghicit o cifră, pentru a afla numărul de telefon al persoanei respective.

Shell upload: o vulnerabilitate care permite încărcarea unui fișier executabil pe serverul ce găzduiește aplicația.

Un exemplu este cea descoperită în scriptul timthumb.php acum 2 ani, care permitea încărcarea unui fișier php pe serverele ce găzduiau acest script. Scriptul în sine este destinat să re-dimensioneze imagini, însă printr-o cerere special contruită acesta putea fi manipulat să salveze local un fișier aflat la pe un alt server.

Zero-Day: termen folosit pentru descrierea anvergurii unei vulnerabilități proaspăt raportate, și înseamnă că este posibil să afecteze milioane de saituri și computere, pe tot globul. Practic  ar trebui să pună toți administratorii din domeniul IT, și mai ales pe cei din domeniul securității pe jar.

Exploit: este rezultatul unui PoC. Un script sau executabil care poate fi folosit ca PoC.

DoS/DDoS: prescurtarea de la Denial of Service respectiv Distributed Denial of Service, este un atac care urmărește oprirea unui serviciu. Diferența dintre DoS și DDoS este că pentru un DoS se folosește o singură mașină sursă, pe când într-un DDoS sunt implicate mai multe mașini în paralel.

Brute-Force/Dictionary Attack: este un tip de atac ce are ca scop aflarea unei parole, sau a unei chei de criptare prin încercări repetate de combinații posibile. Dacă aceste combinații provin dintr-un dicționar (o listă filtrată de combinații pe diverse criterii) atunci este un dictionary attack.

Și lista poate continua… însă cred că pentru moment sunt destule. Totuși doresc să menționez că devine și mai interesant dacă combinăm acești termeni: astfel putem avea o vulnerabilitate buffer overlow DoS, un DDoS dictionary attack, zero-day expoit, information disclosure SQL injection vulnerability ș.a.m.d .