SlideShare a Scribd company logo
1 of 15
Download to read offline
실행 파일 대상 Sanitizer 작성
프레임워크 연구
단국대학교 Aegis
심재우
tlawodn94@naver.com
Category
• 서론
• 기존 방어기법 조사
• 실행 파일 대상 Sanitizer 프레임워크
• 결론
서론
• 보안 취약점(Security Vulnerability)
– Zero-Day
– Hacking Team; RCS
• 기존 대응책
– 보안 패치
– 패치 관리 시스템(PMS)
– 침입 차단 시스템(IPS)
– 강제 접근 제어(MAC)
• 보호 대상 SW에 맞는 제로데이 대응책 필요!
서론
• Sanitizer
– (손) 세정제
– 오염된(tainted) 사용자 입력을
– 세정(sanitize) 및 검사해서
– 문제가 있으면 적절히 대응
– ex: strcpy() 전에 buffer overflow가 발생할 수 있는지 크기 체크
– AddressSanitizer(ASan): Memory corruption detector
– ThreadSanitizer: Mutual exclusion error detector
– MemorySanitizer: uninitialized memory read detector
서론
• 실행 파일 대상 Sanitizer 작성 프레임워크 연구
– 실행 파일을 입력으로 받아 실행 파일에 맞는 Sanitizer를 작성하는
Framework 연구
– ARMv7 Linux, ELF, System-level exploit
• 목적
– 취약점 공격 기법 / 공격자들의 취약점 공격 방식 조사
– 기존의 방어 기법 조사
– ARM 기반 ELF 실행 파일 대상 Sanitizer 프레임워크 구현 및 검증
기존 방어기법 조사
• 취약점 공격 기법
– Buffer overflow; Return to Libc, Return Oriented Programming
– Format String bug
– Use after free
– Path injection
• 시스템 메모리 보호 기법
– NX (Not eXecutable)
– ASLR (Address Space Location Randomization)
– PIE (Position Independent Executable)
– RELRO (RELocation Read Only)
– RUNPATH / RPATH
기존 방어기법 조사
• 시스템 분석 기법 조사
– 정적 분석
– 동적 분석: ptrace, strace, ltrace
기존 방어기법 조사
• 사용자 정의 메모리 보호 기법
– AddressSanitizer
• clang/LLVM 이용 컴파일 시 Stub 코드를 삽입 (소스 코드 필요)
• Redzone 기법: 보호 대상 메모리 근처에 Red zone을 설정
• Shadow bit: 메모리 사용 방식에 따라 전체 메모리 영역을 추적
8byte 추적을 위해 1byte 사용  기본 12.5% 메모리 오버헤드
– BugSanitizer: 개발자 관점에서 버그 탐지. 안정적 SW 운영이 목표
– MemorySanitizer: C/C++ 초기화되지 않은 메모리 사용 탐지
– ThreadSanitizer: 프로세스/스레드 간 데이터 경쟁 선점을 탐지
실행 파일 대상 Sanitizer 프레임워크
• Input: ARMv7 dynamically linked Linux ELF
• Process: 정적 분석 – 정책 관리자 – 동적 분석
• Output: Sanitizer (libsan.so)
– LD_PRELOAD
실행 파일 대상 Sanitizer 프레임워크
• 정적 분석
– 실행 파일 대상 입력 정의
버퍼 입력이 발생하는 32개 system call
open, execve 등 자주 사용하는 system call
환경 변수(envp), 매개변수(argv)
– glibc 내 취약한 입력 함수 목록 탐지
gets, scanf, strcpy, strcat, …
– checksec.sh를 통한 보호 기능 점검
실행 파일 대상 Sanitizer 프레임워크
• 동적 분석
– Format String Bug 탐지 및 무력화(% -> $)
– PLT breakpoint로 안전하지 않은 라이브러리 함수 호출 탐지
– ptrace를 통한 악의적인 시스템 콜 호출 탐지
• NoExec: execve() system call 방지
실행 파일 대상 Sanitizer 프레임워크
• 동적 분석
– mmap 동적 분석으로 NX(Not eXecutable) 메모리 보호 유지
– ROP payload 탐지
실행 파일 대상 Sanitizer 프레임워크
• 동적 분석
– Redzone을 통한 Heap buffer overflow 방지
• dlmalloc: Doug Lea's memory allocator
• Memory chunk는 heap BOF의 주 공격 대상
• Red zone 설정
– Head redzone/Tail redzone 을 통해
chunk header 변조 방지
– Random data
– malloc() 대신 sanitizer_malloc()로 설정
– free() 호출 시 변조 여부 검증
– Use-After-Free 방어
• malloc(), free() 할당 및 해제 알고리즘 변경
시연 영상
실행 파일 대상 SANITIZER 작성
프레임워크 연구
단국대학교 Aegis

