본문 바로가기
IT_정보보안/보안관제 프로젝트

11. 정적 / 동적분석 / Tools

by jys275 2024. 1. 9.

정적분석과 동적분석의 개념과 각각의 Tool(도구)는 무엇이 있는지 알아보자.
 
위의 개념들도 중요하지만, 툴을 직접적으로 사용해서
악성코드 분석에 활용하는 것이 앞으로 좀 더 중요하게 봐야 될 포인트라고 할 수 있다.
 
그래서 앞으로 가상 환경을 구성하여 해당 환경 내에서 직접적으로 툴을 직접 사용해 보면서  
사용법을 익히고 악성코드 분석을 진행하는 과정을 거칠 것이다.
 
 


 
 
정적분석, 동적분석 - 개념
 
 
악성 코드 분석할 때 기본적으로 정적분석과 동적분석 두 가지로 나눠서 진행한다. 
 
이 정적분석과 동적분석의 방향성을 제시해 주는 것이 기초분석 즉, Virustotal을 통해서 진행하는 분석방법인 것이다.
그리고 분석을 진행할 때 분석 방법에 해당하는 각각의 도구들을 적절히 활용하여 분석을 진행하는 것이다.
 
먼저 정적분석과 동적분석을 간단히 정리해 보자.
정적분석, 동적분석이란 모두 코드의 특징과 구조를 분석하는 프로세스이다.

해당 분석 방법을 악성코드를 분석하는 데 활용하여, 악성코드의 특징을 식별하고 동작을 이해하는 데 도움을 줄 수 있는 것이다.

정적분석, 동적분석을 위한 툴은 코드의 오류, 취약성 및 비효율성을 찾아 수정하는 데 널리 사용된다.

여러 종류의 Tool을 프로젝트 목표, 요구사항, 제약 조건, 기본 설정 등을 고려하여, 적합하게 사용할 수 있다.
 
 
정적분석(Static Analysis)
코드의 실행 없이 파일 자체의 특징과 구조를 분석하는 프로세스이다.
악성코드의 정적분석은 악성코드 *바이너리 파일의 서명을 확인하여 수행됨.
 
*바이너리 서명(Binary Signature) : 디지털 서명(Digital Signature)의 한 형태로 주로 소프트웨어나 파일의
원래의 출처를 확인하고 손상 여부를 검증하는 데 사용됨. 일종의 식별자 또는 지문으로 볼 수 있으며,
기본 아이디어는 파일 또는 소프트웨어가 특정한 키를 사용하여 생성된 해시 값을 보유하고 있다는 것.
 
즉, 서명은 바이너리 파일의 고유 식별이며, 바이너리 파일의 암호화 해시를 계산하고
각 구성 요소를 이해하면 서명을 결정하는 데 도움이 된다.
 
 
동적분석(Dynamic Analysis)
코드가 실행되는 동안 그 동작을 실시간으로 분석하는 프로세스이다.
악성코드 분석의 경우 시뮬레이션, 격리된 환경에서 악성 파일을 실행하고, 실행 중에 발생하는 동작과 효과를 모니터링한다.


 


 
 
정적분석, 동적분석 - 특징(장단점, 차이점)
 
 
정적분석

시그니처 기반(Signature-based, 서명 기반)

악성코드 정적분석은 악성코드 바이너리의 디지털 서명, 디지털 발자국을
이미 알려진 악성 서명 데이터베이스와 비교하는 서명 기반 탐지 접근 방식을 사용한다.

이미 알려진 시그니처를 기반으로 하기에, 새로운 유형의 악성코드에 대해 취약하다.
또한, 일부 형태의 악성코드는 서명을 모호하게 만들어 정적분석을 효과적이지 않게 만들 수 있다.
 

코드의 실행이 필요하지 않음

위와 같은 특징으로 악성코드의 기능과 성능을 ‘빠르게’ 식별할 수 있다.
또한 여러 도구를 자동화하여 신속한 분석이 가능할 수 있다.
 

간단함

문자열, 구조, 코드 등 악성코드 샘플의 속성만 평가하면 되므로 간단하다. 일반적인 악성코드에 자주 사용된다.
 
위와 같이 정적분석은 문자열, 바이너리 구조 등을 직접 분석하는 방법이다 보니 악성 코드가 실행되지 않는다.
 
