이 글은 악성코드 분석 시리즈의 첫 번째 글입니다.
분석 방법의 종류와 각 단계에서 사용하는 도구를 정리했습니다.
악성코드(Malware)란 사용자의 동의 없이 시스템에 침투해 피해를 주는 모든 프로그램을 말한다.
종류는 다양하지만, 자주 등장하는 것만 간단히 정리하면 이렇다.
| 종류 | 설명 |
|---|---|
| 바이러스 | 다른 파일에 붙어서 전파되는 악성코드 |
| 웜 | 스스로 복제하며 네트워크로 퍼지는 악성코드 |
| 트로이목마 | 정상 프로그램처럼 위장해서 악성 행위를 하는 악성코드 |
| 랜섬웨어 | 파일을 암호화하고 금전을 요구하는 악성코드 |
| 스파이웨어 | 사용자 정보를 몰래 수집하는 악성코드 |
악성코드의 더 자세한 내용은 다음 글에서 작성하였다
https://velog.io/@kys980819/악성코드
https://velog.io/@kys980819/악성코드-사례
악성코드 분석을 통해 크게 두 가지를 할 수 있다.
1. 파일이 어떤 행동을 하는지 파악한다
실행 시 어떤 프로세스가 생기는지, 어디에 파일을 만드는지, 어떤 서버에 연결하는지 같은 행동을 확인할 수 있다.
2. IOC를 추출할 수 있다
IOC(Indicator of Compromise)란 악성코드가 남기는 흔적을 말한다. IP 주소, 도메인, 파일 해시값 같은 것들이 여기에 해당한다. 이 흔적을 모아두면 같은 악성코드가 다시 나타났을 때 탐지하는 데 활용할 수 있다.
나는 이 IOC를 활용해서 Snort 탐지 룰을 작성하는 것을 목표로 분석을 시작했다.
💡 Snort란 네트워크에서 수상한 트래픽을 탐지하는 오픈소스 침입 탐지 시스템(IDS)이다. Snort에 대한 자세한 내용은 별도 시리즈에서 다룰 예정이다.
악성코드 분석은 보통 아래 순서로 진행된다.
자동화 분석 → 기초 분석 → 정적 분석 → 동적 분석
빠르고 간단한 것부터 시작해서 점점 깊이 들어가는 흐름이다.
반드시 모든 단계를 거칠 필요는 없고, 상황에 따라 필요한 단계만 진행하기도 한다.
파일을 직접 실행하거나 깊이 분석하지 않아도, 온라인 도구에 올리는 것만으로 빠르게 결과를 볼 수 있는 방법이다. 분석의 첫 단계로, 해당 파일이 악성인지 아닌지 빠르게 판단하는 데 활용한다.
📦 사용 도구
🔍 이 단계에서 집중할 포인트
⚠️ VirusTotal은 빠른 판단에는 유용하지만, 파일이 구체적으로 어떤 행동을 하는지까지는 알기 어렵다. 어디까지나 첫 번째 확인 용도로 활용하자.
본격적인 분석 전에 파일의 기본 정보를 확인하는 단계다. 이 단계에서 파일의 성격을 어느 정도 파악할 수 있다.
특히 패킹 여부를 확인하는 게 중요하다.
💡 패킹이란 악성코드를 분석하기 어렵게 만들기 위해 파일을 압축하거나 암호화해 놓은 것을 말한다. 패킹이 되어 있으면 내부를 바로 볼 수 없기 때문에, 이후 분석 방향이 달라질 수 있다.
📦 사용 도구
🔍 이 단계에서 집중할 포인트
파일을 실행하지 않고, 파일 내부를 직접 들여다보는 분석 방법이다. 실행 없이 분석하기 때문에 안전하다는 장점이 있다.
파일 안에 포함된 문자열이나 구조를 보면서 어떤 기능을 가지고 있는지 힌트를 얻을 수 있다.
📦 사용 도구
💡 PE 파일이란 윈도우에서 사용하는 실행 파일 형식(.exe, .dll 등)을 말한다.
🔍 이 단계에서 집중할 포인트
파일을 실제로 실행하면서 어떤 행동을 하는지 관찰하는 분석 방법이다. 직접 실행하기 때문에 가장 많은 정보를 얻을 수 있다.
단, 실제로 실행하는 만큼 반드시 가상 환경(VM) 안에서만 진행해야 한다.
📦 사용 도구
| 도구 | 용도 |
|---|---|
| Process Explorer | 현재 실행 중인 프로세스 목록과 상태 확인 |
| Process Monitor | 프로세스, 파일, 레지스트리, 네트워크 이벤트 로그를 실시간으로 전부 확인 |
| System Explorer | 스냅샷 기능으로 실행 전후의 파일 및 레지스트리 변화 비교 |
| Autoruns | 시스템 시작 시 자동으로 실행되는 항목 확인 |
| CPort | 현재 열려 있는 네트워크 포트 및 연결 상태 확인 |
| SmartSniff | 네트워크 패킷을 캡처해서 통신 내용 확인 |
| Wireshark | 네트워크 트래픽을 상세하게 캡처하고 분석 |
🔍 이 단계에서 집중할 포인트
분석 흐름을 다시 한번 정리하면 이렇다.
| 단계 | 핵심 목적 |
|---|---|
| 자동화 분석 | 악성 여부 빠르게 확인 |
| 기초 분석 | 파일 기본 정보 및 패킹 확인 |
| 정적 분석 | 실행 없이 내부 구조와 문자열 확인 |
| 동적 분석 | 실행하면서 실제 행동 관찰 |
각 단계가 독립적으로 보이지만, 앞 단계에서 얻은 정보가 다음 단계의 방향을 잡아주는 식으로 자연스럽게 연결된다.