More Related Content

What's hot

[Hello world 오픈세미나]n grinder helloworld발표자료_저작권free
[Hello world 오픈세미나]n grinder helloworld발표자료_저작권free[Hello world 오픈세미나]n grinder helloworld발표자료_저작권free
[Hello world 오픈세미나]n grinder helloworld발표자료_저작권free
NAVER D2
 
Api design for c++ 6장
Api design for c++ 6장Api design for c++ 6장
Api design for c++ 6장
Ji Hun Kim
 
병렬 프로그래밍 패러다임
병렬 프로그래밍 패러다임병렬 프로그래밍 패러다임
병렬 프로그래밍 패러다임
codenavy
 

What's hot (17)

C++ Advanced 강의 소개
C++ Advanced 강의 소개C++ Advanced 강의 소개
C++ Advanced 강의 소개
 
Windows reversing study_basic_2
Windows reversing study_basic_2Windows reversing study_basic_2
Windows reversing study_basic_2
 
Advanced nGrinder
Advanced nGrinderAdvanced nGrinder
Advanced nGrinder
 
pyOpenCL 입문
pyOpenCL 입문pyOpenCL 입문
pyOpenCL 입문
 
Java 기초
Java 기초Java 기초
Java 기초
 
Java the good parts
Java the good partsJava the good parts
Java the good parts
 
Windows reversing study_basic_6
Windows reversing study_basic_6Windows reversing study_basic_6
Windows reversing study_basic_6
 
Advanced nGrinder 2nd Edition
Advanced nGrinder 2nd EditionAdvanced nGrinder 2nd Edition
Advanced nGrinder 2nd Edition
 
Windows reversing study_basic_8
Windows reversing study_basic_8Windows reversing study_basic_8
Windows reversing study_basic_8
 
Tcp ip & io model
Tcp ip & io modelTcp ip & io model
Tcp ip & io model
 
제 5회 D2 CAMPUS SEMINAR - Swift로 만든 serverframework 개발기
제 5회 D2 CAMPUS SEMINAR - Swift로 만든 serverframework 개발기제 5회 D2 CAMPUS SEMINAR - Swift로 만든 serverframework 개발기
제 5회 D2 CAMPUS SEMINAR - Swift로 만든 serverframework 개발기
 
[Hello world 오픈세미나]n grinder helloworld발표자료_저작권free
[Hello world 오픈세미나]n grinder helloworld발표자료_저작권free[Hello world 오픈세미나]n grinder helloworld발표자료_저작권free
[Hello world 오픈세미나]n grinder helloworld발표자료_저작권free
 
Api design for c++ 6장
Api design for c++ 6장Api design for c++ 6장
Api design for c++ 6장
 
System+os study 4
System+os study 4System+os study 4
System+os study 4
 
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
 
클린코드 9, 10장
클린코드 9, 10장클린코드 9, 10장
클린코드 9, 10장
 
병렬 프로그래밍 패러다임
병렬 프로그래밍 패러다임병렬 프로그래밍 패러다임
병렬 프로그래밍 패러다임
 

Viewers also liked

내가 대학원에 들어왔을 때 알았더라면 좋았을 연구 노하우
내가 대학원에 들어왔을 때 알았더라면 좋았을 연구 노하우 내가 대학원에 들어왔을 때 알았더라면 좋았을 연구 노하우
내가 대학원에 들어왔을 때 알았더라면 좋았을 연구 노하우
Yoon Sup Choi
 

Viewers also liked (6)

