Sunteți pe pagina 1din 7

Primul calculator care se putea programa, la o putere de calcul mare, a fost creat in

anul 1936 de catre Konrad Zuse, sub numele de Z1. In anul 1944, a fost construit
computerul Mark I de la Harvard. In perioada in care au aparut tranzistorii, una
dintre cele mai importante componente pentru functionarea calculatoarelor, a fost
introdus si ENIAC 1. Electronic Numerical Integrator And Computer, a fost primul
calculator electronic de uz general. Era un calculator numeric, Turing-complet,
capabil de a fi reprogramat pentru a rezolva o gamă largă de probleme calculatorii.
In anul 1953 a aparut pe piata International Business Machines (IBM) creand
sisteme si servere noi pentru uz public si privat.

In legatura cu memoria calculatoarelor, cartelele perforate au fost o


modalitate de stocare a datelor si de programare a calculatoarelor. Perforatiile aerau
instructiuni sau date, fiind citite ulterior de masinile speciale pentru a executa
operatiile corespunzatoare. Memoria pe tamburi magnetice a precedat dezvoltarea
hard disk-urilor moderne. Datele erau stocate pe suprafata unor cilindri magnetici
care se roteau rapid in jurul unui ax central. Fiecare cilindru avea capete de
citire/scriere care se deplasau radial pentru a accesa diferitele părți ale suprafeței
cilindrice. Diferenta dintre un hard disk modern si memoria cu tambur este ca la
hard disk capetele de citire/scriere se deplaseaza in mod independent. Hard disk-ul
a aparut in 1956 prin ideea celor de IBM. Ulterior a aparut memoria de stocare
portabila prin floppy-disk-uri, CD-uri, USB-uri, SSD-uri. Tranzistorii din
componența acestora sunt din ce în ce mai mici, fapt pentru care astăzi avem SSD-
uri cu capacități de peste 1 TB, carduri de memorie ce pot stoca până la 512 GB, și
stick-uri de memorie USB de peste 1 TB.
Pentru a extrage informații dintr-un PC este
necesară cunoasterea locului fizic si a
modului in care sunt stocate aceste informatii.
Mediul de stocare cel mai utilizat este
magnetic disk drive. Sunt formate dintr-un
material magnetic care este polarizat pozitiv
si negativ, ce se roteste precum un vinil. Cele
doua polaritati ale magnetului permit stocarea
datelor sub forma codului binar (0 si 1).

Componentele sale sunt:

Head: element fizic care citeste si scrie materialul magnetic localizat pe


placi;
Track: zona circulara concentrica care contine informatia;
Cylinder: zona de platane suprapuse;
Sector: cea mai mica unitate de stocare a mediului de stocare ce contine 512
bytes;
o Dimensiune Hard Drive = nr. placi = nr. heads = nr. sectoare 512
Cluster: grup de sectoare, de obicei 32 kb.
o Sectorul este la nivelul fizic sub numele „physical address space”, iar
clusterul este la nivelul sistemului de operare sub numele „logical
address space”.

Master Boot Record (MBR) este zona de stocare pe care sistemul de operare o
foloseste pentru a gasi informatii in legatura cu pornirea PC-ului.
Windows-ul are 2 sisteme de fisiere:

I. FAT – atunci cand un fisier este scris, locatia clusterului este folosita pentru
a identificata unde fisierul este localizat logic. Cand se sterge fisierul,
sistemul de fisiere FAT pune o secventa E5 de caractere hexazecimale in
tabel pentru a se vedea ca un cluster este disponibil pentru fisiere noi. Se
poate localiza prin tool-uri fisiere care au fost sterse din FAT directory, dar
sunt inca localizate fizic in sistemul de stocare.
II. NTFS - acest sistem gestioneaza fisiere prin doua metode: (a) recycle bin
sterege fiserele folosind interfata GUI. O intrare este creata apoi in Info2
record file (contine metadata); (b) sistemul marcheaza clusterele ca fiind
disponibile. Schimbarile apar si in MFT. Se poate gasi cached data in spatiul
nealocat (informatii salvate temporar).

