Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
Cawdog — CAWODOG는 오프라인 산업용 기계에 배포된 Python 기반 AI 모델을 보호하는 방법을 시연하는 개념 증명 프로젝트입니다. 세 가지 점진적 단계(0 → 2)를 통해 다음을 보여줍니다: * 순진한 Python AI 애플리케이션이 어떻게 쉽게 리버스 엔지니어링될 수 있는지, * 공격자가 패키징된 바이너리에서 모델을 어떻게 추출할 수 있는지, * ONNX 변환, 모델 암호화, 분리된 런타임 엔진을 사용하여 AI 배포를 강화하는 방법. PoC는 장난기 많은 개 탐지 모델(“Cat World Dominance Group”)을 사용하여 Starlinger의 StarX 플랫폼과 같은 AI 기반 제어 시스템에 적용되는 실제 산업 IP 보호 개념을 설명합니다. 이는 관련 백서 “Hardening Python IP for Offline Industrial AI Deployments”의 참조 구현 역할을 합니다. | Kitploit
도구/GitLabGitLab/lycis/cawdog
Embedded Systems SecurityStatic AnalysisEncryption/Decryption ToolsCode AnalysisReverse EngineeringHardware & IoT SecurityPapers & ResearchLearning & EducationAI Security
GitLablycis/cawdog

Cawdog

저장소 보기
8개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →

소개

CAWODOG는 오프라인 산업용 기계에 배포된 Python 기반 AI 모델을 보호하는 방법을 시연하는 개념 증명 프로젝트입니다. 세 가지 점진적 단계(0 → 2)를 통해 다음을 보여줍니다: * 순진한 Python AI 애플리케이션이 어떻게 쉽게 리버스 엔지니어링될 수 있는지, * 공격자가 패키징된 바이너리에서 모델을 어떻게 추출할 수 있는지, * ONNX 변환, 모델 암호화, 분리된 런타임 엔진을 사용하여 AI 배포를 강화하는 방법. PoC는 장난기 많은 개 탐지 모델(“Cat World Dominance Group”)을 사용하여 Starlinger의 StarX 플랫폼과 같은 AI 기반 제어 시스템에 적용되는 실제 산업 IP 보호 개념을 설명합니다. 이는 관련 백서 “Hardening Python IP for Offline Industrial AI Deployments”의 참조 구현 역할을 합니다.

공유

CAWODOG – Python 기반 산업용 AI를 위한 IP 보호 PoC

CAWODOG(Cat World Dominance Group)는 오프라인 산업용 기계에 배포된 Python 기반 AI 모델을 보호하기 위한 장난스럽지만 현실적인 개념 증명입니다.

핵심 아이디어: 개(CAWODOG의 '적')를 감지하는 작은 이미지 분류기를 가져와 간단한 앱에 담은 다음, 점진적으로 강화하여 IP 도용에 대비하는 것입니다.

이 PoC는 다음 주제에 대한 내부 백서의 동반 자료로 설계되었습니다:

오프라인 산업용 AI 배포를 위한 Python IP 강화


목표

이 저장소는 단계별로 다음을 보여줍니다:

  • 순진한 Python 배포에서 모델을 훔치는 것이 얼마나 쉬운지
  • Python 애플리케이션을 UI와 엔진으로 구조화하는 방법
  • 다음을 사용하여 엔진을 패키징하고 강화하는 방법:
    • Nuitka onefile 빌드
    • ONNX 내보내기
    • 모델 아티팩트의 대칭 암호화
  • 각 단계에서 공격자 작업 흐름의 모습

저장소 구조

root@kitploit:~
.
├── 0/                     # Step 0 – Unhardened baseline
│   ├── model/             # Training + inference code
│   ├── app/               # Gradio-based web UI
│   ├── requirements.txt
│   └── (optional) build / run helpers
│
├── 1/                     # Step 1 – Packaged with Nuitka (Level 1)
│   ├── app/               # Same UI, adapted entrypoint
│   ├── model/             # Same model logic as step 0
│   ├── build.sh           # Nuitka onefile build script
│   └── requirements.txt
│
├── 2/                     # Step 2 – Encrypted ONNX model (Level 2)
│   ├── model/             # Training + ONNX export + encryption
│   ├── engine/            # Engine module (decryption + ONNX runtime + scoring)
│   ├── app/               # UI calling the engine only
│   ├── hardening/         # Encryption key + utilities (dev only)
│   ├── build.sh           # Nuitka onefile build script
│   └── requirements.txt
│
└── attacker/              # Attacker tooling (optional, for demo)
    ├── run_and_extract.sh # Finds Nuitka temp dir and lists contents
    ├── steal_model.sh     # Copies model file out of extracted payload
    └── use_stolen_model.py# Uses stolen model in a separate script

