UJeongff/malware-analysis-ml

GitHub: UJeongff/malware-analysis-ml

基于 AI 的静态恶意代码检测系统,利用文件结构特征在不执行文件的情况下识别潜在威胁。

Stars: 0 | Forks: 0

# 🛡️ AI 기반 악성코드 사전 탐지 및 차단 시스템 ## 📌 프로젝트 개요 공공기관 및 주요 인프라를 겨냥한 신종 랜섬웨어 공격이 급증하는 가운데, 기존 **시그니처 기반(Signature-based) 백신**은 이미 알려진 위협에는 강하지만, **제로데이(Zero-day) 및 다형성 악성코드** 대응에는 무력합니다. 본 프로젝트는 파일을 **직접 실행하지 않고**, 파일의 구조적 특징(Windows API 호출 패턴)만으로 위험성을 사전 식별하는 **정적 분석(Static Analysis) 기반 AI 탐지 시스템**을 개발합니다. 정적 분석은 실제 파일을 실행하는 동적 분석(Dynamic Analysis)과 달리 시스템 리소스 소모를 최소화하며, **샌드박스를 우회하는 고도화된 악성코드 탐지**에도 유리합니다. KISA(한국인터넷진흥원) 및 주요 백신 개발사의 탐지 엔진 기초 원리를 재현하며, **스마트보안 분야 포트폴리오**로 활용할 수 있습니다. ## 🎯 핵심 목표 - **정적 분석**: 실행 없이 파일 구조(IAT)만으로 악성코드 판별 - **Feature Selection**: 랜덤 포레스트 + 지니 불순도로 1,000개 변수 → 핵심 30개 추출 - **Recall 극대화**: 실제 악성코드를 놓치지 않는 방향으로 모델 튜닝 - **실시간 탐지**: `.exe` 파일 입력 → AI 위험도 예측 → 임계값 초과 시 격리 ## 📂 데이터셋 | 항목 | 내용 | |------|------| | 출처 | Kaggle (Windows API 사용 내역) | | 규모 | 40,000개 샘플 (Row) | | 변수 | 1,000개 Windows API (Column) | | 값 | `1` (해당 API 호출) / `0` (미호출) | | 레이블 | 정상 파일 / 악성코드 | ## 🏗️ 4단계 파이프라인 ``` [원본 데이터] [전처리 데이터] [최적화 데이터] [학습 완료 모델] 40,000행×1,000열 → 40,000행×1,000열 → 40,000행×30열 → model.pkl Phase 1 Phase 2 Phase 3 Phase 4 데이터 전처리 Feature Selection AI 학습 & 평가 실시간 탐지 ``` ### Phase 1 — 데이터 전처리 (A파트) - `pandas`로 원본 CSV 로드 - 식별자 컬럼 `hash` 제거 - 결측값 확인 및 처리 - X / y 분리 후 Train 80% / Test 20% 분할 - 클래스 불균형 확인 후 **SMOTE** 적용 → `smote_train_data.csv` 저장 - 전처리 완료 데이터 → `processed_data.csv` 저장 ### Phase 2 — Feature Selection (A파트) - **차원의 저주(Curse of Dimensionality)** 와 과적합(Overfitting) 방지를 위해 변수 축소 - `RandomForestClassifier`의 **지니 불순도(Gini Impurity)** 기반 Feature Importance 계산 - 상위 30개 핵심 API 추출 → `optimized_data.csv` 저장 - Feature Importance 시각화 → `report/feature_importance.png` 저장 ### Phase 3 — AI 모델 학습 및 평가 (B파트) - 선형 모델(**로지스틱 회귀**) vs 비선형 앙상블 모델(**랜덤 포레스트**) 병렬 학습 및 교차 평가 - 단순 정확도보다 **재현율(Recall) 극대화**를 우선 — 실제 악성코드를 놓치지 않는 것이 핵심 - 평가 지표: Accuracy, Precision, **Recall**, F1-Score - 최종 모델 저장: `model.pkl` ### Phase 4 — 실시간 탐지 시연 (C파트) - 미지의 `.exe` 파일 입력 - `pefile` 라이브러리로 **임포트 테이블(IAT, Import Address Table)** 초고속 파싱 - 파싱된 API 목록이 30개 핵심 변수와 매칭되는지 확인 → 악성 확률 계산 - 임계값(예: 85%) 초과 시 즉각 파일 실행 권한 박탈 및 격리 🚨 98% 확률로 랜섬웨어입니다! 파일이 격리되었습니다. ## 🛠️ 기술 스택 | 분류 | 라이브러리 | |------|-----------| | 데이터 처리 | `pandas`, `numpy` | | 머신러닝 | `scikit-learn` | | PE 파일 분석 | `pefile` | | 모델 저장 | `joblib` / `pickle` | | 시각화 | `matplotlib`, `seaborn` | ## 📁 디렉토리 구조 ``` 📦 05-malware-detector/ ├── 📂 data/ │ ├── raw_data.csv # 원본 Kaggle 데이터 (gitignore) │ ├── processed_data.csv # Phase 1 처리 후 데이터 (1,000개 변수) │ ├── smote_train_data.csv # Phase 1 SMOTE 적용 학습 데이터 │ └── optimized_data.csv # Phase 2 처리 후 데이터 (30개 변수) ├── 📂 models/ │ └── model.pkl # 학습 완료 AI 모델 ├── 📂 src/ │ ├── phase1_preprocess.py # 데이터 전처리 스크립트 │ ├── phase2_feature_selection.py # Feature Selection 스크립트 │ ├── phase3_train.py # 모델 학습 스크립트 │ └── phase4_demo.py # 실시간 탐지 시연 스크립트 ├── 📂 report/ │ └── feature_importance.png # 변수 중요도 그래프 └── README.md ``` ## ▶️ 실행 방법 ``` # 1. 의존성 설치 pip install pandas numpy matplotlib scikit-learn imbalanced-learn pefile joblib # 2. Phase 1: 데이터 전처리 python src/phase1_preprocess.py # 3. Phase 2: Feature Selection (핵심 30개 변수 추출) python src/phase2_feature_selection.py # 4. Phase 3: 모델 학습 및 평가 python src/phase3_train.py # 5. Phase 4: 실시간 탐지 시연 python src/phase4_demo.py --file <검사할_파일.exe> ``` ## 💡 기대 효과 및 확장 가능성 | 항목 | 내용 | |------|------| | **보안성** | 실행 전 단계 차단으로 **제로 트러스트(Zero Trust)** 접근법 실증 | | **효율성** | 파일 미실행으로 분석 속도 ↑, **샌드박스 이스케이프** 위험 없음 | | **확장성** | API 호출 순서 분석, 엔트로피 분석 결합 → 차세대 **EDR** 프레임워크로 발전 가능 |
2026년 1학기 인공지능프로그래밍 | 05조
标签:AI恶意代码检测, Apex, IAT, KISA, Python, Scikit-learn, Windows API, 云安全监控, 公共机构防护, 召回率优化, 基尼不纯度, 多态恶意代码, 实时检测, 数据统计, 数据预处理, 文件隔离, 无后门, 无监督学习, 智能安全, 机器学习, 样本不平衡, 模型优化, 特征工程, 特征选择, 端口扫描, 网络安全, 逆向工具, 随机森林, 隐私保护, 零日攻击, 静态分析