In continuare, intrucat CPU executa instructiuni si acceseze informatii este


specificata o adresa unica finita pentru fiecare informatie.

I. Arrays: colectie de elemente cu rol de index sau cheie. De exemplu,


number[5] to access element 6.
II. Linked lists: colectie liniara de elemente stocate in noduri, unde fiecare
element indica catre urmatorul in secventa. Fiecare nod avand un pointer. De
exemplu: 1 -> 2 -> 3. Informația sau valoarea stocată în nod.
III. Stacks: structura de date (FIFO). Adauga si elimina elemente intr-o stiva:
push (1), push (2), pop ( ). Ultimul element adaugat este primul eliminat.
IV. Queues: o coada de structura de date FIFO.

 Trees: arborii sunt structuri ierarhice cu un nod radacina si noduri copil.


Informația sau valoarea asociată nodului. [Data: 2, LeftChild: adresa
nodului din stânga, RightChild: adresa nodului din dreapta]
```
1
/ \
2 3
/ \
4 5
```
V. Nodurile sunt entitati, iar muchiile indica relatiile dintre entitati. Nodurile pot
reprezenta entitati, iar muchiile reprezinta relatiile dintre entitati.
1 -- 2
| |
4 – 3

Conceptul de array poate sa fie relevant in urmatoarele situatii:

 Identificare anomalii:
o Array-urile pot fi utilizate pentru a reprezenta diferite structuri de date,
iar anomaliile din aceste structuri pot indica activități rău intenționate
sau incidente de securitate. Modelele neobișnuite sau valorile
neașteptate din matrice pot fi indicatori de compromis.
 Corelatii si reconstructie:
o Corelarea informațiilor în diferite matrice sau structuri de date este o
sarcină comună în criminalistica memoriei. Înțelegerea modului în
care sunt organizate datele permite analiștilor criminalistici să
reconstruiască evenimente, relații sau acțiuni ale utilizatorului în
timpul unui incident. De exemplu, corelarea marcajelor de timp în
matrice legate de execuția procesului și conexiunile la rețea poate oferi
informații despre secvența evenimentelor.

Unul dintre telurile principale pe care le are Forensic Analysis este reconstructia
scenei prin analiza temporala, functionala si relationala.

1. Analiza temporala are legatura cu reconstruirea unor serii de evenimente


pentru a intelege ce s-a intamplat si in ce ordine. De exemplu, se poate crea
un timeline pentru a urmari activitatile unui hacker pe un sistem de calcul in
timpul unui atac cibernetic.
2. Analiza functionala are legatura nu doar cu ceea ce poate sa faca un
malware, ci si cum actioneaza acesta in mediul sau de operare. In aceasta
etapa se investigheaza comportamentul malware-ului si modul in care
interactioneaza cu sistemul infectat.
3. Analiza relationala reprezinta cum diferite componente ale malware-ului
interactioneaza intre ele si cu sistemele infectate.

Procedura generala in cazul analizei memoriei consta in regula principala “We


change nothing!”. Se doreste mentinerea in siguranta a dovezilor, fara a fi alterate,
distruse sau create. Se lucreaza doar prin copii de data.

Exista 5 faze ale analizei memoriei:

