Upload
onetwo12
View
195
Download
6
Embed Size (px)
Citation preview
꺄륵><
시스템 해킹을 해볼까요?
꺄르르륵><
꺄륵><
#whoami조우석����������� ������������������ (OneTwo)
세종대학교����������� ������������������ 정보보호학과����������� ������������������ 2학년����������� ������������������
SSG����������� ������������������ (Sejong����������� ������������������ Security����������� ������������������ Group)����������� ������������������ 부원����������� ������������������
Inc0ginto����������� ������������������ 운영진����������� ������������������
차세대보안리더양성프로그램����������� ������������������ BoB����������� ������������������ 5기����������� ������������������ 교육생����������� ������������������
blog.asdfasdf.kr����������� ������������������
원래����������� ������������������ 개발했었지만....����������� ������������������ 어느순간����������� ������������������ 보안����������� ������������������ 공부하고����������� ������������������ 있네요
OneTwo
꺄륵><
• 시스템해킹
• BOF란?
• BOF의 원리
• BOF를 활용해보자
• RTL
• Fake EBP
• 실습해볼까요?
CONTENTS
꺄륵><
시스템 해킹
OS 또는 프로그램의 취약점(관리자 권한 등 획득)
나쁜짓 하는 것!
뭐하는 것들일까...
펭귄 카와이 ><
꺄륵><
Stack O
verFlow
Heap Ov
erFlow
Integer
OverFlo
w
Type Co
nfusion
Use Afe
r Free
Format
String
Bug
…
존나 많죠?ㅋ
시스템 해킹
OS 또는 프로그램의 취약점(관리자 권한 등 획득)
나쁜짓 하는 것!
꺄륵><
시스템 해킹
Buffer Overflow!!
버퍼를 넘치게 하면 됩니다.
참 쉽죠?
(stack)
꺄륵><
BOF란?
Buffer?
데이터를 일시적으로메모리 상에 저장하는 임시기억공간
꺄륵><
BOF란?
Buffer?
데이터를 일시적으로메모리 상에 저장하는 임시기억공간
꺄륵><
BOF란?
꺄륵><
BOF란?
A를 1만번이나!!
꺄륵><
BOF란?
꺄륵><
BOF의 원리 프로그램 구동
꺄륵><
BOF의 원리 프로그램 구동
꺄륵><
BOF의 원리 프로그램 구동
스택입니다...
0xffffffff
0x00000000
꺄륵><
BOF의 원리 프로그램 구동
ret
ebp
0x1 0x2
… …
4byte
4byte
8byte
0xffffffff
0x00000000
꺄륵><
BOF의 원리 프로그램 구동
ret
ebp
buf1 buf2
… …
4byte
4byte
8byte
Buffer에 16byte의
값을 넣어주면?
buffer가 사용자로부터 값을 입력 받을 때...
꺄륵><
BOF의 원리 BOF!!
ret
ebp
buf1 buf2
… …
4byte
4byte
8byte A x 16
꺄륵><
BOF의 원리
0x41414141
0x41414141
0x41414141 0x41414141
… …
4byte
4byte
8byte Buffer Overflow!!
BOF!!
꺄륵><
BOF의 원리
0x41414141
0x41414141
0x41414141 0x41414141
… …
4byte
4byte
8byte
특정 영역에 쉘코드 삽입
쉘코드의 주소를 ret에 덮여씌움
Buffer Overflow!!
쉘코드를 수행
Exploit!!
BOF!!
꺄륵><
BOF의 원리 조건!!
SetUID
파일이 실행되는 동안에 잠깐 파일 소유자의 권한을 빌려오고, 작업을 마친후에 다시 권한을 반한
passwd
꺄륵><
BOF의 원리 조건!!
gremlin(상위 상위 레벨 계정)
프로그램 실행시 gremlin 계정 기반으로 프로세스 엑세스 권한 부여
꺄륵><
BOF의 원리 BOF!!
간단한 Buffer Overflow
꺄륵><
BOF의 원리 BOF!!
더미 X
꺄륵><
BOF의 원리 BOF!!
ret
sfp
buffer
… …
4byte
4byte
256byte
260byte의 값
4byte의 return주소
꺄륵><
BOF의 원리 BOF!!
ret
sfp
buffer
… …
4byte
260byte
“x90”*100+”쉘코드”(25)+”x90”*135 buffer의 주소
꺄륵><
BOF의 원리 BOF!!
&buffer
0x90909090
0x90909090 0x90909090 0x90909090 0x90909090
… ShellCode
… 0x90909090 0x90909090 0x90909090 0x90909090
buffer (256)
ebp (4byte)
ret (4byte)
꺄륵><
BOF의 원리 BOF!!
0xbffff8c8
꺄륵><
BOF의 원리 BOF!!
./gremlin `python -c 'print "\x90"*100+"\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80"+"\x90"*135+"\xc8\xf8\xff\xbf"'`
꺄륵><
BOF의 원리 BOF!!
꺄륵><
BOF를 활용해보자
과연 이것만으로 해킹 가능?
물론 가능하기는 합니다.
??!!!
꺄륵><
BOF를 활용해보자
보호기법ㅋ
꺄륵><
BOF를 활용해보자
특정 메모리 영역을 필터링
DEP / NX
스택, 힙 같은 영역의 코드가 실행되지 않도록 차단
버퍼 초기화, argv검사 등등
그 외, ASLR, Stack Cookie, ASCII-Armor, Canary 등등
꺄륵><
BOF를 활용해보자
RTL Fake EBPReturn to Library(Libc)
DEP특정영역����������� ������������������ 필터링
ret까지만����������� ������������������ 오버플로우����������� ������������������ 가능
꺄륵><
RTLReturn to Library(Libc)
DEP����������� ������������������ 우회
libc -> 스택상에 있는 것이 아님
꺄륵><
RTLReturn to Library(Libc)
쉘코드 없이 Exploit 가능
system, exec
ㄱㅇㄷ
꺄륵><
RTLReturn to Library(Libc)
system() &system
나는 쓰레기에요..ㅠㅠ(4byte)
&/bin/sh
ebp+8참조
꺄륵><
RTLReturn to Library(Libc)
system() &system
나는 쓰레기에요..ㅠㅠ(4byte)
&/bin/sh
ebp+8참조
ret 또는 eip
꺄륵><
RTLReturn to Library(Libc)
&system, &/bin/sh
?
꺄륵><
RTLReturn to Library(Libc)
gdb coding
꺄륵><
RTL
&system
ebp
buffer
쓰레기..에요 ㅠ
&/bin/sh
ret (4byte)
쓰레기에요 ㅠ.ㅠ (4byte)
bin/sh(4byte)
꺄륵><
Fake EBP
특정영역����������� ������������������ 필터링
ret까지만����������� ������������������ 오버플로우����������� ������������������ 가능
EBP를 속인다.
ret
ebp
buf1 buf2
… …
What?
꺄륵><
Fake EBP
ret
ebp
buf1 buf2
… …
꺄륵><
Fake EBPleave
move esp, ebppop ebp
pop eip
jmp eip
ret
&leave
$buffer-4
buf1 buf2
buffer-4
꺄륵><
Fake EBP
&leave
$buffer-4
buf1 buf2
buffer-4
leave
move esp, ebppop ebp
&leave
ret
esp 에요><
ebp 에요><
꺄륵><
Fake EBP
&leave
$buffer-4
buf1 buf2
buffer-4
leave
move esp, ebppop ebp
ret
esp 에요>< ebp 에요><
실행!!
&leave
꺄륵><
Fake EBP
&leave
$buffer-4
buf1 buf2
buffer-4
leave
move esp, ebppop ebp
ret
실행!!
&leave
esp 에요><
ebp 에요><
꺄륵><
Fake EBP
&leave
$buffer-4
buf1 buf2
buffer-4
leave
move esp, ebppop ebp
ret
실행!!&leave
esp 에요><
ebp 에요><
꺄륵><
Fake EBP
&leave
$buffer-4
buf1 buf2
buffer-4
leave
move esp, ebppop ebp
retesp 에요>< ebp 에요><
실행!!
pop eip
jmp eip
꺄륵><
Fake EBP
&leave
$buffer-4
buf1 buf2
buffer-4
leave
move esp, ebppop ebp
ret
esp 에요><
실행!!
pop eip
jmp eip
꺄륵><
Fake EBP
&leave
$buffer-4
buf1 buf2
buffer-4
leave
move esp, ebppop ebp
ret
buffer의 내용 수행
실행!!
pop eip
jmp eip
꺄륵><
실습해볼까요?
Fake EBP + RTL
LOB 16Level
꺄륵><
실습해볼까요?
꺄륵><
실습해볼까요?&leave = 0x080484df
꺄륵><
실습해볼까요?&leave = 0x080484df
&system() = 0x40058ae0
꺄륵><
실습해볼까요?&leave = 0x080484df
&system() = 0x40058ae0
&buffer-4 = 0xbffffa5c
꺄륵><
실습해볼까요?&leave = 0x080484df
&system() = 0x40058ae0
&buffer-4 = 0xbffffa5c
&/bin/sh = 0x400fbff9
꺄륵><
실습해볼까요?
&leave = 0x080484df
&system() = 0x40058ae0
&buffer-4 = 0xbffffa5c
&/bin/sh = 0x400fbff9
쓰레기에요...ㅠㅠ
쓰레기에요...ㅠㅠ
4byte
4byte
4byte
28byte
4byte
4byte
꺄륵><
실습해볼까요?
꺄륵><
실습해볼까요?
꺄륵><
실습해볼까요?
0xbffffa2c??
&system() = 0x40058ae0
꺄륵><
실습해볼까요?
꺄륵><
실습해볼까요?
꺄륵><
출처
대학일기 네이버웹툰 짤....
구글에서 퍼온 수많은 짤들
LOB
꺄륵><
끄읕
꺄륵><
QnA
QnA