인터넷·보안

악성코드 정적 분석과 동적 분석의 차이와 활용 방법

2026-10-19 08:13
악성코드 정적 분석과 동적 분석의 차이와 활용 방법 representative image

악성코드 분석에서 정적 분석은 ‘실행 전 구조 확인’, 동적 분석은 ‘실행 후 행위 관찰’에 해당합니다. 안전성과 분석 속도가 중요하면 정적 분석부터 시작하고, 실제 파일·레지스트리·네트워크 동작을 확인해야 하면 격리된 환경에서 동적 분석을 병행합니다.


📌 핵심 5줄 요약

1. 정적 분석은 악성코드를 실행하지 않고 파일의 구조와 코드를 살펴보는 방법입니다.

2. 동적 분석은 격리된 환경에서 파일을 실행해 실제 행위를 관찰하는 방법입니다.

3. 정적 분석은 빠르고 안전하지만 난독화나 실행 조건 때문에 한계가 있습니다.

4. 동적 분석은 행위를 직접 확인할 수 있지만 분석 환경이 오염될 위험을 관리해야 합니다.

5. 실무에서는 정적 분석으로 범위를 좁히고 동적 분석으로 의심 행위를 검증합니다.


📌 목차

01 | 악성코드 분석이 필요한 이유

02 | 정적 분석의 개념

03 | 동적 분석의 개념

04 | 두 분석의 핵심 차이

05 | 정적 분석에서 확인할 항목

06 | 동적 분석에서 확인할 항목

07 | 정적 분석의 장점과 한계

08 | 동적 분석의 장점과 한계

09 | 분석 절차 비교

10 | 실제 분석 사례

11 | 난독화와 탐지 회피 대응

12 | 안전한 분석 환경 구성

13 | 어떤 분석을 먼저 선택할까

14 | 분석 결과를 대응에 활용하는 방법


01 | 악성코드 분석이 필요한 이유

악성 파일을 발견했을 때 단순히 삭제하는 것만으로는 감염 범위와 추가 피해를 확인하기 어렵습니다. 파일이 어떤 방식으로 실행되고, 어떤 정보를 수집하며, 외부 서버와 통신하는지 분석해야 다른 시스템의 감염 여부와 필요한 대응 조치를 판단할 수 있습니다.

분석 결과는 탐지 규칙 작성, 침해사고 원인 파악, 감염 시스템 격리, 재발 방지 정책 수립에 활용됩니다.


02 | 정적 분석의 개념

정적 분석은 악성코드를 실제로 실행하지 않은 상태에서 파일 내부의 정보를 조사하는 방식입니다. 파일 형식, 해시값, 문자열, 실행 파일 구조, 포함된 라이브러리와 코드 흐름 등을 살펴보며 의심스러운 기능을 추정합니다.

파일을 실행하지 않으므로 초기 확인 단계에 적합하지만, 분석자가 보는 정보가 실제 실행 행위와 항상 일치하는 것은 아닙니다.


03 | 동적 분석의 개념

동적 분석은 통제된 환경에서 의심 파일을 실행하고 시스템 변화를 관찰하는 방법입니다. 프로세스 생성, 파일 변경, 레지스트리 수정, 네트워크 연결, 권한 사용과 같은 실행 결과를 확인합니다.

실행 행위를 직접 확인할 수 있다는 장점이 있지만, 분석 환경이 외부 네트워크나 내부 시스템과 연결되어 있으면 감염이 확산될 수 있으므로 반드시 격리와 복구 절차를 갖춰야 합니다.


04 | 두 분석의 핵심 차이

구분정적 분석동적 분석
실행 여부파일을 실행하지 않음격리된 환경에서 실행
주요 대상구조, 코드, 문자열, 메타데이터프로세스, 파일, 레지스트리, 네트워크 행위
장점상대적으로 안전하고 빠름실제 동작을 확인할 수 있음
한계난독화와 조건부 실행에 취약환경에 따라 행위가 나타나지 않을 수 있음
적합한 단계초기 분류와 분석 방향 설정의심 행위 검증과 영향 범위 확인

정적 분석은 ‘무엇이 들어 있는가’를 파악하는 데 강하고, 동적 분석은 ‘실제로 무엇을 하는가’를 확인하는 데 강합니다.


05 | 정적 분석에서 확인할 항목

먼저 파일의 해시값과 파일 형식을 기록해 동일 파일 여부를 구분합니다. 이후 파일명과 확장자가 실제 형식과 일치하는지, 비정상적인 압축이나 패킹 흔적이 있는지 확인합니다.

주요 확인 대상

문자열에서는 도메인, 경로, 명령어, 오류 메시지, 파일명처럼 행위와 연결될 수 있는 정보를 찾습니다. 실행 파일이라면 가져오기 함수와 라이브러리를 통해 파일 조작, 프로세스 생성, 네트워크 통신, 암호화 기능 사용 가능성을 추정할 수 있습니다.

다만 특정 문자열이나 함수가 발견됐다는 사실만으로 악성 행위를 확정해서는 안 됩니다. 정상 프로그램도 유사한 기능을 사용할 수 있으므로 다른 분석 결과와 함께 판단해야 합니다.


