본문 바로가기
AI스쿨 리팩토링

12주차 - 정적분석 & 동적분석

by By 풀스택다이버 2025. 6. 28.

0. 과제 및 과정 소개

12주차 정적분석, 동적분석이란.pptx
1.85MB

 

과제 발표에 사용한 PPT파일을 첨부합니다. 이 과제는 AI스쿨 리팩토링 보안 과정의 일부로 2024년 2월 17일에 발표되었으며 정적분석의 정의와 특징, 동적분석의 정의와 특징, 정적분석 도구와 동적분석 도구 개괄을 다루었습니다. 이중 자세한 도구별 사용법은 14주차에 등재될 예정이며, 이 글에서는 용도별 정리표만 올릴 것입니다.

 

만약 리팩토링 교육과정에 참여하고자 하신다면 아래 AI스쿨 공식 카페에 방문해 주세요.

 https://cafe.naver.com/itscholar

 

정보보안전문가 취업카페 스칼라 : 네이버 카페

비전공자 전문IT교육, 정보보안전문가, 보안을 아는 개발자, AI 양성교육, IT기술리더, 창업가 양성

cafe.naver.com

 


1. 정적분석(Static Analysis)이란?

코드를 탐색하는 정적분석, Chatgpt 생성

 

악성코드 분석은 크게 정적분석동적분석으로 나뉘며, 이 중 정적분석파일을 실행하지 않고 내부 구조를 살펴보는 방식입니다. 말 그대로, 악성코드를 “정지된 상태”에서 해부하듯 분석하는 것입니다. 

🔍1-1. 정적분석의 정의

정적분석(static analysis)은 일반적으로 코드를 실행하지 않고 분석하는 방식을 의미합니다. 프로그램의 실행 흐름이나 외부 동작을 관찰하지 않고도, 내부에 포함된 코드, 문자열, 메타데이터, 바이너리 구조 등을 파악함으로써 해당 파일이 정상인지, 악성인지 판단하는 데 사용됩니다.

 

악성코드 분석에서는 보통 다음과 같은 목표를 갖고 진행됩니다.

  • 코드에 포함된 시그니처(Signature), 함수 호출, API 사용 등을 기반으로 악성 행위를 식별
  • 코드 내 포함된 문자열, 경로, 도메인 등 정보를 통해 작동방식이나 캠페인 특성 파악
  • 계통 분석을 통해 해당 악성코드가 기존 위협군과 유사한지 판별

⚙️1-2. 정적분석의 주요 특징

1. 빠르고 간단한 접근

정적분석은 실행 없이 파일 자체의 정보를 기준으로 분석하기 때문에 빠른 결과 도출이 가능합니다. 디버거나 샘플 실행 환경이 필요 없으며, 자동화된 도구만으로 메타데이터, 파일 구조, 문자열 등을 손쉽게 살펴볼 수 있습니다. 단일 샘플의 악성 여부, 대략적인 계통 정보, 패커(Packer) 사용 여부 등을 빠르게 알아낼 수 있어 선제적 분석에 유리합니다.

패커란?
악성코드를 유포하는 해커는 실행파일(EXE)의 크기를 줄이거나 내부 구조를 숨기려 합니다. 이때, 압축 또는 해독을 어렵게 하는 난독화 도구를 사용하는데, 이를 패커라 합니다.

 

2. 시그니처 기반 탐지

정적분석의 핵심은 대부분 시그니처 기반 분석입니다. 즉, 악성코드의 바이너리 정보나 문자열을 고유한 지문처럼 인식하여, 기존에 알려진 악성 시그니처 데이터베이스와 비교하는 방식입니다.

  • 시그니처는 일반적으로 해시(MD5, SHA256), 패턴 문자열, 또는 바이너리 구조 패턴 등으로 구성됩니다.
  • 이미 알려진 악성코드에는 높은 정확도를 보이지만, 새롭게 등장한 변종이나 암호화된 파일, 혹은 조건부 실행 악성코드에 대해서는 한계가 있습니다.

⚠️ 1-3. 정적분석의 한계

