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

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

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

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

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

Категории

Все категории
Loading categories
Kam1n0-Community — Масштабируемая платформа анализа ассемблерного кода для индексации, поиска клонов и классификации исполняемых файлов с использованием статических, динамических и методов машинного обучения для нескольких архитектур. | Kitploit
Инструменты/GitHubGitHub/mcgill-dmas/kam1n0-community
Анализ уязвимостейАнализ КодаОбратная инженерияФаззингАнализ Бинарных ФайловМашинное Обучение
GitHubmcgill-dmas/kam1n0-community

Kam1n0-Community

Масштабируемая платформа анализа ассемблерного кода для индексации, поиска клонов и классификации исполняемых файлов с использованием статических, динамических и методов машинного обучения для нескольких архитектур.

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться
Репозиторий
6271243 лет назадПроверено Kitploit

Что такое Kam1n0 v2?

image GitHub (pre-)release Github All Releases JDK PRs Welcome

Собрать последнюю версию для разработки (Windows) Тестировать сборку релиза (Windows)

Kam1n0 v2.x — это масштабируемая платформа для управления и анализа ассемблерного кода. Она позволяет пользователю сначала проиндексировать (большую) коллекцию бинарных файлов в различные репозитории, а затем предоставляет различные аналитические сервисы, такие как поиск клонов и классификация. Платформа поддерживает многопользовательский доступ и управление репозиториями ассемблерного кода с помощью концепции Приложения (Application). Экземпляр приложения содержит собственный эксклюзивный репозиторий и предоставляет специализированный аналитический сервис. Учитывая разнообразие задач обратной разработки, сервер Kam1n0 v2.x в настоящее время предоставляет три различных типа приложений для поиска клонов: Asm-Clone, Sym1n0 и Asm2Vec, а также классификацию исполняемых файлов на основе Asm2Vec. К платформе могут быть добавлены новые типы приложений.

Пользователь может создавать несколько экземпляров приложений. Экземпляр приложения может быть предоставлен для совместного использования определённой группе пользователей. Доступ на чтение/запись к репозиторию приложения и его статус (включён/выключен) могут контролироваться владельцем приложения. Сервер Kam1n0 v2.x может обслуживать приложения одновременно, используя несколько общих пулов ресурсов.

Kam1n0 был разработан Steven H. H. Ding и Miles Q. Li под руководством Benjamin C. M. Fung из Лаборатории интеллектуального анализа данных и безопасности при Университете Макгилла, Канада. Он занял второе место в конкурсе плагинов Hex-Rays 2015. Если вы считаете Kam1n0 полезным, пожалуйста, процитируйте нашу работу:

  • S. H. H. Ding, B. C. M. Fung, and P. Charland. Kam1n0: MapReduce-based Assembly Clone Search for Reverse Engineering. В Трудах 22-й Международной конференции ACM SIGKDD по открытию знаний и интеллектуальному анализу данных (SIGKDD), стр. 461-470, Сан-Франциско, Калифорния: ACM Press, август 2016.

  • S. H. H. Ding, B. C. M. Fung, and P. Charland. Asm2Vec: boosting static representation robustness for binary clone search against code obfuscation and compiler optimization. В Трудах 40-го симпозиума IEEE по безопасности и конфиденциальности (S&P), 18 стр., Сан-Франциско, Калифорния: IEEE Computer Society, май 2019.

Asm-Clone