사전 요구 사항

  • Python 3.13 (또는 Nuitka 빌드를 조정하기로 결정한 경우 3.11 이상)
  • 작동하는 가상 환경 (python -m venv .venv)
  • OS: macOS에서 테스트됨; Linux는 약간의 변경으로 작동할 것입니다.
  • 권장: git, pip 및 기본 명령줄 사용 능력

대부분의 단계에서 다음이 필요합니다:

root@kitploit:~
pip install -r requirements.txt

0단계 – 기준 (강화되지 않음)

폴더: 0/ 목표: 훈련된 모델과 간단한 웹 UI를 갖춘 일반 Python 앱. 보호 없음.

포함 내용

  • 다음을 구별하도록 훈련된 작은 이미지 분류기 (PyTorch + torchvision):
    • dog vs not_dog
  • 훈련 스크립트 (model_training.py):
    • data/dog와 data/not_dog를 자동으로 훈련/검증으로 분할
    • 모델 파일 저장 (예: model/models/dog_model.pt)
  • 추론 스크립트 (model_inference.py):
    • dog_model.pt 로드
    • "dog"의 확률 반환
    • 장난감 휴리스틱으로 간단한 "적 점수" 계산
  • Gradio 앱 (app/gradio_app.py):
    • 브라우저에서 이미지 업로드 허용
    • 추론 + 적 점수 호출
    • 확률 및 CAWODOG 결과 표시

0단계 실행 방법

저장소 루트에서:

