정적악성코드분석 (Static Malware Analysis)
한 줄 정의: 악성코드 파일을 직접 실행하지 않고 코드 구조, 문자열, 바이너리 패턴 등을 분석하여 악성 여부와 특성을 파악하는 분석 기법입니다.
쉽게 풀면
수상한 소포를 열어보지 않고 엑스레이로 내용물을 살펴보는 것과 비슷합니다. 정적악성코드분석은 의심스러운 프로그램 파일을 실제로 실행하지 않은 채, 파일 안의 코드와 데이터를 뜯어보며 어떤 명령어가 들어 있는지, 어떤 문자열이나 함수 호출이 포함되어 있는지를 조사합니다. 이를 통해 실행에 따른 위험 없이도 악성 여부를 판단할 단서를 얻을 수 있습니다.
왜 중요한가
악성코드를 직접 실행하는 동적 분석은 시스템 손상이나 확산의 위험이 따르는 반면, 정적 분석은 안전한 환경에서 빠르게 대량의 샘플을 선별할 수 있어 초기 분류와 트리아지 단계에서 널리 활용됩니다. 다만 난독화나 패킹 기법에 취약하다는 한계 때문에 동적 분석과 결합하는 연구가 활발히 이루어집니다.
논문에서는 이렇게 쓰입니다
"본 연구는 정적악성코드분석을 통해 추출한 API 호출 패턴과 문자열 특징을 기반으로 악성코드 패밀리를 분류하는 머신러닝 모델을 제안한다."
정적 분석 결과가 머신러닝 특징으로 활용되는 사례입니다.
"패킹된 샘플의 경우 정적악성코드분석만으로는 실제 코드를 파악하기 어려워, 동적 분석을 병행한 하이브리드 접근을 사용하였다."
정적 분석의 한계와 그 보완 방법을 언급하는 문장입니다.
조금 더 깊게 보면
정적악성코드분석은 흔히 파일의 해시값 비교, 문자열 추출, 디스어셈블(disassemble)을 통한 명령어 분석, 임포트된 API 목록 확인 등의 절차로 이루어집니다. 공격자가 코드를 압축하거나 암호화하는 패킹(packing) 기법을 사용하면 정적 분석만으로 실제 동작을 파악하기 어려워지는 한계가 있어, 이를 보완하기 위한 언패킹 및 하이브리드 분석 연구가 함께 진행됩니다.
주의할 점
정적 분석 결과만으로 악성 여부를 단정하기 어려운 경우가 많으며, 실행 시점에서만 드러나는 행위(동적 다운로드, 조건부 실행 등)는 정적 분석으로 놓칠 수 있습니다.