Приложения Asm-Clone решают задачу эффективного поиска подграфов (т.е. проблему изоморфизма графов) для функций ассемблерного кода (среднее время запроса <1,3 с, среднее время индексации <30 мс для 2,3 млн функций). По заданной целевой функции (показана слева на рисунке ниже) определяется её клонированный подграф среди других функций в репозитории (показан справа).

  • Тип приложения: Asm-Clone
  • Оригинальная служба поиска клонов, используемая в Kam1n0 v1.x.
  • В настоящее время поддерживает Meta-PC, ARM, PowerPC и TMS320c6 (экспериментально).
  • Поддерживает поиск клонов подграфов в пределах определённого семейства ассемблерного кода.
    • + Хорошая интерпретируемость результата: разбивает на подграфы.
    • + Точность поиска в пределах заданного семейства кода.
    • + Подходит для сравнения различных патчей или версий больших бинарных файлов.
    • - Относительно более чувствителен к изменениям набора инструкций, оптимизациям и обфускации.
    • - Требуется предварительно определить синтаксис языка ассемблерного кода.
    • - Требуется, чтобы в репозитории был ассемблерный код того же выбранного семейства.

Sym1n0

Семантический поиск клонов с помощью дифференцированного фаззинга и решения ограничений. Эффективный и масштабируемый динамико-статический гибридный подход (среднее время запроса <1 с, среднее время индексации <100 мс для 1,5 млн функций). По заданной целевой функции (показана слева на рисунке ниже) определяется клонированный подграф среди других функций в репозитории (показан справа). Поддерживает визуализацию абстрактного синтаксического графа.

  • Тип приложения: Sym1n0 (только v2)
  • Поиск клонов с помощью как символьного, так и конкретного выполнения.
  • Различает функции на основе их различного поведения ввода/вывода.
  • Поиск клонов выполняется на абстрактном синтаксическом графе, построенном из Vex IR (на базе LibVex).
    • + Поиск клонов между разными семействами ассемблерного кода.
      • Например, проиндексирован код x86, а запрос — код ARM.
    • + Поиск клонов подграфов.
    • + Поддержка широкого спектра семейств через LibVex.
      • x86, AMD64, MIPS32, MIPS64, PowerPC32, PowerPC64, ARM32 и ARM64.
    • + Эффективный динамико-статический гибридный подход.
    • + Идеально подходит для анализа прошивок, скомпилированных для разных процессоров.
    • - Чувствителен к сильным манипуляциям с графом (например, полное уплощение).
    • - Чувствителен к масштабному нарушению целостности базовых блоков.

Asm2Vec

Asm2Vec использует обучение представлениям. Он понимает лексико-семантические связи ассемблерного кода. Например, регистры xmm* семантически связаны с векторными операциями, такими как addps. memcpy аналогичен strcpy. На графике ниже показаны различные ассемблерные функции, скомпилированные из одного и того же исходного кода gmpz_tdiv_r_2exp в libgmp. Слева направо: функции скомпилированы с опциями GCC O0, GCC O3, O-LLVM обфускатором (с уплощением графа управления) и LLVM обфускатором (с ложным графом управления). Asm2Vec может статически идентифицировать их как клоны.

  • Использует обучение представлениям.
  • Понимает лексико-семантические связи ассемблерного кода.
    • + Современный уровень для поиска клонов против сильных методов обфускации кода.
      • (>0,8 точность для всех опций, применённых в O-LLVM, несколько итераций).
    • + Современный уровень для поиска клонов против оптимизации кода.
      • (>0,8 точность между O0 и O3, >0,94 точность между O2 и O3)
    • + Даже лучший результат, чем у самых новых динамических подходов.
    • + Значительно эффективнее новых динамических подходов.
    • + Не требуется определять архитектуру. Самообучается, читая большие объёмы кода.
    • + Статический подход: эффективный и масштабируемый.
    • - Нет подграфов.
    • - Предполагается, что ассемблерный код происходит из одного семейства процессоров.
    • - Статический подход: не может распознать таблицу переходов и т.п.

Классификация исполняемых файлов

