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


Recommended