즉, 가상 환경 내에서 진행하지 않아도 괜찮다고 생각하는 경우들도 있지만 실제로 정적 분석을 진행을 하다 보면,
내부의 코드를 하나하나 확인 및 진행을 하다 보면 실수로 코드를 실행하는 경우가 발생될 수 있다.
 
일반적인 로컬 환경에서 실행하는 코드를 잘못 건드려서 악성 코드를 실행시킬 수 있다는 점 때문에, 
항상 어떤 분석을 진행하든지 간에 가상 환경 내에서 분석하는 것들이 필요하다.
 
 
동적 분석

행위 기반(Behavior-based)

악성코드가 시스템 내에서 어떠한 행동을 보이는지 분석하기에, 새로운 위협과 알려지지 않은 위협을 식별할 수 있다.

코드의 실행이 필요함

악성코드를 안전하게 관찰하려면, 전체 시스템이나 네트워크를 감염시키지 않고
악성코드를 실행할 수 있는 격리된 테스트 환경(샌드박스 환경)이 필요하다.
 

정확함

악성코드가 어떠한 목적으로 작성됐는지, 어떻게 통신하는지, 회피 메커니즘 등
악성코드의 논리, 기능 등 심층적인 분석으로 정적분석에서는 알기 어려운 내용들을 알 수 있다.
 
즉, 정교하고 발전된 종류의 악성코드에 필요하다.
 
동적분석은 직접 악성코드를 실행시켜 악성코드를 실행시키기 전과 후를 비교하는 분석을 의미한다.
그렇기 때문에 무조건 가상환경 내에서만 진행을 해야 되는 것이다. 
 
정적분석은 한 가지 툴을 통해서 분석을 진행을 하더라도
정말로 악성 코드에 의해서 동작되는 행위가 맞는지 검증하는 과정을 반복적으로 수행하는 것들이 필요하다.
 
왜냐하면 동작 분석을 진행할 때, 악성 샘플을 클릭했을 때 악성만 동작하는 것이 이상적이지만
하필 그 찰나의 시점에 정상적인 프로세스가 같이 동작을 하는 경우들도 발생될 수 있다.
 
 


 
 
정적분석 - Tools
 
 
정적분석과 동적분석에 활용할 수 있는 툴들은 다양하다.
그중 대표적인 툴들이 어떻게 작용하고, 사용법은 무엇인지 알아보면서 간단히 이해하고 넘어가자.
 
먼저 악성코드의 정적분석을 위한 툴은 *디스어셈블러와 *디컴파일러 두 가지 범주로 나눌 수 있다.  

디스어셈블러(Disassembler)
코드의 바이너리 코드를 인간이 더 쉽게 읽을 수 있는 어셈블리 언어로 변환한다.

디컴파일러(Decompiler)
한 단계 더 나아가 C 또는 Java와 같은 고급 프로그래밍 언어로 악성 코드의 원본 소스 코드를 재구성 시도를 한다.
 
즉, 악성코드 바이너리 파일의 실행 파일이 디스어셈블러 로딩되어 기계 실행 코드가 어셈블리 언어 코드로 변환된다.
따라서 맬웨어 바이너리 파일에 대한 이러한 리버스 엔지니어링을 통해 사람이 쉽게 읽고 이해할 수 있는 것이다.
 
이렇게 분석가는 어셈블리 언어 코드를 살펴봄으로써 악성 코드를 더 잘 이해하게 된다. 
 

