Skip to content

Latest commit

 

History

22 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🛡️ CryptoFlow-Watcher

AI 기반 실시간 암호화 트래픽 악성 탐지 시스템

Chrome Extension + FastAPI + Flow-MAE


Python PyTorch FastAPI HuggingFace Chrome Dataset


📌 개요

CryptoFlow-Watcher는 사용자가 웹을 탐색하는 동안 네트워크 트래픽 패턴을 실시간 분석하여 악성 트래픽을 탐지하는 시스템입니다.

브라우저에서 감지한 트래픽 데이터를 로컬 AI 서버로 전송하고, Flow-MAE(ViTMAE 기반) 모델이 패킷 패턴을 분석해 악성 여부와 위험도를 반환합니다.

사용자 브라우징  →  Chrome Extension  →  FastAPI Server  →  탐지 결과 UI
                    (트래픽 캡처)         (Flow-MAE 추론)    (팝업 / 오버레이)

📊 모델 학습 현황

학습 단계

단계 상태 데이터 Epoch
🟢 Pretrain 완료 USTC-TFC2016 Normal traffic 100% 20
🔴 Fine-tuning 미완료

Pretrain 방식: USTC-TFC2016의 정상 트래픽만 학습한 이상 탐지(Anomaly Detection) 구조입니다. 정상 패턴을 학습한 뒤, 이를 벗어나는 트래픽을 악성으로 판단합니다. Fine-tuning 완료 후 분류 헤드가 추가되어 19개 클래스 탐지가 가능해집니다.

Pretrain 결과 지표 (참고용)

지표 지표
🎯 Accuracy 44.2% ⚖️ F1 Score 32.3%
🔍 Recall 44.2% 🎯 Precision 28.0%
📉 Eval Loss 1.333 📈 Train Loss 1.964
🔄 Epoch 10 ⏱️ 학습 시간 약 75분

🏗️ 시스템 구조

flowshield/
├── 📁 extension/                # 크롬 확장 프로그램 (Client)
│   ├── manifest.json            # MV3 권한 명세
│   ├── background.js            # 트래픽 캡처 → AI 서버 전송 (Service Worker)
│   ├── content.js               # 악성 감지 시 페이지 오버레이 경고
│   ├── popup.html / popup.js    # 확장 팝업 대시보드 UI
│   ├── about.html / about.js    # 모델 소개 + 성능 레이더 차트
│   └── icons/                   # 방패 아이콘 (16 / 48 / 128px)
│
├── 📁 server/                   # FastAPI 백엔드
│   ├── app/
│   │   ├── main.py              # API 엔드포인트, CORS 설정, 콘솔 로그
│   │   └── predictor.py         # Flow-MAE 추론 모듈 (ViTMAEModel + Linear)
│   ├── model_weights/           # ⚠️ 가중치 파일 (git 제외)
│   │   ├── pytorch_model.bin
│   │   ├── config.json
│   │   └── all_results.json     # 학습 결과 지표 (Accuracy, F1 등)
│   └── requirements.txt
│
└── 📁 tools/
    └── test_traffic.html        # USTC-TFC2016 트래픽 패턴 테스트 페이지

🚀 시작하기

Step 1 — 모델 파일 준비

server/model_weights/ 폴더에 아래 두 파일을 배치합니다.

server/model_weights/
├── pytorch_model.bin   ← Hugging Face Trainer output
└── config.json         ← 모델 구조 설정

Hugging Face Trainer로 학습한 경우 output_dir에서 복사합니다.

copy "학습경로\pytorch_model.bin" "server\model_weights\pytorch_model.bin"
copy "학습경로\config.json"       "server\model_weights\config.json"
config.json 필수 항목 보기
{
  "model_type": "vit_mae",
  "image_size": [1, 1024],
  "num_channels": 1,
  "patch_size": [1, 64],
  "hidden_size": 768,
  "id2label": {
    "0": "LABEL_0",
    "1": "LABEL_1",
    "...": "...",
    "18": "LABEL_18"
  }
}

