악성 코드 정적 분석

정적 분석의 특징

  • 의심되는 파일을 실행하지 않고, 파일 자체가 가지고 있는 내용들을 확인해서 악의적인 코드를 지니고 있는지 여부를 분석하는 방식
  • 프로그램의 전체적인 구조를 파악하고, 어떤 함수로 구성이 되어 있는지, 어떠한 API 를 사용하고, 어떤 문자열을 포함하는지 등을 종합적으로 확인하는 분석 형태

정적 분석 방법

  • 해당 파일의 해시값 확인 => 원본 파일의 해시값과 비교해 다르다면 변조된 것, 해시값 Virustotal 검색
  • 파일 패킹* 여부 확인 및 PE 구조 확인 => 어떠한 DLL 을 import 했는지 등을 확인
  • 악성 코드가 사용하는 문자열 확인
  • Resource 확인 => 악성 코드 실행 파일에 저장된 리소스 분석

* 패킹 : 실행 파일 압축, 디버깅을 방해하는 요소

※ 파일을 실행하지 않는 특징을 가지고 있는 정적 분석이라도 툴을 사용해 분석하다 파일이 간혹 실행되는 경우가 발생할 수 있기 때문에 가상 샌드박스 환경에서 분석을 진행하여야 합니다.

 

정적 분석 Tool

Exeinfo PE

Exeinfo PE
Exeinfo PE

  • 파일의 패킹여부를 파악하는 툴
  • 해당 파일의 패킹 여부, 패킹을 하였으면 어떠한 툴로 패킹을 하였는지 파악이 가능함
  • 만약 패킹이 되어있지 않을 경우 어떠한 언어로 컴파일이 되었는지 확인이 가능
  • EX ) 윗 사진 -> UPX 로 패킹
    EX ) 아래 사진 -> Microsoft Visual C++ 로 컴파일

PE View

  • 해당 파일의 PE 구조를 파악 할 수 있는 툴
  • 파일 크기를 확인해서 패킹 여부도 파악이 가능함
  • IMAGE_FILE_HEADER 탭에 와서 Time Data Stamp  를 확인해 파일이 컴파일된 날짜도 확인이 가능

BinText

  • 해당 파일이 포함하고 있는 문자열을 확인할 수 있는 툴
  • 단, 패킹이 되어있을 경우에는 언패킹을 진행한 후에 사용할 것 !