A Recovery Method of External Symbol Information in Statically-Linked ELF Files

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

  • Received : 2009.03.11
  • Accepted : 2009.10.30
  • Published : 2010.02.28

Abstract

ELF, an abbreviation for Executable and Linkable Format, is the basic file format for shared libraries and executable files used in the Linux system, whereas 'Linker' copies the symbol information of static shared libraries into the symbol table in the target file generated by way of static linking. At this time, the symbol table keeps various pieces of debugging-related information including function names provided by the shared libraries, and it can be deleted to avoid debugging for security reasons by utilizing the fact that it does not directly affect the program execution. This paper proposes a method for restoring the symbol information of static shared libraries from the ELF object file in which the symbol table is deleted, and confirms that the symbol information is restored by conducting practical experiments.

ELF는 실행과 링킹 형식(Executable and Linkable Format)의 약어로서, 리눅스 시스템에서 사용하는 공유 라이브러리와 실행 파일을 위한 기본 파일 형식이다. 한편 링커는 정적 링킹을 통한 목적 파일 생성 시, 정적 공유 라이브러리의 심볼 정보를 목적 파일 내 심볼 테이블에 복사한다. 이 때, 심볼 테이블은 공유 라이브러리가 제공하는 함수 이름을 포함하여 여러 가지 디버깅 관련 정보를 포함하는데, 프로그램 실행에 직접적인 영향을 미치지 않는다는 점을 이용하여 보안상 디버깅되는 것을 방지하기 위해 삭제될 수 있다. 본 논문은 심볼 테이블이 삭제된 ELF 목적 파일에서 정적 공유 라이브러리의 심볼 정보를 복구하는 방법을 제안하고 실제로 실험을 행하여 복구된 심볼 정보를 확인한다.

Keywords

References

  1. Alessandro Rubini, Jonathan Corbet, and Greg Kroah-Hartman, Linux Device Drivers 3/E, O'REILLY, 2005.
  2. Arthur Griffith, GCC: The Complete Reference, McGrew-Hill, 2002.
  3. 최은만, "역공학을 이용한 소프트웨어 재사용 시스템에 관한 연구," 정보처리학회 논문지, 4권 1호, pp. 97-106, 1997.
  4. 박수희, "소프트웨어 역공학에서의 문제 영역 및 구조적 초상화 방법," 동덕여자대학교 학술저널, Vol.27 No.1, pp. 331-358, 1997.
  5. 송진국, 오염덕, 강형우, 이진석, "역공학에 기초한 악성코드 분석 시스템의 설계," 한국인터넷정보학회 학술발표대회 논문집, 1권 2호, pp. 273-276, 2000.
  6. 김권엽, 최재민, 이상진, 임종인, "소프트웨어에 적용된 암호화 모듈의 역공학 분석에 관한 고찰," 한국방송공학회 학술발표대회 논문집, pp. 142-145, 2007.
  7. Tool Interface Standard (TIS) Executable and Linking Format (ELF) Specification Version 1.2, TIS Committee, 1995.
  8. Mark Wilding and Dan Behman, Self-Service Linux : Mastering the Art of Problem Determination, PRENTICE HALL, 2006.
  9. Mike Loukides and Andy Oram, Programming with GNU Software, Q'REILLY, 1998.
  10. Julien Vanegue, ELF relocation into non-relocatable objects, Phrack, 2003.
  11. Daniel PIerre Boet and Marco Cesati, Understanding the Linux Kernel 3/E, Q'REILL Y, 2005.