[2008 codeengn conference 02] graylynx - 정적 링크된 stripped elf 바이너리 상에서의...

31
정적 링크된 ELF 파일에서의 외부 심볼 정보 복구 기법 2 nd CodeEngn Seminar 태 인 규 ([email protected]) www.CodeEngn.com

Upload: gangseok-lee

Post on 16-May-2015

694 views

Category:

Technology


5 download

DESCRIPTION

2008 CodeEngn Conference 02 Strip된 정적 링크된 ELF 바이너리에서 원래의 함수정보를 얻어내는 방법과 IDA SDK를 이용한 플러그인 제작을 설명한다. grayResolve 플러그인의 실행순서로는 1. 함수 이름을 복구하고자 하는 ELF 파일을 IDA로 로드한 뒤, Edit > Plugin 메뉴 또는 단축키 Alt + 1 을 통해 grayResolve 실행 2. 대상 파일이 컴파일될때 링크된 라이브러리 파일을 (예: libc.a) 지정해준다. 3. 찾고자 하는 함수 이름이 발견되지 않으면, 다른 라이브러리 파일을 대상으로 시도해보고 로그 파일을 분석한다. http://codeengn.com/conference/02

TRANSCRIPT

Page 1: [2008 CodeEngn Conference 02] graylynx - 정적 링크된 Stripped ELF 바이너리 상에서의 함수 탐지 기법

정적 링크된 ELF 파일에서의외부 심볼 정보 복구 기법

2nd CodeEngn Seminar

태 인 규 ([email protected])

www.CodeEngn.com

Page 2: [2008 CodeEngn Conference 02] graylynx - 정적 링크된 Stripped ELF 바이너리 상에서의 함수 탐지 기법

ELF

xecutableinkableormat

Page 3: [2008 CodeEngn Conference 02] graylynx - 정적 링크된 Stripped ELF 바이너리 상에서의 함수 탐지 기법

실행 가능한링크 가능한형식형식

Page 4: [2008 CodeEngn Conference 02] graylynx - 정적 링크된 Stripped ELF 바이너리 상에서의 함수 탐지 기법

공유라이브러리와실행파일을위한 기본 형식

Page 5: [2008 CodeEngn Conference 02] graylynx - 정적 링크된 Stripped ELF 바이너리 상에서의 함수 탐지 기법

ELF 구조

Page 6: [2008 CodeEngn Conference 02] graylynx - 정적 링크된 Stripped ELF 바이너리 상에서의 함수 탐지 기법

정적 링킹

VS동적 링킹

VS

Page 7: [2008 CodeEngn Conference 02] graylynx - 정적 링크된 Stripped ELF 바이너리 상에서의 함수 탐지 기법
Page 8: [2008 CodeEngn Conference 02] graylynx - 정적 링크된 Stripped ELF 바이너리 상에서의 함수 탐지 기법

섹시 심볼

Page 9: [2008 CodeEngn Conference 02] graylynx - 정적 링크된 Stripped ELF 바이너리 상에서의 함수 탐지 기법

ELF의심볼테이블

= 디버깅 정보테이블

Page 10: [2008 CodeEngn Conference 02] graylynx - 정적 링크된 Stripped ELF 바이너리 상에서의 함수 탐지 기법

QUIZ

Page 11: [2008 CodeEngn Conference 02] graylynx - 정적 링크된 Stripped ELF 바이너리 상에서의 함수 탐지 기법

WHY?

Page 12: [2008 CodeEngn Conference 02] graylynx - 정적 링크된 Stripped ELF 바이너리 상에서의 함수 탐지 기법

Stripped!

Page 13: [2008 CodeEngn Conference 02] graylynx - 정적 링크된 Stripped ELF 바이너리 상에서의 함수 탐지 기법

재개발이 가능할까?재개발이 가능할까?

Page 14: [2008 CodeEngn Conference 02] graylynx - 정적 링크된 Stripped ELF 바이너리 상에서의 함수 탐지 기법

실험