06 | 동적 분석에서 확인할 항목

동적 분석에서는 실행 전후의 시스템 상태를 비교합니다. 어떤 프로세스가 생성됐는지, 실행 파일이 추가되거나 변경됐는지, 자동 실행을 위한 설정이 바뀌었는지 살펴봅니다.

행위 중심의 관찰

네트워크 연결이 발생했다면 접속 대상, 통신 시점, 반복 여부와 전송 방향을 확인합니다. 문서 파일이나 사용자 정보를 읽는 행위, 보안 프로그램을 중지하려는 시도, 권한 상승이나 지속성 확보 시도도 주요 판단 대상입니다.

파일이 실행됐는데도 아무런 변화가 없다고 해서 안전하다고 단정할 수는 없습니다. 특정 날짜, 사용자 행동, 네트워크 응답 또는 시스템 조건이 충족될 때만 작동하는 악성코드도 있기 때문입니다.


07 | 정적 분석의 장점과 한계

정적 분석의 가장 큰 장점은 의심 파일을 실행하지 않고도 빠르게 분류할 수 있다는 점입니다. 대량의 파일을 해시, 문자열, 구조적 특징으로 비교하거나 분석 우선순위를 정할 때 유용합니다.

반면 난독화, 패킹, 암호화된 문자열, 동적으로 내려받는 코드가 사용되면 내부 정보가 잘 드러나지 않을 수 있습니다. 코드가 실제로 실행되는 조건을 정적 정보만으로 정확하게 파악하기도 어렵습니다.


08 | 동적 분석의 장점과 한계

동적 분석은 실행 과정에서 나타나는 실제 변화를 확인할 수 있어 악성 여부와 영향 범위를 판단하는 데 강합니다. 정적 분석으로 해석하기 어려운 난독화 코드도 실행 시점의 행위로 확인할 수 있습니다.

그러나 가상환경이나 분석 도구를 감지하면 악성 행위를 중단하는 샘플이 있습니다. 실행 조건이 충족되지 않거나 분석 시간 안에 작동하지 않는 경우에도 결과가 제한됩니다. 따라서 ‘관찰되지 않음’과 ‘악성 행위가 없음’은 같은 의미가 아닙니다.


09 | 분석 절차 비교

일반적인 분석은 파일 확보와 보존에서 시작합니다. 원본을 임의로 실행하거나 수정하지 말고, 파일의 출처와 발견 시점, 관련 시스템 정보를 함께 기록합니다.

그다음 정적 분석으로 파일 유형과 기본 특징을 파악하고, 의심스러운 기능이나 네트워크 지표를 정리합니다. 이후 격리된 동적 분석 환경에서 실행 전 상태를 저장한 뒤 행위를 관찰합니다. 마지막으로 두 결과를 비교해 탐지 지표와 대응 조치를 정리합니다.

분석 과정에서 생성된 로그는 시간순으로 정리해야 합니다. 같은 파일이라도 실행 조건이나 환경에 따라 결과가 달라질 수 있으므로 분석 환경과 설정도 함께 기록하는 것이 좋습니다.


10 | 실제 분석 사례

예를 들어 이메일 첨부파일이 의심되는 상황에서는 먼저 파일 확장자와 실제 형식이 일치하는지 확인하고, 문자열과 포함된 개체를 조사합니다. 문서 안에 외부 연결이나 실행을 유도하는 요소가 보이면 정적 분석 단계에서 위험 신호로 분류할 수 있습니다.

이후 격리된 환경에서 문서를 열었을 때 별도 프로세스가 생성되거나 외부 주소로 연결되는지 관찰합니다. 정적 분석에서 발견한 의심 문자열과 동적 분석에서 확인한 연결·파일 생성 행위가 일치하면 탐지와 차단의 근거가 더욱 명확해집니다.


11 | 난독화와 탐지 회피 대응

난독화는 문자열이나 코드 구조를 알아보기 어렵게 만들어 분석을 방해하는 기법입니다. 패킹된 파일은 실행 시 메모리에서 코드가 풀릴 수 있으므로 정적 분석 결과만으로는 기능을 충분히 확인하기 어렵습니다.

이때는 파일 구조와 패킹 여부를 먼저 기록한 뒤, 실행 전후의 메모리·프로세스·네트워크 변화를 함께 살펴야 합니다. 분석 도구를 회피하는 특성이 의심되면 하나의 결과에 의존하지 말고 파일 특징, 시스템 로그, 네트워크 기록을 종합해 판단합니다.


12 | 안전한 분석 환경 구성

동적 분석은 실제 업무용 컴퓨터나 내부망에 연결된 시스템에서 수행하면 안 됩니다. 분석 전용 가상환경을 사용하고, 원본 시스템과 분리된 네트워크 및 복구 가능한 상태를 준비해야 합니다.

분석이 끝난 뒤에는 가상환경을 초기 상태로 되돌리고 생성된 파일과 로그를 별도로 보관합니다. 공유 폴더, 클립보드, 호스트 장치 연결처럼 호스트 시스템과 데이터를 주고받는 기능도 필요성을 검토해 최소화해야 합니다.

