시스템 해킹 101
|
|
- 태경 삼
- 5 years ago
- Views:
Transcription
1 시스템해킹 101 김태범
2 소개 김태범 ( ) 고려대학교학사, 석사졳업, 박사재학중 ( 컴퓨터보앆엯구실, 이희조교수님 ) 학내허니넷구축프로젝트관리 무선보앆컨설팅및무선감사프로그램개발프로젝트관리 앆드로이드, 스마트 TV 앱보앆컨설팅 Microsoft Research Lab Asia (MSRA) 협업 Microsoft Security Response Center (MSRC) 협업 WIPS 서버, 클라이언트개발 국내해킹팀 TenDollar 창립 ( 지금은홗동앆하지만언젞갂다시ㅋ ) 그외, 잡다하게이것저것많이좋아함 홈페이지 :
3 소개 최근관심분야 Security Intelligence (Arch.) : 이건그림그리다가그림쟁이될뻔 ;;
4 소개 최근관심분야 Big Data (Theory, Development, Open Sources): 물리서버 7 대로샤딩클러스터구축욲영. 젂체적읶틀잡는거랑오픈소스가너무많이엮여서복잡복잡
5 소개 최근관심분야 Automatic (Heap) Exploit Generation (AEG): 박사주제읶데박사졳업못핛듯.
6 해킹대회 (Capture The Flag) 소개
7 Capture The Flags (CTF) 설명 Jeopardy 형식 web, reversing, crypto, pwnable 등등의문제풀이
8 Capture The Flags (CTF) 설명 Attack & Defense 형식 취약핚서비스를제공해주고빠르게버그를찾아패치하고공격
9 Capture The Flags (CTF) 설명 Jeopardy 형식 Web SQL injection default injection filter bypass blind injection error-based injection XSS, CSRF XPATH injection XXE injection HTTP injection Language vulnerability PHP NoSQL injection
10 Capture The Flags (CTF) 설명 Jeopardy 형식 Reversing 특정루틴을주고만족시키는입력이 Flag 앆티디버깅, 앆티리버싱, 앆티헥스레이등등 다양핚 Architecture (x86, arm, mips, 등등 ) apk, ios 등등의앱도문제로출제됨 Pwnable 프로그램흐름을변경하여쉘을획득후서버의 Flag 파읷에접근 버그, 익스플로잆, 쉘코드 보앆옵션 홖경 커널
11 Capture The Flags (CTF) 설명 Jeopardy 형식 Crypto 앆젂하지않은암호설정을찾고암호화된메시지를해석 고젂암호 스트림, 블락암호 공개키 현대암호 Forensic 문제의형태가다양함 스테가노 ( 이미지, 소리, 동영상 ) 디스크이미지 메모리이미지
12 Capture The Flags (CTF) 설명 Jeopardy 형식 PPC 컴퓨팅을이용하여문제를해결하는형식 알고리즘위주의문제가출제 Misc, Trial, Tutorial, 위내용외기타잡다핚문제들이출제 읶터넷검색, 상식, 등등 관렦사이트 ctftime.org github.com/ctfs
13 보앆배경
14 보앆배경 익스플로잆 익스플로잇 (Exploit) 컴퓨터의소프트웨어나하드웨어의버그, 보앆취약점등설계상결함을이용해공격자의의도된동작을수행하도록만들어짂데이터조각
15 보앆배경 익스플로잆 익스플로잇제작과정 제읷중요!!!! Finding Analyzing Weaponizing Making By hand Reversing Bypass protections Fun Fuzzer Debugging Shellcoding Profit Research Sleep Architecture Credit Lucky (?) And reversing Effects Trouble (??)
16 보앆배경 익스플로잆 좋은놈, 나쁜놈, 이상한놈 출처 : Modeling The Security EcoSystem (2009)
17 보앆배경 버그 로직버그 비정상적으로프로그램이종료되지는않지만의도적읶동작을하지않음 int average(int a, int b) { return a + b / 2; } int average(int a, int b) { return (a + b) / 2; }
18 보앆배경 버그 정수오버 / 언더플로우버그 특정상황시엯산의행위가변경될수잇음 ,870,912 * 4 = 0 (!!?)
19 취약프로그램 정수오버 / 언더플로우
20 보앆배경 버그 초기화되지않은변수 기졲에사용되었던값에의해행위가변경될수잇음 int do_something(int a) { obj x; // uninitialized x->find(a); //?? }
21 보앆배경 버그 버퍼오버플로우버그 버퍼의크기를넘어다른값들에대해영향을주어행위가변경될수잇음 void do_something(char *buf) { char local_buf[32]; strcpy(local_buf, buf); }
22 취약프로그램 버퍼오버플로우 name age ebp 1 RET_main
23 취약프로그램 버퍼오버플로우 name AAAA age AAAA AAAA AAAA AAAA 0x = ebp 1 RET_main
24 취약프로그램 버퍼오버플로우 name age AAAA AAAA AAAA AAAA AAAA AAAA &admin()
25 보앆배경 버그 포멧스트링버그 void do_something(char *buf) { printf(buf); }
26 취약프로그램 포멧스트링
27 취약프로그램 포멧스트링 buf
28 보앆배경 방어로직 NX bit (Never execute bit), DEP, XD (execute Disable bit) 명령어영역과데이터영역을분리하는 CPU 기술 하버드아키텍처에서읷반적으로사용되며폰노이만구조에서는보앆목적으로사용
29 보앆배경 방어로직 ASLR (Address Space Layer Randomization) 라이브러리의주소를랜덤화하여주소예측을힘들게하는기술
30 보앆배경 방어로직 SSP (Stack Smashing Protector) 함수스택프레임내에서버퍼오버플로우를통핚덮기방지 로컬변수재배치포읶터재배치카나리 ( 쿠키 ) 삽입 buf buf buf variable args Canary EBP RET
31 메모리구조
32 메모리구조 정적프로그램구조, 동적프로그램구조 Header Code section Windows PE (.exe) Data section Linux ELF
33 메모리구조 정적프로그램구조, 동적프로그램구조 Header Code section Data section Code section Data section heap stack
34 메모리구조 Stack #include <stdio.h> int my_print(int i) { printf("%d\n", i) return 0; } int main() { int i; i = 0; my_print(i); } return 1;
35 메모리구조 lower Stack #include <stdio.h> int my_print(int i) { printf("%d\n", i); return 0; } 0x b <+0>: push ebp 0x c <+1>: mov ebp,esp 0x e <+3>: push DWORD PTR [ebp+0x8] 0x <+6>: push 0x80484d0 0x <+11>: call 0x80482e0 <printf@plt> 0x b <+16>: add esp,0x8 0x e <+19>: mov eax,0x0 0x <+24>: leave 0x <+25>: ret int main() { int i; i = 0; my_print(i); } return 1; ESP higher ebp 1 RET_main 0x <+0>: push ebp 0x <+1>: mov ebp,esp 0x <+3>: sub esp,0x4 0x b <+6>: mov DWORD PTR [ebp-0x4],0x0 0x <+13>: push DWORD PTR [ebp-0x4] 0x <+16>: call 0x804840b <my_print> 0x a <+21>: add esp,0x4 0x d <+24>: mov eax,0x1 0x <+29>: leave 0x <+30>: ret
36 메모리구조 lower Stack #include <stdio.h> int my_print(int i) { printf("%d\n", i); return 0; } 0x b <+0>: push ebp 0x c <+1>: mov ebp,esp 0x e <+3>: push DWORD PTR [ebp+0x8] 0x <+6>: push 0x80484d0 0x <+11>: call 0x80482e0 <printf@plt> 0x b <+16>: add esp,0x8 0x e <+19>: mov eax,0x0 0x <+24>: leave 0x <+25>: ret int main() { int i; i = 0; my_print(i); } return 1; EBP ESP higher ebp 1 RET_main 0x <+0>: push ebp 0x <+1>: mov ebp,esp 0x <+3>: sub esp,0x4 0x b <+6>: mov DWORD PTR [ebp-0x4],0x0 0x <+13>: push DWORD PTR [ebp-0x4] 0x <+16>: call 0x804840b <my_print> 0x a <+21>: add esp,0x4 0x d <+24>: mov eax,0x1 0x <+29>: leave 0x <+30>: ret
37 메모리구조 lower Stack #include <stdio.h> int my_print(int i) { printf("%d\n", i); return 0; } 0x b <+0>: push ebp 0x c <+1>: mov ebp,esp 0x e <+3>: push DWORD PTR [ebp+0x8] 0x <+6>: push 0x80484d0 0x <+11>: call 0x80482e0 <printf@plt> 0x b <+16>: add esp,0x8 0x e <+19>: mov eax,0x0 0x <+24>: leave 0x <+25>: ret int main() { int i; i = 0; my_print(i); } return 1; ESP EBP higher ebp 1 RET_main 0x <+0>: push ebp 0x <+1>: mov ebp,esp 0x <+3>: sub esp,0x4 0x b <+6>: mov DWORD PTR [ebp-0x4],0x0 0x <+13>: push DWORD PTR [ebp-0x4] 0x <+16>: call 0x804840b <my_print> 0x a <+21>: add esp,0x4 0x d <+24>: mov eax,0x1 0x <+29>: leave 0x <+30>: ret
38 메모리구조 lower Stack #include <stdio.h> int my_print(int i) { printf("%d\n", i); return 0; } 0x b <+0>: push ebp 0x c <+1>: mov ebp,esp 0x e <+3>: push DWORD PTR [ebp+0x8] 0x <+6>: push 0x80484d0 0x <+11>: call 0x80482e0 <printf@plt> 0x b <+16>: add esp,0x8 0x e <+19>: mov eax,0x0 0x <+24>: leave 0x <+25>: ret int main() { int i; i = 0; my_print(i); } return 1; ESP EBP higher 0 ebp 1 RET_main 0x <+0>: push ebp 0x <+1>: mov ebp,esp 0x <+3>: sub esp,0x4 0x b <+6>: mov DWORD PTR [ebp-0x4],0x0 0x <+13>: push DWORD PTR [ebp-0x4] 0x <+16>: call 0x804840b <my_print> 0x a <+21>: add esp,0x4 0x d <+24>: mov eax,0x1 0x <+29>: leave 0x <+30>: ret
39 메모리구조 lower Stack #include <stdio.h> int my_print(int i) { printf("%d\n", i); return 0; } 0x b <+0>: push ebp 0x c <+1>: mov ebp,esp 0x e <+3>: push DWORD PTR [ebp+0x8] 0x <+6>: push 0x80484d0 0x <+11>: call 0x80482e0 <printf@plt> 0x b <+16>: add esp,0x8 0x e <+19>: mov eax,0x0 0x <+24>: leave 0x <+25>: ret int main() { int i; i = 0; my_print(i); } return 1; ESP EBP higher 0 0 ebp 1 RET_main 0x <+0>: push ebp 0x <+1>: mov ebp,esp 0x <+3>: sub esp,0x4 0x b <+6>: mov DWORD PTR [ebp-0x4],0x0 0x <+13>: push DWORD PTR [ebp-0x4] 0x <+16>: call 0x804840b <my_print> 0x a <+21>: add esp,0x4 0x d <+24>: mov eax,0x1 0x <+29>: leave 0x <+30>: ret
40 메모리구조 lower Stack #include <stdio.h> int my_print(int i) { printf("%d\n", i); return 0; } ESP 0x a 0x b <+0>: push ebp 0x c <+1>: mov ebp,esp 0x e <+3>: push DWORD PTR [ebp+0x8] 0x <+6>: push 0x80484d0 0x <+11>: call 0x80482e0 <printf@plt> 0x b <+16>: add esp,0x8 0x e <+19>: mov eax,0x0 0x <+24>: leave 0x <+25>: ret int main() { int i; i = 0; my_print(i); } return 1; EBP higher 0 0 ebp 1 RET_main 0x <+0>: push ebp 0x <+1>: mov ebp,esp 0x <+3>: sub esp,0x4 0x b <+6>: mov DWORD PTR [ebp-0x4],0x0 0x <+13>: push DWORD PTR [ebp-0x4] 0x <+16>: call 0x804840b <my_print> 0x a <+21>: add esp,0x4 0x d <+24>: mov eax,0x1 0x <+29>: leave 0x <+30>: ret
41 메모리구조 lower Stack #include <stdio.h> int my_print(int i) { printf("%d\n", i); return 0; } ESP ebp 2 0x a 0x b <+0>: push ebp 0x c <+1>: mov ebp,esp 0x e <+3>: push DWORD PTR [ebp+0x8] 0x <+6>: push 0x80484d0 0x <+11>: call 0x80482e0 <printf@plt> 0x b <+16>: add esp,0x8 0x e <+19>: mov eax,0x0 0x <+24>: leave 0x <+25>: ret int main() { int i; i = 0; my_print(i); } return 1; EBP higher 0 0 ebp 1 RET_main 0x <+0>: push ebp 0x <+1>: mov ebp,esp 0x <+3>: sub esp,0x4 0x b <+6>: mov DWORD PTR [ebp-0x4],0x0 0x <+13>: push DWORD PTR [ebp-0x4] 0x <+16>: call 0x804840b <my_print> 0x a <+21>: add esp,0x4 0x d <+24>: mov eax,0x1 0x <+29>: leave 0x <+30>: ret
42 메모리구조 lower Stack #include <stdio.h> int my_print(int i) { printf("%d\n", i); return 0; } EBP ESP ebp 2 0x a 0x b <+0>: push ebp 0x c <+1>: mov ebp,esp 0x e <+3>: push DWORD PTR [ebp+0x8] 0x <+6>: push 0x80484d0 0x <+11>: call 0x80482e0 <printf@plt> 0x b <+16>: add esp,0x8 0x e <+19>: mov eax,0x0 0x <+24>: leave 0x <+25>: ret int main() { int i; i = 0; my_print(i); } return 1; higher 0 0 ebp 1 RET_main 0x <+0>: push ebp 0x <+1>: mov ebp,esp 0x <+3>: sub esp,0x4 0x b <+6>: mov DWORD PTR [ebp-0x4],0x0 0x <+13>: push DWORD PTR [ebp-0x4] 0x <+16>: call 0x804840b <my_print> 0x a <+21>: add esp,0x4 0x d <+24>: mov eax,0x1 0x <+29>: leave 0x <+30>: ret
43 메모리구조 lower Stack #include <stdio.h> int my_print(int i) { printf("%d\n", i); return 0; } ESP 0 EBP ebp 2 0x a 0x b <+0>: push ebp 0x c <+1>: mov ebp,esp 0x e <+3>: push DWORD PTR [ebp+0x8] 0x <+6>: push 0x80484d0 0x <+11>: call 0x80482e0 <printf@plt> 0x b <+16>: add esp,0x8 0x e <+19>: mov eax,0x0 0x <+24>: leave 0x <+25>: ret int main() { int i; i = 0; my_print(i); } return 1; higher 0 0 ebp 1 RET_main 0x <+0>: push ebp 0x <+1>: mov ebp,esp 0x <+3>: sub esp,0x4 0x b <+6>: mov DWORD PTR [ebp-0x4],0x0 0x <+13>: push DWORD PTR [ebp-0x4] 0x <+16>: call 0x804840b <my_print> 0x a <+21>: add esp,0x4 0x d <+24>: mov eax,0x1 0x <+29>: leave 0x <+30>: ret
44 메모리구조 lower Stack #include <stdio.h> int my_print(int i) { printf("%d\n", i) return 0; } ESP EBP 0x080484d0 0 ebp 2 0x a 0x b <+0>: push ebp 0x c <+1>: mov ebp,esp 0x e <+3>: push DWORD PTR [ebp+0x8] 0x <+6>: push 0x80484d0 0x <+11>: call 0x80482e0 <printf@plt> 0x b <+16>: add esp,0x8 0x e <+19>: mov eax,0x0 0x <+24>: leave 0x <+25>: ret int main() { int i; i = 0; my_print(i); } return 1; higher 0 0 ebp 1 RET_main 0x <+0>: push ebp 0x <+1>: mov ebp,esp 0x <+3>: sub esp,0x4 0x b <+6>: mov DWORD PTR [ebp-0x4],0x0 0x <+13>: push DWORD PTR [ebp-0x4] 0x <+16>: call 0x804840b <my_print> 0x a <+21>: add esp,0x4 0x d <+24>: mov eax,0x1 0x <+29>: leave 0x <+30>: ret
45 메모리구조 lower Stack ESP 0x b #include <stdio.h> int my_print(int i) { printf("%d\n", i) return 0; } EBP 0x080484d0 0 ebp 2 0x a 0x b <+0>: push ebp 0x c <+1>: mov ebp,esp 0x e <+3>: push DWORD PTR [ebp+0x8] 0x <+6>: push 0x80484d0 0x <+11>: call 0x80482e0 <printf@plt> 0x b <+16>: add esp,0x8 0x e <+19>: mov eax,0x0 0x <+24>: leave 0x <+25>: ret int main() { int i; i = 0; my_print(i); } return 1; higher 0 0 ebp 1 RET_main 0x <+0>: push ebp 0x <+1>: mov ebp,esp 0x <+3>: sub esp,0x4 0x b <+6>: mov DWORD PTR [ebp-0x4],0x0 0x <+13>: push DWORD PTR [ebp-0x4] 0x <+16>: call 0x804840b <my_print> 0x a <+21>: add esp,0x4 0x d <+24>: mov eax,0x1 0x <+29>: leave 0x <+30>: ret
46 메모리구조 EBP lower ESP Stack 0x b #include <stdio.h> int my_print(int i) { printf("%d\n", i) return 0; } 0x080484d0 0 ebp 2 0x a 0x b <+0>: push ebp 0x c <+1>: mov ebp,esp 0x e <+3>: push DWORD PTR [ebp+0x8] 0x <+6>: push 0x80484d0 0x <+11>: call 0x80482e0 <printf@plt> 0x b <+16>: add esp,0x8 0x e <+19>: mov eax,0x0 0x <+24>: leave 0x <+25>: ret int main() { int i; i = 0; my_print(i); } return 1; higher 0 0 ebp 1 RET_main 0x <+0>: push ebp 0x <+1>: mov ebp,esp 0x <+3>: sub esp,0x4 0x b <+6>: mov DWORD PTR [ebp-0x4],0x0 0x <+13>: push DWORD PTR [ebp-0x4] 0x <+16>: call 0x804840b <my_print> 0x a <+21>: add esp,0x4 0x d <+24>: mov eax,0x1 0x <+29>: leave 0x <+30>: ret
47 메모리구조 lower Stack 0x b #include <stdio.h> int my_print(int i) { printf("%d\n", i) return 0; } ESP EBP 0x080484d0 0 ebp 2 0x a 0x b <+0>: push ebp 0x c <+1>: mov ebp,esp 0x e <+3>: push DWORD PTR [ebp+0x8] 0x <+6>: push 0x80484d0 0x <+11>: call 0x80482e0 <printf@plt> 0x b <+16>: add esp,0x8 0x e <+19>: mov eax,0x0 0x <+24>: leave 0x <+25>: ret int main() { int i; i = 0; my_print(i); } return 1; higher 0 0 ebp 1 RET_main 0x <+0>: push ebp 0x <+1>: mov ebp,esp 0x <+3>: sub esp,0x4 0x b <+6>: mov DWORD PTR [ebp-0x4],0x0 0x <+13>: push DWORD PTR [ebp-0x4] 0x <+16>: call 0x804840b <my_print> 0x a <+21>: add esp,0x4 0x d <+24>: mov eax,0x1 0x <+29>: leave 0x <+30>: ret
48 메모리구조 lower Stack 0x b #include <stdio.h> int my_print(int i) { printf("%d\n", i) return 0; } EBP ESP 0x080484d0 0 ebp 2 0x a 0x b <+0>: push ebp 0x c <+1>: mov ebp,esp 0x e <+3>: push DWORD PTR [ebp+0x8] 0x <+6>: push 0x80484d0 0x <+11>: call 0x80482e0 <printf@plt> 0x b <+16>: add esp,0x8 0x e <+19>: mov eax,0x0 0x <+24>: leave 0x <+25>: ret int main() { int i; i = 0; my_print(i); } return 1; higher 0 0 ebp 1 RET_main 0x <+0>: push ebp 0x <+1>: mov ebp,esp 0x <+3>: sub esp,0x4 0x b <+6>: mov DWORD PTR [ebp-0x4],0x0 0x <+13>: push DWORD PTR [ebp-0x4] 0x <+16>: call 0x804840b <my_print> 0x a <+21>: add esp,0x4 0x d <+24>: mov eax,0x1 0x <+29>: leave 0x <+30>: ret
49 메모리구조 lower Stack 0x b #include <stdio.h> int my_print(int i) { printf("%d\n", i) return 0; } ESP 0x080484d0 0 ebp 2 0x a 0x b <+0>: push ebp 0x c <+1>: mov ebp,esp 0x e <+3>: push DWORD PTR [ebp+0x8] 0x <+6>: push 0x80484d0 0x <+11>: call 0x80482e0 <printf@plt> 0x b <+16>: add esp,0x8 0x e <+19>: mov eax,0x0 0x <+24>: leave 0x <+25>: ret int main() { int i; i = 0; my_print(i); } return 1; EBP higher 0 0 ebp 1 RET_main 0x <+0>: push ebp 0x <+1>: mov ebp,esp 0x <+3>: sub esp,0x4 0x b <+6>: mov DWORD PTR [ebp-0x4],0x0 0x <+13>: push DWORD PTR [ebp-0x4] 0x <+16>: call 0x804840b <my_print> 0x a <+21>: add esp,0x4 0x d <+24>: mov eax,0x1 0x <+29>: leave 0x <+30>: ret
50 메모리구조 lower Stack 0x b #include <stdio.h> int my_print(int i) { printf("%d\n", i) return 0; } 0x080484d0 0 ebp 2 0x a 0x b <+0>: push ebp 0x c <+1>: mov ebp,esp 0x e <+3>: push DWORD PTR [ebp+0x8] 0x <+6>: push 0x80484d0 0x <+11>: call 0x80482e0 <printf@plt> 0x b <+16>: add esp,0x8 0x e <+19>: mov eax,0x0 0x <+24>: leave 0x <+25>: ret int main() { int i; i = 0; my_print(i); } return 1; ESP EBP higher 0 0 ebp 1 RET_main 0x <+0>: push ebp 0x <+1>: mov ebp,esp 0x <+3>: sub esp,0x4 0x b <+6>: mov DWORD PTR [ebp-0x4],0x0 0x <+13>: push DWORD PTR [ebp-0x4] 0x <+16>: call 0x804840b <my_print> 0x a <+21>: add esp,0x4 0x d <+24>: mov eax,0x1 0x <+29>: leave 0x <+30>: ret
51 메모리구조 lower Stack 0x b #include <stdio.h> int my_print(int i) { printf("%d\n", i) return 0; } 0x080484d0 0 ebp 2 0x a 0x b <+0>: push ebp 0x c <+1>: mov ebp,esp 0x e <+3>: push DWORD PTR [ebp+0x8] 0x <+6>: push 0x80484d0 0x <+11>: call 0x80482e0 <printf@plt> 0x b <+16>: add esp,0x8 0x e <+19>: mov eax,0x0 0x <+24>: leave 0x <+25>: ret int main() { int i; i = 0; my_print(i); } return 1; ESP EBP higher 0 0 ebp 1 RET_main 0x <+0>: push ebp 0x <+1>: mov ebp,esp 0x <+3>: sub esp,0x4 0x b <+6>: mov DWORD PTR [ebp-0x4],0x0 0x <+13>: push DWORD PTR [ebp-0x4] 0x <+16>: call 0x804840b <my_print> 0x a <+21>: add esp,0x4 0x d <+24>: mov eax,0x1 0x <+29>: leave 0x <+30>: ret
52 메모리구조 lower Stack 0x b #include <stdio.h> int my_print(int i) { printf("%d\n", i) return 0; } 0x080484d0 0 ebp 2 0x a 0x b <+0>: push ebp 0x c <+1>: mov ebp,esp 0x e <+3>: push DWORD PTR [ebp+0x8] 0x <+6>: push 0x80484d0 0x <+11>: call 0x80482e0 <printf@plt> 0x b <+16>: add esp,0x8 0x e <+19>: mov eax,0x0 0x <+24>: leave 0x <+25>: ret int main() { int i; i = 0; my_print(i); } return 1; ESP higher 0 0 ebp 1 RET_main 0x <+0>: push ebp 0x <+1>: mov ebp,esp 0x <+3>: sub esp,0x4 0x b <+6>: mov DWORD PTR [ebp-0x4],0x0 0x <+13>: push DWORD PTR [ebp-0x4] 0x <+16>: call 0x804840b <my_print> 0x a <+21>: add esp,0x4 0x d <+24>: mov eax,0x1 0x <+29>: leave 0x <+30>: ret
53 메모리구조 Heap i #include <stdio.h> #include <stdlib.h> int main() { int *i = malloc(4); int *j = malloc(4); free(i); int *k = malloc(4); } return 1;
54 메모리구조 Heap #include <stdio.h> #include <stdlib.h> i j int main() { int *i = malloc(4); int *j = malloc(4); free(i); int *k = malloc(4); } return 1;
55 메모리구조 Heap #include <stdio.h> #include <stdlib.h> i j int main() { int *i = malloc(4); int *j = malloc(4); free(i); int *k = malloc(4); } return 1;
56 메모리구조 Heap #include <stdio.h> #include <stdlib.h> int main() { int *i = malloc(4); int *j = malloc(4); free(i); int *k = malloc(4); i k j } return 1;
57 취약프로그램 힙오버플로우 heap buf_1 header buf_1 header heap buf_1 header buf_1 header buf_1 Hello buf_1! buf_1 AAAAAAAA AAAAAAAA buf_2 header buf_2 header AAAA AAAA buf_2 Hello buf_2! buf_2 BBBBBBBB
58 리눅스실행파읷 (ELF) 분석
59 리눅스실행파읷 (ELF) 분석방법 ELF 구조 ELF 헤더프로그램헤더프로그램코드글로벌상수변수글로벌변수 Import 함수 ELF Header Program Header.text section.rodata section.data section.got section
60 리눅스실행파읷 (ELF) 분석방법 ELF 구조 (ELF 헤더 ) readelf h <binary> ELF 헤더프로그램헤더프로그램코드글로벌상수변수글로벌변수 Import 함수 ELF Header Program Header.text section.rodata section.data section.got section
61 리눅스실행파읷 (ELF) 분석방법 ELF 구조 ( 프로그램헤더 ) readelf l <binary> ELF 헤더프로그램헤더프로그램코드글로벌상수변수글로벌변수 Import 함수 ELF Header Program Header.text section.rodata section.data section.got section
62 리눅스실행파읷 (ELF) 분석방법 ELF 구조 ( 섹션헤더 ) readelf S <binary> ELF 헤더프로그램헤더프로그램코드글로벌상수변수글로벌변수 Import 함수 ELF Header Program Header.text section.rodata section.data section.got section
63 리눅스실행파읷 (ELF) 분석방법 ELF 구조 ( 섹션헤더덤프 ) readelf x(n) <binary> ELF 헤더프로그램헤더프로그램코드글로벌상수변수글로벌변수 Import 함수 ELF Header Program Header.text section.rodata section.data section.got section
64 리눅스실행파읷 (ELF) 분석방법 ELF 구조 (.text 섹션 main 함수디스어셈블링 ) objdump d <binary> grep \<(function name)\>: -A 출력수 ELF 헤더프로그램헤더프로그램코드글로벌상수변수글로벌변수 Import 함수 ELF Header Program Header.text section.rodata section.data section.got section
65 리눅스실행파읷 (ELF) 분석방법 ELF 구조 ( 심볼테이블 ) readelf s <binary> ELF 헤더프로그램헤더프로그램코드글로벌상수변수글로벌변수 Import 함수 ELF Header Program Header.text section.rodata section.data section.got section
66 I can control the $pc and now what?
67 익스플로잆이후 익스플로잆을이용해프로그램흐름을조작핚다음에는? Segmentation fault Segmentation fault buf something awesome Segmentation fault RET address???? Segmentation fault Segmentation fault Segmentation fault!!!!!!
68 익스플로잆이후 익스플로잆을이용해프로그램흐름을조작핚다음에는? 읷반적으로쉘 (ex: /bin/sh) 을획득하는것이목적 buf shellcode RET address &shellcode
69 익스플로잆이후 리눅스쉘코딩 exploit-db.com WTF?? 강제로실행흐름을 shellcode 로변경 (exploit)
70 익스플로잆이후 리눅스쉘코딩 리눅스시스템콜 (/usr/src/linux/arch/x86/syscalls/)
71 익스플로잆이후 리눅스쉘코딩 [SECTION.text] BITS 32 mov eax, 1 mov ebx, 0 int 0x80 eax = sys_exit call number ebx = exit code Call the system call
72 익스플로잆이후 리눅스쉘코딩 [SECTION.text] BITS 32 xor eax, eax push eax push 0x68732f2f ; hs// -> //sh push 0x6e69622f ; nib/ -> /bin mov esp, ebx push eax push ebx mov esp, ecx mov al, 0xb ; execve int 0x80 execve( /bin//sh, [ /bin//sh, NULL])
73 익스플로잆이후 익스플로잆을이용해프로그램흐름을조작핚다음에는? 읷반적으로쉘 (ex: /bin/sh) 을획득하는것이목적 stack [SECTION.text] BITS 32 buf RET address shellcode dummy &shellcode xor eax, eax push eax push 0x68732f2f ; hs// -> //sh push 0x6e69622f ; nib/ -> /bin mov esp, ebx push eax push ebx mov esp, ecx mov al, 0xb ; execve int 0x80 execve( /bin//sh, [ /bin//sh, NULL])
74 익스플로잆방어기법및우회방법
75 방어메커니즘우회 NX (W^X) 스택에코드가올라가서실행이되기때문에스택의실행권핚을없앰 스택실행이허용되어잇는경우 gcc 옵션 : -z execstack
76 방어메커니즘우회 NX (W^X) 스택에코드가올라가서실행이되기때문에스택의실행권핚을없앰 스택실행이허용되지않은경우 gcc 옵션 : -z execstack 을뺀경우
77 방어메커니즘우회 NX (W^X) 스택에코드가올라가서실행이되기때문에스택의실행권핚을없앰 실행중의페이지별권핚차이 rwxp rw-p
78 방어메커니즘우회 NX (W^X) 우회방법설명 Return To Libc (RTL) 아이디어 실행가능핚영역으로뛰자! ( 라이브러리영역!) original program main stack system function stack buf RET address /bin/sh\x00 dummy &system /bin/sh\x00 dummy ebp AAAA &buf AAAA &buf RET address Argument
79 방어메커니즘우회 Smash Stack Protector (SSP) 스택카나리종류 Null Terminator Canary Random Canary Random XOR Canary buf Canary EBP RET canary ebp return
80 방어메커니즘우회 Smash Stack Protector (SSP) 우회방법설명 무작위대입 (32bit) Canary = 4 바이트 1 바이트 (Null) = 3 바이트 2 3byte 8bit/byte = 2 24 = 가지!!? 무작위대입이가능핛것같다!!?? 하지만매번실행시마다변경되기때문에사실상확률은 1/16,777,215 참고로로또 1 등당첨확률은 1/8,145,060 여기서생기는의문점? 처음에가져오는카나리는도대체어디서가져오는것읷까? gs:0x14??
81 방어메커니즘우회 Smash Stack Protector (SSP) 우회방법설명 gs: Thread Control Block (which stores Thread Local Storage, aka TLS) 원본카나리는 TLS 에졲재!! TLS 는런타임에고정적이지않은메모리에올라오기때문에노출이힘듦 But! 불가능핚것은아님! gs:0x14
82 방어메커니즘우회 Smash Stack Protector (SSP) 우회방법설명 gs: Thread Control Block (which stores Thread Local Storage, aka TLS) 키워드는 TLS!!! 먼저, fork 데몬을이용핚네트워크서비스동작방식을살펴보면다음과같음 accept() accept() mother new connection mother new connection fork() read() child fork() child execve() read()
83 방어메커니즘우회 Smash Stack Protector (SSP) 우회방법설명 Canary 가프로세스단위로생성되기때문에 첫번째경우, 자식프로세스가항상동일한 Canary 를생성하게됨 두번째경우, 자식프로세스가항상새로욲 Canary 를생성하게됨 accept() accept() mother new connection mother new connection fork() read() child fork() child execve() read()
84 방어메커니즘우회 Smash Stack Protector (SSP) 우회방법설명 무작위대입 (32bit) Canary = 4 바이트 1 바이트 (Null) = 3 바이트 2 3byte 8bit/byte = 2 24 = 가지!!? 무작위대입이가능핛것같다!!?? 하지만매번실행시마다변경되기때문에사실상확률은 1/16,777,215 참고로로또 1 등당첨확률은 1/8,145,060 fork without execve 프로세스의경우, 3 바이트를맞추면되기때문에 = 768 가지 위값은확률이아니라최악의경우에도 768 가지면정확핚카나리추측이가능
85 방어메커니즘우회 Smash Stack Protector (SSP) 우회방법설명 정보노출버그를이용하여 Canary 노출 buf canary 94CEA75A ebp ret
86 방어메커니즘우회 ASLR (Address Space Layer Randomization) 라이브러리기본주소를실행시임의로변경 ldd 를사용하여라이브러리가로드되는주소를확읶
87 방어메커니즘우회 ASLR (Address Space Layer Randomization) 기졲의익스플로잆페이로드에문제가생김 0xffffdf50 buf /bin /sh\x00 ebp 0x ret 0x7fe2a050 &system 1. system 함수의주소가랜덤하여상수로넣을수없음 0x ret for system 0xffffdf50 arg for system 2. stack 주소가랜덤하여 buf 주소를상수로넣을수없음
88 방어메커니즘우회 ASLR (Address Space Layer Randomization) System 함수주소해결책 libc.so.6 의기본주소를구핚뒤 + offset 엯산을이용하여 system 함수위치계산 libc.so.6 의주소를계산하기위해 라이브러리의기본주소를구하지않고 libc_start_main 의주소를노출 _start 함수에서 libc_start_main 을호출하기때문에 got 에함수주소가올라감 초기시작루틴 libc_start_main 의실제함수주소가올라오는곳
89 방어메커니즘우회 ASLR (Address Space Layer Randomization) libc_start_main 함수주소를어떻게노출? ASLR 을우회하기위해서는대부분정보노출버그가필요 이제는정보노출버그 + 오버플로우버그를통합하여공격! Stage 1 ( 필요핚정보들을노출시킴 ) libc_start_main 그외다른함수들도가능 Stage 2 필요핚정보들을씀 got table bss ret
90 방어메커니즘우회 ASLR (Address Space Layer Randomization) System 함수주소해결책 문제홖경에서동작하는라이브러리의오프셋을계산 (*) gdb q /libc32/libc.so.6 libc_start_main = libc_base + 0x18540 system = libc_base + 0x3a920 우리가 libc_start_main 을구핛수잇으면 system 주소는 libc_base = libc_start_main 0x18540 system = libc_base + 0x3a920 = ( libc_start_main 0x18540) + 0x3a920 = libc_start_main + 223e0 따라서, 위를이용해 system 함수를구핛수잇음
91 방어메커니즘우회 ASLR (Address Space Layer Randomization) /bin/sh 문자연주소해결책 gdb q /libc32/libc.so.6 libc 에잇는 /bin/sh 문자연을이용 & /bin/sh = libc_start_main + 0x140b5f
92 방어메커니즘우회 ASLR (Address Space Layer Randomization) /bin/sh 문자연주소해결책 고정적위치의 read/write 페이지에쓰기
93 방어메커니즘우회 ROP (Return Oriented Programming) 프로그램조각들을모아내가원하는실행을하도록만드는기술 프로그램의조각들은 code 영역에서가져오므로 NX 우회가능 Return To Libc 와유사 RTL Payload ROP Payload buf AAAA buf AAAA ret &system ret &puts BBBB &(pop ret) & /bin/sh & libc_start_main &read &(pop pop pop ret) 무엇읶가더하고싶다!!! 0 &puts 4
94 방어메커니즘우회 ROP (Return Oriented Programming) stage 0: 버그트리거 stage 1: libc_start_main 주소노출 stage 2: 인기 / 쓰기가능영역에 /bin/sh\x00 쓰기 + system 함수호출 stage 0: 리턴주소덮기 성공!? AAAA buf BBBB ret
95 방어메커니즘우회 ROP (Return Oriented Programming) stage 0: 버그트리거 stage 1: libc_start_main 주소노출 stage 2: 인기 / 쓰기가능영역에 /bin/sh\x00 쓰기 + system 함수호출 stage 1: libc_start_main 주소노출 puts, write 등의정보노출시켜줄수잇는함수가필요 여기서는 puts 가잇다고가정 stage 1 AAAA &puts BBBB 0804a014 buf ret
96 방어메커니즘우회 ROP (Return Oriented Programming) stage 0: 버그트리거 stage 1: libc_start_main 주소노출 stage 2: 인기 / 쓰기가능영역에 /bin/sh\x00 쓰기 + system 함수호출 stage 1: libc_start_main 주소노출 BBBB? => segmentation fault 계속 ROP Chain 을이어나가기위핚가젯 = pop ret 사용된읶자수만큼 pop 후 ret stage 1 AAAA &puts BBBB 0804a014 buf ret AAAA &puts b 0804a014
97 방어메커니즘우회 ROP (Return Oriented Programming) stage 0: 버그트리거 stage 1: libc_start_main 주소노출 stage 2: 인기 / 쓰기가능영역에 /bin/sh\x00 쓰기 + system 함수호출 stage 2: 인기 / 쓰기가능영역에 /bin/sh\x00 쓰기 쓰기를위해 read/write 함수를사용 read(stdin, 인기 / 쓰기가능영역, 8byte) 인기 / 쓰기영역에내가보낸 8 바이트값이저장됨 stage 1 AAAA &puts b 0804a014 &read a000 8 buf ret
98 방어메커니즘우회 ROP (Return Oriented Programming) stage 0: 버그트리거 stage 1: libc_start_main 주소노출 stage 2: 인기 / 쓰기가능영역에 /bin/sh\x00 쓰기 + system 함수호출 stage 2: 인기 / 쓰기가능영역에 /bin/sh\x00 쓰기 서버에서 read(stdin,,.) 을만나면내입력을기다리고잇음 따라서, 핚번더젂송하면해당입력이 0804a000 에써지게됨 stage 1 AAAA &puts b 0804a014 &read a000 8 buf ret stage 2 /bin/sh\x00
99 방어메커니즘우회 ROP (Return Oriented Programming) stage 0: 버그트리거 stage 1: libc_start_main 주소노출 stage 2: 인기 / 쓰기가능영역에 /bin/sh\x00 쓰기 + system 함수호출 stage 2: 인기 / 쓰기가능영역에 /bin/sh\x00 쓰기 서버에서 read(stdin,,.) 을만나면내입력을기다리고잇음 따라서, 핚번더젂송하면해당입력이 0804a000 에써지게됨 stage 1 AAAA &puts b 0804a014 &read a000 8 buf ret stage 2 /bin/sh\x00
100 방어메커니즘우회 ROP (Return Oriented Programming) stage 0: 버그트리거 stage 1: libc_start_main 주소노출 stage 2: 인기 / 쓰기가능영역에 /bin/sh\x00 쓰기 + system 함수호출 stage 2: system 함수호출 libc_start_main + offset 을이용하여구핚 system 함수호출 내가썻던 /bin/sh\x00 을읶자로젂송 그런데? 첫번째 stage 1 페이로드에서는 system 을넣을수가없다? stage 1 AAAA &puts b 0804a014 &read a000 8 &system buf ret stage 2 /bin/sh\x00
101 방어메커니즘우회 ROP (Return Oriented Programming) stage 0: 버그트리거 stage 1: libc_start_main 주소노출 stage 2: 인기 / 쓰기가능영역에 /bin/sh\x00 쓰기 + system 함수호출 stage 2: system 함수호출 puts 함수의 got 를 system 함수로변경 read(0, &puts, 4) <- &system 이때, 읶자의형태가비슷핚함수가좋음 예 ) puts(char *), system(char *) stage 2 /bin/sh\x00 buf ret stage 1 AAAA &puts b 0804a014 &read a000 8 &system
102 방어메커니즘우회 ROP (Return Oriented Programming) stage 0: 버그트리거 stage 1: libc_start_main 주소노출 stage 2: 인기 / 쓰기가능영역에 /bin/sh\x00 쓰기 stage 3: puts 함수를 system 함수로덮기 + puts 호출 stage 3: puts 함수를 system 함수로덮기 puts 함수의 got 를 system 함수로변경 read(0, &puts, 4) <- &system stage 2 /bin/sh\x00 buf ret stage 1 AAAA &puts b 0804a014 &read a000 8 &read &puts 4 stage 3 &system
103 방어메커니즘우회 ROP (Return Oriented Programming) stage 0: 버그트리거 stage 1: libc_start_main 주소노출 stage 2: 인기 / 쓰기가능영역에 /bin/sh\x00 쓰기 stage 3: puts 함수를 system 함수로덮기 + puts 호출 stage 3: puts 호출 puts 가 system 함수로되었으므로결국 system( /bin/sh\x00 ) 이호출 stage 2 /bin/sh\x00 buf ret stage 1 AAAA &puts b 0804a014 &read a000 8 &read &puts 4 &puts AAAA 0804a000 stage 3 &system
104 방어메커니즘우회 ROP (Return Oriented Programming) 결롞적으로 NX 와 ASLR 을 got overwrite 를통해우회하는 ROP 코드는보통다음과같이 3 단계로이루어짐 stage 2 /bin/sh\x00 buf ret stage 1 AAAA &puts b 0804a014 &read a000 8 &read &puts 4 &puts AAAA 0804a000 stage 3 &system
105 윈도우 & 웹브라우저익스플로잆
106 힙버그 힙오버플로우버그 기초적읶힙오버플로우버그설명 ( 개념적으로 )
107 힙버그 타입혼동버그 기초적읶타입혼동버그설명 ( 개념적으로 ) a = [int, char [10]] a int char * char char... delete a; a int char [10] b = [int, int] a b int int a.char =? a b int int?
108 힙버그 Use-After-Freed 버그 기초적읶 UAF 버그설명 ( 개념적으로 ) a = new A(); a XXXX delete a; a XXXX b = new B(); a b YYYY a.func_b() a b YYYY
109 Out-Of-Bound r/w 버그 OOB r/w 버그 기본적읶정보노출버그동작설명 정보노출버그가왜중요핚지설명 a = char [3] a char char char a[1000] =? a char char char...?
110 윈도우보앆매커니즘및공격방식 IE 기본 vtable 설명 (C++ 의가상함수및해당어셈블설명 ) ecx dog eax vtable pointer... edx function pointer (eat) function pointer (...) mov eax, [ecx] mov edx, [eax + 4h] call edx
111 윈도우보앆매커니즘및공격방식 IE 기본 Android 2.1 웹킷익스플로잆버그설명 textarea <body> <textarea id= target rows=20>android 2.1 Webkit Browser</textarea> </body> vtable textarea var e1 = document.getelementbytagname( textarea ) var e2 = document.getelementbyid( target ) vtable e1 e2 textarea null e2.parentnode.removechild(target) feee feee e1 e2 null var s = new String( \u ) for (var i=0 ; i<20000 ; i++) s += \u e1.innerhtml = s s e
112 윈도우보앆매커니즘및공격방식 WinXP SP2 + IE6 (+Nothing) 공격로직 (heap spraying) 힙스프레있 (nop-sled + shellcode) 버그를트리거하여실행흐름을힙쪽으로변경 Heap mshtml.dll Bug triggered and eip jumps to heap Nop-sled + Shellcode
113 윈도우보앆매커니즘및공격방식 WinXP SP2 + IE6 (+DEP) 방어로직 스택과힙에실행권핚을제거 Heap mshtml.dll Bug triggered and eip jumps to heap Nop-sled + Shellcode
114 윈도우보앆매커니즘및공격방식 WinXP SP3 + IE6 (+DEP) 공격로직 (ROP) 코드영역에서코드조각들을가져와원하는행위실행 Heap Kernel32.dll ntdll.dll Shellcode
115 윈도우보앆매커니즘및공격방식 WinXP SP3 + IE6 (+DEP) 공격로직 ROP 코드
116 윈도우보앆매커니즘및공격방식 WinXP SP3 + IE6 (+ASLR) 방어로직 라이브러리기본주소가랜덤하게변경되어고정적주소를넣는 ROP 를방어
117 윈도우보앆매커니즘및공격방식 WinXP SP3 + IE6 (+ASLR) 공격로직 임의메모리인기 / 쓰기 Array[0] Array[n] Array[0] Array[n] Array[n+1] Array[n+2]
118 윈도우보앆매커니즘및공격방식 WinXP SP3 + IE6 (+ASLR) 공격로직 실행중에라이브러리기본주소를계산하고, 라이브러리 + offset 만으로공격코드를작성
119 윈도우보앆매커니즘및공격방식 Win7 + IE10 (+vtguard) 방어로직 vtable 이덮어써지는것을방지하기위해 VTGuard Cookie 를넣음 1 st 4 byte (dword) Ptr to vtable Rest of the object Virtual Function 1 Virtual Function 2... VTGuard Cookie 0c0c0c0c 0c0c0c0c... 0c0c0c0c 0c0c0c0c... 1 st 4 byte (dword)
120 윈도우보앆매커니즘및공격방식 Win7 + IE10 (+vtguard) 공격로직 Cookie 로 mshtml! vtguard 주소가들어가게되는데이를구하여 cookie 를맞춤 1 st 4 byte (dword) Ptr to vtable Rest of the object Virtual Function 1 Virtual Function 2... VTGuard Cookie Call ROP Gadgets 0c0c0c0c 0c0c0c0c... VTGuard Cookie 0c0c0c0c... 1 st 4 byte (dword)
121 윈도우보앆매커니즘및공격방식 Win7 + IE10 (+vtguard) 공격로직 특정경우에는 VTGuard Cookie 가적용되지않는오브젝트가졲재 Call ROP Gadgets 0c0c0c0c 0c0c0c0c... 0c0c0c0c... 1 st 4 byte (dword)
122 윈도우보앆매커니즘및공격방식 Win7 + IE11 (+MemoryProtection, Delayed Free, De-Refered Free) 방어로직 힙의핛당해제에대핚복잡도를높여공격하기힘들도록함 100k 가넘거나스택이나레지스터가깨끗핚경우, 해제
123 윈도우보앆매커니즘및공격방식 Win7 + IE11 (+MemoryProtection, Delayed Free, De-Refered Free) 공격로직 100k 를핛당시켜해제를강제함
124 윈도우보앆매커니즘및공격방식 Win7 + IE11 (+isolated heap) 방어로직 중요핚오브젝트의경우격리된힙공갂에핛당되도록함
125 윈도우보앆매커니즘및공격방식 Win7 + IE11 (+isolated heap) 공격로직 ( 타입혼동버그 ) 해제된오브젝트에다른오브젝트를덮어씌움
126 윈도우보앆매커니즘및공격방식 Win7 + IE11 (+isolated heap) 공격로직 ( 타입혼동버그 ) 적젃핚사이즈가없다면작은오브젝트를여러개핛당
127 윈도우보앆매커니즘및공격방식 EMET (Enhanced Mitigation Experience Toolkit) 2017 년 1 월사망선고를받았으나, 18 개월엯장하여 2018 년 7 월까지지원
128 윈도우보앆매커니즘및공격방식 EMET 5.2 방어로직 Data Execution Prevention (DEP) Structured Exception Handler Overwrite Protection (SEHOP) Null Page Protection (NullPage) Heap Spray Protection (HeapSpray) Export Address Table Access Filtering (EAF) Export Address Table Access Filtering+ (EAF+) Mandatory Address Space Layout Randomization (MandatoryASLR) Bottom-Up Address Space Layout Randomization (BottomUpASLR) Load Library Protection (LoadLib) Memory Protection (MemProt) ROP Caller Check (Caller) ROP Simulate Execution Flow (SimExecFlow) Stack Pivot (StackPivot) Attack Surface Reduction (ASR)
129 윈도우보앆매커니즘및공격방식 Enhanced Mitigation Experience Toolkit 5.2 (EMET) Export Address Table Access Filtering (EAF, EAF+) Export Dir GetProcAddress() XXXX... Export Dir GetProcAddress() XXXX... HW/BP EMET EAF ERR
130 윈도우보앆매커니즘및공격방식 Enhanced Mitigation Experience Toolkit 5.2 (EMET) Export Address Table Access Filtering (EAF, EAF+) Export Dir Init drx registers GetProcAddress() XXXX... HW/BP EMET EAF ERR Export Dir Init drx registers GetProcAddress() XXXX... Ring 3 ERR HW/BP EMET EAF ERR
131 윈도우보앆매커니즘및공격방식 Enhanced Mitigation Experience Toolkit 5.2 (EMET) Export Address Table Access Filtering (EAF, EAF+) Generate Exception Exception Handler Ring 0 Init drx registers GetProcAddress() Export Dir XXXX... Ring 3 ERR HW/BP EMET EAF ERR Generate Exception Exception Handler Ring 0 Init drx registers GetProcAddress() Export Dir XXXX... Check the handler SafeSEH ERR Ring 3 ERR HW/BP EMET EAF ERR
132 윈도우보앆매커니즘및공격방식 Enhanced Mitigation Experience Toolkit 5.2 (EMET) Export Address Table Access Filtering (EAF, EAF+) 32bit Ring 3 64bit Ring 3 64bit Ring 0 Ring 0 Init drx registers GetProcAddress() Export Dir XXXX... Ring 3 ERR HW/BP EMET EAF ERR
133 윈도우보앆매커니즘및공격방식 Win8 + IE10 (+EPM Snadbox), Enhanced Protected Mode 방어로직 행위에대핚권핚을부여하여관리
134 윈도우보앆매커니즘및공격방식 Win8 + IE10 (+EPM Snadbox), Enhanced Protected Mode 공격로직 (EOP, Local Elevation of Privilege 이용 ) 커널익스플로잆 (2013, pwn2own bypass chrome s sandbox using kernel pool overflow) CVE : Theori / PPP (Multi-stage Exploit)
135 윈도우보앆매커니즘및공격방식 Win10 + IE11, Edge (+Control Flow Guard) 방어로직 OS 에서지원이되어야가능핚방어로직 (OS 부팅시, CFG Bitmap 을위핚섹션오브젝트생성 ) 유효핚 RVA 들을관리 indirect call 이호출되기젂에체크 mov eax, [ecx] mov eax, [ecx] mov edx, [eax + 4h] call edx mov esi, dword ptr [eax + 4h] mov ebx, esi call dword ptr [jscript9! guard_check_icall_fptr] mov ebx, ecx call edx
136 윈도우보앆매커니즘및공격방식 Win10 + IE11, Edge (+Control Flow Guard) 공격로직 - Non-CFG Module - X) when compile new modules with CFG enable - JIT Generated Code - X) no longer the case in Edge - Indirect Jump - X) protected using the same mechanism as indirect call - Return address - X) GS, SafeSEH, SEHOP - Valid API Function - X) functions are no longer valid in the latest version of win10
137 윈도우보앆매커니즘및공격방식 Win10 + IE11, Edge (+Control Flow Guard) 공격로직 체크함수를커스텀힙버그를이용하여 writable 하게만들어덮어씀 Overwrite Func Pointer bypass icall Overwrite Validate Valid! Guard CF Check Func Overwrite Func Pointer bypass icall Overwrite Func Pointer bypass icall Overwrite Validate Valid! Overwrite Guard CF Check Func Read-only memory jscript9 CustomHeap::Heap Guard CF Check Func Read-only memory writable memory
138 윈도우보앆매커니즘및공격방식 Win10 + IE11, Edge (+Control Flow Guard) 공격로직 Jit Code 가 Temporal Buffer 에옮겨질때 rwx 가되는점을이용 rwx r-x
139 윈도우보앆매커니즘및공격방식 Win10 + Edge (+MemGC) 방어로직 MemoryProtection 의상위호홖느낌?... -_-;; MemoryProtection + MemGC 가관리하는청크들의내용을검사
140 윈도우보앆매커니즘및공격방식 Win10 + Edge (+MemGC) 공격로직 커스텀힙에서해제된오브젝트가차크라 GC 힙에서사용되는경우 UAF 발생 CVE
141 MS 벌레잡기프로그램 Microsoft Bounty Programs
142 웹브라우저익스플로잆예제
143 Windows XP SP3 + IE 6 (CVE , aka. aurora) cve _aurora_calc.html web browser exploit development 시작의좋은샘플 uaf, heap spraying, shellcode 힙스프레있 (nop-sled + shellcode) UAF 조건생성 UAF 버그트리거 쉘코드실행
144 Windows XP SP3 + IE 6 (CVE , aka. aurora) cve _aurora_calc.html 힙스프레있 0x COMMENT object 생성 힙스프레있 (nop-sled + shellcode) 0x x x x0a0a0a0a 0x0b0b0b0b 0x0c0c0c0c
145 Windows XP SP3 + IE 6 (CVE , aka. aurora) cve _aurora_calc.html 0x0c0c0c0c?? 0x0a0a0a0a?? 4 바이트의조건 - 유효핚힙주소 - 동작에영향을주지않는유효핚어셈블리어 0x0a0a0a0a 0x0c0d0c0d?? shellcode
146 Windows XP SP3 + IE 6 (CVE , aka. aurora) cve _aurora_calc.html UAF 조건생성 img object 생성 img object 삭제 javascript 에서 free 되는여러가지형태 garbage collect removechild innerhtml = 등등 event_obj freed img obj
147 Windows XP SP3 + IE 6 (CVE , aka. aurora) cve _aurora_calc.html UAF 조건트리거 요기가비었네? 써야지!! event_obj 0x0a0a0a0a img obj 확률적으로밀어넣기 ( 사바사바사바사바!!)
148 Windows XP SP3 + IE 6 (CVE , aka. aurora) cve _aurora_calc.html UAF 조건트리거 vtable event_obj 0x0a0a0a0a srcelement 0x0a0a0a0a 0x0a0a0a0a 0x0a0a0a0a 0x0a0a0a0a 자싞잇게 CALL EAX!! 실제로트리거를읷으키는코드 이이후는여러분상상에 0x0a0a0a0a
149 Windows XP SP3 + IE 6 (CVE , aka. aurora) cve _aurora_calc.html 쉘코드실행 event_obj vtable 0x0a0a0a0a srcelement 0x0a0a0a0a 0x0a0a0a0a 0x0a0a0a0a 0x0a0a0a0a 0x0a0a0a0a 0x0a0a0a0a 미끄럼틀처럼쭈욱!!! 실제로트리거를읷으키는코드 shellcode
150 Windows XP SP3 + IE 6 (CVE , aka. aurora) cve _aurora_calc.html 보통다음과같은순서로디버깅이짂행됨 어떤오브젝트를다루는가? 어디서해제되는가? 어디서핛당되는가? 어디서핛당이해제된오브젝트를다시사용하는가? 그이후내가무엇을핛수잇는가? 제읷변태스러욲부분 실행흐름의위아래를모두훑으면서조금이라도가능성이잇는실행흐름을계속찾는과정
151 Windows XP SP3 + IE 6 (CVE , aka. aurora) cve _aurora_calc.html 디버깅시에는힙에서문제가발생되는것을확읶하기위해 gflags 를설정 +hpa (heap page allocator) - 힙에서 UAF, 힙버퍼오버플로우탐지에유용핚옵션 +ust (user mode stack trace) 스택트레이스를저장
152 Windows XP SP3 + IE 8 (CVE ) cve _crash.html web browser exploit development 시작의좋은샘플 uaf, heap spraying, shellcode using CollectGarbage function 힙스프레있 (nop-sled + shellcode) UAF 조건생성 UAF 버그트리거 쉘코드실행
153 Windows XP SP3 + IE 8 (CVE ) cve _crash.html UAF 조건생성 e_form form obj e_div div obj CButton obj
154 Windows XP SP3 + IE 8 (CVE ) cve _crash.html UAF 조건생성 e_div div obj e_form form obj CButton obj
155 Windows XP SP3 + IE 8 (CVE ) cve _crash.html UAF 조건생성 e_div div obj e_form form obj reference_count--; CButton obj
156 Windows XP SP3 + IE 8 (CVE ) cve _crash.html UAF 조건생성 e_div div obj e_form form obj freed UAF 완성!
157 Windows XP SP3 + IE 8 (CVE ) cve _calc.html 실제익스플로잆분석 Heap spraying (nop-sled + shellcode) 생략 html javascript
158 Windows XP SP3 + IE 8 (CVE ) cve _calc.html 실제익스플로잆분석 e0 javascript form obj e1 div obj e2 q obj
159 Windows XP SP3 + IE 8 (CVE ) cve _calc.html 실제익스플로잆분석 e0 javascript form obj e2 q obj e1 div obj
160 Windows XP SP3 + IE 8 (CVE ) cve _calc.html 실제익스플로잆분석 e0 javascript form obj e2 q obj e1 div obj CButton obj
161 Windows XP SP3 + IE 8 (CVE ) cve _calc.html 실제익스플로잆분석 javascript e2 e0 e1 q obj form obj div obj CButton obj
162 Windows XP SP3 + IE 8 (CVE ) cve _calc.html 실제익스플로잆분석 javascript e2 e0 e1 q obj form obj div obj CButton obj
163 Windows XP SP3 + IE 8 (CVE ) cve _calc.html 실제익스플로잆분석 javascript e2 e0 e1 q obj form obj div obj CButton obj div obj
164 Windows XP SP3 + IE 8 (CVE ) cve _calc.html 실제익스플로잆분석 javascript e2 e0 e1 q obj form obj div obj freed div obj
165 Windows XP SP3 + IE 8 (CVE ) cve _calc.html 실제익스플로잆분석 javascript e2 e0 e1 q obj form obj div obj 0c0c0c0c div obj unescape 앆의 0c 의바이트수가실제 CButton 사이즈와동읷 또핚, classname 에핛당해야지해제된오브젝트와동읷핚힙에핛당됨
166 Windows XP SP3 + IE 8 (CVE ) cve _calc.html 실제익스플로잆분석 e2 e0 e1 q obj form obj div obj 0c0c0c0c div obj javascript html 좀더정확히는요기 트리거!!
167 감사합니다 Never stop hacking :P
hlogin2
0x02. Stack Corruption off-limit Kernel Stack libc Heap BSS Data Code off-limit Kernel Kernel : OS Stack libc Heap BSS Data Code Stack : libc : Heap : BSS, Data : bss Code : off-limit Kernel Kernel : OS
More informationDeok9_Exploit Technique
Exploit Technique CodeEngn Co-Administrator!!! and Team Sur3x5F Member Nick : Deok9 E-mail : DDeok9@gmail.com HomePage : http://deok9.sur3x5f.org Twitter :@DDeok9 > 1. Shell Code 2. Security
More informationhlogin7
0x07. Return Oriented Programming ROP? , (DEP, ASLR). ROP (Return Oriented Programming) (excutable memory) rop. plt, got got overwrite RTL RTL Chain DEP, ASLR gadget Basic knowledge plt, got call function
More informationLinux Binary Hardening with Glibc Hyeonho Seo
Linux Binary Hardening with Glibc Hyeonho Seo About Me 서현호(Hyeonho Seo) KDMHS 재학 중인 파릇한(?) 고등학 생 게임/팀플 빼고는 우분투만 사용 관심 분야는 상당히 잡식성 POSIX System Hacking Linux Kernel Programming Network Protocol C, Modern
More informationINTRO Basic architecture of modern computers Basic and most used assembly instructions on x86 Installing an assembly compiler and RE tools Practice co
Basic reverse engineering on x86 This is for those who want to learn about basic reverse engineering on x86 (Feel free to use this, email me if you need a keynote version.) v0.1 SeungJin Beist Lee beist@grayhash.com
More information목차 1. 소개... 3 가. BOF란?... 3 나. 윈도우 BOF 개발환경및사용툴 Shellcode 작성하기... 4 가. cmd 쉘 ) 소스코드작성 ) 디스어셈블리 ) 어셈블리코드편집 간단
기술문서 `09. 11. 02. 작성 Windows Buffer Overflow Attack 작성자 : 영남대학교정보보호연구학회 @Xpert 김슬예나 prehea@ynu.ac.kr 1 목차 1. 소개... 3 가. BOF란?... 3 나. 윈도우 BOF... 3 2. 개발환경및사용툴... 3 3. Shellcode 작성하기... 4 가. cmd 쉘... 4
More informationPoison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3
Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3 Example 3.1 Files 3.2 Source code 3.3 Exploit flow
More information01.ROP(Return Oriented Programming)-x86 Excuse the ads! We need some help to keep our site up. List Return Oriented Programming(ROP) -x86 Gadgets - PO
01.ROP(Return Oriented Programming)-x86 Excuse the ads! We need some help to keep our site up. List Return Oriented Programming(ROP) -x86 Gadgets - POP; POP; POP; RET PLT & GOT Debug Proof of concept Example
More informationPowerPoint Template
BoF 원정대서비스 목차 환경구성 http://www.hackerschool.org/hs_boards/zboard.php?id=hs_notice&no=1170881885 전용게시판 http://www.hackerschool.org/hs_boards/zboard.php?id=bof_fellowship Putty War game 2 LOB 란? 해커스쿨에서제공하는
More information6주차.key
6, Process concept A program in execution Program code PCB (process control block) Program counter, registers, etc. Stack Heap Data section => global variable Process in memory Process state New Running
More informationMicrosoft Word - building the win32 shellcode 01.doc
Win32 Attack 1. Local Shellcode 작성방법 By 달고나 (Dalgona@wowhacker.org) Email: zinwon@gmail.com Abstract 이글은 MS Windows 환경에서 shellcode 를작성하는방법에대해서설명하고있다. Win32 는 *nix 환경과는사뭇다른 API 호출방식을사용하기때문에조금복잡하게둘러서 shellcode
More informationReusing Dynamic Linker For Exploitation Author : Date : 2012 / 05 / 13 Contact : Facebook : fb.me/kwonpwn
Reusing Dynamic Linker For Exploitation Author : pwn3r @ B10S @WiseGuyz Date : 2012 / 05 / 13 Contact : austinkwon2@gmail.com Facebook : fb.me/kwonpwn3r Abstract 대부분의 Unix 에선공유라이브러리를메모리에로드하고프로그램과 link
More information슬라이드 1
-Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역
More informationReturn-to-libc
Return-to-libc Mini (skyclad0x7b7@gmail.com) 2015-08-22 - INDEX - 1. 개요... - 2-1-1. 서문... - 2-1-2. RTL 공격이란... - 2 - 보호기법... - 3 - Libc 란?... - 4-2. RTL 공격... - 4-2-1. 취약한코드... - 4-2-2. 분석... - 5-2-3.
More information커알못의 커널 탐방기 이 세상의 모든 커알못을 위해서
커알못의 커널 탐방기 2015.12 이 세상의 모든 커알못을 위해서 개정 이력 버전/릴리스 0.1 작성일자 2015년 11월 30일 개요 최초 작성 0.2 2015년 12월 1일 보고서 구성 순서 변경 0.3 2015년 12월 3일 오탈자 수정 및 글자 교정 1.0 2015년 12월 7일 내용 추가 1.1 2015년 12월 10일 POC 코드 삽입 및 코드
More information02.Create a shellcode that executes "/bin/sh" Excuse the ads! We need some help to keep our site up. List Create a shellcode that executes "/bin/sh" C
02.Create a shellcode that executes "/bin/sh" Excuse the ads! We need some help to keep our site up. List Create a shellcode that executes "/bin/sh" C language Assembly code Change permissions(seteuid())
More informationNo Slide Title
Copyright, 2017 Multimedia Lab., UOS 시스템프로그래밍 (Assembly Code and Calling Convention) Seong Jong Choi chois@uos.ac.kr Multimedia Lab. Dept. of Electrical and Computer Eng. University of Seoul Seoul, Korea
More informationIDA 5.x Manual 07.02.hwp
IDA 5.x Manual - Manual 01 - 영리를 목적으로 한 곳에서 배포금지 Last Update 2007. 02 이강석 / certlab@gmail.com 어셈블리어 개발자 그룹 :: 어셈러브 http://www.asmlove.co.kr - 1 - IDA Pro 는 Disassembler 프로그램입니다. 기계어로 되어있는 실행파일을 어셈블리언어
More information강의10
Computer Programming gdb and awk 12 th Lecture 김현철컴퓨터공학부서울대학교 순서 C Compiler and Linker 보충 Static vs Shared Libraries ( 계속 ) gdb awk Q&A Shared vs Static Libraries ( 계속 ) Advantage of Using Libraries Reduced
More informationMicrosoft PowerPoint - Lecture_Note_7.ppt [Compatibility Mode]
Unix Process Department of Computer Engineering Kyung Hee University. Choong Seon Hong 1 유닉스기반다중서버구현방법 클라이언트들이동시에접속할수있는서버 서비스를동시에처리할수있는서버프로세스생성을통한멀티태스킹 (Multitasking) 서버의구현 select 함수에의한멀티플렉싱 (Multiplexing)
More information<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >
10주차 문자 LCD 의인터페이스회로및구동함수 Next-Generation Networks Lab. 5. 16x2 CLCD 모듈 (HY-1602H-803) 그림 11-18 19 핀설명표 11-11 번호 분류 핀이름 레벨 (V) 기능 1 V SS or GND 0 GND 전원 2 V Power DD or V CC +5 CLCD 구동전원 3 V 0 - CLCD 명암조절
More informationDeok9_PE Structure
PE Structure CodeEngn Co-Administrator!!! and Team Sur3x5F Member Nick : Deok9 E-mail : DDeok9@gmail.com HomePage : http://deok9.sur3x5f.org Twitter :@DDeok9 1. PE > 1) PE? 2) PE 3) PE Utility
More informationComputer Security Chapter 08. Format String 김동진 1 Secure Software Lab.
Computer Security Chapter 08. Format Strig 김동진 (kdjorag@gmail.com) http://securesw.dakook.ac.kr/ 1 목차 Format Strig Attack? Format Strig? Format Strig Attack 의원리 입력코드생성 Format Strig Attack (kerel v2.2,
More informationMicrosoft Word - FunctionCall
Function all Mechanism /* Simple Program */ #define get_int() IN KEYOARD #define put_int(val) LD A val \ OUT MONITOR int add_two(int a, int b) { int tmp; tmp = a+b; return tmp; } local auto variable stack
More information임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과
임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 System call table and linkage v Ref. http://www.ibm.com/developerworks/linux/library/l-system-calls/ - 2 - Young-Jin Kim SYSCALL_DEFINE 함수
More informationMicrosoft PowerPoint - o8.pptx
메모리보호 (Memory Protection) 메모리보호를위해 page table entry에 protection bit와 valid bit 추가 Protection bits read-write / read-only / executable-only 정의 page 단위의 memory protection 제공 Valid bit (or valid-invalid bit)
More informationLevel 4 ( hell_fire -> evil_wizard ) ~]$ cat evil_wizard.c /* The Lord of the BOF : The Fellowship of the BOF - evil_wizard
Level 4 ( hell_fire -> evil_wizard ) [hell_fire@fedora_1stfloor ~]$ cat evil_wizard.c /* The Lord of the BOF : The Fellowship of the BOF - evil_wizard - Local BOF on Fedora Core 3 - hint : GOT overwriting
More informationhow_2_write_Exploit_4_the_MSF_v3.x.hwp
Metasploit v3.0 을이용한 Exploit 작성하기 2008.1.18 본문서는 Jerome 님의 Writing Windows Exploits 을기반으로작성된문서임을밝힙니다. rich4rd rich4rd.lim@gmail.com - 1 - 목차. 1. 소개및개요 2. 배경지식 3. Exploit module 실습 3.1 Exploit module 수정하기
More informationSRC PLUS 제어기 MANUAL
,,,, DE FIN E I N T R E A L L O C E N D SU B E N D S U B M O TIO
More informationPowerPoint 프레젠테이션
Web server porting 2 Jo, Heeseung Web 을이용한 LED 제어 Web 을이용한 LED 제어프로그램 web 에서데이터를전송받아타겟보드의 LED 를조작하는프로그램을작성하기위해다음과같은소스파일을생성 2 Web 을이용한 LED 제어 LED 제어프로그램작성 8bitled.html 파일을작성 root@ubuntu:/working/web# vi
More informationEclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일
Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 Introduce Me!!! Job Jeju National University Student Ubuntu Korean Jeju Community Owner E-Mail: ned3y2k@hanmail.net Blog: http://ned3y2k.wo.tc Facebook: http://www.facebook.com/gyeongdae
More information슬라이드 1
오피스문서파일 플래시객체삽입기능 엑셀에삽입한악성플래시파일 CVE-2018-4878 User Interaction? 제한된보기상태에서여는경우를제외하고플래시자동실행 이메일, 메신저, SNS 오피스 exploit.xslx 이메일 플래시익스플로잇 악성코드 메신저 익스플로잇흐름도 Office Request decode xor key (swf id, flash version,
More informationMicrosoft PowerPoint - a8a.ppt [호환 모드]
이장의내용 8 장고급프로시저 스택프레임 재귀 (Recursion) Invoke, Addr, Proc, Proto 디렉티브 다중모듈프로그램작성 2 8.2 스택프레임 Stack Frame ( 또는 activation record) procedure 의다음사항을저장한 영역 urn address passed parameter ( 스택매개변수 ) saved register
More informationMicrosoft Word - Reverse Engineering Code with IDA Pro-2-1.doc
Reverse Engineering Code with IDA Pro By Dan Kaminsky, Justin Ferguson, Jason Larsen, Luis Miras, Walter Pearce 정리 : vangelis(securityproof@gmail.com) 이글은 Reverse Engineering Code with IDA Pro(2008년출판
More informationMicrosoft Word - ExecutionStack
Lecture 15: LM code from high level language /* Simple Program */ external int get_int(); external void put_int(); int sum; clear_sum() { sum=0; int step=2; main() { register int i; static int count; clear_sum();
More informationMicrosoft PowerPoint - a10.ppt [호환 모드]
Structure Chapter 10: Structures t and Macros Structure 관련된변수들의그룹으로이루어진자료구조 template, pattern field structure를구성하는변수 (cf) C언어의 struct 프로그램의 structure 접근 entire structure 또는 individual fields Structure는
More information목 차 1. 개요 취약점분석추진배경 취약점요약 취약점정보 취약점대상시스템목록 분석 공격기법및기본개념 시나리오 공격코드
취약점분석보고서 [Aviosoft Digital TV Player Professional 1.x Stack Buffer Overflow] 2012-08-08 RedAlert Team 강동우 목 차 1. 개요... 1 1.1. 취약점분석추진배경... 1 1.2. 취약점요약... 1 1.3. 취약점정보... 1 1.4. 취약점대상시스템목록... 1 2. 분석...
More informationMicrosoft Word - SEH_Overwrites_Simplified.doc
SEH Overwrites Simplified v1.01 1 Date : 2007. 10. 29 저자 : Aelphaeis Mangarae 편역 : Kancho ( kancholove@gmail.com, www.securityproof.net ) 머리말 이문서는 Stack 다이어그램을이용하여두개의다른 Windows 플랫폼에서의 SEH Overwrite를다룹니다.
More information1
1 1....6 1.1...6 2. Java Architecture...7 2.1 2SDK(Software Development Kit)...8 2.2 JRE(Java Runtime Environment)...9 2.3 (Java Virtual Machine, JVM)...10 2.4 JVM...11 2.5 (runtime)jvm...12 2.5.1 2.5.2
More informationPowerPoint 프레젠테이션
@ Lesson 4 (Object) (Class) (Instance) (Method) (Constructor) Memory 1 UML 1 @ & 1 (Real World) (Software World) @ &.. () () @ & 2 (Real World) (Software World) OOA/ Modeling Abstraction Instantiation
More informationMicrosoft PowerPoint - polling.pptx
지현석 (binish@home.cnu.ac.kr) http://binish.or.kr Index 이슈화된키보드해킹 최근키보드해킹이슈의배경지식 Interrupt VS polling What is polling? Polling pseudo code Polling 을이용한키로거분석 방어기법연구 이슈화된키보드해킹 키보드해킹은연일상한가! 주식, 펀드투자의시기?! 최근키보드해킹이슈의배경지식
More information(Asynchronous Mode) ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 -
(Asynchronous Mode) - - - ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 - UART (Univ ers al As y nchronous Receiver / T rans mitter) 8250A 8250A { COM1(3F8H). - Line Control Register
More informationMicrosoft PowerPoint - secu10.pptx
Buffer Overflow Chap 10. Buffer Overflow a very common attack mechanism 1988 년 the Morris Worm 가처음사용한방법 버퍼에저장되는데이터의크기를검사하지않는, 프로그램의부주의한점을이용 prevention techniques 이알려져있음 여전히많은관심대상임 널리배포되어사용중인운영체제와응용프로그램에이러한버그가있는코드가존재함
More information취약점분석보고서 [CyberLink Power2Go name attribute (p2g) Stack Buffer Overflow Exploit] RedAlert Team_ 강동우
취약점분석보고서 [CyberLink Power2Go name attribute (p2g) Stack Buffer Overflow Exploit] 2012-07-19 RedAlert Team_ 강동우 목 차 1. 개요... 1 1.1. 취약점분석추진배경... 1 1.2. Power2Go name Stack Buffer Overflow 취약점요약... 1 2.
More informationsimple ROP Exploit
SIMPLE ROP EXPLOIT 문제로풀어보는 ROP TigerTeam elttzero@tigerteam.kr 목차 1. 개요... 2 2. Buffer OverFlow... 2 3. BOF 방어기법... 3 3.1. DEP(Data Execution Prevention)... 3 3.2. ASLR(Address Space Layout Randomization)...
More informationAPI 매뉴얼
PCI-DIO12 API Programming (Rev 1.0) Windows, Windows2000, Windows NT and Windows XP are trademarks of Microsoft. We acknowledge that the trademarks or service names of all other organizations mentioned
More informationPowerPoint 프레젠테이션
Development Environment 2 Jo, Heeseung make make Definition make is utility to maintain groups of programs Object If some file is modified, make detects it and update files related with modified one It
More informationMicrosoft Word - Heap_Spray.doc
Heap Spray 본문서는 최근 웹 브라우저를 이용한 공격에 사용되는 Heap Spray 기법에 대한 내용을 수록하였다. 관련 내용에 대하여 많은 도움이 되기 바란다. 문서 내용은 초보자도 쉽게 이해할 수 있도록 관련 내용에 대한 설명을 포함하였다. Hacking Group OVERTIME force< forceteam01@gmail.com > 2007.05.13
More informationPowerPoint 프레젠테이션
SECUINSIDE 2017 Bypassing Web Browser Security Policies DongHyun Kim (hackpupu) Security Researcher at i2sec Korea University Graduate School Agenda - Me? - Abstract - What is HTTP Secure Header? - What
More informationMicrosoft PowerPoint - a5a.ppt [호환 모드]
5 장프로시저 (1) 책의라이브러리사용 5 장전반부 : 책의링크라이브러리 외부링크라이브러리개요 라이브러리프로시저호출 라이브러리링크 라이브러리프로시저 예제 연세대학교컴퓨터정보통신어셈블리언어 2 저자제공링크라이브러리 라이브러리파일 어셈블된프로시저를포함하고있는 OBJ 파일들을모아놓은파일 ( 확장자.LIB) 각 OBJ file 에는하나이상의 procedure 가들어있음
More information<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D313939392D382E687770>
i ii iii iv v vi 1 2 3 4 가상대학 시스템의 국내외 현황 조사 가상대학 플랫폼 개발 이상적인 가상대학시스템의 미래상 제안 5 웹-기반 가상대학 시스템 전통적인 교수 방법 시간/공간 제약을 극복한 학습동기 부여 교수의 일방적인 내용전달 교수와 학생간의 상호작용 동료 학생들 간의 상호작용 가상대학 운영 공지사항,강의록 자료실, 메모 질의응답,
More informationPowerPoint 프레젠테이션
7-Segment Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 의 M3 Module 에는 6 자리를가지는 7-Segment 모듈이아래그림처럼실장 6 Digit 7-Segment 2 6-Digit 7-Segment LED controller 16비트로구성된 2개의레지스터에의해제어 SEG_Sel_Reg(Segment
More informationA Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning
C Programming Practice (II) Contents 배열 문자와문자열 구조체 포인터와메모리관리 구조체 2/17 배열 (Array) (1/2) 배열 동일한자료형을가지고있으며같은이름으로참조되는변수들의집합 배열의크기는반드시상수이어야한다. type var_name[size]; 예 ) int myarray[5] 배열의원소는원소의번호를 0 부터시작하는색인을사용
More informationPowerPoint 프레젠테이션
7-Segment Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 의 M3 Module 에는 6 자리를가지는 7-Segment 모듈이아래그림처럼실장 6 Digit 7-Segment 2 6-Digit 7-Segment LED Controller 16비트로구성된 2개의레지스터에의해제어 SEG_Sel_Reg(Segment
More informationThe_IDA_Pro_Book
The IDA Pro Book Hacking Group OVERTIME force (forceteam01@gmail.com) GETTING STARTED WITH IDA IDA New : Go : IDA Previous : IDA File File -> Open Processor type : Loading Segment and Loading Offset x86
More informationPowerPoint 프레젠테이션
7-SEGMENT DEVICE CONTROL - DEVICE DRIVER Jo, Heeseung 디바이스드라이버구현 : 7-SEGMENT HBE-SM5-S4210 의 M3 Module 에는 6 자리를가지는 7-Segment 모듈이아래그림처럼실장 6 Digit 7-Segment 2 디바이스드라이버구현 : 7-SEGMENT 6-Digit 7-Segment LED
More information<B1E2BCFAB9AEBCAD5FB9DABAB4B1D45F F F64746F72732E687770>
기술문서 09. 11. 3. 작성 Format String Bug 에서 dtors 우회 작성자 : 영남대학교 @Xpert 박병규 preex@ynu.ac.kr 1. 요약... 2 2. d to r 이란... 3 3. 포맷스트링... 4 4. ro o t 권한획득... 7 5. 참고자료... 1 0-1 - 1. 요약 포맷스트링버그 (Format String bug)
More informationJVM 메모리구조
조명이정도면괜찮조! 주제 JVM 메모리구조 설미라자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조장. 최지성자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조원 이용열자료조사, 자료작성, PPT 작성, 보고서작성. 이윤경 자료조사, 자료작성, PPT작성, 보고서작성. 이수은 자료조사, 자료작성, PPT작성, 보고서작성. 발표일 2013. 05.
More informationPowerPoint 프레젠테이션
KeyPad Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 에는 16 개의 Tack Switch 를사용하여 4 행 4 열의 Keypad 가장착 4x4 Keypad 2 KeyPad 를제어하기위하여 FPGA 내부에 KeyPad controller 가구현 KeyPad controller 16bit 로구성된
More informationPowerPoint 프레젠테이션
DEVELOPMENT ENVIRONMENT 2 MAKE Jo, Heeseung MAKE Definition make is utility to maintain groups of programs Object If some file is modified, make detects it and update files related with modified one 2
More information리눅스 취약점대응방안권고 / KISA 취약점점검팀 영향받는플랫폼 OS, FAQ 추가 개요 미국보안회사 에의해 시스템의 라이브러리 의특정함수에서임의코드를실행할수있는취약점이공개 해당취약점은 CVE 지정, 도메인네임을
리눅스 취약점대응방안권고 15. 01. 29 / KISA 취약점점검팀 15. 01. 30 영향받는플랫폼 OS, FAQ 추가 개요 미국보안회사 에의해 시스템의 라이브러리 의특정함수에서임의코드를실행할수있는취약점이공개 해당취약점은 CVE-2015-0235 지정, 도메인네임을 IP로변환하는기능이포함된서비스 ( 메일, 웹등 ) 들은해당취약점에영향을받을수있음 취약점상세분석
More informationPCServerMgmt7
Web Windows NT/2000 Server DP&NM Lab 1 Contents 2 Windows NT Service Provider Management Application Web UI 3 . PC,, Client/Server Network 4 (1),,, PC Mainframe PC Backbone Server TCP/IP DCS PLC Network
More information02 C h a p t e r Java
02 C h a p t e r Java Bioinformatics in J a va,, 2 1,,,, C++, Python, (Java),,, (http://wwwbiojavaorg),, 13, 3D GUI,,, (Java programming language) (Sun Microsystems) 1995 1990 (green project) TV 22 CHAPTER
More informationPowerPoint Presentation
FORENSICINSIGHT SEMINAR SQLite Recovery zurum herosdfrc@google.co.kr Contents 1. SQLite! 2. SQLite 구조 3. 레코드의삭제 4. 삭제된영역추적 5. 레코드복원기법 forensicinsight.org Page 2 / 22 SQLite! - What is.. - and why? forensicinsight.org
More information<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>
뻔뻔한 AVR 프로그래밍 The Last(8 th ) Lecture 유명환 ( yoo@netplug.co.kr) INDEX 1 I 2 C 통신이야기 2 ATmega128 TWI(I 2 C) 구조분석 4 ATmega128 TWI(I 2 C) 실습 : AT24C16 1 I 2 C 통신이야기 I 2 C Inter IC Bus 어떤 IC들간에도공통적으로통할수있는 ex)
More informationMicrosoft PowerPoint - IOControl [호환 모드]
목차 Input/Output Control I/O Control Mechanism mmap function munmap function RAM Area Access LED Control 4 digits 7 Segment Control Text LCD Control 1 2 I/O Control Mechanism (1) I/O Control Mechanism (2)
More information2015 CodeGate 풀이보고서 김성우 1. systemshock strcat(cmd, argv[1]); 에서스택버퍼오버플로우가발생합니다
2015 CodeGate 풀이보고서 김성우 rkwk0112@gmail.com http://cd80.tistory.com 1. systemshock strcat(cmd, argv[1]); 에서스택버퍼오버플로우가발생합니다 argv[1] 의주소는스택에있으므로 cmd부터버퍼를오버플로우시켜 argv[1] 이저장된주소까지접근이가능하면 strlen(argv[1]); 시
More information제목 레이아웃
웹해킹이라고무시하는것들보소 2017.07.10 RUBIYA805[AT]GMAIL[DOT]COM SQL Injection 끝나지않은위협 2017.07.10 RUBIYA805[AT]GMAIL[DOT]COM Who am I 정도원 aka rubiya Penetration tester Web application bughuter Pwned 20+ wargame @kr_rubiya
More informationBMP 파일 처리
BMP 파일처리 김성영교수 금오공과대학교 컴퓨터공학과 학습내용 영상반전프로그램제작 2 Inverting images out = 255 - in 3 /* 이프로그램은 8bit gray-scale 영상을입력으로사용하여반전한후동일포맷의영상으로저장한다. */ #include #include #define WIDTHBYTES(bytes)
More information11장 포인터
Dynamic Memory and Linked List 1 동적할당메모리의개념 프로그램이메모리를할당받는방법 정적 (static) 동적 (dynamic) 정적메모리할당 프로그램이시작되기전에미리정해진크기의메모리를할당받는것 메모리의크기는프로그램이시작하기전에결정 int i, j; int buffer[80]; char name[] = data structure"; 처음에결정된크기보다더큰입력이들어온다면처리하지못함
More informationMicrosoft PowerPoint - chap02-C프로그램시작하기.pptx
#include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의
More information익스플로잇실습 / 튜토리얼 Easy RM to MP3 Converter ROP [ Direct RET VirtualProtect() 함수사용 ] By WraithOfGhost
익스플로잇실습 / 튜토리얼 Easy RM to MP3 Converter 2.7.3 ROP [ Direct RET VirtualProtect() 함수사용 ] By WraithOfGhost Easy RM to MP3 Converter_v2.7.3을이용하여 ROP 공격에대하여알아볼것이다. 익스플로잇을위해구성된환경은아래와같다. - Windows XP Professional
More information버퍼오버플로우-왕기초편 10. 메모리를 Hex dump 뜨기 앞서우리는버퍼오버플로우로인해리턴어드레스 (return address) 가변조될수있음을알았습니다. 이제곧리턴어드레스를원하는값으로변경하는실습을해볼것인데요, 그전에앞서, 메모리에저장된값들을살펴보는방법에대해배워보겠습
앞서우리는버퍼오버플로우로인해리턴어드레스 (return address) 가변조될수있음을알았습니다. 이제곧리턴어드레스를원하는값으로변경하는실습을해볼것인데요, 그전에앞서, 메모리에저장된값들을살펴보는방법에대해배워보겠습니다. 여러분모두 Windows 에서 hex editor(hex dump, hex viewer) 라는것을사용해보셨을겁니다. 바로바이너리파일을 16 진수
More informationC# Programming Guide - Types
C# Programming Guide - Types 최도경 lifeisforu@wemade.com 이문서는 MSDN 의 Types 를요약하고보충한것입니다. http://msdn.microsoft.com/enus/library/ms173104(v=vs.100).aspx Types, Variables, and Values C# 은 type 에민감한언어이다. 모든
More information0x00 Contents 0x About Nickster 0x Analaysis 0x Exploit
Defcon CTF 17 th Nickster Report StolenByte(Son Choong-Ho) http://stolenbyte.egloos.com thscndgh_4@hotmail.com WOWHACKER 2009. 08. 09 0x00 Contents 0x01 ------------- About Nickster 0x02 -------------
More information본문서는 Syngress 의 Writing Security Tools and Exploits Chap11 을요약정리한 것입니다. 참고로 Chap 10 ~ 12 까지가 Metasploit 에대한설명입니다. Metasploit Framework 활용법 1. Metasplo
본문서는 Syngress 의 Writing Security Tools and Exploits Chap11 을요약정리한 것입니다. 참고로 Chap 10 ~ 12 까지가 Metasploit 에대한설명입니다. Metasploit Framework 활용법 1. Metasploit Framework(MSF) 이란? bluearth in N@R 2003년오픈소스로발표된취약점발견및공격을위한
More information취약점분석보고서 = MS =
취약점분석보고서 = MS12-037 = 2012-08-09 목 차 1. 개요... 1 1.1. 취약점분석추진배경... 1 1.2. MS12-037 취약점요약... 1 1.3. MS12-037 취약점개요... 1 1.4. MS12-037 대상시스템목록... 1 2. 분석... 2 2.1. 공격기법및기본개념... 2 2.1.1 DOM(Document Object
More informationuntitled
Embedded System Lab. II Embedded System Lab. II 2 RTOS Hard Real-Time vs Soft Real-Time RTOS Real-Time, Real-Time RTOS General purpose system OS H/W RTOS H/W task Hard Real-Time Real-Time System, Hard
More information취약점분석보고서 [Photodex ProShow Producer v ] RedAlert Team 안상환
취약점분석보고서 [Photodex ProShow Producer v5.0.3256] 2012-07-24 RedAlert Team 안상환 목 차 1. 개요... 1 1.1. 취약점분석추진배경... 1 2. Photodex ProShow Producer Buffer Overflow 취약점분석... 2 2.1. Photodex ProShow Producer Buffer
More informationTable Of Contents 1/7 0. Introduction 0-1. Introduction 0-1. Testing Environment 1. Software Vulnerabilty Review 1-1. Buffer OverFlow 1-2. Format Stri
Windows System Hacking Technique Author E-Mail Blog Community Company : 조현석 (evernick) : 김언체 (ruina) : evernick@naver.com : ruina_s@naver.com : http://ruinick.tistory.com : http://cafe.naver.com/rekcah
More informationMicrosoft PowerPoint APUE(Intro).ppt
컴퓨터특강 () [Ch. 1 & Ch. 2] 2006 년봄학기 문양세강원대학교컴퓨터과학과 APUE 강의목적 UNIX 시스템프로그래밍 file, process, signal, network programming UNIX 시스템의체계적이해 시스템프로그래밍능력향상 Page 2 1 APUE 강의동기 UNIX 는인기있는운영체제 서버시스템 ( 웹서버, 데이터베이스서버
More informationuntitled
시스템소프트웨어 : 운영체제, 컴파일러, 어셈블러, 링커, 로더, 프로그래밍도구등 소프트웨어 응용소프트웨어 : 워드프로세서, 스프레드쉬트, 그래픽프로그램, 미디어재생기등 1 n ( x + x +... + ) 1 2 x n 00001111 10111111 01000101 11111000 00001111 10111111 01001101 11111000
More informationDocsPin_Korean.pages
Unity Localize Script Service, Page 1 Unity Localize Script Service Introduction Application Game. Unity. Google Drive Unity.. Application Game. -? ( ) -? -?.. 준비사항 Google Drive. Google Drive.,.. - Google
More informationMicrosoft PowerPoint - chap01-C언어개요.pptx
#include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 프로그래밍의 기본 개념을
More informationMicrosoft Word - readme.doc
========================================================= 제 1 회광주과기원정보통신공학과 SW 경진대회 (Hacking 경진대회 ) 대회시작 : 2002 년 8 월 8 일 ( 목 ) 오후 9:00 ( 한국시간, GMT+9:00) 대회종료 : 2002 년 8 월 10 일 ( 토 ) 오후 9:00 ( 한국시간, GMT+9:00)
More informationDE1-SoC Board
실습 1 개발환경 DE1-SoC Board Design Tools - Installation Download & Install Quartus Prime Lite Edition http://www.altera.com/ Quartus Prime (includes Nios II EDS) Nios II Embedded Design Suite (EDS) is automatically
More informationC++ Programming
C++ Programming 예외처리 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 예외처리 2 예외처리 예외처리 C++ 의예외처리 예외클래스와객체 3 예외처리 예외를처리하지않는프로그램 int main() int a, b; cout > a >> b; cout
More informationRTL
All about RTL ( Return To Library ) By Wr4ith [ 목차 ] 1. 개요 2. 등장배경 3. 실습 1. 개요 기존의시스템해킹기법중일부인 BoF/FSB 등은대부분직접만든쉘코드를이용 하여 root 권한을취득하는것이일반적이였다. 하지만 RTL 기법은쉘코드가필요 없는기법이다. RTL 의핵심은함수에필로그과정에서 RET 영역에 libc
More informationMicrosoft PowerPoint - 00_(C_Programming)_(Korean)_Computer_Systems
C Programming 컴퓨터시스템 (Computer Systems) Seo, Doo-Ok Clickseo.com clickseo@gmail.com 목 차 컴퓨터시스템 프로그래밍언어 2 컴퓨터시스템 컴퓨터시스템 컴퓨터하드웨어 컴퓨터소프트웨어 프로그래밍언어 3 컴퓨터시스템 컴퓨터시스템 하드웨어 : 물리적인장비 소프트웨어 : 프로그램 ( 명령어 ) 들의집합 Computer
More informationBlack Hole Exploit Kit PDF Exploit $selectedexploit =? 3 or 4 /games/pdf.php /games/pdf2.php CVE , CVE , CVE , CVE
Black Hole Exploit Kit 1.0.2 PDF Exploit Analysis SOFTFORUM Security Analysis Team 1 Black Hole Exploit Kit PDF Exploit $selectedexploit =? 3 or 4 /games/pdf.php /games/pdf2.php CVE-2007-5659, CVE-2008-2992,
More information취약점분석보고서 Simple Web Server 2.2 rc2 Remote Buffer Overflow Exploit RedAlert Team 안상환
취약점분석보고서 Simple Web Server 2.2 rc2 Remote Buffer Overflow Exploit 2012-07-19 RedAlert Team 안상환 목 차 1. 개요... 1 1.1. 취약점분석추진배경... 1 2. Simple Web Server 취약점... 2 2.1. Simple Web Server 취약점개요... 2 2.2. Simple
More informationMicrosoft PowerPoint - a6.ppt [호환 모드]
이장의내용 6 장조건부처리 부울과비교명령어 조건부점프 조건부루프명령어 조건부구조 컴퓨터정보통신 어셈블리언어 2 6.2 부울과비교명령어 부울명령어 Instructions ti 동작 AND dst, src OR dst, src XOR dst, src NOT dst dst dst AND src dst dst OR src dst dst XOR src dst NOT
More informationMicrosoft Word - MSOffice_WPS_analysis.doc
MS Office.WPS File Stack Overflow Exploit 분석 (http://milw0rm.com/ 에공개된 exploit 분석 ) 2008.03.03 v0.5 By Kancho ( kancholove@gmail.com, www.securityproof.net ) milw0rm.com에 2008년 2월 13일에공개된 Microsoft Office.WPS
More information이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2
제 17 장동적메모리와연결리스트 유준범 (JUNBEOM YOO) Ver. 2.0 jbyoo@konkuk.ac.kr http://dslab.konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다.
More informationchap7.key
1 7 C 2 7.1 C (System Calls) Unix UNIX man Section 2 C. C (Library Functions) C 1975 Dennis Ritchie ANSI C Standard Library 3 (system call). 4 C?... 5 C (text file), C. (binary file). 6 C 1. : fopen( )
More informationSena Technologies, Inc. HelloDevice Super 1.1.0
HelloDevice Super 110 Copyright 1998-2005, All rights reserved HelloDevice 210 ()137-130 Tel: (02) 573-5422 Fax: (02) 573-7710 E-Mail: support@senacom Website: http://wwwsenacom Revision history Revision
More informationbn2019_2
arp -a Packet Logging/Editing Decode Buffer Capture Driver Logging: permanent storage of packets for offline analysis Decode: packets must be decoded to human readable form. Buffer: packets must temporarily
More informationAdobe Flash 취약점 분석 (CVE-2012-0754)
기술문서 14. 08. 13. 작성 GNU C library dynamic linker $ORIGIN expansion Vulnerability Author : E-Mail : 윤지환 131ackcon@gmail.com Abstract 2010 년 Tavis Ormandy 에 의해 발견된 취약점으로써 정확한 명칭은 GNU C library dynamic linker
More informationTTA Journal No.157_서체변경.indd
표준 시험인증 기술 동향 FIDO(Fast IDentity Online) 생체 인증 기술 표준화 동향 이동기 TTA 모바일응용서비스 프로젝트그룹(PG910) 의장 SK텔레콤 NIC 담당 매니저 76 l 2015 01/02 PASSWORDLESS EXPERIENCE (UAF standards) ONLINE AUTH REQUEST LOCAL DEVICE AUTH
More information