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개 클래스 탐지가 가능해집니다.
| 지표 | 값 | 지표 | 값 |
|---|---|---|---|
| 🎯 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 트래픽 패턴 테스트 페이지
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, 예측 무의미
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%
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
- Chrome 주소창에
chrome://extensions/입력 - 우측 상단 개발자 모드 토글 활성화
- 압축해제된 확장 프로그램을 로드 클릭
extension/폴더 선택- 툴바에 🛡️ 아이콘이 나타나면 완료
POST http://127.0.0.1:8000/api/v1/analyze
Content-Type: application/jsonRequest
{
"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) 자격증명 탈취 |
| 컴포넌트 | 설명 |
|---|---|
| 🟢🔴 상태 카드 | 정상(초록) / 위험(빨강 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