정보보호-9. 바이너리 분석

백지원·2023년 6월 11일
0

바이너리의 분석 방법

1.정적 분석

  • static analysis
  • 바이너리를 실행하지 않고 분석
  • 디스어셈블러, 디컴파일러 이용
  • 코드 위주로만 분석

2.동적 분석

  • 바이너리를 실행하면서 분석
  • 디버거, 행위 분석 도구 등 이용
  • 네트워크, 파일 등의 접근 관찰 병행

주관적/모호한 부분이 있을 수 있음

바이너리

디스어셈블러

디컴파일러

정적분석의 장단점

장점

  • 실행 환경 없이 분석 가능
    ex) ARM 바이너리, OSX 바이너리
  • 바이너리의 모든 부분을 전체적으로 빠르게 파악하기 좋음
    바이너리의 모든 정보를 나열

단점

  • 환경에 의존적인 정보를 분석할 수 없음
  • 실행 도중 생성되는 정보의 확인이 어려움
  • 레지스터 context를 보기 어려움
    ex) CPU의 상태

디버깅

대표적인 동적분석 방법

  • 바이너리를 실행하면서 분석
  • 브레이크포인트(중요!!)
  • single step
    멈춘 시점에서 1개의 명령어만 실행하고 다시 멈춤
  • next instruction
    single step과 동일하나, call 명령이 종료할 때까지 1개의 명령으로 취급

GDB(GNU DeBugger)

리눅스 기반의 대표적인 디버거

  • 인터페이스가 불편하고 단순
  • pwndbg, GEF, PEDA 등 GDB 확장도구 이용

pwndbg

GDB 기반의 디버거

  • 편리한 인터페이스

IDA(Interactive Disassembler)

윈도우즈 기반의 대표적인 디버거
(리눅스 기반도 존재)

디버거, 디스어셈블러

관계

  • 모든 디버거는 디스어셈블러 기능 포함
  • 모든 디스어셈블러가 디버깅이 가능하지는 않음
    Ex) objdump

주요 도구들


실습

pwndbg 사용

IDA Pro 사용

0개의 댓글