IDA Pro(Interactive Disassembler Professional,  http://www.hex-rays.com ) by Hex-Rays

 

Hex Rays – State-of-the-art binary code analysis solutions

Training Training In order to get the best out of them, the people behind IDA regularly organize training sessions, to allow users to perfect their understanding of the concepts & methodology. Training comprises theoretical and practical sections, with han

hex-rays.com

디스어셈블러 및 디버거, IDA Hex-Rays 플러그인을 통해 디컴파일 기능 제공한다.
광범위한 고급 분석 기능, 사용자가 기능을 확장하고 분석 작업을 자동화할 수 있는 사용자 친화적이다.
복잡한 악성 코드 샘플을 분석하기 위해서 효율적인 시각적 환경으로 제공한다.

디스어셈블링 : 원하는 파일을 실행시키면 어셈블리 코드로 표시함. 함수, 루프, 제어 흐름 등을 확인 가능.

‘Functions’ 메뉴 : 코드의 함수 목록을 확인하고, 각 함수의 어셈블리 코드를 확인하며, 함수의 시작과 끝, 역할을 파악.

‘Graphs’ 메뉴 : 그래프 모드로 전환하여, 함수 간의 호출 관계, 제어 흐름을 시각적으로 제공.

심볼 및 주석 : ‘N’ 키 주석, ‘X’ 키로 심볼을 추가하여 코드를 문서화하고 가독성을 높임.

분석 및 리버싱 : 함수의 동작과 제어 흐름을 파악하며, 코드의 의미를 추론하고 리버싱 작업 수행.

Cross References : ‘X’ 키를 사용하여 특정 함수나 주소에 대한 Cross References를 확인하여 
해당 코드가 어디에서 참조되었는지 분석.

플러그인 사용 : IDA Pro는 다양한 플러그인을 제공하므로, 분석을 자동화하거나 특수한 분석이 가능함.
 
 
Ghidra( http://www.nsa.gov ) by NSA

 

National Security Agency | Central Security Service

 

www.nsa.gov

미국 국가 안보국(National Security Agency, NSA)에서 개발하였고, 디스어셈블링, 디버깅, 리버싱 등 다양한 기능을 제공한다.
내장된 디컴파일러와 여러 분석가가 동일한 프로젝트에서 동시에 작업할 수 있는 협업 기능을 제공한다.

원하는 파일을 선택하면 ‘Listing’ 메뉴에서 어셈블리 코드를 확인할 수 있으며, 
‘Functions’ 탭에서 함수 목록 확인 가능. 그래프 모드, 심볼 및 주석 추가,  리버싱 작업 수행 가능.

‘Listing’ 메뉴 : 특정 주소나 데이터 참조를 확인하고, 해당 위치에서 데이터 구조 이해 가능.

스크립트 및 플러그인 활용 : Ghidra는 자체적 스크립팅 언어인 GSL(Ghidra Script Language)를 제공. 
자동화 및 사용자 지정 분석 스크립트 작성 가능.


Radare2 ( http://www.radare.org ) by Sergi Àlvarez

 

https://www.radare.org/

 

www.radare.org

디어셈블러 및 디버깅, 분해, 데이터 분석 기능이 포함되었다.
명령줄 인터페이스(Command Line Interface, CLI) 중심으로 동작하기에,  
프로그램이 아닌 사용자가 터미널에서 직접 명령어를 입력하여 활용한다.

다운로드 및 설치 : Github에서 소스코드를 직접 가져와 빌드하거나, 패키지 매니저를 통해 설치. 

실행 : ‘r2’ 명령어를 사용하여 Radare2 실행

대상 파일 열기 : “r2 /path/to/binary”

디어셈블링 : “pd 20” # 처음부터 20개의 어셈블리 명령어 표시.

함수 목록 확인 : “afl”

등 여러 명령어를 사용하여 분석 및 조작 수행.


이렇게 여러 정적분석 도구들이 존재한다. 하지만 앞으로는 악성코드 동적분석을 통해 탐지하고자 하는 패턴을 만들고,
그 탐지 패턴을 통해서 실제로 악성코드가 실행이 되었을 때, 제대로 탐지가 되는지 등의 포인트를 볼 예정이다.
 
즉, 정적분석에서 리버싱, 디스어셈블 등의 과정을 하기보다는 동적분석에 초점을 맞출 예정이다.
기본적으로 리버싱을 하기 위해서는 디스어셈블 관련 내용 및 리버싱하는 방법도 확실하게 익혀야 되기에,
진입장벽이 다른 것보다는 조금 높은 부분들이 있다.
 
 


 
 
동적분석 - Tools
 
 
동적분석 진행할 때, 기본적으로
 
1. 파일과 레지스트리 쪽에 분석하는 툴
2. 프로세스 쪽에서의 변화에 대해서 분석하는 툴
3. 네트워크 관련 변화에 대해서 분석하는 툴
 
세 가지 유형으로 나눠서 분석을 진행한다.
 
바로 밑에서 알아볼 Wireshark가 3번에 해당한다.
 
 
Wireshark( http://www.wiresharkfoundation.org ) by the Wireshark Foundation

 

Wireshark Foundation

Official Website of the Wireshark Foundation.

wiresharkfoundation.org

심층적인 네트워크 트래픽 검사를 가능하게 하는 네트워크 프로토콜 분석 도구이다.
네트워크 트래픽을 캡처하고 분석하여, 악성코드의 네트워크 활동을 추적하는 데 용이하다.
다양한 필터, 분석기, 통계 도구를 제공한다.

네트워크 인터페이스 선택 : Wireshark 실행 후 캡처할 네트워크 인터페이스 선택. 
이는 로컬 머신에서 실행 중인 모든 네트워크 트래픽을 캡처하는 데 사용.

필터링 옵션 사용 : 제공하는 다양한 프로토콜 및 필터링 옵션으로 
악성코드가 사용하는 특정 프로토콜이나 트래픽 패턴 추적 가능.

악성코드 실행 : 악성코드 샘플을 실행하고 동작을 캡처하려는 동안 Wireshark 활성화.

트래픽 분석 : Wireshark의 캡처 창에서는 악성코드 실행 과정에서 발생한 네트워크 트래픽을 분석함. 
악성코드와의 통신, C&C서버와의 상호작용, 이상 패턴, 비정상 트래픽 확인 가능.
 
Wireshark를 통해서 패킷을 원활하게 분석하기 위해서는 그동안 진행하면서 다루었던,
TCP와 UDP 그리고 프로토콜, 이러한 내용들을 정확하게 잘 알아야지만 
 
어느 부분에서 통신이 시작되고, 어디에서 끝나는 건지, 그리고 중간 과정에서 어떠한 내용들이 일어나는지 등을
정확하게 짚어볼 수 있다. 그동안 이론적인 내용 공부했던 것들이 이 와이어샤크를 통해서  네트워크 패킷을 분석하기 위함도 있다.
 
 
Sysinternals Suite( http://www.microsoft.com ) by Microsoft

 

Microsoft – 클라우드, 컴퓨터, 앱 및 게임

가정용 또는 비즈니스용 Microsoft 제품 및 서비스를 살펴보세요. Surface, Microsoft 365, Xbox, Windows, Azure 등을 쇼핑하세요. 다운로드 항목을 찾고 지원을 받으세요.

www.microsoft.com


Microsoft에서 개발한 고급 시스템 유틸리티 모음. 악성코드 정적분석을 위해 아래와 같은 다양한 도구들을 제공한다.

Process Explorer : 시스템에서 실행 중인 모든 프로세스와 해당 프로세스의 세부 정보를 제공. 동적 분석 시, 악성코드가 시스템 내에서 어떤 프로세스를 생성하고 어떤 리소스를 사용하는지를 확인하는 데 사용됨.

Process Monitor : 파일 시스템, 레지스트리, 네트워크 등에서 발생하는 활동을 실시간으로 기록. 악성코드의 동작을 추적하고 이상한 활동을 감지하는 데 사용.

Autoruns : 부팅 시 자동으로 실행되는 프로그램 및 서비스를 보여줌. 악성코드가 자동 실행되도록 설정된 항목을 확인하고 제거하는 데 사용.

TCP View : 현재 시스템에서 열려있는 TCP 및 UDP 포트와 연결된 프로세스를 보여줌. 악성코드의 네트워크 활동을 추적하는 데 사용.

이외에도 여러 도구들이 존재.


- Process Explorer, Process Monitor 등이 프로세스 쪽에서 어떠한 변화가 있는지 확인해 볼 수 있는 툴이다.
- Autoruns는 레지스트리 쪽에서 악성 코드를 실행시키기 전과 후에 어떠한 변화가 있는지 확인할 수 있는 툴이다.
- TCP View 같은 경우도 현재 나의 네트워크에서 악성 파일 실행에 의해서 동작되는 것들이 있는지,
연결되어 있는 페이지가 있는지, 연결을 시도하고 있는 것들이 있는지 등을 확인하기 위한 목적으로 사용된다.

 
 


 
 
앞으로는 툴을 기반으로 실제 사용과 해당 툴을 통해서 우리가 어떤 내용들을 얻을 수 있는지 등을 경험하고,
악성코드 샘플을 분석하는 과정을 가져볼 예정이다.

'IT_정보보안 > 보안관제 프로젝트' 카테고리의 다른 글

14. 악성코드 샘플 분석(1)  (1) 2024.01.28
13. 정적, 동적 Tool 실습  (1) 2024.01.24
12. 샘플 분석 환경 구성  (2) 2024.01.13
10. Virustotal  (1) 2023.12.24
9. 보안관제  (1) 2023.12.20