Spargerea bazelor de date: Termeni și tehnologii pe care trebuie să le cunoaștem, înainte de a începe

2

Bine ați revenit, dragii mei hackeri în devenire!

Deși există o multitudine de tipuri de atacuri diferite, obiectivul pe care îl împărtășesc în acest moment îl reprezintă baza de date. Mă refer adesea la baza de date ca fiind Sfântul Graal al hackerului sau premiul final pentru un hack eficient. Asta pentru că baza de date – aproape prin definiție – este depozitul tuturor “bunurilor” pe care hackerul le urmărește. Aceste bunuri pot include date despre cardul de credit, informații de identificare personală, nume de utilizator și parole cât și proprietate intelectuală. Fiecare dintre acestea pot fi vândute pentru sume importante de bani pe piața neagră.



De exemplu, numerele cardurilor de credit pot fi vândute între 5 și 50 $, în funcție de calitate (cardurile gold și platinum valorează mai mult decât cardurile obișnuite) și limita de credit a acestora. Deci, un hack care strânge 200.000 de numere de cărți de credit valorează undeva de la 1 până la 10 milioane de dolari!

În același timp, hackerii sponsorizați de stat, precum China, urmăresc proprietatea intelectuală. Aceasta ar include proiectări, formule, inginerie și alte lucruri pe care le pot fura și aduce în China pentru fabricarea de către companiile chineze. Acest lucru se întâmplă în fiecare zi, iar unii consideră că este cel mai mare furt din istoria lumii!

Aceasta este prima postare a unei noi serii BlackWeb.ro despre hacking-ul bazelor de date. Înainte de a examina cum să spargem o bază de date, trebuie să înțelegem elementele de bază ale funcționării bazelor de date, ce este SQL și ce vulnerabilități sunt comune bazelor de date.

Așadar, haideți să începem, astfel încât să putem ajunge rapid la unele metode de spargere a bazelor de date.

Ce este o bază de date?

Structura unei baze de date

Acest model de bază de date relațional leagă datele din tabele separate prin utilizarea unei coloane partajate sau „cheie”. Diagrama de mai jos este a unui model de bază de date relațional simplu în care toate tabelele sunt legate de coloana „ID”.

Principalii furnizori pe piața bazelor de date

Piața bazelor de date are mai mulți furnizori care oferă produse ce pot îndeplini aceeași sarcină, dar în moduri diferite. Principalii furnizori pe această piață sunt:

  • Oracle. Ei sunt titanii pe această piață, cu o cotă de aproape 50%. Dețin mai multe produse software diferite pentru baze de date, inclusiv numele lor și MySQL.
  • Microsoft SQL Server. Microsoft a intrat pe această piață la începutul anilor ’90, făcând echipă cu Sybase pentru a dezvolta o ofertă de baze de date pentru întreprinderi. Drept urmare, MS SQL Server și Sybase încă împărtășesc multe asemănări. Inițial, Microsoft era doar un jucător pe piața afacerilor mici, dar câștigă încet tracțiunea pe piața mai mare a întreprinderilor.
  • MySQL / Maria DB Aceasta este o bază de date open-source pe care o veți găsi în spatele atâtor site-uri web, în mare parte, pentru că este gratuită.
  • IBM DB2. IBM a fost furnizorul inițial de baze de date pentru întreprinderi și a realizat numeroase evoluții majore în proiectarea bazelor de date, dar, ca orice produs IBM, a fost în declin în ultimele decenii.

Alți furnizori majori includ Sybase, SAS, PostgreSQL (open source) și mulți alții. În general, ca în orice alt  hack, trebuie să facem o bună cercetare pentru a determina software-ul și versiunea, dacă dorim ca atacul să aibă succes, deoarece majoritatea bazelor de date sunt specifice furnizorului.

Structured Query Language (SQL)

Când IBM a dezvoltat bazele de date timpurii, au dezvoltat și un limbaj de programare pentru gestionarea și manipularea acestor date. Ei au numit-o „Structured Query Language”, sau cum este cunoscut în general, SQL.