정적분석은 빠르고 효과적인 초벌 분석 수단이지만, 다음과 같은 한계를 갖고 있습니다.

  1. 신종 및 변종 악성코드 탐지에 취약
    • 시그니처 기반 탐지는 이미 알려진 위협에 대해서는 강력하지만, 새로운 악성코드나 조금이라도 변형된 코드에는 오탐 또는 미탐이 발생할 수 있습니다.
    • 특히 패커나 암호화, 난독화 기술이 적용된 경우 내부 코드 파악이 어려워집니다.
  2. 조건부 동작을 감지하기 어려움
    • 일부 악성코드는 특정 시간, 로그인 사용자 정보, 특정 네트워크 환경 등 조건이 만족되어야 악성 행위를 합니다.
    • 정적분석은 실행을 전제로 하지 않기 때문에, 이러한 조건부 행위를 놓칠 수 있습니다.
  3. 실제 동작 확인 불가능
    • 악성코드가 실제로 어떤 파일을 생성하고, 어떤 네트워크로 통신하며, 어떤 프로세스를 감염시키는지는 정적분석만으로는 확인할 수 없습니다.
    • 이 부분은 반드시 동적분석과의 병행 분석이 필요합니다.

정적분석은 첫 단계로 매우 유용하지만, 최종 판단에는 항상 동적분석과 크로스체크가 필요합니다.

 

예를 들어, 특정 시간대나 네트워크 조건에서만 악성 동작을 하는 경우, 정적분석만으로는 그것을 알기 어렵습니다. 이런 경우엔 반드시 동적분석과 병행이 필요합니다.


🧰 1-4. 정적분석 도구 정리

아래는 정적분석에서 자주 사용하는 도구들을 기능별로 분류한 표입니다.

분석 항목 사용 도구
기초분석, 파일 해시 및 백신 진단 VirusTotal
패킹 여부 확인 Exeinfo PE
파일 구조 분석 PEView, CFF Explorer, PE-bear
문자열 추출 Bintext, strings
리소스 및 시그니처 확인 Resource Hacker, HxD

 

이 도구들은 정적분석의 다양한 요소를 빠르게 파악할 수 있게 돕습니다. 12주차의 간단한 설명만으로는 해당 기능들을 파악하기 어렵기 때문에 14주차의 도구별 상세 설명에서 다루겠습니다.

 


2. 동적분석(Dynamic Analysis)이란?

코드를 직접 가상환경에서 실행하는 동적 분석, Chatgpt 생성

 

🔍2-1. 동적분석의 정의

동적분석은 악성코드를 실제로 실행하거나 모의 실행 환경에서 동작을 관찰함으로써, 해당 프로그램이 시스템에서 어떤 행동을 하는지를 파악하는 분석 방법입니다. 정적분석이 ‘정지된 코드’를 보는 것이라면, 동적분석은 ‘실제로 작동하는 모습’을 분석하는 것입니다.

보통 샌드박스, 가상머신, 격리된 분석 환경 등에서 파일을 실행시킨 후, 다음과 같은 악성 행위를 추적합니다.

  • 외부 서버와의 통신 여부 및 전송 데이터 확인 (ex. C2 서버)
  • 시스템 변경 사항 (파일 생성, 레지스트리 수정 등)
  • 실행 중 생성되는 새로운 프로세스나 자식 프로세스
  • 네트워크 트래픽 및 의심스러운 API 호출 등

즉, 악성코드가 실제 환경에서 어떤 영향을 끼치는지, 어떤 방식으로 공격을 수행하는지를 행위 기반으로 확인하는 것이 동적분석의 핵심입니다.


