
Масштабируемая платформа анализа ассемблерного кода для индексации, поиска клонов и классификации исполняемых файлов с использованием статических, динамических и методов машинного обучения для нескольких архитектур.
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 решают задачу эффективного поиска подграфов (т.е. проблему изоморфизма графов) для функций ассемблерного кода (среднее время запроса <1,3 с, среднее время индексации <30 мс для 2,3 млн функций). По заданной целевой функции (показана слева на рисунке ниже) определяется её клонированный подграф среди других функций в репозитории (показан справа).
Семантический поиск клонов с помощью дифференцированного фаззинга и решения ограничений. Эффективный и масштабируемый динамико-статический гибридный подход (среднее время запроса <1 с, среднее время индексации <100 мс для 1,5 млн функций). По заданной целевой функции (показана слева на рисунке ниже) определяется клонированный подграф среди других функций в репозитории (показан справа). Поддерживает визуализацию абстрактного синтаксического графа.
Asm2Vec использует обучение представлениям. Он понимает лексико-семантические связи ассемблерного кода. Например, регистры xmm* семантически связаны с векторными операциями, такими как addps. memcpy аналогичен strcpy. На графике ниже показаны различные ассемблерные функции, скомпилированные из одного и того же исходного кода gmpz_tdiv_r_2exp в libgmp. Слева направо: функции скомпилированы с опциями GCC O0, GCC O3, O-LLVM обфускатором (с уплощением графа управления) и LLVM обфускатором (с ложным графом управления). Asm2Vec может статически идентифицировать их как клоны.