В этом приложении пользователь определяет набор классов программного обеспечения на основе функциональной связанности и предоставляет бинарные файлы, принадлежащие каждому классу. Затем система автоматически группирует функции в кластеры, в которых функции связаны прямо или косвенно отношением клонирования. Кластеры, которые являются дискриминативными для классификации, сохраняются и служат сигнатурами своих классов. По заданному бинарному файлу система показывает степень его принадлежности к каждому классу программного обеспечения.

  • Использует Asm2Vec в качестве модели вычисления подобия функций

    • + Предоставляет интерпретируемые результаты классификации.
    • + Изучает общие характеристики (т.е. кластеры функций) каждого класса.
    • + Способна обрабатывать меньшие и несбалансированные наборы данных по сравнению с обычной моделью машинного обучения.
    • - Ограничение: для работы системы необходимо, чтобы бинарные файлы одного класса имели некоторые общие функции.

Обзор платформы

На рисунке ниже показаны основные компоненты и функции пользовательского интерфейса Kam1n0 v2.x. Мы используем материальный дизайн. В общем случае каждый пользователь имеет список приложений, список выполняемых заданий и список файлов результатов.

  • Список приложений показывает экземпляры приложений, принадлежащие пользователю и предоставленные ему другими пользователями.
  • Список выполняемых заданий показывает ход выполнения большого запроса (например, chrome.dll) и процедуры индексации.
  • Список файлов результатов отображает сохранённые результаты.

Более подробную информацию о дизайне пользовательского интерфейса можно найти в нашем подробном учебном пособии.

Инструкция по установке

Текущий релиз Kam1n0 состоит из двух установщиков: основной сервер и плагин для IDA Pro.

Установка сервера Kam1n0

Основной движок Kam1n0 полностью написан на Java. Вам понадобятся следующие зависимости:

  • [Обязательно] Последняя версия JRE/JDK 11.x для x64 от Oracle.
  • [Опционально] Последняя версия IDA Pro с установленным плагином idapython. Плагин Python и среда выполнения обычно уже установлены вместе с IDA Pro. При необходимости переустановите IDA Pro.

Скачайте файл Kam1n0-Server.msi со страницы релизов. Следуйте инструкциям для установки сервера. Вас попросят выбрать путь установки. IDA Pro является опциональной, если серверу не нужно выполнять дизассемблирование. Другими словами, клиентская сторона использует плагин Kam1n0 для IDA Pro. Настоятельно рекомендуется установить IDA Pro вместе с сервером Kam1n0. Сервер Kam1n0 автоматически обнаружит IDA Pro, найдя приложение по умолчанию, используемое для открытия файлов .i64.

Установка плагина IDA Pro

Плагин Kam1n0 для IDA Pro написан на Python (логика) и HTML/JavaScript (отрисовка). Для его установки необходимы следующие зависимости:

  • [Обязательно] IDA Pro (>6.7) с установленным плагином idapython. Плагин Python и среда выполнения обычно уже установлены вместе с IDA Pro. При необходимости переустановите IDA Pro.

Затем скачайте установщик Kam1n0-IDA-Plugin.msi со страницы релизов. Следуйте инструкциям для установки плагина и среды выполнения. Обратите внимание, что плагин должен быть установлен в папку плагинов IDA Pro, расположенную по адресу $IDA_PRO_PATH$/plugins. Например, в Windows путь может быть C:/Program Files (x86)/IDA 6.95/plugins. Установщик обнаружит и проверит путь.

Настройка Kam1n0 на системах на базе Ubuntu/Debian

  • Убедитесь, что у вас установлена версия Java 11 от Oracle (не default-jdk из apt).

    • Добавьте PPA Oracle, затем обновите репозиторий пакетов: sudo add-apt-repository ppa:webupd8team/java
      • Если возникнут ошибки (например, ~webupd8team not found) и вы используете прокси, убедитесь, что установлены и экспортированы переменные окружения http_proxy и https_proxy, затем повторите попытку с опцией -E для sudo. Кроме того, если возникает ошибка «add-apt repository command not found», попробуйте: sudo apt install -y software-properties-common.
    • Затем: sudo apt-get update и sudo apt-get install oracle-java8-installer
      • Проверьте версию Java с помощью java -version; возможно, потребуется вручную задать переменную окружения JAVA_HOME (в /etc/environment): JAVA_HOME=/usr/lib/jvm/java-11-oracle.

