[STUDY] Malware Detection based on AI
Post-Reading Study: Malware Detection
책 [인공지능 보안을 배우다]를 읽고 6장~10장의 PJ1에 대해 실습한 내용입니다.
Learnings
Malware Basics
악성코드는 컴퓨터(사용자)에게 악영향을 끼칠 수 있는 모든 코드 또는 프로그램을 의미한다. 대부분의 사람들이 바이러스, 악성코드, 악성 프로그램이라는 다양한 이름을 혼용해서 사용하고 있는데 대한민국 법령에서는 악성 프로그램이라는 용어를 사용하며 다음과 같이 정의한다.
정보통신시스템, 데이터 또는 프로그램 등을 훼손·멸실·변경·위조하거나 그 운용을 방해할 수 있는 프로그램 - 정보통신망 이용촉진 및 정보보호 등에 관한 법률 제48조 제2항 中
다른 파일을 감염시키는 악성 프로그램인 바이러스, 자기 복제와 확산 기능을 가지는 악성 프로그램인 웜, 데이터를 암호화하여 볼모로 잡고 몸값을 요구하는 랜섬웨어 등 다양한 유형으로 범주화되지만 대부분의 경우 여러 특성이 혼합된 상태로 존재한다.
How Malware Spreads
구분 | 설명 | 악성코드 설치 | 악성코드 실행 | 실행 주체 |
---|---|---|---|---|
이동식 저장매체 |
USB를 직접 컴퓨터에 연결 | Autorun 기능으로 설치와 동시에 실행 |
Autorun 기능으로 설치와 동시에 실행 |
공격자 |
이동식 저장매체 |
USB를 직접 컴퓨터에 연결 | 파일 복사 | 파일 실행 | 사용자 |
이메일 | 첨부 파일 내부에 악성코드를 삽입 후 이메일로 전송 |
첨부 파일 다운로드 | 첨부 파일 실행 | 사용자 |
웹 페이지 | 웹 페이지 내부에 공격 코드와 함께 악성코드 삽입 후 대기 |
웹페이지 접속 시 설치와 동시에 실행 |
웹페이지 접속 시 설치와 동시에 실행 |
사용자 |
P2P 사이트 | 정상 프로그램 또는 미디어 파일에 악성코드 삽입 후 공유 |
파일 다운로드 | 파일 실행 | 사용자 |
악성코드의 목적은 코드를 실행하는 것이다. 사용자로 하여금 정상 프로그램으로의 착각을 유도하거나, 사용자 몰래 실행하는 등의 방법이 있지만 그렇게 쉽지 않다. 위 표는 악성코드의 대표적인 유포 방식인데 최종적으로는 사용자의 직·간접적인 실행을 필요로 한다. USB의 Autorun 기능을 이용한 방식은 공격자의 물리적 접근을 전제로 한다.
Malware Analysis
아무리 복잡한 악성코드일지라도 결국 모든 악성코드도 프로그램일 뿐이며, 이에 따라 프로그램을 분석하는 방법인 역공학(Reverse Engineering) 기술을 통해 이용해 분석한다. 좌측의 이미지는 기술의 복잡도를 기준으로 분류한 악성코드 분석 기법 흐름도를 보여준다. 위쪽에 위치할수록 분석에 드는 노력과 시간이 많이 소요된다고 볼 수 있다. 이러한 악성코드 분석 기법에 대표적인 예시들은 아래와 같다.
Static
악성코드를 실행하지 않고 정적인 속성, 코드 정보를 이용하는 분석 기법이다. 일반적인 CTF에서의 리버싱에서 가장 널리 이루어지는 분석 기법이며 난이도와 복잡도가 높은만큼 질좋은 정보를 분석할 수 있는 기법이지만 분석한 코드가 실제로 실행된다는 보장이 없으며 안티 리버싱 기법이 적용되어 있거나 데이터가 암호화되어 있다면 분석이 매우 어려워질 수 있다.
Dynamic
정적 분석과 달리 악성코드를 실행하면서 분석하는 기법으로 모니터링 도구를 활용하여 악성코드의 행위를 분석하는 기법이다. 프로그램이 실행되는 환경 아래, 입출력 데이터를를 포함한 사용자와의 상호작용과 그에 따른 변화들을 점검한다. 정적 분석과 달리 오랜 시간의 분석 필요없이 프로그램의 개략적인 동작을 파악할 수 있지만 분석 환경의 구축과 안티 디버깅 등의 단점들이 존재한다.
Automated
자동화 분석은 샌드박스 환경에서 악성코드를 실행해 정보를 얻어내는 분석 기법이다. 초기 구축에 시간과 비용이 소요되지만, 구축 후에는 빠르고 효율적으로 악성코드의 정보를 추출할 수 있다는 장점이 있다. 자동화 분석 프로그램을 통해 파일의 정적 정보를 추출한 뒤 가상 환경에서 실행함으로써 동적 정보 또한 얻을 수 있지만 Anti-VM 등의 기능이 존재한다면 핵심되는 기능을 파악하지 못할 수 있다.
Malware Detection
사용자들은 악성코드를 탐지하고 치료하는 시스템을 백신(Vaccine), 안티 바이러스(Anti-Virus) 또는 안티 악성코드(Anti-Malware) 등의 용어로 부른다. 모두 같은 의미이다. 일반적으로 악성코드 탐지는 시그니처를 기반으로 한다. 미리 알려진 악성코드의 시그니처를 데이터베이스에 저장하고 새로 얻게된 프로그램과 비교하여 파일을 검사한다.
Vaccine
Constraint
Project
Overview
- 수행 기간: 2024.10.15 ~ 2024.11.19
- 수행 목적: 기존 시그니처 기반 탐지 Anti-Malware 단점 극복, 인공지능 및 정보보안 지식 학습
- 프로젝트 내용: AI 기반의 Anti-Malware 구현
- 사용 언어 및 개발 환경: Python, Ubuntu