내가 대학원에 들어왔을 때 알았더라면 좋았을 연구 노하우 (개정증보판) (UST 대학원 신입생 OT 강연)
내가 대학원에 들어왔을 때 알았더라면 좋았을 연구 노하우 (개정증보판) (UST 대학원 신입생 OT 강연)내가 대학원에 들어왔을 때 알았더라면 좋았을 연구 노하우 (개정증보판) (UST 대학원 신입생 OT 강연)
내가 대학원에 들어왔을 때 알았더라면 좋았을 연구 노하우 (개정증보판) (UST 대학원 신입생 OT 강연)
 
Where is LLVM Being Used Today?
Where is LLVM Being Used Today? Where is LLVM Being Used Today?
Where is LLVM Being Used Today?
 
Thesis - LLVM toolchain support as a plug-in for Eclipse CDT
Thesis - LLVM toolchain support as a plug-in for Eclipse CDTThesis - LLVM toolchain support as a plug-in for Eclipse CDT
Thesis - LLVM toolchain support as a plug-in for Eclipse CDT
 
차세대컴파일러, VM의미래: 애플 오픈소스 LLVM
차세대컴파일러, VM의미래: 애플 오픈소스 LLVM차세대컴파일러, VM의미래: 애플 오픈소스 LLVM
차세대컴파일러, VM의미래: 애플 오픈소스 LLVM
 
내가 대학원에 들어왔을 때 알았더라면 좋았을 연구 노하우
내가 대학원에 들어왔을 때 알았더라면 좋았을 연구 노하우 내가 대학원에 들어왔을 때 알았더라면 좋았을 연구 노하우
내가 대학원에 들어왔을 때 알았더라면 좋았을 연구 노하우
 
파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)
 

Similar to 실행 파일 대상 Sanitizer 작성 프레임워크 연구

백신 프로그램의 원리와 동작 차민석 20151117_security plus 발표판
백신 프로그램의 원리와 동작 차민석 20151117_security plus 발표판백신 프로그램의 원리와 동작 차민석 20151117_security plus 발표판
백신 프로그램의 원리와 동작 차민석 20151117_security plus 발표판
Minseok(Jacky) Cha
 

Similar to 실행 파일 대상 Sanitizer 작성 프레임워크 연구 (20)

[2014 CodeEngn Conference 10] 심준보 - 급전이 필요합니다
[2014 CodeEngn Conference 10] 심준보 -  급전이 필요합니다[2014 CodeEngn Conference 10] 심준보 -  급전이 필요합니다
[2014 CodeEngn Conference 10] 심준보 - 급전이 필요합니다
 
보안 위협과 악성코드 분석 기법
보안 위협과 악성코드 분석 기법보안 위협과 악성코드 분석 기법
보안 위협과 악성코드 분석 기법
 
2. 악성코드 동적 분석 방법론
2. 악성코드 동적 분석 방법론2. 악성코드 동적 분석 방법론
2. 악성코드 동적 분석 방법론
 
