Security/보안관제
악성코드 정적, 동적분석
westcold
2024. 9. 27. 22:53
악성코드 분석에는 크게 3가지로 나눌 수 있다 기초분석, 정적분석, 동적분석
기초분석도 악성코드를 실행시켜서 하는 형태가 아니기 때문에 정적분석 범위 안에 들어갈 수 있다.
정적 분석
- 정적 분석은 악성코드를 실행하지 않고 악성코드의 코드와 리소스를 분석하는 방법이다. 코드 실행 없이 파일의 구조와 내용을 분석하여 악성코드가 어떻게 동작할지 예측한다.
정적 분석의 특징:
- 파일의 해시 값, 문자열 패턴, 메타데이터 확인 가능: 파일의 고유한 해시 값을 통해 파일의 동일성 및 악성 여부를 확인할 수 있으며, 문자열 패턴을 분석해 악성 활동을 추정할 수 있다.
- 비교적 안전: 악성코드를 실행하지 않기 때문에 비교적 안전하지만, 코드 자체가 위험 요소를 포함할 수 있어 혹시나 파일이 실행하는 경우가 발생할 수 있으므로 가상 환경에서 분석하는 것이 권장된다.
- 난독화 대응 어려움: 악성코드가 난독화된 경우, 분석이 어려울 수 있다.
정적분석 방법
- 해당 파일의 해시값 확인 후 원본 파일의 해시값과 비교하고 다르다면 변조된 것, 해시값을 Virustotal에 검색
- 파일 패킹 여부 확인 및 PE 구조 확인을 한다.
- 악성 코드가 사용하는 문자열 확인한다.
- 리소스를 확인하여 악성 코드 실행 파일에 저장된 리소스 분석
동적 분석
- 동적 분석은 악성코드를 실제로 실행하여 실행 전후의 상태를 분석하고, 악성코드의 실제 동작을 관찰하는 방법이다. 시스템 콜, 파일 수정, 네트워크 트래픽 등 실제로 실행되는 프로그램의 행동을 확인할 수 있다.
동적 분석의 특징:
- 직관적인 분석: 실행 중인 악성코드가 시스템에서 어떤 동작을 하는지 명확하게 파악할 수 있다.
- 가상 환경에서 분석: 악성코드를 직접 실행하기 때문에 반드시 가상 환경에서 진행해야 한다.
- 반복 분석 필요: 악성코드는 환경에 따라 다르게 동작할 수 있어 2회 이상 분석을 통해 더 명확한 결과를 얻을 수 있다.
동적분석 방법
- Vmware 또는 VirtualBox 등 을 이용해 가상 샌드박스 환경을 구축한다.
- 의심스러운 파일을 관리자 권한으로 실행 후 생성되는 프로세스 확인
- 레지스트리 및 파일 변화 확인
- 패킷 캡쳐 툴로 네트워크 동작 확인
(미리 보는) 동적분석 Tool
- 프로세스 관련 Tool - process explore
- 파일 및 레지스트리 관련 Tool - autoruns
- 네트워크 관련 Tool - wireshark
정적 분석과 동적 분석의 차이점
구분정적 분석동적 분석
분석 방법 | 악성코드 실행 없이 코드와 리소스를 분석 | 악성코드를 실행하여 실행 전후 상태를 분석 |
분석 대상 | 파일의 해시 값, 문자열, 메타데이터 분석 | 실행 후 시스템 콜, 파일 수정, 네트워크 트래픽 분석 |
분석 시간 | 비교적 빠름 | 실행 과정 모니터링으로 시간이 더 소요됨 |
위험성 | 비교적 안전하지만 가상 환경에서 진행 필요 | 악성코드 실행으로 시스템에 피해를 줄 수 있음 |
환경 의존성 | 실행 환경과 무관 | 실행 환경에 따라 다른 결과가 나올 수 있음 |
반복 분석 | 단일 분석 가능 | 2회 이상 반복 분석 필요 |
정적 분석과 동적 분석은 각각의 장단점이 있어, 보다 정확한 분석을 위해서는 두 방법을 병행하는 것이 좋다.
동적/정적 분석을 위한 Tool 조사 및 사용법
정적분석
- VirusTotal :
- 백신에 따른 악성코드 확인과 해시값 조회를 통한 과거 검사 이력 확인을 할 수 있다.
- 사용법: VirusTotal에 파일을 업로드하면, 여러 보안 엔진이 파일의 해시값을 통해 악성 여부를 분석한다.
- Exeinfo PE :
- BinText :
- 실행 파일 내에서 문자열을 나열하여, 중요한 정보를 찾는 도구이다.
- 도메인 주소, ip주소, 실행파일, 명령어, 함수 등을 분석하여 악성코드와 관련된 정보가 있는지 확인한다.
- 패킹이 되어있을 경우에는 제대로 된 정보가 나오지 않기 때문에 언패킹을 진행한 후에 사용해야 한다.
- 사용법: 분석할 파일을 선택하고, 추출된 문자열을 통해 의심스러운 정보를 확인한다
동적분석
- Process Explorer :
- 시스템에서 실행 중인 모든 프로세스를 실시간으로 모니터링하는 도구이다.
- 실행 중인 프로세스 파악 및 우선권 변경, 정지, 강제 종료등 조치 기능을 포함하고 있다.
- 사용법: 실행한 후, 각 프로세스를 클릭하여 CPU, 메모리 사용량과 같은 상세 정보를 확인할 수 있다.
- Autoruns :
- 시스템 시작 시 자동으로 실행되는 모든 항목을 모니터링할 수 있는 도구이다. 악성코드의 지속성 유지 기법을 분석할 때 유용하다.
- 주의사항: 악성 코드 분석 시 어떤 부분이 변경되었는지 확인하기 위해 해당 악성 파일을 실행하기 전 스냅샷을 촬영하고 실행 후 스냅샷과 비교추천
- WireShark :
- 네트워크 트래픽을 분석하는 도구로, 악성코드가 통신하는 서버나 전송되는 데이터를 모니터링할 수 있다.
- 사용법: 네트워크 인터페이스를 선택하고 실시간 패킷을 캡처한 후 분석한다.
이러한 도구들을 활용하면 악성코드의 정적/동적 분석을 효과적으로 수행할 수 있다.
참고
악성 코드 정적 분석 ( 특징, 방법, 정적 분석 툴, 패킹, PE 구조) — Maker's security (tistory.com)
Wireshark란? / 설치법 :: hongPossible (tistory.com)
자세한 사용법 :
정적 분석 Tool ( Exeinfo PE, PEiD ) 기능 및 사용 — Maker's security (tistory.com)
파일에 포함된 문자열 확인 툴 ( BinText, Strings ) 기능 및 사용법 — Maker's security (tistory.com)
ppt