본 게시글은 책 <악성코드 분석 시작하기> 의 내용을 정리한 글 입니다.

 

악성코드 분석 시작하기 : 네이버 도서

네이버 도서 상세정보를 제공합니다.

search.shopping.naver.com

1. 정적분석 (Static Analysis)

- 의심스러운 파일을 실행하지 않고 분석하는 기법
> 악성코드 목표 아키텍처 식별하기 : 파일 유형 파악
> 악성코드 식별하기 : 해시 추출
> 백신 엔진을 이용해 의심스러운 바이너리 스캔하기 : 다중 백신 스캐닝
> 파일과 관련된 문자열, 함수, 메타데이터 추출하기 : 문자열 추출
> 분석을 방해하고자 사용한 난독화 기술 식별하기 : 파일 난독화 파악
> 윈도우 실행 파일 정적 분석 : PE 헤더 정보 조사
> 악성코드 샘플들을 비교하고 분류하기 : 퍼지 해싱, 임포트 해시, 섹션 해시, YARA를 이용한 분류

 

1.1 파일 유형 파악

- 바이너리 파일 유형을 구분하는 것은 악성코드의 목표 운영 시스템(윈도우, 리눅스 등)아키텍처(32비트 또는 64비트 플랙폼)를 식별하는데 도움이 됨

 

- 파일 확장자에만 의존하는 것은 권장하지 않음

> 파일 유형의 유일한 식별자가 아님

> 파일 확장자를 수정하거나 숨기는 등의 속임수를 사용

> 파일 시그니처를 이용해 파일 유형 구분

 

- 파일 시그니처 (File Signature) : 파일 헤더에 작성되는 독특한 배열 순서

> 윈도우 실행 파일 또는 PE 파일 (.with, .exe, .dll, .com, .drv, .sys 등)은 파일의 첫 바이트에 MZ 또는 16진수 4D 5A 파일 시그니처를 가짐

 

- 헥사 편집기 (Hex Editor, HxD)로 파일을 열어 파일 시그니처를 찾을 수 있음

- 리눅스에서는 xxd 명령으로 파일 시그니처를, file 유틸리티파일을 식별할 수 있음

- 파이썬 python-magic 모듈을 사용해 파일 유형 구분 가능

1.2 악성코드 식별

- 식별 (Fingerprinting) : 의심스러운 바이너리의 내용을 바탕으로 암호 해시 (Hash) 값을 생성하는 활동

> MD5, SHA1, SHA256 등의 암호 해시 알고리즘은 파일 해시를 생성할 때 사실상 표준

 

- 해시는 악성코드를 식별하는 유일한 식별자

> 파일명 기준으로 악성코드 샘플을 식별하는 것은 효과적이지 않음

> 파일 내용에 기반해 생성된 암호 해시는 식별에 효과적

> 동적 분석 과정에서 악성코드를 실행하면 자신을 다른 위치에 복사하거나 다른 악성코드를 드롭하는 경우가 있음 - 샘플의 암호 해시는 원본 샘플과 동일한지 아닌지를 식별 가능

> 해시를 바이러스토탈 (Virus Total)과 같은 다중 백신 스캐닝 서비스의 데이터베이스를 검색하여 이전에 탐지된 적이 있는지 판단 가능

 

- 리눅스에서는 md5sum. sha256sum, sha1sum 도구를 이용해 파일 해시 생성 가능

- 파이썬 hashlib 모듈을 사용해 해시 생성 가능

1.3 다중 백신 스캐닝

- 의심스러운 바이너리를 다중 백신 스캐너로 스캐닝하면 해당 파일에 악성코드 시그니처가 존재하는지 확인할 수 있음

> 시그니처를 통해 파일과 그 기능에 대한 추가 정보를 제공받을 수 있음

> 분석 시간을 줄여주는 이점

 

- 바이러스토탈 (Virus Total)

> 유명한 웹 기반 악성코드 스캐닝 서비스

> 파일을 업로드하면 다양한 백신 스캐너로 스캐닝하고 실시간 스캔 결과 제공 (일반 사용자일 경우 스캔량 제한 존재)

> 해시, URL, 도메인 또는 IP 주소를 이용해 기존 데이터베이스 검색 가능

> 바이러스토탈 그래프 기능을 활용해 등록한 파일, 도메인, IP 주소, URL과 같은 관련 지표 사이의 관계를 시각화할 수 있음 (로그인 필요)

- Python과 바이러스토탈 API를 활용한 해시 값 질의

> 공개 API를 통해 스크립트를 작성할 수 있는 기능 제공 (API 발급 필요 및 일반 사용자일 경우 스캔량 제한 존재)

> 파일 등록 자동화, 파일/URL 스캔 리포트 검색, 도메인/IP 리포트 검색 제공

 

- 백신 스캐너로 바이너리를 스캔할 때 주의 사항

> 의심 바이너리가 백신 스캐너로 탐지되지 않았다고 해서 안전하다는 것을 의미하는 것은 아님

> 공개 사이트에 바이너리를 업로드하면 등록한 바이너리는 서드파티와 벤더에 공유될 수 있으므로 민감하거나 개인적인 정보가 포함된 경우 스캐닝 서비스에 등록하는 것을 지양

> 공격자들이 검색 기능을 통해 탐지 여부를 확인하여 전략을 변경하거나 탐지를 회피할 수 있음

+ Recent posts