⚙️2-2. 동적분석의 주요 특징

 

  1. 실행 기반의 실시간 분석
    동적분석은 이름 그대로, 악성코드를 ‘실행시켜보는 것’이 출발점입니다. 실제로 프로그램이 동작하는 상황을 시뮬레이션하거나, 샌드박스 환경에서 가동시키고 나서 그 코드가 시스템에 어떤 영향을 주는지를 실시간으로 관찰합니다. 예를 들어, 파일을 몰래 생성하거나, 원격 명령어를 받아 작동하는지, 어떤 IP와 통신을 시도하는지 등을 모든 행위 기반으로 추적할 수 있습니다.
  2. 정적분석으로는 확인되지 않는 정보 확보
    정적분석은 ‘정지된 상태의 코드’를 보는 것이라면, 동적분석은 ‘실행 중의 행동’을 보는 것입니다. 특히 다음과 같은 정보들은 정적분석만으로는 파악하기 어렵고, 동적분석을 통해서만 얻을 수 있습니다.
    • 실제 실행 시 호출되는 외부 IP 주소 및 포트 정보
    • 명령제어(C2) 서버와의 통신 여부
    • 암호화된 데이터의 복호화 결과
    • 메모리 내에서 동적으로 생성된 코드
  3. 우회기법 탐지 가능
    최근 악성코드는 정적분석이나 백신 탐지를 피하기 위해 다양한 우회 기법을 사용합니다. 예를 들어, 가상환경에서는 실행을 하지 않거나, 특정 시간대, 사용자, 국가에서만 작동하도록 설정되기도 합니다. 이처럼 조건 기반 우회 로직은 직접 실행해보아야 확인 가능하며, 이를 추적하는 데 동적분석이 매우 효과적입니다.
  4. 행위 기반의 탐지 원리 활용
    동적분석은 정적 시그니처보다 한발 더 나아가, ‘어떤 행위를 했는지’를 기준으로 판단합니다. 예를 들어
    • 특정 레지스트리 수정
    • 비정상적인 시스템 프로세스를 생성
    • 자주 쓰는 DLL 파일을 훼손
    • 사용자 데이터를 외부로 전송하려는 시도
      이들은 악성으로 간주될 수 있습니다. 이러한 행동들은 단순한 코드 비교로는 드러나지 않지만, 행위 패턴 분석으로 실시간 대응이 가능합니다.
  5. 시나리오 기반 공격 모사 가능
    분석자는 동적분석 환경에서 다양한 조건을 시뮬레이션함으로써, 공격자가 실제로 어떤 경로로 침투하고 어떻게 시스템을 감염시키는지 공격 흐름을 재현할 수 있습니다. 이를 통해, 취약점 존재 여부, 사용자 개입 필요성, 감염 전파 조건 등을 종합적으로 파악할 수 있습니다.

⚠️ 2-3. 동적분석의 한계

  1. 실행 환경 제한
    • 샌드박스나 가상환경에서는 일부 악성코드가 실행을 회피하거나, 기만적인 행위를 보일 수 있습니다. 이를 극복하기 위해서는 같은 환경 기준으로도 악성코드를 여러 번 실행할 필요가 있습니다.
    • 예를 들어, 특정 사용자가 로그인하지 않으면 작동하지 않는 악성코드는 분석 과정에서 나타나지 않을 수 있습니다.
  2. 시간/자원 소모가 큼
    • 실제로 실행하고 결과를 모니터링해야 하므로 분석에 시간이 오래 걸릴 수 있으며, 고사양 분석환경이 필요할 때도 있습니다.
  3. 2차 피해 가능성
    • 분석 과정에서 악성코드가 의도치 않게 실제 시스템에 피해를 줄 위험이 있습니다. 반드시 격리된 환경에서 분석해야 합니다.

2-4. 동적분석 기능별 도구 정리

아래는 동적분석에서 자주 사용하는 도구들을 기능별로 분류한 표입니다.

분석 항목 사용 도구
프로세스 모니터링 Process Explorer, Process Monitor
네트워크 트래픽 확인 Wireshark, Smsniff
열려 있는 포트 및 연결 확인 CurrPorts (CPorts)
레지스트리 변경 감지 Regshot
자동 실행 항목 확인 Autoruns

 

이 도구들은 동적분석의 다양한 요소를 빠르게 파악할 수 있게 돕습니다. 12주차의 간단한 설명만으로는 해당 기능들을 파악하기 어렵기 때문에 14주차의 도구별 상세 설명에서 다루겠습니다.

 

참고자료

이하는 글을 작성하기 위해 주로 참고한 자료들입니다.

https://blog.naver.com/gs_info/220857298951

 

정적분석과 동적분석, 정의와 차이

안녕하세요, (주)보안클라우드입니다. 포스트할 글을 고민하다가 매번 방문하는 고객분들께서 많이 물어보...

blog.naver.com

https://isc9511.tistory.com/33

 

정적, 동적 분석 (Static, Dynamic Analysis)

* 정적 분석 : 소프트웨어가 실행되지 않는 환경 하, 소스 코드 의미를 분석, 결함을 찾아내는 분석 기법 * 정적 분석 분류 분류 내용 소스 코드 분석 시큐어 코딩 가이드 기반 취약한 항목의 존재

isc9511.tistory.com

https://itcase.tistory.com/entry/11-%EC%A0%95%EC%A0%81-%EB%8F%99%EC%A0%81%EB%B6%84%EC%84%9D-Tools

 

11. 정적 / 동적분석 / Tools

정적분석과 동적분석의 개념과 각각의 Tool(도구)는 무엇이 있는지 알아보자. 위의 개념들도 중요하지만, 툴을 직접적으로 사용해서 악성코드 분석에 활용하는 것이 앞으로 좀 더 중요하게 봐야

itcase.tistory.com