Обратная совместимость

Репозитории ассемблерного кода и файлы конфигурации, использовавшиеся в предыдущих версиях (<2.0.0), больше не поддерживаются последней версией. Пожалуйста, свяжитесь с нами, если вам потребуется перенести старые репозитории.

Документация

  • Учебное пособие по серверу Kam1n0
    • Настройка и запуск движка
    • Регистрация учётной записи и вход
    • Создание приложения
    • Совместное использование приложения и управление доступом
    • Подготовка данных
    • URL приложения для плагина IDA Pro
    • Индексация бинарных файлов
    • Поиск по функции ассемблерного кода
      • Представление графа потока
      • Представление текстовых различий
      • Представление группы клонов
    • Поиск по бинарному файлу
    • Просмотр результата поиска клонов
      • Сводные блоки

Разработка

Клонируйте последнюю стабильную ветку (не забудьте --recursive!):```bash git clone --recursive -b master2.x --single-branch https://github.com/McGill-DMaS/Kam1n0-Community

root@kitploit:~
## Импорт проекта.
IntelliJ: Импортируйте корневой каталог /kam1n0/kam1n0/ как проект Maven. Все подмодули будут загружены соответствующим образом.
EclipseEE: Добавьте клонированный репозиторий Git в представление Git. Импортируйте все проекты Maven из репозитория Git.
Возможно, потребуется изменить classpath, чтобы устранить ошибки.
Все пути к ресурсам динамически изменяются при запуске внутри IDE (через подмодуль kam1n0-resources).

Для сборки проекта:```
cd /kam1n0/kam1n0
mvn -DskipTests clean package
mvn -DskipTests package

The resulting binaries can be found in /kam1n0/build-bins/

Для запуска тестового кода необходимо сначала загрузить chromedriver.exe с http://chromedriver.chromium.org/ и добавить его абсолютный путь в переменную среды с именем webdriver.chrome.driver. Также требуется, чтобы в системе был установлен браузер Chrome. Тестовый код запустит экземпляр браузера для тестирования интерфейсов пользователя. Полный процесс тестирования займет примерно 3 часа.``` cd /kam1n0/kam1n0 mvn -DskipTests clean package # you can skip this one if you already built the package mvn -DskipTests package # you can skip this one if you already built the package mvn -DforkMode=never test

root@kitploit:~
Эти команды только компилируют Java с предварительно скомпилированными wheels libvex и z3. Это работает из коробки.
Сборка libvex и z3 зависит от платформы. Мы используем форк libvex от Angr.
Более серьёзные скрипты сборки, а также установщики для Windows/Linux можно найти в /kam1n0-builds/

* kam1n0: Исходный код сервера.
* kam1n0-builds: Исходный код установщика и скрипты для сборки дистрибутива.
* kam1n0-clients: Исходный код клиентов.

## Бинарные релизы

У нас есть сервер Jenkin для непрерывной разработки и доставки. Последний стабильный релиз будет опубликован здесь. Периодически мы будем синхронизировать нашу внутреннюю экспериментальную ветку с этим репозиторием.

## Лицензирование