A. Identificare
a. Inventar al incidentului ce urmeaza a fi investigat.
b. Prezentare situatie initiala
c. Intrebari ce trebuie ulterior clarificate
B. Backup
a. A se determina daca sistemul poate sa opereze dupa incident.
C. Analiza
a. Indiferent de incident
b. Identificare: procese, cauze, parti responsabile
D. Documentatie
a. Toti pasii vor fi consemnati.
E. Prezentare
a. O sumarizare intr-un raport
b. Contine factori precum: identitatea faptasului, durata si gravitatea
situatiei, cauze si motive.
Este important sa se inteleaga procesul in care codul sursa este compilat, legat si
devine executabil. Pasii pe care ii urmeaza un autor al codului malicios in timpul
compilarii codului vor determina elementele care pot fi puse la probe - descoperite
in timpul examinarii codului. Atunci când un program este compilat, codul sursă al
programului este procesat intr-un compilator, un program care traduce
instrucțiunile de programare într-o altă formă. Odată procesat de compilator, codul
sursă este convertit într-un anumit fisier obiect sau cod masina, deoarece conține o
serie de instrucțiuni destinate nu citirii umane, ci executării de către CPU. Un fișier
obiect este rezultatul procesului de compilare a codului sursă într-un limbaj de
programare, cum ar fi C sau C++. Compilatorul traduce codul sursă într-un format
special, numit fișier obiect. Acest fișier conține codul mașină, care este un set de
instrucțiuni într-un format pe care procesorul computerului îl poate înțelege și
executa. După ce codul sursă este compilat într-un fișier obiect, un linker
asamblează orice biblioteci și cod obiect necesare împreună pentru a produce un
fișier executabil care poate fi rulat pe sistemul de operare gazdă. Bibliotecile sunt
colecții de cod predefinite care pot fi utilizate în programele noastre. Ele conțin
funcții și resurse comune folosite pentru a rezolva diferite probleme. De exemplu o
functie de matematica folosita fara a mai scrie codul din spate. Adesea, în timpul
compilării, sunt adăugate în fișierul executabil bucăți de informație care pot fi
relevante pentru investigația generală.

Pentru a impiedica aplicatiile malitioase sau defecte sa acceseze sau sa manipuleze


componente critice ale sistemului de operare s-a implementat o forma de izolare a
privilegiile intre modurile de utilizator si kernel. In modul de utilizator codul
asociat aplicatiilor ruleaza in aceasta zona deoarece nu au acces la informatii
sensibile sau componente critice ale SO. Codul asociat sistemului de operare
ruleaza in modul Kernel deoarece este o locatie protejata si monitorizata.

Managementul procesului si thread-urile

Un proces este o instanta a unui program ce se executa in memorie. Sistemul de


operare este responsabil pentru gestionarea unui program sau a mai multor
programe ce se desfasoara. Un proces are asociate un set de caracteristici, ID de
proces unic si un spatiu de adrese. Procesul oferă mediul de execuție, resursele și
contextul pentru ca firele de execuție să ruleze. De exemplu, fir de execuție este
responsabil pentru a gestiona evenimentele de tastatură sau de clic al mouse-ului.
Acest fir așteaptă input-ul utilizatorului și răspunde la evenimentele de tastare sau
clic al mouse-ului, astfel încât să fie luate acțiunile corespunzătoare în cadrul
aplicației Calculator. Un aspect important al analizei memoriei implică enumerarea
proceselor care rulează pe un sistem și analizarea datelor stocate în spațiile lor de
adrese, inclusiv parole, adrese URL, chei de criptare, e-mailuri și conversații de
chat. Un fir de execuție este adesea caracterizat printr-un ID de fir, set de registre
CPU și stive de execuție, care ajută la definirea contextului de execuție al firului. În
ciuda contextelor lor de execuție unice, firele de execuție ale unui proces
împărtășesc același cod, date, spațiu de adrese și resurse ale sistemului de operare.
Un proces cu mai multe fire de execuție poate părea că efectuează simultan mai
multe activități. De exemplu, un fir poate comunica prin rețea în timp ce alt fir
afișează date pe ecran. În ceea ce privește analiza de memorie, structurile de date
ale firelor de execuție sunt utile deoarece conțin adesea marcaje temporale și adrese
de început. Aceste informații pot ajuta la a determina ce cod dintr-un proces a fost
executat și când a început.

S-ar putea să vă placă și