[o chestie pe care am scris-o mai demult si am gasit-o intamplator prin calculator; o pun aici in ideea ca poate o sa ii foloseasca vreodata cuiva la ceva 🙂 ]
Este vorba in principal de suspendarea protectiei programelor pt calculator (cracking) si de castigarea accesului pe calculatoarele aflate intr-o retea de calculatoare (hacking).
1. Dezactivarea protectiei software Companiile care vand softuri pt. calculator obisnuiesc sa distribuie versiuni demonstrative ale programelor create de ei. Acestea sunt protejate in diferite modalitati: a. programul ruleaza de un numar de ori, dupa care nu mai functioneaza b. programul ruleaza pentru o perioada limitata de timp, dupa care nu mai functioneaza c. unele functii ale programului sunt dezactivate d. programul functioneaza, doar ca din cand in cand utilizatorul este intrerupt de un mesaj prin care i se cere sa inregistreze programul Exista, desigur, si alte metode de protejare a programelor. Au fost enumerate aici doar cele mai importante. De asemenea, trebuie precizat ca unele programe folosesc in mod combinat aceste metode de protectie (ex.: pentru o perioada de timp programul ruleaza, utilizatorul fiind bombardat cu mesaje prin care i se cere sa inregistreze programul (d); dupa ce perioada a expirat (b), unele functii ale programului sunt dezactivate (c);) Atunci cand protectia programelor pt. calculator este realizata prin instructiuni incorporate in program, protectia poate fi "sparta". Pentru aceasta se urmeaza de obicei urmatorii pasi: 1. Programul este de obicei tradus din cod masina in limbajul de programare cel mai primitiv (Assembler - limbajul in care au fost construite celelalte limbaje de programare) - acest procedeu se cheama dezasamblare sau decompilare 2. Sunt identificate instructiunile caracteristice protectiei 3. Se rescriu instructiunile respective, fiind inlocuite cu instructiuni "inofensive", fara ca prin aceasta functionarea restului programul respectiv sa fie perturbata 4. Programul este recompilat intr-o varianta care va functiona fara protectie. Exemplificare pe cazuri: a. Un program care cuprinde tipul (a) de protectie include de obicei un contor care inregistreaza fiecare rulare a programului; este vorba de un sir de instructiuni care se executa la pornirea programului, dupa modelul: 1. Afla de cate ori a fost rulat programul pana acum 2. Daca valoarea respectiva este mai mare de N (numarul maxim de rulari permise) intrerupe executarea programului, daca nu, continua executia 3. Mareste valoarea respectiva cu o unitate 4. Salveaza noua valoare intr-un fisier din calculator observatie: instructiunea 4 este necesara pentru a memora valoarea din contor; altfel, atunci cand programul ar fi oprit, valoarea ar disparea din memoria calculatorului "Spargerea" protectiei se poate face fie identificand fisierul in care se memoreaza valoarea din contor, editandu-l din cand in cand si schimband valoarea de acolo (fara a modifica, deci, propriu-zis programul), fie dezactivand instructiunea 3, fie dezactivand instructiunea 2, fie dezactivand instructiunea 4. b. Programele de tip (b) cuprind instructiuni de protectie prin care se acceseaza ceasul calculatorului, dupa modelul: 1. Citeste data curenta 2. Daca data curenta > data limita de functionare a versiunii demonstrative a programului, intrerupe functionarea programului, altfel continua executia Schimbarea datei din calculator la o data anterioara sau dezactivarea instructiunii 2 reprezinta o strategie de a continua utilizarea programului. c. In cazul in care partea de program prin care se executa functiile dezactivate pur si simplu nu a fost inclusa in varianta demonstrativa, nu se poate face nimic. Daca partea respectiva a fost inclusa in program, acesta e posibil sa cuprinda un set de instructiuni de forma: 1. Verifica daca programul a fost inregistrat 2. Daca da, activeaza functiile X,Y,Z, in caz contrar nu le activa Modificarea instructiunii 1 poate duce la activarea functiilor dezactivate. d. Programele de tip (d) cuprind, de obicei, instructiuni de forma: 1. Creeaza o valoare aleatoare cuprinsa intre min (valoarea minima) si max (valoarea maxima) 2. Verifica daca a trecut un interval de timp egal cu valoarea aleatoare creata 3. In caz ca da, creeaza un mesaj prin care ii ceri utilizatorului sa se inregistreze, iar daca nu reia instructiunea 2 O modalitate de a "sparge" partial protectia ar fi aceea de a modifica valorile pentru min si max, facandu-le foarte mari, astfel incat mesajul suparator prin care se cere inregistrarea sa apara mult mai rar. O alta procedura posibila ar putea consta in dezactivarea instructiunii 3 sau a instructiunilor 2 si 3. Dezactivarea unor instructiuni se realizeaza fie prin stergerea lor, fie prin inlocuirea lor cu instructiuni inofensive. Uneori, intr-o alta parte a programului exista secvente de verificare. Aceasta sunt de forma: 1. Verifica lungimea programului 2. Daca aceasta este mai mica de N (lungimea initiala a programului) - de unde reiese ca unele instructiuni au fost sterse, opreste executia programului, iar daca nu, continua executia Bineinteles ca si aceste secvente de verificare pot fi dezactivate. Multe programe care sunt distribuite in versiuni demonstrative pot fi inregistrare prin completarea unui cod de inregistrare. In acest caz ele vor functiona la intreaga capacitate. "Spargerea" programului poate consta, in cazul acestor programe in descoperirea codului de inregistrare. Putem intalni doua situatii: a. fie codurile prin care poate fi inregistrat programul sunt pastrate undeva in interiorul programului b. fie codurile sunt generate prin executarea unor functii matematice (de pilda, codul de inregistrare ar putea fi un numar format din primele patru cifre ale puterilor succesive ale numarului 1234: 1234, 1522, 1879 etc.) observatie: uneori, atunci cand pentru inregistrare este nevoie si de completarea unui nume de utilizator, este vorba de procedee criptografice intermediul carora numarul de inregistrare este de fapt numele utilizatorului codificat numeric potrivit unei anumite chei de criptare In ambele cazuri cel care "sparge" programul va identifica portiunea de program care are legatura cu stocarea sau generarea codurilor de inregistrare si va descoperi care sunt acestea, dupa care va rula programul si il va inregistra ca si cand ar fi primit cheia de inregistrare de la producator. 2. Castigarea accesului pe calculatoarele aflate in retea Calculatoarele aflate in retea comunica intre ele pachete de informatii ce sunt transmise intr-un anumit format, potrivit unor protocoale de comunicatie. Protocolul cel mai utilizat, folosit pentru comunicarea de informatii prin intermediul retelei Internet, este TCP/IP (Transfer Control Protocol / Internet Protocol). Modul de procedare este urmatorul: - fiecare calculator este identificat in retea prin intermediul unei adrese numerice unice care ii este alocata (o adresa de forma: 192.12.168.77); - pentru ca informatiile de pe calculatorul respectiv sa fie disponibile in retea trebuie ca pe el sa ruleze programe care preiau informatii de pe harddisk-ul calculatorului si le trimit, eventual la cerere, catre interfata de retea; - in functie de programele care ruleaza pe calculator, se considera ca acesta ofera diferite servicii; acestor servicii li se aloca porturi de comunicatie diferite, ca si cand, in mod virtual, fiecarui tip de serviciu i s-ar aloca un cablu diferit pentru transmiterea informatiilor; - porturilor de comunicatie li se asociaza un cod numeric care se ataseaza la adresa calculatorului; de pilda, atunci cand vedem paginile de web aflate pe un calculator, putem face aceasta pentru ca pe calculatorul respectiv exista un program, numit server de web care deschide portul de comunicatie 80 si raspunde la cererile pe care i le adreseaza browserul de web (Internet Explorer, de pilda) care ruleaza pe calculatorul nostru; - in spatele vizionarii unei pagini de pe site-ul www.microsoft.com, sa spunem, se intampla urmatorul lucru: browserul de pe calculatorul nostru se conecteaza la un calculator pe care sunt inregistrate tabele de corespondenta intre adresa in litere (www.microsoft etc...) a calculatorului din retea cu care dorim sa comunicam si adresa numerica a acestuia (sa presupunem ca aceasta este 192.12.1.1.); apoi browserul se conecteaza la calculatorul 192.12.1.1 pe portul 80 (adica se duce la adresa 192.12.1.1:80) si transmite mesajul prin care cere ca un anumit fisier (care contine pagina pe care dorim sa o vedem) sa fie trimis la adresa numerica alocata calculatorului nostru; programul care ruleaza pe server preia cererea si o executa, trimitand fisierul prin retea pe adresa calculatorului nostru; browserul primeste informatia si o afiseaza pe ecran; - exista servicii, diferite de cel prin care sunt vizionate paginile de internet, care ne permit nu doar sa tranferam fisiere de pe un calculator pe altul, ci chiar sa utilizam un alt calculator, prin retea, ca si cand am fi in fata lui, sa rulam programe pe calculatorul respectiv, sa vedem rezultatele pe calculatorul nostru s.a.m.d.; un astfel de serviciu este telnet, conectarea facandu-se in acest caz pe portul 23; ceea ce se intampla este ca, in loc sa trimita efectul rularii programelor de pe calculatorul gazda catre monitor, serverul de telnet care ruleaza pe acesta trimite rezultatul prin retea catre calculatorul nostru, unde acesta este afisat pe monitorul nostru, iar comenzile pe care le dam noi sunt preluate ca mesaje, transmise prin retea, interpretate drept comenzi pe calculatorul gazda si executate pe acesta; - accesarea unor asemenea servicii se realizeaza dupa o verificare; aceasta consta de obicei in completarea unui nume de utilizator si a unei parole; In mod uzual, informatiile aflate pe calculatoarele aflate in retea, se impart in informatii publice (la care pot avea acces toti utilizatorii sistemului respectiv) si informatii private (fiecare utilizator are acces doar la informatiile private proprii, nu si la cele apartinand celorlalti utilizatori). Conectarea la un serviciu de retea sub numele unui anumit utilizator nu permite decat accesarea informatiilor private ale utilizatorului respectiv. Un singur utilizator, si anume administratorul sistemului, are in principiu acces la toate informatiile aflate pe calculatorul respectiv. Pentru a castiga accesul la informatiile de pe un calculator trebuie sa fie depasite procedurile de verificare specifice fiecarui serviciu de comunicare a informatiilor. Pasii urmati de catre un hacker sunt de regula urmatorii: 1. scanarea unui numar de calculatoare din retea (de exemplu, de la 198.12.12.1 si pana la 198.12.12.225) - pentru aceasta se folosesc programe specializate care apeleaza pe rand fiecare adresa, incercand sa initieze diferite servicii de retea (verificand daca o adresa este alocata si ce porturi sunt deschise pe calculatorul de la adresa respectiva) 2. dupa gasirea unui calculator, sa presupunem ca este un calculator care ofera serviciu de telnet, se initiaza procedura de verificare in urma careia poate fi capatat accesul la serviciul respectiv; pentru aceasta hackerul ruleaza un program care genereaza si trimite cu viteza mare un numar urias de combinatii de nume de utilizator si parole catre calculatorul respectiv, pana cand se gaseste o combinatie valida - in acest moment hacker-ul a castigat acces in contul unui anumit utilizator; 3. dupa conectarea la calculatorul respectiv se pot urma mai multe proceduri prin care sa fie castigat accesul de la nivel de administrator de sistem; de pilda: - hackerul transfera pe propriul calculator fisierele in care se afla parolele utilizatorilor, inclusiv cea a administratorului si incearca sa le decripteze - hackerul copiaza pe calculatorul gazda un program care, odata rulat, initiaza un serviciu pirat, astfel incat toate informatiile vechiculate printr-un port de comunicatie ii sunt transmise si lui, dupa care asteapta ca administratorul sa se conecteze la serviciul respectiv pentru a-i citi parola - hackerul ruleaza pe calculatorul gazda programe care, datorita unor erori de programare ale sistemului de operare, ii ofera "din greseala" posibilitatea de a-si schimba identitatea cu cea a administratorului de sistem etc. 4. odata castigat accesul la nivel de administrator de sistem, sunt transferate prin retea informatiile dorite 5. la sfarsit sunt indepartate toate informatiile care ar putea trada accesul unui intrus la calculator (de pilda: calculatorul inregistreaza intr-un fisier toate accesele utilizatorilor la sistem, cu data si ora accesului; daca hackerul a intrat pe calculator in calitate de administrator, in acest fisier a fost creata o inregistrare care spune ca administratorul a accesat calculatorul la ora respectiva; administratorul real poate avea, bineinteles, acces la aceasta inregistrare, asa ca hackerul sterge linia respectiva din fisier etc.) Bineinteles, procedurile de operare sunt mai complicate, nefiind schitate aici decat in linii generale.
E criminal fontul ala, a trebuit sa-l copiez in word. Cunosteam notiunile insa ma mira ca nu ai mentionat miile de ”hackeri” care trag tepe pe site-urile de licitatii si apoi se lauda la prietenii din bloc.
Pingback: Happy Hacking! « radio…fm…
simplut si frumos explicate conceptele.
doar 1-2 chestii merita subliniate:
1) termenul de hacker nu inseamna doar persoana care incearcas sa obtina accesul la un alt sistem intr-un mod “dubios”. La origine termenul insemna o persoana care avea cunostinte f bune in domeniul IT/Electronic si le folosea pt a modifica programe/chestii electronice. E adevarat ca de la un punct incolo a inceput sa fie asociat cu activitati dubioase :D.
Insa in prezent este folosit in sintagme de genu “kernel hacking” care inseamna modificare kernelului Linux/Windows pt a satisface o necesitate care nu a fost prevazuta initial.
Este o chestie destul de bine platita si on the light side :).
2) cam greu gasesti servere in ziua de azi care sa accepte conexiuni telnet din cauza ca telnet-ul nu foloseste o criptare a mesajelor. Acestea fiind transmise in clar oricine poate intercepta acel mesaj si citi user/pass dupa care restul e usor :D.
Cele mai frecvente conexiuni se fac (in linux mai ales) prin SSH( daca nu ma insel cumva). SSH = secure shell si este un protocol care foloseste criptarea prin algoritmul RSA.
Asta il face mai dificil de decriptat ( algoritmul foloseste pt codare niste numere f mari si ar necesita mult processing time pt decodare) si deci mai safe.
Just my 2 cents sorry de bagarea in seama 😀
@krossfire: aia nu sunt hackeri;
@Seth: 10x a lot pentru completari! you’re right cu “hacker“, care e folosit si in alt sens, fara nici un fel de conotatii negative; si ai dreptate si cu ssh, am vazut ca tot mai multe servere de universitati desfiinteaza telnet si ftp si lasa doar ssh si scp.
@seth – daca ai sti cate servere au telnetul activat…asta din motive de admini tampiti sau nepriceputi..
@gramos – nu stiu cat de mult te pricepi in domeniul IT, dar mi se pare o idee buna sa scrii cate ceva despre aspectele mai putin cunoscute ale calculatoarelor, si oarecum mitizate. pentru ca, pana acum, desi exista o multime de bloguri si pagini care au ca subiect domeniul IT, eu nu am gasit vreo informatie interesanta, exceptand stirile copiate de pe alte site-uri, de obicei straine. In concluzie, mi-a placut postul, si te-as ruga sa continui. Bineinteles, daca face obiectul unui interes real din partea ta.
@krossfire: majoritatea browserelor reactioneaza la combinatia [ctrl + ] prin marirea fontului [sau ‘command +’ daca esti fericit cu un Mac]
@gramo: sa luam ‘la atac’ diverse puncte
1. Cheile de software [serials] sunt de multe ori generate prin algoritmi prestabiliti. Chestia cu numele si serial number-ul foloseste de cele mai multe ori un one-time pad/hash function ca sa genereze un serial valabil. Nu e nevoie neaparat de cheie [si ar fi foarte usor de extras cheia din program] Functia respectiva, aplicata unui nume, ar trebui sa genereze un anumit tip de valori pentru serial; programul stie si el asta si calculeaza acelasi lucru cand il inregistrezi.
2. De multe ori, inainte de dezasamblare, programul se ruleaza printr-un debugger [gdb, NuMega SoftICE] ca sa vezi, orientativ, unde se intampla ce. Un executabil de 11 MB o sa contina cateva carti de x86 ASM si e impractic sa intelegi atat cod.
3. Mai multe detalii despre terminologie pe http://catb.org/esr/jargon/html/go01.html – The Jargon File [ca sa nu-mi fac reclama singur, am scris si eu acum ceva vreme o scurta analia a diverselor specimene din underground.]
Oricum, textul pare scris mai demult si e destul de solid dpdv al informatiilor. Doar ca limitezi definitia ‘hacker’-ului si asta… e neplacut.
@claudiu: a facut obiectul unui interes real mai demult, cand am invatat un pic de C, un pic de ASM (plus assembler pentru procesoare de palm), am mai citit chestii despre retele si m-am mai jucat cu niste scripturi, am testat niste softuri de spart parole s.a.
anyway, n-am avut niciodata nici pregatirea, nici rabdarea unui hacker, iar toate interesele astea sunt, oricum, istorie acum 🙂
@inaequitas: you’re right cu toate completarile; 10x! prezentarea din post, otoh, e supersimplificata, avand in vedere un auditoriu care n-o sa stea sa urmareasca prea multe detalii tehnice;
in plus, nici nu imi propusesem sa ofer o definitie pentru “hacker”, ci doar sa disting intre oamenii care “sparg softuri” si cei care “sparg servere”, fiindca pentru unii nu e nici o diferenta intre cele doua categorii 🙂
buna am descarcat de pe softpedia.com un joc cu camioane numit 18 wheel of steel convoy si dupa o ora jumate jocul mi-a iesit automat si nu am mai putut intra deloc in el imi vere sa il cumpar nu stiiti cumva va rog un program pentru a dezactiva cererea de inregistrare?
Va multumesc