본 게시글은 책 <악성코드 분석 시작하기> 의 내용을 정리한 글 입니다.
악성코드 분석 시작하기 : 네이버 도서
네이버 도서 상세정보를 제공합니다.
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 리포트 검색 제공
- 백신 스캐너로 바이너리를 스캔할 때 주의 사항
> 의심 바이너리가 백신 스캐너로 탐지되지 않았다고 해서 안전하다는 것을 의미하는 것은 아님
> 공개 사이트에 바이너리를 업로드하면 등록한 바이너리는 서드파티와 벤더에 공유될 수 있으므로 민감하거나 개인적인 정보가 포함된 경우 스캐닝 서비스에 등록하는 것을 지양
> 공격자들이 검색 기능을 통해 탐지 여부를 확인하여 전략을 변경하거나 탐지를 회피할 수 있음
'악성코드 > 분석' 카테고리의 다른 글
정적분석 (Static Analysis) #2 (0) | 2025.03.06 |
---|---|
APAC 지역 기업 대상 FatalRat 피싱 공격 (SalmonSlalom 캠페인) (0) | 2025.02.27 |
악성코드 분석 개요 (1) | 2025.02.18 |
Malvertising 기법 (0) | 2024.12.16 |
복사-붙여넣기를 악용한 ClickFix 공격 (4) | 2024.10.24 |