lab 2 buffer overflows
play

Lab 2: Buffer Overflows Fengwei Zhang Wayne State University - PowerPoint PPT Presentation

Lab 2: Buffer Overflows Fengwei Zhang Wayne State University Course: Cyber Security Prac@ce 1 Buffer Overflows One of the most common vulnerabili@es in soEware Programming languages commonly associated with buffer overflows including


  1. Lab 2: Buffer Overflows Fengwei Zhang Wayne State University Course: Cyber Security Prac@ce 1

  2. Buffer Overflows • One of the most common vulnerabili@es in soEware • Programming languages commonly associated with buffer overflows including C and C++ • Opera@ng systems including Windows, Linux and Mac OS X are wriMen in C or C++ Wayne State University Course: Cyber Security Prac@ce 2

  3. How It Works • Applica@ons define buffers in the memory – Unsigned char [10] • Applica@ons use adjacent memory to store variables, arguments, and return address of a func@on. • Buffer Overflows occurs when data wriMen to a buffer exceeds its size. Wayne State University Course: Cyber Security Prac@ce 3

  4. Overflowing A Buffer • Defining a buffer in C – char buf[10]; • Overflowing the buffer – Char buf [10] = ‘x’; – strcpy(buf, “AAAAAAAAAAAAAAAAAAAAAAA”) Wayne State University Course: Cyber Security Prac@ce 4

  5. Why We Care • Because adjacent memory stores program variables, parameters, and arguments • AMackers can change these values through overflowing a buffer • AMackers can gain control over the program flow to execute arbitrary code Wayne State University Course: Cyber Security Prac@ce 5

  6. Process Memory Layout High memory Stack Heap Data Segment Text Segment Low memory Wayne State University Course: Cyber Security Prac@ce 6

  7. Memory Layout for 32-bit Linux 1GB Kernel Space Local variable: int a Stack Func@on malloc() Heap 3GB Unini@alized sta@c variables: sta@c char *u BSS Segment sta@c char *s = “Hello world” Data Segment Text Segment (ELF) Binary of the program Wayne State University Course: Cyber Security Prac@ce 7

  8. Virtual Memory Layout Wayne State University Course: Cyber Security Prac@ce 8

  9. Stack Frame • The stack contains ac@va@on frames including local variables, func@on parameters, and return address • Star@ng at the highest memory address and growing downwards • Last in first out Wayne State University Course: Cyber Security Prac@ce 9

  10. A Simple Program Add (2,3) High memory 3 2 int add (int a, int b) { Ret Address int c; EBP c = 1+b; C return c; } Low memory ESP Wayne State University Course: Cyber Security Prac@ce 10

  11. Another Program int func (char * str) { char mybuff[512]; strcpy(myBuff, str); Draw the Stack Frame! return 1; } int main (int argc, char ** argv) { func (argv[1]); return 1; } Wayne State University Course: Cyber Security Prac@ce 11

  12. Overflowing “myBuff” High memory (A) str(A) Ret addr(A) EBP(A) A A A A A A Low memory ESP Wayne State University Course: Cyber Security Prac@ce 12

  13. Buffer Overflow Defenses • The aMack described is a classical stack smashing aMack which execute the code on the stack • It does not work today – NX – non-executable stack. Most compilers now default to a non-executable stack. Meaning a segmenta@on fault occurs if running code from the stack (i.e., Data Execu@on Preven@on - DEP) • Disable it with –zexecstack op@on • Check it with readelf –e <PROGRAM> | grep STACK – StackGuard: Cannaries • Disable it with –fno-stack-protector op@on • Enable it with –fstack-protector op@on Wayne State University Course: Cyber Security Prac@ce 13

  14. Stack Canaries • Stack smashing aMacks do two things – Overwrite the return address – Wait for algorithm to complete and call RET • Stack Canaries: Stack Smashing Protector (SSP) – Placing a integer value to stack just before the return address – To overwrite the return address, the canary value would also be modified – Checking this value before the func@on returns Wayne State University Course: Cyber Security Prac@ce 14

  15. Stack Canaries (cont’d) High memory (A) str(A) Ret addr(A) EBP(A) Canary(A) A A A A A Low memory ESP Wayne State University Course: Cyber Security Prac@ce 15

  16. Bypassing NX and Canaries • NX - non-executable stack – Execu@ng code in the heap – Data Execu@on Preven@on (DEP) – Return Oriented Programming (ROP) • Stack Canaries – Overwri@ng the Canary with the same value – Brute force aMack (e.g., DynaGuard in ACSAC’15) Wayne State University Course: Cyber Security Prac@ce 16

  17. Reminders • Lab 0 – Turn in the class agreement • Lab 1 – Due today at 11:59pm – Late assignment policy – Submit it via Blackboard • Lab 2 instruc@ons Wayne State University Course: Cyber Security Prac@ce 17

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend