Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Cawdog — CAWODOG — это проект proof-of-concept, демонстрирующий, как защитить модели ИИ на Python, развёрнутые на офлайн-промышленных машинах. На трёх последовательных этапах (0 → 2) проект показывает: * как наивное Python-приложение с ИИ может быть тривиально подвергнуто обратной разработке, * как злоумышленники могут извлечь модели из упакованных бинарных файлов, * как усилить защиту развёртывания ИИ с помощью конвертации в ONNX, шифрования модели и отдельного движка выполнения. PoC использует игривую модель детектора собак («Группа господства кошачьего мира») для иллюстрации реальных концепций защиты интеллектуальной собственности, применимых к системам управления на базе ИИ, таким как платформа StarX от компании Starlinger. Он служит эталонной реализацией для сопровождающего технического документа «Hardening Python IP for Offline Industrial AI Deployments». | Kitploit
Инструменты/GitLabGitLab/lycis/cawdog
Безопасность встроенных системСтатический анализИнструменты шифрования/дешифрованияАнализ КодаОбратная инженерияБезопасность оборудования и IoTСтатьи и ИсследованияОбучение и ОбразованиеБезопасность ИИ

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →

Описание

GitLablycis/cawdog

Cawdog

Репозиторий
8 месяцев назадЕщё не проверено

CAWODOG — это проект proof-of-concept, демонстрирующий, как защитить модели ИИ на Python, развёрнутые на офлайн-промышленных машинах. На трёх последовательных этапах (0 → 2) проект показывает: * как наивное Python-приложение с ИИ может быть тривиально подвергнуто обратной разработке, * как злоумышленники могут извлечь модели из упакованных бинарных файлов, * как усилить защиту развёртывания ИИ с помощью конвертации в ONNX, шифрования модели и отдельного движка выполнения. PoC использует игривую модель детектора собак («Группа господства кошачьего мира») для иллюстрации реальных концепций защиты интеллектуальной собственности, применимых к системам управления на базе ИИ, таким как платформа StarX от компании Starlinger. Он служит эталонной реализацией для сопровождающего технического документа «Hardening Python IP for Offline Industrial AI Deployments».

Поделиться

CAWODOG – PoC защиты интеллектуальной собственности для промышленного AI на Python

CAWODOG (Cat World Dominance Group) — это игровая, но реалистичная демонстрация концепции защиты моделей AI на Python, развертываемых на офлайн промышленных машинах.

Основная идея: взять небольшой классификатор изображений, распознающий собак («врага» CAWODOG), обернуть его в простое приложение, а затем постепенно укреплять развертывание против кражи ИС.

Данный PoC создан как дополнение к внутреннему техническому документу на тему:

Укрепление защиты интеллектуальной собственности на Python для офлайн промышленных развертываний AI


Цели

Этот репозиторий демонстрирует пошагово:

  • Насколько легко украсть модель из наивного развертывания на Python
  • Как структурировать приложение на Python на UI и движок
  • Как упаковать и укрепить движок с помощью:
    • Сборок Nuitka onefile
    • Экспорта в ONNX
    • Симметричного шифрования артефакта модели
  • Как выглядят действия атакующего на каждом этапе

Структура репозитория

root@kitploit:~
.
├── 0/                     # Шаг 0 – Незащищенная базовая версия
│   ├── model/             # Код обучения и инференса
│   ├── app/               # Веб-интерфейс на Gradio
│   ├── requirements.txt
│   └── (optional) build / run helpers
│
├── 1/                     # Шаг 1 – Упаковано с Nuitka (Уровень 1)
│   ├── app/               # Тот же UI, адаптированная точка входа
│   ├── model/             # Та же логика модели, что и на шаге 0
│   ├── build.sh           # Скрипт сборки Nuitka onefile
│   └── requirements.txt
│
├── 2/                     # Шаг 2 – Зашифрованная модель ONNX (Уровень 2)
│   ├── model/             # Обучение + экспорт в ONNX + шифрование
│   ├── engine/            # Модуль движка (расшифровка + среда выполнения ONNX + оценка)
│   ├── app/               # UI, вызывающий только движок
│   ├── hardening/         # Ключ шифрования + утилиты (только для разработки)
│   ├── build.sh           # Скрипт сборки Nuitka onefile
│   └── requirements.txt
│
└── attacker/              # Инструменты атакующего (опционально, для демонстрации)
    ├── run_and_extract.sh # Находит временную папку Nuitka и выводит содержимое
    ├── steal_model.sh     # Копирует файл модели из извлеченной полезной нагрузки
    └── use_stolen_model.py# Использует украденную модель в отдельном скрипте

Предварительные требования

  • Python 3.13 (или 3.11+, если вы решите изменить сборку Nuitka)
  • Работающее виртуальное окружение (python -m venv .venv)
  • ОС: протестировано на macOS; на Linux должно работать с небольшими изменениями
  • Рекомендуется: знакомство с git, pip и базовыми командами командной строки