Page 15: [2008 CodeEngn Conference 02] graylynx - 정적 링크된 Stripped ELF 바이너리 상에서의 함수 탐지 기법

실행 파일에 복사된공유 라이브러리 코드와원본 공유 라이브러리 코드의비교

/* example.c */#include <stdio.h>int main(){

printf("Hello, ELF!₩n");return 0;

}

Page 16: [2008 CodeEngn Conference 02] graylynx - 정적 링크된 Stripped ELF 바이너리 상에서의 함수 탐지 기법

$> gcc example c -o example -static

비교대상 1: 정적 링크, 심볼 테이블이 삭제된ELF 실행 파일

$> gcc example.c o example static$> cp example example_stripped$> strip -S exmaple_stripped

Page 17: [2008 CodeEngn Conference 02] graylynx - 정적 링크된 Stripped ELF 바이너리 상에서의 함수 탐지 기법

$> cp /usr/lib/libc a /tmp

비교대상 2: 정적 공유라이브러리 내목적 파일

$> cp /usr/lib/libc.a /tmp$> ar /tmp/libc.a

Page 18: [2008 CodeEngn Conference 02] graylynx - 정적 링크된 Stripped ELF 바이너리 상에서의 함수 탐지 기법

비교대상 1 : 실행 파일에 복사된 공유 라이브러리 코드

비교대상 2 : 원본 공유 라이브러리 코드

Page 19: [2008 CodeEngn Conference 02] graylynx - 정적 링크된 Stripped ELF 바이너리 상에서의 함수 탐지 기법

실행 파일에 복사된 printf() 함수 기계어 코드

Page 20: [2008 CodeEngn Conference 02] graylynx - 정적 링크된 Stripped ELF 바이너리 상에서의 함수 탐지 기법

재배치

Page 21: [2008 CodeEngn Conference 02] graylynx - 정적 링크된 Stripped ELF 바이너리 상에서의 함수 탐지 기법

재배치

Page 22: [2008 CodeEngn Conference 02] graylynx - 정적 링크된 Stripped ELF 바이너리 상에서의 함수 탐지 기법

$> readelf -r printf.o

재배치 테이블 조회

WHAT THE ??!!

Page 23: [2008 CodeEngn Conference 02] graylynx - 정적 링크된 Stripped ELF 바이너리 상에서의 함수 탐지 기법

비교대상 1

비교대상 2

Page 24: [2008 CodeEngn Conference 02] graylynx - 정적 링크된 Stripped ELF 바이너리 상에서의 함수 탐지 기법

Signature

Page 25: [2008 CodeEngn Conference 02] graylynx - 정적 링크된 Stripped ELF 바이너리 상에서의 함수 탐지 기법

꿈은 ★ 이루어진다꿈은 ★ 이루어진다

Page 26: [2008 CodeEngn Conference 02] graylynx - 정적 링크된 Stripped ELF 바이너리 상에서의 함수 탐지 기법

grayResolve

IDA Pro Plug-InC / C++ / STLArchive ParserELF AnalyzerSignature SearchingName Resolving

Page 27: [2008 CodeEngn Conference 02] graylynx - 정적 링크된 Stripped ELF 바이너리 상에서의 함수 탐지 기법

Demo

Page 28: [2008 CodeEngn Conference 02] graylynx - 정적 링크된 Stripped ELF 바이너리 상에서의 함수 탐지 기법

Q & AQ

Page 29: [2008 CodeEngn Conference 02] graylynx - 정적 링크된 Stripped ELF 바이너리 상에서의 함수 탐지 기법

QUIZ본 발표에서 사용된 삽화 중사인하는 장면의 주인공은사인하는 장면의 주인공은누구인가?

Page 30: [2008 CodeEngn Conference 02] graylynx - 정적 링크된 Stripped ELF 바이너리 상에서의 함수 탐지 기법
Page 31: [2008 CodeEngn Conference 02] graylynx - 정적 링크된 Stripped ELF 바이너리 상에서의 함수 탐지 기법

2nd CodeEngn Seminar

http://blog.hackken.org/[email protected]

www.CodeEngn.com