root@kitploit:~
cd 0
python -m venv .venv
source .venv/bin/activate          # on Windows: .venv\Scripts\activate
pip install -r requirements.txt
  1. 데이터 준비:

    root@kitploit:~
    0/data/
      dog/
        <dog images>.jpg
      not_dog/
        <non-dog images>.jpg
    
  2. 모델 훈련:

    root@kitploit:~
    python -m model.model_training
    

    그러면 다음과 같은 파일이 생성됩니다:

    root@kitploit:~
    model/models/dog_model.pt
    
  3. Gradio 앱 실행:

    root@kitploit:~
    python -m app.gradio_app
    
  4. 출력된 URL(기본값 http://127.0.0.1:7860)을 열고 이미지로 테스트합니다.

보안 속성

  • 모델 파일은 일반 PyTorch 가중치(.pt 파일)로 저장됩니다.
  • 모든 모델 로직 및 점수 로직은 읽을 수 있는 Python에 있습니다.
  • 누구나 프로젝트 디렉터리를 복사하여 모든 것을 재사용할 수 있습니다.

*이것이 "before" 그림입니다.

1단계 – 레벨 1 강화 (Nuitka Onefile)

폴더: 1/ 목표: Nuitka를 사용하여 앱을 단일 실행 파일로 패키징합니다. 보안 효과: 제품처럼 보이게 만들지만 IP는 보호하지 않습니다.

0단계와 비교하여 변경된 사항

  • Nuitka 전용 진입점 (예: app/main.py 또는 cawodog_app.py)
  • 빌드 스크립트 (build.sh):
    • 종속성 설치
    • --standalone 및 --onefile 옵션으로 Nuitka 실행
    • 번들에 모델 파일 포함 (dog_model.pt)
  • 결과는 onefile 바이너리입니다 (예: cawodog_step1_nuitka).

예제 빌드 (간소화)

root@kitploit:~
cd 1
source .venv/bin/activate
./build.sh

빌드 후 다음과 같은 파일이 생성됩니다:

root@kitploit:~
./cawodog_step1_nuitka

실행하면 이전과 같이 Gradio UI가 시작되지만, 이제 단일 실행 파일에서 실행됩니다.

공격자 시뮬레이션 (선택 사항, attacker/ 사용)

attacker 폴더는 공격자가 다음을 수행할 수 있는 방법을 보여줍니다:

  1. onefile 바이너리 실행 (임시 폴더에 압축 풀림)
  2. $TMPDIR 아래에서 Nuitka onefile 압축 해제 디렉터리 찾기
  3. 해당 디렉터리에서 dog_model.pt 복사
  4. use_stolen_model.py를 사용하여 앱 외부에서 예측 실행

핵심 요점: 레벨 1은 의미 있는 보호가 아닙니다. 패키징일 뿐, 보안이 아닙니다.

2단계 – 레벨 2 강화 (암호화된 ONNX 엔진)

폴더: 2/ 목표: 모델 수준에서 실질적인 IP 보호 도입. 보안 효과: 경쟁자가 단순히 파일을 복사하여 모델을 사용할 수 없습니다.

주요 개념

  1. 모델 형식 변환

    • PyTorch의 ONNX 내보내기를 사용하여 dog_model.pt → dog_model.onnx 변환.
  2. 모델 암호화

    • dog_model.onnx를 AES-GCM으로 암호화하여 dog_model.enc 생성
    • 대칭 키를 hardening/dev_model.key에 저장 (PoC 목적)
  3. 엔진 추상화

    • 다음을 수행하는 engine/core.py 도입:
      • 런타임에 dog_model.enc 복호화
      • ONNX Runtime에 로드
      • predict_is_dog() 및 enemy_score()와 같은 함수 노출
  4. 오케스트레이터로서의 UI

    • app/gradio_app.py는 더 이상 원시 모델 파일이나 내부를 볼 수 없습니다.
    • 엔진 함수만 호출합니다.

2단계의 일반적인 작업 흐름

root@kitploit:~
cd 2
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
  1. 모델 훈련 (또는 재사용) (0단계와 동일하지만 2/ 내부에서):

    root@kitploit:~
    python -m model.model_training
    
  2. ONNX로 내보내기:

    root@kitploit:~
    python -m model.export_to_onnx
    # produces model/models/dog_model.onnx
    
  3. ONNX 모델 암호화:

    root@kitploit:~
    python -m hardening.encrypt_model
    # produces model/models/dog_model.enc and hardening/dev_model.key
    
  4. Nuitka로 빌드 (build.sh 통해):

    root@kitploit:~
    ./build.sh
    

    완료 시 키가 출력됩니다. 프로그램이 암호화된 모델을 로드하려면 환경 변수 CAWODOG_MODEL_KEY_HEX를 해당 키로 설정해야 합니다. 다른 키를 사용하면 오류가 발생합니다.

  5. 결과 onefile 바이너리 실행. UI는 이전과 동일하게 동작해야 합니다.

보안 속성

  • 디스크의 모델 파일 (dog_model.enc)은 암호화되어 있습니다.
  • 일반 공격자는 다음을 수행할 수 없습니다:
    • PyTorch에서 직접 dog_model.enc 로드
    • 모델을 쉽게 검사하거나 수정
  • 공격자는 이제 다음이 필요합니다:
    • 암호화 키를 알아야 함
    • AES-GCM 복호화 로직 이해
    • ONNX 파일을 추출하고 재구성
  • 여전히 하드웨어 루트 오브 트러스트에 연결되어 있지 않으며, 숙련된 리버스 엔지니어는 결국 모델을 재구성 할 수 있지만, 장벽이 1단계보다 훨씬 높습니다.

위협 모델 및 한계

이 PoC는 다음에 중점을 둡니다:

  • 오프라인 고객 사이트에 출하되는 AI 모델 보호
  • 산업 스파이 비용 증가
  • 즉각적인 "완벽한 보안"보다는 점진적 강화 수준 시연

다음을 주장하지 않습니다:

  • 국가 행위자에 의한 리버스 엔지니어링 완전 방지
  • 하드웨어 기반 보안 모듈 (TPM, HSM, 엔클레이브) 대체
  • 업데이트/패치 배포 또는 시큐어 부트 해결

데모를 위해 이 저장소를 사용하는 방법

일반적인 설명 흐름:

  1. 0단계 – 기준

    • 모든 것이 검사하고 재사용하기 쉬운 방법을 보여줍니다.
  2. 1단계 – 패키징 (Nuitka onefile)

    • 멋진 단일 바이너리를 보여줍니다.
    • attacker/ 스크립트를 사용하여 모델이 여전히 얼마나 쉽게 도난당하는지 시연합니다.
  3. 2단계 – 암호화된 ONNX

    • dog_model.enc 복사만으로는 더 이상 충분하지 않음을 보여줍니다.
    • 이것이 산업용 클라이언트를 위한 실제 배포에 어떻게 매핑되는지 논의합니다.

그런 다음 추가 미래 레벨(아직 여기에 구현되지 않음)에 대해 논의할 수 있습니다:

  • 머신 바인딩 키 (TPM, 동글)
  • 네이티브 Rust/C++ 엔진
  • 안티 디버그 및 무결성 검사
  • 시큐어 엔클레이브 / 증명

라이선스

root@kitploit:~
MIT License

Copyright (c) 2025 Daniel Eder

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

도구 다운로드