악성코드 분석
서론
사람들과 기업이 점점 더 기술에 의존함에 따라, 악성코드 또한 점점 기업과 개인들에게 심각한 위해를 끼치는 수준이 되고 있다.
특히, AI 등 신기술의 발전은 범죄자들이 새로운 유형의 악성코드를 만드는 것을 더욱 쉽게 만들고 있다. AV Tech사는 매일 450,000 건의 새로운 유형의 악성코드들이 탐지되었다고 밝혔다. (2023.08)
이렇듯 성장하는 위협에 대처하기 위해 사이버보안 전문가들은 악성코드의 행동과 특징, 그리고 역량을 탐지하고 분석하기 위해 악성코드 분석 기술을 사용한다.
악성 코드 분석 기술에는 정적 분석과 동적 분석의 두 가지 유형이 존재한다.
정적 분석
- 코드를 실행하지 않고 악성코드를 분석하는 방법으로, 악성코드의 메타데이터, 구조 등 속성을 파악할 수 있다.
- (코드를 실행하지 않기 때문에) 위협 이벤트 발생은 없지만, 악성코드 실행 흐름과 의도 파악은 불가능하다.
특징
- 빠르고 직관적이다.
- 메타데이터, 구문, 구조, 코드 등 악성코드 샘플의 특징을 확인 가능하다.
- Signature 기반
- 모든 악성코드는 고유한 디지털 지문을 가지고 있다.
- 샘플 코드의 digital footprint를 데이터베이스에 기록된 악성코드 signature와 대조 가능하다.
- 하지만 미지의(새로운 유형의) 악성코드는 검색할 수 없다는 단점이 존재한다.
진행 방식 & 도구
1. 파일 식별
- 파일의 종류 (EXE, DLL 등)을 확인한다.
- 해시값(MD5, SHA-1, SHA-256 등)을 생성하여 무결성을 검사하고, 악성코드 DB와 비교한다.
2. 파일 구조 분석
- 파일 압축 및 암호화 여부 확인 : 악성코드가 압축되어 있다면, 이를 풀어 분석해야 한다.
- PE 파일 분석 : 악성코드가 Windows PE(Portable Executable) 형식이라면 PE 헤더 정보를 통해 코드 및 데이터 섹션, 라이브러리 호출 정보를 파악한다. (ex. PE Studio, CFF Explorer)
3. Disassembler
- 기계어를 assembly 코드로 변환한다.
- 코드 흐름을 분석하고, 악성코드 동작 방식을 파악할 수 있다.
- 예시 - IDA Pro, Ghidra
4.문자열 분석
- 악성코드 내에서 하드코딩된 문자열을 추출하여 분석한다.
- 이를 통해 C&C 서버 주소, 파일 경로, 사용자 계정 정보 등을 파악할 수 있다.
동적 분석
- 통제된 환경에서 악성 코드를 실행하여 시스템과 어떻게 상호작용하는지를 모니터링하는 방법으로, 악성코드의 사용 의도와 탐지 회피 능력 등을 파악할 수 있다.
- 보다 심도 있고 정확한 보고를 제공하지만, 비교적 시간이 소요되는 작업이다.
- 또한 전문화된 도구를 요구하며, 분석 환경이 악성코드에 의해 감염될 위험도 존재한다.
특징
- Sandbox 필요
- 악성코드를 안전하게 실행하고 그 활동을 감시하기 위한 격리 환경이 필요하다.
- 보다 보편적이고 정확하다 (행동 기반 Behavior-based)
- 악성코드에 대한 심도 있는 행동 분석을 제공한다.
- 실제 실행 과정을 지켜봄으로써 악성코드의 논리, 기능에 대한 가시성 확보가 가능하다.
- AI 기반으로 새롭게 생성되는 악성코드들에 대한 심도 있는 분석이 가능해진다.
- 사용되는 기술들
- Activity Monitoring
- 실행 중인 악성코드에 의해 생성되는 system call을 감시한다.
- Network Traffic Analysis
- 원격 서버와 통신하는 악성코드의 경우 어떻게 통신하고, 어떤 명령어를 받는지 등을 확인할 수 있다.
- Dynamic Code Analysis
- 악성코드의 실행 흐름 추적 등
- Memory Analysis
- 분석가는 시스템 메모리의 내용을 분석하여 이를 확인할 수 있다.
- Activity Monitoring
정적분석 방식은 악성코드의 구조를, 동적분석 방식은 악성코드의 행동 패턴을 이해하는 데 효과적이다.
진행 방식 & 도구
1. 격리 환경 구성
- 악성코드 분석 환경은 반드시 격리된 네트워크에서 이루어져야 한다.
- 이를 위해 가상 머신(VM)을 사용하거나 샌드박스 환경을 구축해야 한다.
- 분석에 사용하는 VM은 스냅샷을 통해 복원 가능해야 한다.
- 예시 - Cuckoo Sandbox, Any.Run
2. 프로세스 모니터링
- 악성코드가 실행되면서 생성하는 프로세스를 실시간으로 추적한다.
- 프로세스 생성, 종료, 자식 프로세스 생성 등을 기록한다.
- 예시 - Process Explorer
3. 네트워크 활동 분석
- 악성코드가 외부 서버와 통신을 시도하는지, 데이터 전송이나 명령 제어(C2) 서버와의 연결 시도를 감지한다.
- 네트워크 패킷을 캡처하고 분석하여 악성 트래픽을 파악한다.
- 예시 - Wireshark, Fiddler, TCPView
4. 레지스트리 분석
- 레지스트리의 추가, 삭제, 변경을 모니터링하여 악성코드가 OS 설정을 변경하는지 확인한다.
- 예를 들어, 악성코드가 자동으로 실행되도록 시작 프로그램에 등록하는지 감지한다.
- 예시 - RegShot, Autoruns
5. 메모리 행동 분석
- 악성코드는 종종 데이터 암호화 및 프로세스 환시 기법 등을 통해 메모리 내에 자신의 활동을 숨긴다.
- 때문에 보안 전문가는 악성코드가 메모리에서 수행하는 활동을 관찰하고, 메모리 덤프를 추출하여 이를 분석한다.
- 이는 실행 시점에 메모리에 적재된 난독화된 코드나 암호화된 데이터를 해제하는 데 매우 유용하다.
- 예시 - Volatility, Rekall
참고 출처
- The Differences Between Static and Dynamic Malware Analysis
'리팩토링 > 2. 보안관제' 카테고리의 다른 글
리팩토링 13주차. 악성코드 정적/동적 분석 도구 (1) | 2024.10.04 |
---|---|
리팩토링 12주차. 악성코드 분석 환경 구성 & 악성코드 샘플링 웹사이트 (1) | 2024.09.24 |
리팩토링 10주차. VirusTotal (2) | 2024.09.02 |
리팩토링 9주차. 보안관제 (1) | 2024.08.22 |
리팩토링 8주차. 악성 코드 (1) | 2024.08.14 |