Documente Academic
Documente Profesional
Documente Cultură
Bitdefender
21 decembrie 2016
Cuprins
1 Introducere
3 Inginerie inversă
6 MBR s, i hipervizor
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 2 / 29
1. Introducere
Cuprins
1 Introducere
3 Inginerie inversă
6 MBR s, i hipervizor
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 3 / 29
1. Introducere
De la cod la binar
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 4 / 29
1. Introducere
De la cod la binar
← cod C
cod binar →
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 4 / 29
1. Introducere
De la cod la binar
← cod C
cod binar →
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 4 / 29
1. Introducere
Important
Calculatoarele ı̂nt, eleg doar codul binar.
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 5 / 29
1. Introducere
Important
Calculatoarele ı̂nt, eleg doar codul binar.
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 5 / 29
2. Fragmente de limbaj de asamblare ı̂n C
Cuprins
1 Introducere
3 Inginerie inversă
6 MBR s, i hipervizor
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 6 / 29
2. Fragmente de limbaj de asamblare ı̂n C
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 7 / 29
2. Fragmente de limbaj de asamblare ı̂n C
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 7 / 29
2. Fragmente de limbaj de asamblare ı̂n C
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 7 / 29
2. Fragmente de limbaj de asamblare ı̂n C
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 7 / 29
2. Fragmente de limbaj de asamblare ı̂n C
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 7 / 29
2. Fragmente de limbaj de asamblare ı̂n C
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 7 / 29
2. Fragmente de limbaj de asamblare ı̂n C
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 7 / 29
3. Inginerie inversă
Cuprins
1 Introducere
3 Inginerie inversă
6 MBR s, i hipervizor
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 8 / 29
3. Inginerie inversă
Inginerie inversă
Definit, ie
Analiza unui program pentru a se ı̂nt, elege ce face s, i cum
funct, ionează.
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 9 / 29
3. Inginerie inversă
Analiza statică
Problemă: Programele binare nu au un cod sursă de analizat.
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 10 / 29
3. Inginerie inversă
Analiza statică
Problemă: Programele binare nu au un cod sursă de analizat.
Să ne amintim: “Assembly poate fi translatat direct ı̂n binar s, i invers”.
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 10 / 29
3. Inginerie inversă
Analiza statică
Problemă: Programele binare nu au un cod sursă de analizat.
Să ne amintim: “Assembly poate fi translatat direct ı̂n binar s, i invers”.
Unealtă de analiză: IDA Pro
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 10 / 29
3. Inginerie inversă
Analiza dinamică
Depanare:
rularea instruct, iunilor Assembly pas cu pas (demo)
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 11 / 29
3. Inginerie inversă
Analiza dinamică
Depanare:
rularea instruct, iunilor Assembly pas cu pas (demo)
Interceptarea funct, iilor:
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 11 / 29
3. Inginerie inversă
Analiza dinamică
Depanare:
rularea instruct, iunilor Assembly pas cu pas (demo)
Interceptarea funct, iilor:
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 11 / 29
3. Inginerie inversă
Analiza dinamică
Depanare:
rularea instruct, iunilor Assembly pas cu pas (demo)
Interceptarea funct, iilor:
se ı̂nlocuies, te cu:
jmp interception
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 11 / 29
3. Inginerie inversă
Analiza dinamică
Depanare:
rularea instruct, iunilor Assembly pas cu pas (demo)
Interceptarea funct, iilor:
se ı̂nlocuies, te cu:
jmp interception
interception:
push ebp
mov ebp, esp
... cod de logare ...
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 11 / 29
3. Inginerie inversă
Analiza dinamică
Depanare:
rularea instruct, iunilor Assembly pas cu pas (demo)
Interceptarea funct, iilor:
se ı̂nlocuies, te cu:
jmp interception
interception:
push ebp
mov ebp, esp
... cod de logare ...
jmp fn+5
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 11 / 29
4. Înt, elegerea exploit-urilor
Cuprins
1 Introducere
3 Inginerie inversă
6 MBR s, i hipervizor
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 12 / 29
4. Înt, elegerea exploit-urilor
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 13 / 29
4. Înt, elegerea exploit-urilor
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 13 / 29
4. Înt, elegerea exploit-urilor
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 13 / 29
4. Înt, elegerea exploit-urilor
&s
very old EBP
...
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 13 / 29
4. Înt, elegerea exploit-urilor
ret addr
&s
very old EBP
...
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 13 / 29
4. Înt, elegerea exploit-urilor
old EBP
ret addr
&s
very old EBP
...
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 13 / 29
4. Înt, elegerea exploit-urilor
myCopy
old EBP
ret addr
&s
very old EBP
...
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 13 / 29
4. Înt, elegerea exploit-urilor
myCopy
old EBP
ret addr
&s
very old EBP
...
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 14 / 29
4. Înt, elegerea exploit-urilor
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 14 / 29
4. Înt, elegerea exploit-urilor
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 14 / 29
4. Înt, elegerea exploit-urilor
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 14 / 29
4. Înt, elegerea exploit-urilor
Definit, ie
Un grup de instruct, iuni terminat cu ret
se numes, te un gadget.
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 15 / 29
4. Înt, elegerea exploit-urilor
Stiva: Gadget 1
Stiva: Gadget 1
Stiva: Gadget 1
Stiva: Gadget 1
Stiva: Gadget 1
Stiva: Gadget 1
Stiva: Gadget 1
Cuprins
1 Introducere
3 Inginerie inversă
6 MBR s, i hipervizor
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 16 / 29
5. Detect, ie de malware prin dezasamblare
| {z }
↓
Hash(-uri)
↓?
Bază de date cu malware
. &
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 17 / 29
5. Detect, ie de malware prin dezasamblare
figură de pe https://software.intel.com
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 18 / 29
5. Detect, ie de malware prin dezasamblare
| {z }
↓
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 19 / 29
5. Detect, ie de malware prin dezasamblare
| {z }
↓
→ push, mov, sub, mov, push, lea, push, call, mov, . . .
→ pmsmplpcmlpctjczczczmJ
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 19 / 29
5. Detect, ie de malware prin dezasamblare
| {z }
↓
→ push, mov, sub, mov, push, lea, push, call, mov, . . .
→ pmsmplpc mlpctjczczczmJ
<pmsmplpc>
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 19 / 29
5. Detect, ie de malware prin dezasamblare
| {z }
↓
→ push, mov, sub, mov, push, lea, push, call, mov, . . .
→ p msmplpcm lpctjczczczmJ
<pmsmplpc>, <msmplpcm>
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 19 / 29
5. Detect, ie de malware prin dezasamblare
| {z }
↓
→ push, mov, sub, mov, push, lea, push, call, mov, . . .
→ pm smplpcml pctjczczczmJ
<pmsmplpc>, <msmplpcm>, <smplpcml>
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 19 / 29
5. Detect, ie de malware prin dezasamblare
| {z }
↓
→ push, mov, sub, mov, push, lea, push, call, mov, . . .
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 19 / 29
5. Detect, ie de malware prin dezasamblare
| {z }
↓
→ push, mov, sub, mov, push, lea, push, call, mov, . . .
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 19 / 29
5. Detect, ie de malware prin dezasamblare
| {z }
↓
→ push, mov, sub, mov, push, lea, push, call, mov, . . .
→ pmsmplpcmlpctjczczczmJ
<pmsmplpc>, <msmplpcm>, <smplpcml>, <mplpcmlp>, <plpcmlpc>, . . .
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 19 / 29
5. Detect, ie de malware prin dezasamblare
| {z }
↓
→ push, mov, sub, mov, push, lea, push, call, mov, . . .
→ pmsmplpcmlpctjczczczmJ
<pmsmplpc>, <msmplpcm>, <smplpcml>, <mplpcmlp>, <plpcmlpc>, . . .
↓?
Bază de date cu malware
. &
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 19 / 29
5. Detect, ie de malware prin dezasamblare
Similaritatea codului
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 20 / 29
5. Detect, ie de malware prin dezasamblare
Similaritatea codului
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 20 / 29
5. Detect, ie de malware prin dezasamblare
Emularea codului
Cum se pot deduce ı̂n mod automat efectele unui program fără a se
rula efectiv?
crearea unui mediu virtual minimalist
dezasamblarea fiecărei instruct, iuni
emularea sa ı̂n interiorul mediului virtual
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 21 / 29
6. MBR s, i hipervizor
Cuprins
1 Introducere
3 Inginerie inversă
6 MBR s, i hipervizor
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 22 / 29
6. MBR s, i hipervizor
Conceptul de bootstrap
Ce se ı̂ntâmplă atunci când un
calculator pornes, te?
Cum poate un sistem de operare să
se pornească singur?
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 23 / 29
6. MBR s, i hipervizor
Conceptul de bootstrap
Ce se ı̂ntâmplă atunci când un
calculator pornes, te?
Cum poate un sistem de operare să
se pornească singur?
se “trage singur ı̂n sus de curelele
cizmelor”
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 23 / 29
6. MBR s, i hipervizor
Conceptul de bootstrap
Ce se ı̂ntâmplă atunci când un
calculator pornes, te?
Cum poate un sistem de operare să
se pornească singur?
se “trage singur ı̂n sus de curelele
cizmelor”
Sectorul de boot
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 24 / 29
6. MBR s, i hipervizor Hello world din sectorul de boot
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 25 / 29
6. MBR s, i hipervizor
Hipervizorul
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 27 / 29
6. MBR s, i hipervizor
VMXON
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 27 / 29
6. MBR s, i hipervizor
VMXON VMXOFF
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 27 / 29
6. MBR s, i hipervizor
VM Exit
VM Entry
VMXON VMXOFF
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 27 / 29
6. MBR s, i hipervizor
VM Exit
VM Entry VM Entry
VMXON VMXOFF
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 27 / 29
6. MBR s, i hipervizor
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 28 / 29
6. MBR s, i hipervizor
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 28 / 29
6. MBR s, i hipervizor
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 28 / 29
6. MBR s, i hipervizor
Ciprian Opris, a (Bitdefender) Aplicat, ii practice ale limbajului de asamblare 21 decembrie 2016 28 / 29
Vă mult, umesc pentru atent, ie!