Программное обеспечение разработано [Steven H. H. Ding](http://stevending.net/), [Miles Q. Li](http://milesqli.github.io/), и [Benjamin C. M. Fung](http://dmas.lab.mcgill.ca/fung/) в [McGill Data Mining and Security Lab](http://dmas.lab.mcgill.ca/) и [Queen's L1NNA Research Laboratory](https://l1nna.com/) в Канаде. Оно распространяется под лицензией Apache License Version 2.0. Подробности см. в [LICENSE.txt](https://github.com/mcgill-dmas/kam1n0-community/blob/HEAD/LICENSE.txt).

Copyright 2014-2021 McGill University и исследователи. Все права защищены.

## Благодарности

![image](https://img.shields.io/badge/Proudly%20Funded%20by-Defence%20Research%20&%20Development%20Canada%20(DRDC)-orange.svg?style=for-the-badge)

![image](https://img.shields.io/badge/Proudly%20Funded%20by-NSERC%20Canada%20Research%20%20Chairs%20Program-blue.svg?style=for-the-badge)

![image](https://img.shields.io/badge/Special%20thanks%20to-Philippe%20Charland,%20DRDC-orange.svg?style=for-the-badge)

![image](https://img.shields.io/badge/Acknowledgement-NVIDIA%20Corporation%20for%20donating%20the%20Titan%20Xp%20used%20for%20this%20research-blue.svg?style=for-the-badge)

![image](https://img.shields.io/badge/Built%20in-Data%20Mining%20and%20Security%20Lab,%20SIS,%20McGill%20Univrsity-red.svg?style=for-the-badge)

![image](https://img.shields.io/badge/Built%20in-L1NNA%20Research%20Laboratory,%20CS,%20Queen%27s%20Univrsity-red.svg?style=for-the-badge)
Скачать инструмент
УстановщикВключённые компонентыОписание
Kam1n0-Server.msiОсновной движокОсновной движок, предоставляющий сервис для индексации и поиска.
WorkbenchПользовательский интерфейс для управления репозиториями и запущенным сервисом.
Веб-интерфейс пользователяВеб-интерфейс для поиска/индексации бинарных файлов и функций ассемблерного кода.
Распространяемый компонент Visual C++ для VS 15Зависимость для z3.
Kam1n0-IDA-Plugin.msiПлагинКоннекторы и пользовательский интерфейс.
Колёса PyPI для CefpythonРендеринг движка пользовательского интерфейса.
Колёса PyPI и зависимые колёсаУправление пакетами Python. Включено для IDA 6.8 и 6.9.
  • Скачайте последнюю версию для Linux (Kam1n0-IDA-Plugin.tar.gz и Kam1n0-Server.tar.gz) со страницы Kam1n0-Community.

  • Распакуйте два архива (например, tar –xvzf Kam1n0-IDA-Plugin.tar.gz и tar –xvzf Kam1n0-Server.tar.gz).

  • Файл Kam1n0-Server.tar.gz создаст директорию сервера.

  • Внутри каталога server вы увидите файл kam1n0.properties, в котором задаются различные настройки; это очень важно.

  • Установите kam1n0.data.path в место, куда вы хотите записывать данные, связанные с Kam1n0. Мы советуем разместить его там же, где и server. kam1n0.ida.home указывает на расположение вашей установки IDA. Закомментируйте эту строку (а также следующую kam1n0.ida.batch), если у вас нет IDA и вы не планируете использовать Kam1n0 для дизассемблирования. Дополнительную (точную) информацию о файле kam1n0.properties см. в файле kam1n0.properties.explained.

  • Запустите workbench сервера Kam1n0: java -jar kam1n0-server-workbench.jar. Это должно открыть окно с предложением запустить Kam1n0. Альтернативно, запустите сервер: java -jar kam1n0-server.jar --start. Это запускает сервер из консоли без графического окна.

  • Для подключения и использования перейдите в браузере по адресу 127.0.0.1:8571 (порт по умолчанию, который слушает Kam1n0, обычно 8571, но его можно изменить в kam1n0.properties). Вы увидите веб-интерфейс Kam1n0. Затем следуйте учебному пособию из репозитория Kam1n0-Community, если вы не знаете, как пользоваться Kam1n0.

  • Детали
  • Учебное пособие по плагину IDA Pro
    • Функциональные возможности
    • Пошаговый пример
      • Подготовка данных
      • Запуск движка и получение URL для плагина IDA Pro
      • Настройка соединения
      • Индексация из плагина
      • Поиск функций
      • Анализ состава
      • Поиск фрагмента ассемблерного кода
      • Поле поиска
    • Как работает плагин
      • Пользовательский интерфейс
      • Синхронизация
      • Двусторонняя связь