Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Exploitation possibilities of memory related vulnerabilities László ERDŐDI, PhD, CEH, SSCP Óbuda University, John von Neumann Faculty of Informatics, Department.

Hasonló előadás


Az előadások a következő témára: "Exploitation possibilities of memory related vulnerabilities László ERDŐDI, PhD, CEH, SSCP Óbuda University, John von Neumann Faculty of Informatics, Department."— Előadás másolata:

1 Exploitation possibilities of memory related vulnerabilities László ERDŐDI, PhD, CEH, SSCP Óbuda University, John von Neumann Faculty of Informatics, Department of Software Technology ISCD2013, 2-3. September 2013

2 Memory corruption vulnerabilities since CVE CVE CVE

3 Virtual address space Local variables, method parameters, exception handling data, return adresses Dynamically linked shared libraries (libc) Dynamic variables Global variables Compiled code Physical memory Virtual memory

4 Main causes and exploitation methods Lack of input validation within methods (strcpy, gets, etc): stack based overflow (placing harmful code to the stack, ROP, JOP) Dynamic memory allocation problems (use after free, double free vulnerabilities) heap overflow (function pointer overwrite + heap spray) Exception handling errors (SEH overwrite) Others

5 Classic example of buffer overflow Code segment Stack a d … Method1(a) { d : fixed size array copy a to d } Method2() { Method(a); } …

6 Avoiding memory execution protection (return to libc)

7 Avoiding DEP: Return oriented programming (ROP) Shacham, 2007 Executable code will not be placed on the stack only series of memory addresses and parameters Memory addr 1 Memory addr 2 Parameter 1 Parameter 2 Memory addr 3 Parameter 4 Instruction 1 ret Instruction 2 ret Instruction 3 ret

8 Jump oriented programming (JOP) Bletsch, Jiang, Freeh 2011 Attack execution without using stack (not sensible for stack cookie-ra and returnless kernel, it can be used in the case of register machines) Instruction 1 jmp Instruction 2 jmp Instruction 3 jmp Dispatcher gadget Increasing the index pointer Jumping to current address Dispatcher table: Memory addr1 Memory addr2 Parameter 1 Parameter 2 Memory addr3 Parameter4

9 Protection against memory corruption Stack overflow Heap overflow (double free, use after free) SEH chain rewrite Unhandled exceptions Return to libc ROP JOP ? + Return address checking? +control flow integrity?

10 Jump Oriented Programming – dispatcher gadgets in shared libraries (Erdődi, 2013)

11 Jump Oriented Programming – WinExec example for Win32 X86

12 Return and Jump Oriented Programing requirements of Turing-completeness Kornau: ARM 2009, Buchanen, Roemer: RISC 2008 – Arbitrary code execution – Loading variables from memory – Writing variables to memory – Branches – Cycles – Method calls

13 Example: How to carry out conditional statements with return-oriented programming? Method 1: Writing the addresses of the false branch and true branch into the writeable memory, setting of the esp according to indirect addressing. 31 gadgets Method 2: Loading the distance between the address of the false branch and true branch in the memory into a register, adding to esp that value if the condition is true 17 gadgets Method 3: Applying gadget which carries out the condition evaluation and jumps at the same time 5 gadgets Instruction 1 ret Instruction 2 ret Instruction 3 ret

14 Description language for return- and jump- oriented programming write: e.g placing „net user add user passw” to the data segment gadget1: pop reg1gadget1: pop reg1 write4:address:value gadget2: pop reg2gadget2: pop reg2 gadget3: mov [reg1], reg2gadget3: add reg1, reg2 gadget4: pop reg3 gadget5: pop reg4 gadget6: add reg3, reg4 gadget7: mov [reg1], reg3 write4: :net write4: :user write4: : addwrite: :net user add user passwd write4: c: use write4: :r pa write3: :ssw

15 Description language for return- and jump- oriented programming write:address:value call:address:param1:param2: … paramn e.g call:fopen address:filenamestring:filemod if:condition:address_true:address_false

16 Description language for return- and jump- oriented programming sample program: 1: write:dataseg_addr1:filename_stringwrite: :try.txt 2: call:fopen_address:dataseg_addr1:filemodcall:7c560122: :0 3: if:address_of_gadget_cmp eax,0:6:4if:77c7d230:6:4 4: write:dataseg_addr2:name of executablewrite: :cmd.exe 5:call:winexec_addr:dataseg_addr2call:7d77501c: :call:exitprocess_addrcall:7c210254

17 Summary Memory related vulnerabilities are extremly dangerous and developing quickly The tendency is the legitimate code-reuse for attacking (ROP, JOP) Several open questions still to solve

18 ROP mai alkalmazásai Főként a védelem kikapcsolása a cél – No execute bit átállítása – Új szegmens allokálása írható és végrehajtható jellemzőkkel – Visszevezetés stack overflowra – „egyszerű” utasítássorozatok végrehajtása Elérhető programok: https://github.com/JonathanSalwan/ROPgadget made-easy/

19 ROP elleni védekezés Stack cookie-val nagyon szigorú visszatérési cím felülírási védelem Ret utasítás nélküli kernelek használata (Chen 2009) „Control flow” figyelés (Davi, 2009) Bletsch, 2009

20 A legújabb memória korrupciós sérülékenységek

21 Memória korrupciós hibák kiaknázása „Control flow” megtörése - Input adat ellőnérzés hiánya - túlcsordulás Saját kód futtatása – Metódus visszatérési cím felülírása – Metóduscímek memóriarész felülírása – Kivételkezelő kód címének felülírása – Heap láncolt lista címének felülírása – Memória egy más részének felülírása

22 Stack security cookie

23 A security cookie megkerülése MS – netapi32 vulnerability MS – ANI file parsing vulnerability A/B/C/../../E -> A/E

24 Heap túlcsordulás – security cookie

25 Memória manipuláció elleni védekezések Kivételkezelő kód szoftveres ellenőrzése (Szoftver DEP) Memória szegmensek hardveres megjelölése csak írhatónak vagy csak végrehajthatónak (Hardver DEP) Memória szegmensek random elhelyezése (ASLR) Csak írható Csak végrehajtható Csak írható Csak végrehajtható

26 DEP megkerülése VirtualAlloc metódushívás HeapCreate metódushívás SetProcessDEPPolicy metódushívás NtSetInformationProcess metódushívás VirtualProtect metódushívás WriteProcessMemory metódushívás

27 Címtér randomizálás (ASLR) megkerülése Memória cím kiszivárogtatás Nem teljesen véletlenszerű szegmenselhelyezés


Letölteni ppt "Exploitation possibilities of memory related vulnerabilities László ERDŐDI, PhD, CEH, SSCP Óbuda University, John von Neumann Faculty of Informatics, Department."

Hasonló előadás


Google Hirdetések