서버 시작 시 로그로 모델 상태 확인

  • AI 모델 로드 완료! → Fine-tuned 모델, 정상 탐지 가능
  • ⚠️ [경고] checkpoint에 classifier 가중치 없음 → Pretrain-only, 예측 무의미

Step 2 — 서버 실행

cd server
pip install -r requirements.txt
uvicorn app.main:app --host 127.0.0.1 --port 8000 --reload

서버가 구동되면 패킷 수신 및 추론 결과가 콘솔에 실시간 출력됩니다.

[cpu] 기반으로 AI 모델을 로드 중입니다...
AI 모델 로드 완료!
INFO:     Uvicorn running on http://127.0.0.1:8000

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📡 패킷 수신: https://example.com
   패킷 크기: [64, 1500, 1500, 54, 1024]
   도착 간격: [0.0, 0.002, 0.001, 0.015, 0.004]
🚨 결과: 악성 트래픽  |  위험도: 87.4%
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Step 3 — 크롬 확장 프로그램 로드

  1. Chrome 주소창에 chrome://extensions/ 입력
  2. 우측 상단 개발자 모드 토글 활성화
  3. 압축해제된 확장 프로그램을 로드 클릭
  4. extension/ 폴더 선택
  5. 툴바에 🛡️ 아이콘이 나타나면 완료

🔌 API

POST /api/v1/analyze

POST http://127.0.0.1:8000/api/v1/analyze
Content-Type: application/json

Request

{
  "url": "https://example.com",
  "packet_sizes": [66, 514, 1460, 1460, 52],
  "arrival_times": [0.0, 0.012, 0.003, 0.001, 0.002]
}

Response

{
  "url": "https://example.com",
  "result": "malicious",
  "probability": 0.874
}

🧪 트래픽 패턴 테스트

http://127.0.0.1:8000/static/test_traffic.html을 브라우저에서 열면 USTC-TFC2016 기반 트래픽 패턴을 버튼 하나로 AI 서버에 전송해 탐지 결과를 확인할 수 있습니다.

서버가 실행 중인 상태에서 파일을 더블클릭해 여세요.

패턴 분류 특징
HTTP 웹 브라우징 🟢 Normal 다양한 크기, 불규칙 간격
Cridex 🔴 Malicious Banking Trojan — HTTP POST C2
Geodo 🔴 Malicious Banking Trojan — 모듈 다운로드 burst
Htbot 🔴 Malicious HTTP Botnet — 15s 주기 터널링
Miuref 🔴 Malicious Click Fraud — 소형 고빈도
Neris 🔴 Malicious Spam Botnet — SMTP 대량 발송
Nsis-ay 🔴 Malicious Dropper — 페이로드 다운로드
Shifu 🔴 Malicious Banking Trojan — 암호화 C2
Tinba 🔴 Malicious Tiny Banker — 100B 고정, 20s 주기
Virut 🔴 Malicious IRC Botnet — 30s keep-alive
Zeus 🔴 Malicious Banking Trojan — HTTP(S) 자격증명 탈취

🖥️ 확장 프로그램 UI

컴포넌트 설명
🟢🔴 상태 카드 정상(초록) / 위험(빨강 pulse 애니메이션)
📊 위험도 게이지 AI 추론 확률을 퍼센트 바로 시각화
🕐 최근 분석 기록 최대 5건 도메인 + 위험도 목록
배지 악성 감지 시 아이콘에 빨간 ! 표시
⚠️ 페이지 오버레이 현재 페이지 상단 경고 배너 (8초 자동 해제)
ℹ️ About 페이지 모델 성능 지표 카드 + 레이더 차트

⚠️ 주의사항

  • server/model_weights/의 가중치 파일(.bin, .safetensors)은 용량 문제로 git에서 제외됩니다
  • 현재 background.js는 실제 패킷 캡처 대신 목업 데이터를 전송합니다 (Chrome MV3 제약)
  • 서버는 반드시 server/ 디렉토리에서 실행해야 합니다 (상대 경로 기준)

Flow-MAE Engine v1.0 · USTC-TFC2016 Dataset · Chrome Extension MV3

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages