동적분석, 정적분석

정적 분석 : 소프트웨어가 실행되지 않는 환경에서 소스 코드 의미를 분석, 결함을 찾아내는 분석 기법

분류 내용
소스 코드 분석 시큐어 코딩 가이드 기반 취약한 항목의 존재 확인
시멘틱 분석 인터페이스 & 함수 호출의 구조적 취약점을 분석
바이너리 구조 분석 역공학 분석 도구를 이용

 

동적 분석 : 소프트웨어가 실행중인 환경에서 다양한 입/출력 데이터, 사용자 상호작용의 변화들을 점검

분류 내용
행위 탐지 기법 실행 시 취약/이상 현상을 탐지
샌드박스 기법 가상화 환경에서 직접 실행을 통해 이상 현상을 분석
모의 해킹 실제 화이트 해커가 직접 진단

 

크게 정적 분석과 동적 분석으로 나누고

정적분석에는 기초분석과 상세 분석으로 나눌수 있음

상세 분석은 백신회사 단계에서 하는 분석

기초정적분석

의심되는 파일을 실행하지 않고, 파일 자체가 가지고 있는 내용들을 확인해서 악의적인 코드를 지니고 있는지 여부를 분석하는 방식

프로그램의 전체적인 구조를 파악하고, 어떤 함수로 구성이 되어 있는지, 어떠한 API 를 사용하고, 어떤 문자열을 포함하는지 등을 종합적으로 확인하는 분석 형태

기초정적분석 방법

  • 해당 파일의 해시값 확인
    • 원본 파일의 해시값과 비교해 다르다면 변조된 것, 해시값은 Virustotal과 대조
  • 파일 패킹 여부 확인 및 PE 구조 확인
    • 패킹 : 실행 파일 압축과 암호화, 디버깅을 방해하는 요소
    • 어떠한 DLL 을 import 했는지 등을 확인
  • 악성 코드가 사용하는 문자열 확인
  • Resource 확인
    • 악성 코드 실행 파일에 저장된 리소스 분석

1. 악성여부 판단

VirusTotal을 활용하여 악성코드를 진단하고 악성 코드의 해시 값을 파악

2. 해시 정보 검증

WinMD5 프로그램을 통해 정상 프로그램의 해시와 비교하여 변조가 되었는지 판단

3. 문자열 검색

strings, Bintext 를 통해 파일의 문자열, 함수, 헤더를 분석하여 프로그램 메세지 출력, URL 접속, 특정 위치로 파일 복사 등을 확인

 

4. 패킹여부 확인

패킹 여부 확인하고 언패킹하여 리버싱을 보다 쉽게 하기 위한 단계

최근에는 PEiD 보다는 exeinfo를 사용

5. PE구조 확인

PE view를 통해 실행파일의 구조 확인

PE Header에는 파일을 실행하기 위한 정보가 있어 HEX로된 정보를 읽을 수 있다면 악성 코드 분석에 도움

6. 의존성조사

PE 구조확인 을 통해 imported된 의존성 도구를 파악해 어떤 동작을 할지 추측

주로 사용되는 DLL 

  • Kernel32.dll : 메모리, 파일 ,하드웨어 접근과 조작
  • Ntdll.dll : 윈도우 커널 인터페이스
  • Advapi32.dll : 서비스 관리자, 레지스트리 같은 추가 윈도우 핵심 컴포넌트
  • User32.dll : 유저 인터페이스(버튼, 스크롤바, 사용자 행위 제어, 반응 컴포넌트)
  • Gdi32.dll : 그래픽 보기 및 조작
  • WS2_32.dll : 윈도우 소켓 네트워크 (네트워크 통신)
  • Wininet.dll : FTP, HTTP, NTP와 같은 상위 수준 프로토콜 구현 (네트워크 통신)

동적분석

의심스러운 파일을 직접 실행하여 나타나는 변화들을 모니터링 해 어떤 기능을 수행하는지 확인하는 분석 방법

해당 파일이 실제로 악의적인 행위를 할 가능성이 존재하기 때문에 가상 샌드박스 환경에서 진행

동적 분석의 경우 파일 실행 한번으로는 제대로 분석이 되지 않을 수 있기에 여러 번 반복해서 분석

파일/레지스트리 , 프로세스, 네트워크 세 파트로 나눠서 분석을 진행함

동적분석 방법

  1. 악성코드 실습 시 발생하는 호스트/네트워크 환경 구성
  2. 파일, 프로그램 실행, 레지스트리, 서비스 등 관련 항목 변경 사항 확인
  3. 실행 시 발생하는 네트워크 트래픽 분석

네트워크 행위

외부 시스템과의 통신 여부

WireShark

  • 네트워크 패킷 캡쳐툴
  • 네트워크상 캡처한 데이터에 대한 네트워크/상위 레이어 프로토콜의 정보를 제공

프로세스 행위

추가로 생성하는 프로세스 존재 여부

프로세스 자가 종료 여부

프로세스 모니터

  • 실시간 파일 시스템, 레지스트리, 프로세스 변화를 보여주는 툴

프로세스 익스플로러

  • 실행되는 프로세스들을 통합 관리할 수 있는 도구
  • 실행중인 프로세스 파악 및 우선권 변경, 정지, 강제 종료 등 조치 기능을 포함

레지스트리, 파일 조작행위

RegShot

  • 악성코드는 자동실행을 위해 레지스트리를 자주 건드림
  • 프로그램 실행 전후의 두 레지스트리의 스냅샷을 찍고 비교

Autoruns

  • Windows 시스템에서 부팅 후 자동으로 실행되는 프로그램이나 서비스들을 보여주고 관리하는 툴
  • 악성 코드 분석 시 해당 파일 실행 전 상태를 저장하고 실행 후 새로고침 후 File → Compare 기능을 통해 실행 전과 실행 후에 어떤 프로그램이 실행되는지 어떤 레지스트리 및 파일이 등록되는지 변화를 확인 할 수 있는 툴

상세 분석

악성코드 파일을 디스어셈블하여 세부적인 동작을 분석하는 단계

소스코드가 존재 한다면 소스코드를 직접 분석

악성코드 파일만 가지고 프로그램을 역분석하는 리버스 엔지니어링 기술을 이용

이용되는 프로그램은 Ollybdg, IDA pro, ImmunityDebugger

 

Reference

https://iforint.tistory.com/40

https://haerakai.tistory.com/13

https://isc9511.tistory.com/33

https://kkn1220.tistory.com/114

https://t-okk.tistory.com/43

https://these-dayss.tistory.com/150

'보안관제' 카테고리의 다른 글

동적분석 도구 실습  (0) 2023.12.21
정적 분석 도구 실습  (1) 2023.12.20
Virustotal  (1) 2023.11.25
보안관제  (0) 2023.11.20
악성코드  (1) 2023.11.11

+ Recent posts