Инструментарий на основе кода и исследования на основе кода и исследования (MCRIT)
MCRIT - это структура, созданная для упрощения применения алгоритма Минхаша в контексте сходства кода. Он может быть использован для быстрого реализации «шледерс», то есть методов, которые кодируют свойства разборных функций, а затем использоваться для оценки сходства через алгоритм Минхаш. Он адаптирован к работе с отчетами о разборке, испускаемых SMDA.
Использование
Занятое использование
Мы настоятельно рекомендуем использовать полностью упакованный Docker-mcrit для тривиального развертывания и использования.
Прежде всего, это гарантирует, что у вас есть полностью совместимые версии для всех компонентов, включая базу данных для постоянства и веб -фронтал для удобного взаимодействия.
Автономное использование
Установка MCRIT самостоятельно потребует еще нескольких шагов.
Для следующего мы предполагаем, что Ubuntu как хост операционная система.
Требования к установке Python перечислены в requirements.txt и могут быть установлены с помощью:
# install python and MCRIT dependencies
$ sudo apt install python3 python3-pip
$ pip install -r requirements.txt
По умолчанию MongoDB 5.0 используется в качестве бэкэнда, который также является рекомендуемым способом работы, поскольку он обеспечивает постоянное хранение данных. Следующие команды наметили пример установки на Ubuntu:
# fetch mongodb signing key
$ sudo apt-get install gnupg
$ wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add -
# add package repository (Ubuntu 22.04)
$ echo " deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/5.0 multiverse " | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list
# OR add package repository (Ubuntu 20.04)
$ echo " deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/5.0 multiverse " | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list
# OR add package repository (Ubuntu 18.04)
$ echo " deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/5.0 multiverse " | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list
# install mongodb
$ sudo apt-get update
$ sudo apt-get install -y mongodb-org
# start mongodb as a service
$ sudo systemctl start mongod
# optionally configure to start the service with system startup
$ sudo systemctl enable mongod
При выполнении автономной установки вы, возможно, хотите установить модуль MCRIT на основе клонированного репозитория, как так:
После этой первоначальной установки и при желании MCRIT можно использовать без подключения к Интернету.
Операция
Бэкэнд MCRIT, как правило, делится на два компонента: сервер, предоставляющий интерфейс API для работы, и один или несколько рабочих, обрабатывающих очередь в очереди. Их можно запустить в отдельных оболочках, используя:
и
По умолчанию сервер API REST будет прослушиваться на http://127.0.0.1:8000/.
Взаимодействие
Независимо от вашего выбора для установки, после запуска вы можете взаимодействовать с бэкэнд MCRIT.
MCRIT CLIENT
Мы создали клиентский модуль Python, способный работать со всеми доступными конечными точками сервера.
Документация для этого клиентского модуля в настоящее время находится в разработке.
MCRIT CLI
Существует также CLI, основанный на этом клиентском пакете, примеры:
# query some stats of the data stored in the backend
$ python -m mcrit client status
{ ' status ' : { ' db_state ' : 187, ' storage_type ' : ' mongodb ' , ' num_bands ' : 20, ' num_samples ' : 137, ' num_families ' : 14, ' num_functions ' : 129110, ' num_pichashes ' : 25385}}
# submit a malware sample with filename sample_unpacked, using family name "some_family"
$ python -m mcrit client submit sample_unpacked -f some_family
1.039s - > (architecture: intel.32bit, base_addr: 0x10000000): 634 functions Здесь доступна более обширная документация MCRIT CLI
Плагин MCRIT IDA
Плагин IDA также в настоящее время находится в стадии разработки. Чтобы использовать его, сначала создайте свой собственный config.py и внесите необходимые изменения в зависимости от развертывания экземпляра MCRIT:
cp ./plugins/ida/template.config.py ./plugins/ida/config.py
nano ./plugins/ida/config.py
Затем просто запустите сценарий, найденным в
./plugins/ida/ida_mcrit.py
в IDA.
Справочные данные
В июле 2023 года мы начали заполнять репозиторий GitHub, который содержит готовые к использованию справочные данные для общих компиляторов и библиотек.
История версий
- 2024-06-20 v1.3.17: Удаление работы и очистка теперь более надежны и не будут случайно чистить образцы нежелательно - @yankovs - спасибо !!
- 2024-05-10 v1.3.16: очистка очередей была расширена, чтобы также чистить файлы, загруженные во всех 3 типах запросов (картовая, Uncecpater, SMDA).
- 2024-04-17 v1.3.15: Spawningworker Type Work
spawningworker теперь прекратит детей после Queueconfig.queue_spawningworker_children_timeout Seconds. - 2024-04-02 v1.3.14: Экспериментальный: введение нового типа
spawningworker . - 2024-04-02 v1.3.13: При очистке очереди, теперь также удаляйте все неудачные задания @yankovs-спасибо !!
- 2024-03-06 V1.3.12: Исправлена ошибка, где защита недавних образцов от очистки очередей приведет к ошибкам ключевых, как сообщается @yankovs-спасибо !!
- 2024-02-21 V1.3.10: Bump SMDA до 1.13.16, который охватывает еще 200 инструкций в лучшей сбежавшей категории (поражает Минхаш).
- 2024-02-16 v1.3.9: готовая и интегрированная функция автоматической очистки очереди (отключена по умолчанию), предложенная @yankovs-thx !!
- 2024-02-15 v1.3.8: Bump SMDA для решения проблем с распознаванием версий в SMDAfunction, фиксированные печатные издания в McritInterface в плагине IDA (спасибо @malwarefrank !!).
- 2024-02-12 v1.3.5: пересчет Minhashes теперь будет показывать правильный процент (спасибо @malwarefrank !!).
- 2024-02-02 v1.3.4: Mini Fix в плагина IDA, чтобы избежать ссылки на потенциально неонициализированный объект (Thx to @r0ny123 !!).
- 2024-02-01 v1.3.2: Исправление: непараллельное соответствие теперь выводит тот же формат данных (спасибо @dannyquist !!).
- 2024-01-30 v1.3.1: соединение с MongoDB теперь полностью настраивается (спасибо к @dannyquist !!).
- 2024-01-24 v1.3.0: Разрыв: релиз веха с улучшениями индексации для Пичаша и Минхаша. Чтобы обеспечить полную обратную совместимость, рекомендуется перечисление всех хэшей. Проверьте это руководство по миграции.
- 2024-01-23 v1.2.26: закрепление LIEF до 0,13,2, чтобы гарантировать, что закрепленная SMDA остается совместимой.
- 2024-01-09 V1.2.25: Убедитесь, что мы можем обеспечить статус системы независимо от того, есть ли
db_state и db_timestamp или нет. - 2024-01-05 v1.2.24: теперь поддерживает аргумент «запрос» в CLI, а также компактные совпадения (без информации о совпадении функций), чтобы уменьшить след.
- 2024-01-03 v1.2.23: Максимальный размер экспорта для защиты системы от сбоев OOM.
- 2024-01-02 v1.2.22: введенный класс данных для уникального блокировки с удобной функцией.
- 2023-12-28 v1.2.21: McritClient теперь делает проход для сопоставления бинарных запросов.
- 2023-12-28 v1.2.20: Статус теперь обеспечивает временную метку последнего обновления БД.
- 2023-12-13 v1.2.18: Проверка границ в сравнении с образцом_ид передается в getuniqueblocks.
- 2023-12-05 v1.2.15: Добавленная функциональность удобства к объектам задания, номер версии, выровненный с Mcritweb.
- 2023-11-24 v1.2.11: SMDA прикреплен к версии 1.12.7, прежде чем мы обновим SMDA, и введем миграцию базы данных, чтобы пересчитать хэши PIC + Picblock с улучшенным обобщением.
- 2023-11-17 V1.2.10: Добавлена возможность установить токен авторизации для сервера через поле заголовка:
apitoken ; Добавлена способность фильтровать рабочие группы; Добавлена способность провалиться с сиротами. - 2023-10-17 v1.2.8: незначительное исправление в группах.
- 2023-10-16 v1.2.6: суммированная статистика очереди, изысканная классификация заданий.
- 2023-10-13 v1.2.4: открытая очередь/удаление задания для интерфейса REST, улучшенная скорость запроса для различных поисков очередей с помощью индексации и параметризованных запросов MongoDB.
- 2023-10-13 v1.2.3: Работники теперь будут отменены с надписью в процессе работы на случай, если они потерпят крушение (спасибо @yankovs для шаблона кода).
- 2023-10-03 v1.2.2: фильтрация MatchingResult для образцов MIN/MAX NUM (вкл. Fix).
- 2023-10-02 v1.2.0: выпуск вехи для вирусного бюллетеня 2023.
- 2023-09-18 v1.1.7: Bugfix: Соответствие задания с 0 полосами теперь деактивирует Minhash Matching, как это должно было быть раньше. Также соответствует фиксированному проценту выполнения работы.
- 2023-09-15 v1.1.6: Bugfix в блоке, функциональность удобства для взаимодействия с объектами работы.
- 2023-09-14 v1.1.5: Деактивированный овиновщик в качестве обработчика WSGI по умолчанию в настоящее время из-за проблем с невозвращающими вызовами при обработке вызовов вычислительных вызовов.
- 2023-09-14 v1.1.4
data_files Bugfix: Добавлены requirements.txt setup.py - 2023-09-13 v1.1.3: извлечение некоторых критических констант производительности в параметры, настраиваемые в Minhashconfig и StorageConfig, фиксированная отчетность о прогрессе для пакетного сопоставления, Bugfix: использование GunicornConfig для правильного обработки данных.
- 2023-09-13 v1.1.1: оптимизированные требования / настройка, исключенные
gunicorn для Windows (спасибо @yankovs !!). - 2023-09-12 v1.1.0: для развертывания Linux McRit теперь использует
gunicorn вместо waitress в качестве сервера WSGI из-за гораздо лучшей производительности. Поскольку надвиженному лицу нужна своя собственная конфигурация, это требовало, чтобы наращивать второстепенные версии (спасибо @yankovs !!). - 2023-09-08 v1.0.21: Все методы McritClient теперь продвигают апитокенс/имена пользователей в бэкэнд.
- 2023-09-05 v1.0.20: используйте два комплекта, чтобы представить адреса в образце, функциональности при хранении в MongoDB для устранения ограничений BSON (thx to @yankovs).
- 2023-09-05 v1.0.19: Статистика в настоящее время использует внутренние счетчики, которые были созданы некоторое время назад (спасибо @yankovs).
- 2023-08-30 v1.0.18: утонченная оценка удара и кластеризация результатов посредством взаимосвязи ICFG.
- 2023-08-24 v1.0.15: Интегрированная первая попытка охоты на ссылку в MatchingResult.
- 2023-08-24 v1.0.13: Восстановление групп Минхаш больше не будет взрываться на использование ОЗУ. Удаленные проверки избыточных путей (спасибо @yankovs).
- 2023-08-23 v1.0.12: добавлена способность восстанавливать полосы Minhash, используемые для индексации.
- 2023-08-22 v1.0.11: Исправлена ошибка, когда при импорте объемных данных
function_name также не была добавлена в качестве function_label . - 2023-08-11 v1.0.10: Исправлена ошибка, когда при импорте объемных данных function_ID не будет корректироваться до добавления Minhashes в полосы, что, возможно, приводит к несуществующей функции_ид.
- 2023-08-02 v1.0.9: Плагин IDA теперь может фильтровать по размеру блока и оценку Minhash, оптимизированный макет и пользовательский опыт (спасибо за отзыв @r0ny123 !!)
- 2023-07-28 v1.0.8: плагин IDA теперь может отображать цветные графики для удаленных функций и выполнять запросы для Picblockhashes (для основных блоков) для просмотренной в настоящее время функции.
- 2023-06-06 v1.0.7: расширенные возможности фильтрации на MatchingResult.
- 2023-06-02 v1.0.6: Плагин IDA теперь может соответствовать заданиям по сопоставлению задач, показывать свои результаты и метки импорта партий. Гармонизация MatchingResult.
- 2023-05-22 v1.0.3: больше надежности проверки пути при использовании MCRIT CLI в папке Malpedia Repo.
- 2023-05-12 v1.0.1: Некоторый прогресс в импорте метки для плагина IDA. Отраженное расширение API MCRITWEB в McRitClient.
- 2023-04-10 v1.0.0: релиз Milestone для Botconf 2023.
- 2023-04-10 v0.25.0: плагин IDA теперь может выполнять запросы функции для просмотренной в настоящее время функции.
- 2023-03-24 v0.24.2: McritClient может пересылать имя пользователя/apitoken, AddJsonReport теперь перенастремлен.
- 2023-03-21 v0.24.0: FunctionEntries теперь может хранить дополнительные функциональные платы, а также отправка пользователя/даты.
- 2023-03-17 v0.23.0: теперь можно запросить совпадения для отдельных SMDAFUNCTIONS (синхронно).
- 2023-03-15 V0.22.0: McritClient теперь поддерживает апитокены и необработанные ответы для подмножества функциональности.
- 2023-03-14 v0.21.0: Бэкэнд-поддержка для более тонкой фильтрации.
- 2023-03-13 v0.20.6: Бэкэнд-поддержка фильтрации семейства/образца по оценке в MatchResult.
- 2023-02-22 v0.20.4: Acfix для расчета уникальных результатов и доступа к этим результатам.
- 2023-02-21 v0.20.3: поддержка возможностей фронта с презентацией результата.
- 2023-02-17 v0.20.2: Объект расширенного отчета о соответствии для поддержки улучшений фронта.
- 2023-02-14 v0.20.0: Console Console Console для упрощения взаимодействия на основе оболочки с бэкэнд.
- 2023-01-12 V0.19.4: Дополнительные возможности фильтрации для MatchingResults.
- 2022-12-13 v0.19.1: теперь можно потребовать конкретного (более высокого) количества полосовых матчей для кандидатов (то есть уменьшить нечеткость соответствия).
- 2022-12-13 v0.18.x: включить сопоставление произвольных идентификаторов функции.
- 2022-11-25 V0.18.9: Ускоренное соответствие запросов.
- 2022-11-18 V0.18.8: гармонизированная обработка удаления и модификаций, незначительные фиксации.
- 2022-11-13 v0.18.7: радикально ускоренное удаление образца.
- 2022-11-13 v0.18.6: Добавлена функциональность для изменения существующей выборки и семейства.
- 2022-11-11 v0.18.2: модернизация процедуры соответствия, теперь должна иметь возможность обрабатывать более крупные двоичные файлы более надежно и эффективно.
- 2022-11-03 V0.18.1: Незначительные исправления.
- 2022-11-03 v0.18.0: уникальная блочная изоляция в настоящее время также генерирует предложение о правиле Yara, реструктурированном выводе результатов.
- 2022-10-24 v0.17.4: гармонизированная setup.py с требованиями, повышенная эффективность памяти для обработки заданий.
- 2022-10-18 V0.17.3: добавил удобный сценарий для рекурсивного производства отчетов SMDA из полуструктурированной папки.
- 2022-10-13 v0.17.2: Фиксированные потенциальные проблемы OOM во время расчета Минхаша путем обработки функций, которые должны быть хэшированы в небольших партиях.
- 2022-10-12 v0.17.1: добавлено функцию для планирования задания, которая обеспечит рассчитанность Minhashes для всех образцов/функций.
- 2022-10-11 V0.17.0: Поиск уникальных блоков теперь является асихронной работой через работника.
- 2022-10-11 v0.16.0: Образцы с заданий Matchquery теперь будут храниться с помощью их образцов/функциональных средств, чтобы обеспечить лучшую послеоперацию после обработки.
- 2022-10-04 v0.15.4: теперь сервер может отображать свою версию.
- 2022-09-28 v0.15.3: решение проблем производительности для больших экземпляров, генерируя последовательность сбежавшей инструкции для уникальных блоков.
- 2022-09-26 v0.15.0: CrossJobs теперь в бэкэнд, начал предоставлять функциональность для определения уникальных основных блоков в образцах.
- 2022-08-29 V0.14.2: Незначительные исправления для развертывания.
- 2022-08-22 v0.14.0: рабочие места теперь могут зависеть от других рабочих мест (подготовка к перемещению CrossJobs в бэкэнд), улучшения качества жизни в обработке работы.
- 2022-08-17 v0.13.1: добавленная опция командной линии для профилирования (требует cProfile).
- 2022-08-09 V0.13.0: теперь может выполнять эффективные прямые запросы для матчей Pichash и Picblockhash.
- 2022-08-09 v0.12.3: Bugfix для FamilyEntry
- 2022-08-08 v0.12.2: Acfix для доставки данных XCFG, добавленная недостающая зависимость.
- 2022-08-08 v0.12.0: интегрированный синтаксис расширенного поиска.
- 2022-08-03 v0.11.0: (разбивая) Семьи теперь представлены с семейным вопросом.
- 2022-08-03 v0.10.3: теперь по умолчанию данных xcfg по умолчанию в DB, открыто доступ к нему через API Rest и McritClient.
- 2022-07-29 v0.10.2: Добавлена способность удалять семьи-теперь также хранит информацию XCFG для всех функций по умолчанию.
- 2022-07-12 V0.10.1: улучшенная производительность.
- 2022-07-12 v0.10.0: (разбивая) Упрощенная работа.
- 2022-05-13 v0.9.4: Исправление ошибки для получения отправленных файлов.
- 2022-05-13 v0.9.3: Дальнейшие обновления для MatchingResults.
- 2022-05-13 v0.9.2: добавлено другое поле и более удобные функции в MatchingResult для лучшего доступа-это нарушают изменения для ранее созданных MatchingResults.
- 2022-05-05 v0.9.1: обработка бинарных представлений, незначительные исправления для очереди Минхаша-первоначальный выпуск.
- 2022-02-09 v0.9.0: добавлены Picblocks в McRit.
- 2022-01-19 V0.8.0: мигрировал клиента и примеры в первичный репозиторий MCRIT.
- 2021-12-16 v0.7.0: первоначальный частное выпуск.
Кредиты и заметки
Спасибо Штеффу Эндерсу и Полу Хордиенко за их вклад в внутренний прототип исследования этого проекта! Спасибо Мануэлю Блатту за его обширный вклад и рефактор этого проекта, а также для клиентского модуля!
Получите запросы! :)
Лицензия
MinHash-based Code Relationship & Investigation Toolkit (MCRIT)
Copyright (C) 2022 Daniel Plohmann, Manuel Blatt
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Some plug-ins and libraries may have different licenses.
If so, a license file is provided in the plug-in's folder.