꺄륵><
시스템 해킹을 해볼까요?
꺄르르륵><
꺄륵><
#whoami
조우석
 (OneTwo)
세종대학교
 정보보호학과
 2학년
 
SSG
 (Sejong
 Security
 Group)
 부원
 
Inc0ginto
 운영진
 
차세대보안리더양성프로그램
 BoB
 5기
 교육생
 
blog.asdfasdf.kr
 
원래
 개발했었지만....
 어느순간
 보안
 공부하고
 있네요
OneTwo
꺄륵
• 시스템해킹
• BOF란?
• BOF의 원리
• BOF를 활용해보자
• RTL
• Fake EBP
• 실습해볼까요?
CONTENTS
꺄륵
시스템 해킹
OS 또는 프로그램의 취약점
(관리자 권한 등 획득)
나쁜짓 하는 것!
뭐하는 것들일까...
펭귄 카와이
꺄륵
Stack OverFlow
Heap OverFlow
Integer OverFlow
Type Confusion
Use Afer 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+x31xc0x50x68x2fx2fx73x68x68x2fx62x69x6e
x89xe3x50x53x89xe1x89xc2xb0x0bxcdx80+x90*135+xc8xf8xffxbf'`
꺄륵
BOF의 원리 BOF!!
꺄륵
BOF를 활용해보자
과연 이것만으로 해킹 가능?
물론 가능하기는 합니다.
??!!!
꺄륵
BOF를 활용해보자
보호기법ㅋ
꺄륵
BOF를 활용해보자
특정 메모리 영역을 필터링
DEP / NX
스택, 힙 같은 영역의 코드가 실행되지 않도록 차단
버퍼 초기화, argv검사 등등
그 외, ASLR, Stack Cookie, ASCII-Armor, Canary 등등
꺄륵
BOF를 활용해보자
RTL Fake EBPReturn to Library(Libc)
DEP
특정영역
 필터링
ret까지만
 오버플로우
 가능
꺄륵
RTL
Return to Library(Libc)
DEP
 우회
libc - 스택상에 있는 것이 아님
꺄륵
RTL
Return to Library(Libc)
쉘코드 없이 Exploit 가능
system, exec
ㄱㅇㄷ
꺄륵
RTL
Return to Library(Libc)
system() system
나는 쓰레기에요..ㅠㅠ(4byte)
/bin/sh
ebp+8참조
꺄륵
RTL
Return to Library(Libc)
system() system
나는 쓰레기에요..ㅠㅠ(4byte)
/bin/sh
ebp+8참조
ret 또는 eip
꺄륵
RTL
Return to Library(Libc)
system, /bin/sh
?
꺄륵
RTL
Return to Library(Libc)
gdb coding
꺄륵
RTL
system
ebp
buffer
쓰레기..에요 ㅠ
/bin/sh
ret (4byte)
쓰레기에요 ㅠ.ㅠ (4byte)
bin/sh(4byte)

bof기초+rtl+fake_ebp