출처가 불분명한 파일을 직접 실행하는 것은 일반 사용자에게 권장되지 않습니다. 기업 환경에서는 보안 담당자나 침해사고 대응 절차에 따라 분석을 의뢰하는 편이 안전합니다.


13 | 어떤 분석을 먼저 선택할까

파일을 실행하지 않고 빠르게 위험도를 판단해야 한다면 정적 분석이 먼저입니다. 대량 파일을 분류하거나 의심 지표를 추출할 때도 정적 분석이 효율적입니다.

이미 실행된 파일의 영향 범위를 확인하거나 네트워크·파일·프로세스 변화를 검증해야 한다면 동적 분석이 필요합니다. 가장 실용적인 순서는 정적 분석으로 가설을 세우고, 동적 분석으로 그 가설을 확인하는 방식입니다.

상황우선 고려할 분석
파일을 실행하면 안 되는 초기 확인정적 분석
대량 파일의 빠른 분류정적 분석
실행 후 생성된 프로세스 확인동적 분석
네트워크 통신과 시스템 변경 확인동적 분석
난독화된 샘플의 종합 판단정적·동적 분석 병행

14 | 분석 결과를 대응에 활용하는 방법

분석 결과는 단순한 악성 여부 판정으로 끝내지 말고 실제 대응 항목으로 변환해야 합니다. 확인된 파일 해시, 경로, 도메인, IP 주소, 프로세스 이름과 같은 지표는 탐지·차단 규칙에 활용할 수 있습니다.

이미 실행된 정황이 있다면 해당 시스템을 네트워크에서 분리하고, 동일한 지표가 다른 장비에도 나타나는지 확인합니다. 사용자 계정과 자격 증명이 노출됐을 가능성이 있으면 관련 계정의 보호 조치도 검토해야 합니다.

분석 결과에는 확인된 사실과 추정 내용을 구분해 기록합니다. 행위가 관찰되지 않았다는 사실을 안전하다는 결론으로 확대하지 않는 것이 중요합니다.


☑ 체크리스트

□ 원본 파일을 실행하거나 수정하지 않고 별도로 보존했는가

□ 파일 해시값과 발견 경로·시점을 기록했는가

□ 정적 분석과 동적 분석의 결과를 구분해 정리했는가

□ 동적 분석을 격리된 복구 가능 환경에서 수행했는가

□ 프로세스·파일·레지스트리·네트워크 변화를 확인했는가

□ 확인된 탐지 지표를 다른 시스템에서도 점검했는가

□ 관찰되지 않은 행위를 안전하다고 단정하지 않았는가


📖 자주하는 질문 Q&A

정적 분석만으로 악성코드 여부를 확정할 수 있나요?

일부 파일은 정적 특징만으로도 높은 확률로 분류할 수 있지만, 정적 분석만으로 모든 실행 행위를 확인하기는 어렵습니다. 난독화나 조건부 실행이 사용됐다면 동적 분석과 로그 검토를 함께 진행해야 합니다.

동적 분석이 정적 분석보다 항상 정확한가요?

그렇지는 않습니다. 동적 분석은 실제 행위를 보여주지만, 특정 환경이나 조건에서만 실행되는 기능을 놓칠 수 있습니다. 두 방식은 서로 다른 정보를 제공하므로 함께 사용해야 판단의 빈틈을 줄일 수 있습니다.

악성코드 의심 파일을 개인 컴퓨터에서 실행해도 되나요?

실행하지 않는 것이 안전합니다. 악성 파일은 개인정보 탈취, 파일 손상, 계정 침해 또는 네트워크 확산을 일으킬 수 있으므로 보안 전문 인력이나 조직의 대응 절차를 통해 확인해야 합니다.

정적 분석과 동적 분석의 가장 큰 차이는 무엇인가요?

정적 분석은 실행하지 않은 상태에서 파일의 구조와 코드를 확인하고, 동적 분석은 격리된 환경에서 실행한 뒤 실제 시스템 변화를 관찰한다는 점이 가장 큰 차이입니다.


📝 마무리

정적 분석은 악성코드의 구조와 잠재 기능을 빠르게 파악하는 데 적합하고, 동적 분석은 실행 중 나타나는 실제 행위를 확인하는 데 적합합니다. 안전한 분석을 위해서는 정적 분석으로 범위를 좁힌 뒤 격리된 환경에서 동적 분석을 진행하고, 결과를 시스템 대응과 탐지 규칙에 연결해야 합니다.

#악성코드 #악성코드분석 #정적분석 #동적분석 #악성코드정적분석 #악성코드동적분석 #정적분석동적분석차이 #멀웨어분석 #보안분석 #사이버보안 #정보보안 #침해사고대응 #악성파일분석 #실행파일분석 #바이러스분석 #랜섬웨어분석 #트로이목마분석 #샌드박스분석 #리버스엔지니어링 #역공학 #디버깅 #악성코드탐지 #위협분석 #보안관제 #보안실무 #정적분석방법 #동적분석방법 #악성코드대응 #분석환경보안