# ECE-422 [![hackmd-github-sync-badge](https://hackmd.io/Z1ZgjJSrQ2S88dIMFga9Yg/badge)](https://hackmd.io/Z1ZgjJSrQ2S88dIMFga9Yg) ## Lecture1: Introduction - 4*2 Homework - 2 person team - Online Exams with books open ## Lecture2: Moral ## Lecture3: Buffer Overflow ### By the end of this chapter you should: - Recall stack, calling convention basics - Be able to demonstrate simple buffer overflow attacks - Be able to build shellcode ### Assembly ![](https://i.imgur.com/JQqvnks.png) ![](https://i.imgur.com/Bz6ap2w.png) ![](https://i.imgur.com/4CiQZIv.png) ### Buffer overflow FTW - Success! Program crashed! - Exploit: any string longer than buffer size - Success! Execute arbitrary code! - Exploit: injected code + address of buffer - Success! Open a shell! - Exploit: nop sled + shellcode + guesses of buffer ### First lesson: avoid unsafe functions - Unsafe functions: - strcpy and friends (str*) - sprintf - gets - Safe versions: - strncpy and friends (strn*) - snprintf - fgets - Does not solve all problem ### First lesson: avoid unsafe functions - Unsafe functions: - strcpy and friends (str*) - sprintf - gets - Safe versions: - strncpy and friends (strn*) - snprintf - fgets - Does not solve all problem ## Lecture 4: Control Flow Hijacking ### Hack detect 1. push $CANARY in stack 2. check the position 3. If the 0(position) is not $CANARY, Congratulations! ### Control Flow Hijacking ![](https://i.imgur.com/evb9faz.png) ![](https://i.imgur.com/h82aiA1.png) (Screenshot from Compiler Principle) 可以注意到,如果替换 function address, 或者说,想办法改变 PC 的值,就可以想干什么干什么,这就是 Control Flow Hijacking #### CounterAttack 1. distinguish code and data - Data should not be executable, Code need not be writable - W^X (write xor execute) #### Return-to-libc Attacks 借刀杀人 ### Return-Oriented Programming (ROP) - Workflow - Dump executable portions of target program - Identify byte sequences ending in 0xC3 (**ret**) - Such a code fragment is called a gadget - Figure out what each gadget does — use a dissembler, e.g., https://onlinedisassembler.com/ - Chain together useful gadgets ![](https://i.imgur.com/enUdoRQ.png) ### -fPIE 地址偏移的安全加固 漏洞: - 一个个实验 (i386) - 狂喷 - ![](https://i.imgur.com/t9cEruc.png) - 浏览器是重灾区 ## Lecture 6: Malware Defenses ### Security By Design Principles - Minimize the Trusted Computing Base (TCB) - Minimize the Attack Surface - Principle of Least Privilege - Principle of Defense in Depth - Fail Secure - Avoid Security by Obscurity - Keep Security Simple ### INTRUSION DETECTION - Signatures - Polymorphic Code - Metamorphic Code - Detecting Metamorphic Viruses - ... - N-Grams: Building the Model by Training ### Chapter 07 – Web Security #### CORS & CSRF & XSS