Differences

This shows you the differences between two versions of the page.

Link to this comparison view

so:curs:mem-sec [2020/04/04 15:42]
razvan.deaconescu [Mecanisme defensive: SSP, ASan, ASLR / PIE]
so:curs:mem-sec [2020/04/06 17:33] (current)
alexandru.radovici
Line 16: Line 16:
  
   * Filmări   * Filmări
 +    * 3CA [[https://​web.microsoftstream.com/​video/​631f6edd-2f5b-474e-9f87-ae4edecbd93d]]
     * 3CC, curs 11, partea 1: https://​web.microsoftstream.com/​video/​ff52e02f-c2dc-49d6-b227-2dc9a1026625     * 3CC, curs 11, partea 1: https://​web.microsoftstream.com/​video/​ff52e02f-c2dc-49d6-b227-2dc9a1026625
     * 3CC, curs 11, partea a 2-a: https://​web.microsoftstream.com/​video/​7bae5cdb-0a54-4f2e-b5a5-df039790ac37     * 3CC, curs 11, partea a 2-a: https://​web.microsoftstream.com/​video/​7bae5cdb-0a54-4f2e-b5a5-df039790ac37
 +  ​
 +  * Curs CA [[https://​www.slideshare.net/​alexandruradovici/​sisteme-de-operare-securitatea-memoriei|slideshare]] ​
  
 ===== Demo-uri ===== ===== Demo-uri =====
Line 273: Line 276:
  
 ==== Injectarea codului. Shellcodes ==== ==== Injectarea codului. Shellcodes ====
 +
 +<note important>​
 +Pentru acest demo trebuie să aveți instalat pe sistem asamblorul NASM. Pe un sistem Debian/​Ubuntu îl puteți instala folosind comanda:
 +<​code>​
 +sudo apt install nasm
 +</​code>​
 +</​note>​
  
 În exploit-urile prezentate mai sus am suprascris code pointeri și am modificat fluxul de execuție al programului apelând o funcție existentă (''​inject_func''​). Această metodă, de refolosire a codului existent în cadrul unui atac, poartă numele de //code reuse attacks//. Din păcate pentru atacator, în cazul unui atac de tipul //code reuse// spațiul posibil de acțiune este limitat la codul existent. Așa că este de preferat un atac de tipul //code injection// care adaugă (injectează) cod în spațiul virtual de adrese al procesului. În general acest cod rezidă într-o zonă de date (unde este citit) care primește permisiuni de execuție. În exploit-urile prezentate mai sus am suprascris code pointeri și am modificat fluxul de execuție al programului apelând o funcție existentă (''​inject_func''​). Această metodă, de refolosire a codului existent în cadrul unui atac, poartă numele de //code reuse attacks//. Din păcate pentru atacator, în cazul unui atac de tipul //code reuse// spațiul posibil de acțiune este limitat la codul existent. Așa că este de preferat un atac de tipul //code injection// care adaugă (injectează) cod în spațiul virtual de adrese al procesului. În general acest cod rezidă într-o zonă de date (unde este citit) care primește permisiuni de execuție.
Line 385: Line 395:
 Programul este compilat cu suport de //Stack Smashing Protection//​ care plasează stack canary pe stivă în funcția ''​process_client()''​. Opțiunea de compilare ''​-fstack-protector''​ este adăugată în fișierul ''​Makefile'':​ Programul este compilat cu suport de //Stack Smashing Protection//​ care plasează stack canary pe stivă în funcția ''​process_client()''​. Opțiunea de compilare ''​-fstack-protector''​ este adăugată în fișierul ''​Makefile'':​
 <​code>​ <​code>​
-CFLAGS = -Wall -Wextra -g -fstack-protector -fno-PIC+CFLAGS = -Wall -Wextra ​-Wno-unused-function ​-g -fstack-protector -fno-PIC
 </​code>​ </​code>​
  
so/curs/mem-sec.1586004139.txt.gz · Last modified: 2020/04/04 15:42 by razvan.deaconescu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0