study/보안

정적분석 vs 동적분석

lucykorea414 2023. 9. 7. 21:14
728x90

정적 분석

프로그램을 실행시키지 않고 분석하는 방법

 

[장점]

  • 프로그램의 전체 구조를 파악하기 쉬움
    • 구성된 함수, 함수간의 호출관계, 사용된 API, 포함된 문자열 등을 종합적으로 살펴볼 수 있음
  • 분석 환경의 제약에서도 비교적 자유로움
    • 안드로이드의 apk 파일을 소프트웨어 사용하지 않고도 분석 가능
  • 바이러스와 악성 프로그램의 위협으로부터 안전함
    • 바이러스를 동적 분석한다면 실행한 컴퓨터가 감염될 수 있음
    • 정적 분석은 프로그램을 실행하지 않으므로 감염이 되지 않음

 

[단점]

  • 난독화(Obfuscation)가 적용되면 분석이 매우 어려워짐
    • 난독화가 적용되면 코드가 변형되어 실행흐름을 파악하기가 어려워짐
    • 해제(Deobfuscation)하기 위한 여러 연구가 진행되고 있지만, 여전히 난독화 서비스들을 모두 무력하하는 방법은 알려지지 않음
  • 정적 분석만으로는 다양한 동적 요소를 고려하기 어려움
    • 프로그램은 실행중에 영향을 주고 받는 여러 함수로 구성됨
    • 정적으로는 이 다양한 교류들이 파악하기가 어려움

 

 

정적 분석의 예시

  • IDA Freeware (IDA Pro)

 

 

동적 분석

프로그램을 실행시키면서 분석하는 방법

 

[장점]

  • 코드를 자세히 분석하지 않고 프로그램의 개략적인 동작을 파악할 수 있음
    • 정적 분석만으로 이해하기 어려운 복잡한 함수 관계들을 쉽게 파악 가능
  • 출력값을 기반으로 동작 추론 가능
    • 입력에 대한 프로그램의 출력을 확인할 수 있음

 

[단점]

  • 분석 환경을 구축하기 어려울 수 있음
    • 프로그램을 실행하지 못하면 동적 분석을 진행할 수 없음
    • 가상머신을 구축하거나 장치를 구매해야함
  • 안티 디버깅(Anti Debugging)이 있음 -> 동적 분석을 방해함
if (is_debugging()) // 디버깅인지 확인
  exit(-1); // 프로그램 종료
Func();

 

 

동적 분석의 예

  • x64dbg
  • ollydbg
728x90