(Fios#03) 1. 실전 윈도 악성코드 메모리 분석
(Fios#03) 1. 실전 윈도 악성코드 메모리 분석(Fios#03) 1. 실전 윈도 악성코드 메모리 분석
(Fios#03) 1. 실전 윈도 악성코드 메모리 분석
 
5. system level reversing
5. system level reversing5. system level reversing
5. system level reversing
 
Security Intelligence by log analysis, A3-SMS 2012
Security Intelligence by log analysis, A3-SMS 2012Security Intelligence by log analysis, A3-SMS 2012
Security Intelligence by log analysis, A3-SMS 2012
 
3.ahn report를 이용한 악성코드 대응
3.ahn report를 이용한 악성코드 대응3.ahn report를 이용한 악성코드 대응
3.ahn report를 이용한 악성코드 대응
 
백신 프로그램의 원리와 동작 차민석 20151117_security plus 발표판
백신 프로그램의 원리와 동작 차민석 20151117_security plus 발표판백신 프로그램의 원리와 동작 차민석 20151117_security plus 발표판
백신 프로그램의 원리와 동작 차민석 20151117_security plus 발표판
 
2. 악성코드 분석 방법론과 기법
2. 악성코드 분석 방법론과 기법2. 악성코드 분석 방법론과 기법
2. 악성코드 분석 방법론과 기법
 
(FICON2015) #3 어떻게 들어왔는가?
(FICON2015) #3 어떻게 들어왔는가?(FICON2015) #3 어떻게 들어왔는가?
(FICON2015) #3 어떻게 들어왔는가?
 
(Ficon2015) #3 어떻게 들어왔는가
(Ficon2015) #3 어떻게 들어왔는가(Ficon2015) #3 어떻게 들어왔는가
(Ficon2015) #3 어떻게 들어왔는가
 
App check pro_표준제안서_z
App check pro_표준제안서_zApp check pro_표준제안서_z
App check pro_표준제안서_z
 
실무로 배우는 시스템 성능 최적화 Ch8
실무로 배우는 시스템 성능 최적화 Ch8실무로 배우는 시스템 성능 최적화 Ch8
실무로 배우는 시스템 성능 최적화 Ch8
 
보안 위협 형태와 악성코드 분석 기법
보안 위협 형태와 악성코드 분석 기법보안 위협 형태와 악성코드 분석 기법
보안 위협 형태와 악성코드 분석 기법
 
[2010 네이트 앱스토어 개발자 세미나] 앱스 제작 사례 (2) 소셜게임 서버 구성 전략
[2010 네이트 앱스토어 개발자 세미나] 앱스 제작 사례 (2) 소셜게임 서버 구성 전략[2010 네이트 앱스토어 개발자 세미나] 앱스 제작 사례 (2) 소셜게임 서버 구성 전략
[2010 네이트 앱스토어 개발자 세미나] 앱스 제작 사례 (2) 소셜게임 서버 구성 전략
 
20171212 [ai times] 'ai' 인공지능-ai security 개발을 위한 시도 - 1 (nlp 모델 테스트 2.2.11)...
20171212 [ai times] 'ai'   인공지능-ai security 개발을 위한 시도 - 1 (nlp 모델 테스트 2.2.11)...20171212 [ai times] 'ai'   인공지능-ai security 개발을 위한 시도 - 1 (nlp 모델 테스트 2.2.11)...
20171212 [ai times] 'ai' 인공지능-ai security 개발을 위한 시도 - 1 (nlp 모델 테스트 2.2.11)...
 
(140407) #fitalk d trace를 이용한 악성코드 동적 분석
(140407) #fitalk   d trace를 이용한 악성코드 동적 분석(140407) #fitalk   d trace를 이용한 악성코드 동적 분석
(140407) #fitalk d trace를 이용한 악성코드 동적 분석
 
IBM 보안솔루션 앱스캔_AppScan Standard 소개
IBM 보안솔루션 앱스캔_AppScan Standard 소개IBM 보안솔루션 앱스캔_AppScan Standard 소개
IBM 보안솔루션 앱스캔_AppScan Standard 소개
 
포티파이 안전한 애플리케이션 구축 및 운영방안
포티파이 안전한 애플리케이션 구축 및 운영방안포티파이 안전한 애플리케이션 구축 및 운영방안
포티파이 안전한 애플리케이션 구축 및 운영방안
 
20170908 tech day-9th-재미없는 java runtime process 디버그-김성중
20170908 tech day-9th-재미없는 java runtime process 디버그-김성중20170908 tech day-9th-재미없는 java runtime process 디버그-김성중
20170908 tech day-9th-재미없는 java runtime process 디버그-김성중
 

실행 파일 대상 Sanitizer 작성 프레임워크 연구

  • 1. 실행 파일 대상 Sanitizer 작성 프레임워크 연구 단국대학교 Aegis 심재우 tlawodn94@naver.com
  • 2. Category • 서론 • 기존 방어기법 조사 • 실행 파일 대상 Sanitizer 프레임워크 • 결론
  • 3. 서론 • 보안 취약점(Security Vulnerability) – Zero-Day – Hacking Team; RCS • 기존 대응책 – 보안 패치 – 패치 관리 시스템(PMS) – 침입 차단 시스템(IPS) – 강제 접근 제어(MAC) • 보호 대상 SW에 맞는 제로데이 대응책 필요!
  • 4. 서론 • Sanitizer – (손) 세정제 – 오염된(tainted) 사용자 입력을 – 세정(sanitize) 및 검사해서 – 문제가 있으면 적절히 대응 – ex: strcpy() 전에 buffer overflow가 발생할 수 있는지 크기 체크 – AddressSanitizer(ASan): Memory corruption detector – ThreadSanitizer: Mutual exclusion error detector – MemorySanitizer: uninitialized memory read detector
  • 5. 서론 • 실행 파일 대상 Sanitizer 작성 프레임워크 연구 – 실행 파일을 입력으로 받아 실행 파일에 맞는 Sanitizer를 작성하는 Framework 연구 – ARMv7 Linux, ELF, System-level exploit • 목적 – 취약점 공격 기법 / 공격자들의 취약점 공격 방식 조사 – 기존의 방어 기법 조사 – ARM 기반 ELF 실행 파일 대상 Sanitizer 프레임워크 구현 및 검증
  • 6. 기존 방어기법 조사 • 취약점 공격 기법 – Buffer overflow; Return to Libc, Return Oriented Programming – Format String bug – Use after free – Path injection • 시스템 메모리 보호 기법 – NX (Not eXecutable) – ASLR (Address Space Location Randomization) – PIE (Position Independent Executable) – RELRO (RELocation Read Only) – RUNPATH / RPATH
  • 7. 기존 방어기법 조사 • 시스템 분석 기법 조사 – 정적 분석 – 동적 분석: ptrace, strace, ltrace
  • 8. 기존 방어기법 조사 • 사용자 정의 메모리 보호 기법 – AddressSanitizer • clang/LLVM 이용 컴파일 시 Stub 코드를 삽입 (소스 코드 필요) • Redzone 기법: 보호 대상 메모리 근처에 Red zone을 설정 • Shadow bit: 메모리 사용 방식에 따라 전체 메모리 영역을 추적 8byte 추적을 위해 1byte 사용  기본 12.5% 메모리 오버헤드 – BugSanitizer: 개발자 관점에서 버그 탐지. 안정적 SW 운영이 목표 – MemorySanitizer: C/C++ 초기화되지 않은 메모리 사용 탐지 – ThreadSanitizer: 프로세스/스레드 간 데이터 경쟁 선점을 탐지
  • 9. 실행 파일 대상 Sanitizer 프레임워크 • Input: ARMv7 dynamically linked Linux ELF • Process: 정적 분석 – 정책 관리자 – 동적 분석 • Output: Sanitizer (libsan.so) – LD_PRELOAD
  • 10. 실행 파일 대상 Sanitizer 프레임워크 • 정적 분석 – 실행 파일 대상 입력 정의 버퍼 입력이 발생하는 32개 system call open, execve 등 자주 사용하는 system call 환경 변수(envp), 매개변수(argv) – glibc 내 취약한 입력 함수 목록 탐지 gets, scanf, strcpy, strcat, … – checksec.sh를 통한 보호 기능 점검
  • 11. 실행 파일 대상 Sanitizer 프레임워크 • 동적 분석 – Format String Bug 탐지 및 무력화(% -> $) – PLT breakpoint로 안전하지 않은 라이브러리 함수 호출 탐지 – ptrace를 통한 악의적인 시스템 콜 호출 탐지 • NoExec: execve() system call 방지
  • 12. 실행 파일 대상 Sanitizer 프레임워크 • 동적 분석 – mmap 동적 분석으로 NX(Not eXecutable) 메모리 보호 유지 – ROP payload 탐지
  • 13. 실행 파일 대상 Sanitizer 프레임워크 • 동적 분석 – Redzone을 통한 Heap buffer overflow 방지 • dlmalloc: Doug Lea's memory allocator • Memory chunk는 heap BOF의 주 공격 대상 • Red zone 설정 – Head redzone/Tail redzone 을 통해 chunk header 변조 방지 – Random data – malloc() 대신 sanitizer_malloc()로 설정 – free() 호출 시 변조 여부 검증 – Use-After-Free 방어 • malloc(), free() 할당 및 해제 알고리즘 변경
  • 15. 실행 파일 대상 SANITIZER 작성 프레임워크 연구 단국대학교 Aegis