Большинство шагов требуют:

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

Шаг 0 – Базовая версия (незащищенная)

Папка: 0/ Цель: Простое Python-приложение с обученной моделью и простым веб-интерфейсом. Без защиты.

Что содержит

  • Небольшой классификатор изображений (PyTorch + torchvision), обученный различать:
    • dog против not_dog
  • Скрипт обучения (model_training.py), который:
    • автоматически разделяет data/dog и data/not_dog на обучающую и проверочную выборки
    • сохраняет файл модели, например model/models/dog_model.pt
  • Скрипт инференса (model_inference.py), который:
    • загружает dog_model.pt
    • возвращает вероятность 'собаки'
    • вычисляет простой 'вражеский счет' как игрушечную эвристику
  • Приложение 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-коде.
  • Любой может скопировать каталог проекта и использовать всё заново.

Это картина «до».

Шаг 1 – Укрепление уровня 1 (Nuitka Onefile)

Папка: 1/ Цель: Упаковать приложение в один исполняемый файл с помощью Nuitka. Эффект безопасности: Заставляет приложение выглядеть как продукт, но не защищает ИС.

Что изменилось по сравнению с шагом 0

  • Выделенная точка входа для Nuitka (например, app/main.py или cawodog_app.py)
  • Скрипт сборки (build.sh), который:
    • устанавливает зависимости
    • запускает Nuitka с флагами --standalone и --onefile
    • включает файл модели в бандл (dog_model.pt)
  • Результатом является однофайловый бинарник (например, cawodog_step1_nuitka).

Пример сборки (упрощённо)

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

После сборки вы получите что-то вроде:

root@kitploit:~
./cawodog_step1_nuitka

Запуск запустит интерфейс Gradio, как и раньше, но теперь из одного исполняемого файла.

Моделирование атакующего (опционально, с использованием attacker/)

Папка attacker показывает, как атакующий может:

  1. Запустить однофайловый бинарник (который распаковывается во временную папку)
  2. Найти каталог распаковки Nuitka onefile внутри $TMPDIR
  3. Скопировать dog_model.pt из этого каталога
  4. Использовать use_stolen_model.py для выполнения предсказаний вне приложения

Ключевой вывод: Уровень 1 — не значимая защита. Это упаковка, а не безопасность.

Шаг 2 – Укрепление уровня 2 (Зашифрованный движок ONNX)

Папка: 2/ Цель: Ввести реальную защиту ИС на уровне модели. Эффект безопасности: Конкуренты не смогут использовать модель, просто скопировав файл.

Основные концепции

  1. Преобразование формата модели
    • Конвертируйте dog_model.pt → dog_model.onnx с помощью экспорта PyTorch в 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. Запустите полученный однофайловый бинарник. Интерфейс должен вести себя так же, как и раньше.

Свойства безопасности

  • Файл модели на диске (dog_model.enc) зашифрован.
  • Случайный атакующий не сможет:
    • загрузить dog_model.enc напрямую в PyTorch
    • легко проверить или изменить модель
  • Теперь атакующему необходимо:
    • знать ключ шифрования
    • понимать логику расшифровки AES-GCM
    • извлечь и восстановить файл ONNX

Он всё ещё не привязан к аппаратному корню доверия, и квалифицированный реверс-инженер может в конечном итоге восстановить модель, но планка значительно выше, чем на шаге 1.

Модель угроз и ограничения

Этот PoC фокусируется на:

  • Защита моделей AI, поставляемых на офлайн сайты клиентов
  • Повышение стоимости промышленного шпионажа
  • Демонстрация постепенных уровней укрепления, а не мгновенной «идеальной безопасности»

Он не претендует на:

  • Полное предотвращение обратной разработки со стороны государственного субъекта
  • Замену аппаратных модулей безопасности (TPM, HSM, анклавы)
  • Решение распространения обновлений/исправлений или безопасной загрузки

Как использовать этот репозиторий для демонстраций

Типичный порядок повествования:

  1. Шаг 0 – Базовая версия
    • Покажите, насколько тривиально всё проверить и повторно использовать.
  2. Шаг 1 – Упаковка (Nuitka onefile)
    • Покажите красивый единый бинарник.
    • Используйте скрипты attacker/, чтобы продемонстрировать, как легко модель всё ещё можно украсть.
  3. Шаг 2 – Зашифрованный ONNX
    • Покажите, что копирование dog_model.enc больше не достаточно.
    • Обсудите, как это соотносится с реальным развертыванием для промышленного клиента.

Затем можно обсудить дальнейшие будущие уровни (здесь пока не реализованы):

  • Привязка ключей к машине (TPM, донгл)
  • Собственный движок на Rust/C++
  • Антиотладка и проверки целостности
  • Безопасные анклавы / аттестация

License

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.

Скачать инструмент