Aceasta este o limbă simplă care folosește cuvinte din limba engleză în moduri similare pe care le folosesc oamenii care vorbesc engleza. De exemplu…

  • SELECT înseamnă „selectați unele date din coloanele unui tabel”
  • FROM înseamnă „obțineți datele din acest tabel”
  • WHERE înseamnă selectarea datelor care îndeplinesc această condiție (prenumele = ‘florin’).

Mai mult, cuvinte precum UPDATE, INSERT și DROP înseamnă în SQL exact ceea ce v-ați aștepta să însemne.

SQL nu este deloc mofturos când vine vorba despre sintaxă, dar este foarte interesant pentru logică. Deși cele mai bune practici sunt CAPITALIZAREA tuturor cuvintelor cheie (SELECT, FROM, WHERE), nu este necesar. În plus, spațiul alb este ignorat. Totuși, se necesită ca o instrucțiune SQL să se încheie într-un punct și virgulă (;). La produsele Microsoft, este opțional.



SQL este standardizat de ANSI, dar această standardizare include doar aproximativ 80% din limbajul sau nucleul SQL. Editorii de software sunt liberi să adauge comenzi și funcții suplimentare care nu fac parte din standard. Acest lucru poate face uneori dificilă transportarea codului SQL între DBMS. De asemenea, este esențial să faceți o bună recunoaștere a bazei de date pentru a cunoaște producătorul și versiunea înainte de a ataca, deoarece atacurile sunt adesea specifice producătorului și versiunii.

Fiecare DBMS (Database Management System) poate fi utilizat dintr-o linie de comandă, însă fiecare are propria interfață grafică. MySQL are o nouă interfață grafică numită Workbench, așa cum se vede în secțiunea anterioară.

Oracle, Microsoft și celelalte dispun de interfețe similare care permit administratorului să acceseze sistemele lor.

Interogarea de bază SQL

Când trebuie să extragem date din baza de date, se spune că „interogăm” baza de date. Deoarece bazele de date sunt depozite pentru date, capacitatea de a extrage sau a interoga date este una dintre cele mai importante funcții. Ca hacker, dorim să extragem date, astfel că interogarea este esențială pentru obținerea bunurilor.

Structura de bază a interogării arată astfel:

SELECT <coloane>
FROM <tabel>
WHERE <condiții>

Această afirmație spune „arată-mi datele din coloanele enumerate în instrucțiunea SELECT din tabelul care vine după cuvântul cheie FROM, dar arată-mi doar rândurile care îndeplinesc condițiile ce urmează după cuvântul cheie WHERE”.

Așadar, dacă am dori să obținem prenumele, numele, numele de utilizator și parola de la tabelul de personal pentru angajații cu prenumele „George”, am putea construi o declarație de acest fel:

SELECT first_name, last_name, username, password
FROM staff
WHERE last_name = ‘George”;

După cum puteți vedea în imaginea de mai sus, am extras înregistrarea lui Vasilică George din tabelul personalului cu numele său de utilizator și parola (parola este de fapt un hash al parolei sale).

Injectarea SQL

Injectarea SQL este cel mai frecvent atac al bazelor de date și este probabil responsabilă pentru cel mai mare volum de pierderi al milioanelor de dolari, datorită criminalității cibernetice și este cunoscută sub denumirea de amenințare persistentă avansată (APT).

Practic implică introducerea comenzilor SQL în formele de date ale paginilor web care se conectează la o bază de date. Aceste formulare trimit apoi aceste comenzi SQL în baza de date și baza de date va autentifica utilizatorul (da, autentificarea este o funcție a bazei de date) sau va renunța la datele țintă.

În tutorialele viitoare, vom petrece destul de mult timp folosind instrumente de injectare SQL și executând atacuri de injectare SQL.

Alte vulnerabilități

Pe lângă faptul că vă arătăm cum să faceți o injectare SQL, vom examina o parte din alte vulnerabilități din bazele de date. Acestea implică autentificarea, folosind baza de date pentru a compromite sistemul de operare și multe altele.



Acum că am acoperit terminologia și tehnologia de bază referitoare la bazele de date, în tutorialele viitoare vă voi arăta cum puteți să accesați aceste baze de date, așadar nu uitați să reveniți. 🙂

Choose your Reaction!
Leave a Comment

Your email address will not be published.

Opțiunea copy-paste a fost dezactivată pentru acest site.