악성코드 분석은 도구에 의존하기 때문에, 다양한 도구를 사용해 보면서 자신에게 맞는 도구를 찾는 것이 중요하다.
악성코드 분석 과정은 기초 분석, 정적 분석, 동적 분석의 순서로 진행되며, 각 단계에서 사용되는 주요 도구들을 간략하게 정리했다.
1. 기초분석
기초분석은 정적분석과 동적분석에 필요한 정보들을 수집하는 단계이다.
대표적인 기초분석 도구로는 'VirusTotal'을 사용한다.
VirusTotal에 대한 자세한 사용법과 주의사항은 아래 글에 작성하였다.
2. 정적분석
정적분석은 악성코드를 실행하지 않고 문자를 통해서 분석하는 방법이다.
주로 확인 하는 부분은 PE 파일 관련 내용, IAT 정보(DLL/API 목록 확인)등을 수집하여 악성코드의 특징과 동적 행위를 파악한다.
2.1 패킹 관련 도구
1) ExeinfoPE
PE(Portable Executable) 파일의 기본적인 정보를 확인하고 파일의 패커를 식별하는 데 사용하는 도구이다.
언패킹 힌트를 제공하기 때문에 파일을 언패킹하는 데 많은 도움이 된다.
패킹이란, 난독화의 종류중 하나로 파일을 압축해 정적분석을 방해한다.
2) PEiD
PEiD는 PE(Portable Executable) 파일의 패커를 식별하는 또 다른 도구이다. 현재는 업데이트가 중지되어, 참고용으로 사용한다.
2.2 PE 구조 분석 도구
1) PEview
PE 파일의 구조를 통해 악성코드가 파일의 어느 부분에 숨겨져 있는지 확인하기위한 도구이.
PEview에 대한 자세한 사용법과 주의사항은 아래 글에 작성하였다.
https://rybbit-life-debugging.tistory.com/28
2.3 문자열 추출 도구
1) Strings
CLI 기반 문자열 추출 도구이다. Bintext와 같은 GUI기반 문자열 분석 도구들은 문자열을 모두 추출하지 않는 경우가 있어 Strings를 통해 문자열을 추출하는 것을 추천한다.
2) Bintext
GUI기반 문자열을 추출 도구로 검색기능을 제공해, 문자열을 확인하기 쉽다.
3. 동적분석
동적분석은 정적분석보다 변수가 많다. 예를들면, 동적분석 중에 크롬 업데이트, 윈도우 업데이트가 실행될 수 있다. 따라서 스냅샷을 통해 동적분석은 여러 번 분석을 진행하는 것이 중요하며, 많은 시간이 소요되는 것을 감안하고 진행해야 한다.
3.1 프로세스 모니터링 도구
1) Process Explorer
시스템에서 실행 중인 모든 프로세스를 실시간으로 모니터링하고 분석할 수 있는 도구이다. 실시간 모니터링 도구이기 때문에 녹화해서 동작들을 확인하는 것도 좋은 방법이다. 하지만 개인적으로는 다른 도구를 사용하는 것을 추천한다.
2) SystemExplorer
시스템의 전반적인 상태와 실행 중인 프로세스를 모니터링하는 도구이다.
History, Connections, Snapshot과 같은 좋은 기능들을 제공한다.(추후에 해당 도구에 대한 사용법 작성)
3) Process Monitor
파일 시스템, 레지스트리, 프로세스, 스레드 활동을 실시간으로 모니터링하는 도구이다.
많은 정보들이 제공되기 때문에 필터링 기능을 통해 필요한 정보를 추출하는 능력이 필요하다.(추후 상세작성필요)
3.2 시작 프로그램 분석 도구
1) Autoruns
Autoruns는 시스템이 시작될 때 자동으로 실행되는 프로그램, 서비스, 드라이버 등을 관리하는 도구이다.
악성코드 실행 전 후를 비교하여 시작 프로그램의 변화를 확인할 수 있는 기능이 있다.
3.3 네트워크 모니터링 및 분석 도구
1) Currports(Cports)
CurrPorts는 시스템에서 현재 열려 있는 TCP/IP 및 UDP 포트를 모니터링하는 도구이다.
2) Smartsniff
네트워크 트래픽을 캡처하고 간단하게 분석하는 도구이다.
3) Wireshark
네트워크 트래픽을 캡처하고 상세하게 분석할 수 있는 도구다.