
Stringsifter - это инструмент машинного обучения, который автоматически оценивает строки на основе их актуальности для анализа вредоносных программ.
Stringsifter требует Python версии 3.9 или новее. Запустите следующие команды, чтобы получить код, запустить модульные тесты и использовать инструмент:
pip install stringsifterДля развития используйте поэзию:
git clone https://github.com/mandiant/stringsifter.git
cd stringsifter
poetry install --with devЧтобы запустить модульные тесты из каталога установки Stringsifter:
poetry run tests -v Команда pip install устанавливает два запускаемых сценария flarestrings и rank_strings в вашу среду Python. При разработке из источника используйте pipenv run flarestrings и pipenv run rank_strings .
flarestrings имитируют особенности strings GNU Binutils, а rank_strings принимает ввод трубопроводов, например:
flarestrings < my_sample > | rank_strings rank_strings поддерживает ряд аргументов командной строки. Позиционный аргумент input_strings указывает файл строк для ранга. Необязательные аргументы:
| Вариант | Значение |
|---|---|
| -Оценки (-s) | Включите оценки ранга в выходе |
| -limit (-l) | Ограничение вывода до верхнего limit ранжирования строк |
| -Мин-показатель (-m) | Ограничение вывода на строки со счетом> = min-score |
| -Партия (-b) | Укажите папку выходов strings для пакетной обработки |
Ранные строки записываются на стандартный вывод, если не указана параметр --batch , в результате чего ранжированные выходы были записаны в файлы с именем <input_file>.ranked_strings .
flarestrings поддерживает опцию -n (или --min-len ) для печати последовательностей символов, которые являются по крайней мере, min-len символами, а не по умолчанию 4. Например:
flarestrings -n 8 < my_sample > | rank_stringsБудет печатать и ранжировать только строки длины 8 или более.
docker build -t stringsifter -f docker/Dockerfile .flarestrings или аргумента rank_strings , чтобы использовать соответствующую команду. Контейнерные команды могут использоваться в трубопроводах: cat < my_sample > | docker run -i stringsifter flarestrings | docker run -i stringsifter rank_strings-v , чтобы разоблачить каталог хоста в контейнер: docker run -v < my_malware > :/samples -it stringsifter где <my_malware> содержит образцы для анализа, например:
docker run -v $HOME /malware/binaries:/samples -it stringsifterflarestrings /samples/ < my_sample > | rank_strings < options >Все аргументы командной строки поддерживаются в сценариях в области контейнер.
Строки могут применяться к произвольным спискам строк, что делает его полезным для практикующих, стремящихся получить информацию из альтернативных источников сбора интеллекта, таких как дамбы с живой памятью, прогоны песочницы или двоичные файлы, которые содержат запутанные строки. Например, Fireeye Labs запутанные решатели строк (FLOSS) извлекает печатные струны так же, как и строки , но дополнительно показывают запутанные строки, которые были закодированы, упакованы или вручную построены в стеке. Он может быть использован в качестве встроенной замены для строк, что означает, что строки могут быть аналогичным образом вызваны на выходе нити, используя следующую команду:
$PY2_VENV /bin/floss –q < options > < my_sample > | rank_strings < options >Примечания:
–q подавляет заголовки и форматирование, чтобы показать только извлеченные строки. Чтобы узнать больше о дополнительных вариантах зубной нитью, пожалуйста, посмотрите его документы об использовании.floss или rank_strings должен включать относительный путь, ссылаясь на виртуальную среду питона.strings Это распределение включает в себя программу flarestrings для обеспечения предсказуемого вывода на всех платформах. Если вы решите запустить установленные strings вашей системы, обратите внимание, что ее параметры не согласованы между версиями и платформами:
Большинство распределений Linux включают программу strings от GNU Binutils. Чтобы извлечь как «широкие», так и «узкие» строки, программа должна быть запускаться дважды, приводя к выходному файлу:
strings < my_sample > > strs.txt # narrow strings
strings -el < my_sample > >> strs.txt # wide strings. note the ">>" Некоторые версии strings BSD, упакованные в macOS, не поддерживают широкие строки. Также обратите внимание, что опция -a на строки для сканирования всего файла может быть отключен в конфигурации по умолчанию. Без -a струны могут быть потеряны. Мы рекомендуем установить GNU Binutils через Homebrew или Macports, чтобы получить версию strings , которая поддерживает широкие символы. Используйте заботу, чтобы вызвать правильную версию strings .
strings не установлены по умолчанию в Windows. Мы рекомендуем установить Windows Sysinternals, Cygwin или аналитики Malcode, чтобы получить рабочие strings .
Эта версия Stringsifter была обучена с использованием выходов струн из витринных бинарий вредоносных программ, связанных с первым набором данных Ember. Порядки метки были сгенерированы с использованием слабых процедур надзора, а контролируемое обучение выполняется повышенными деревьями решений градиентом с помощью целевой функции обучения к ранке. Смотрите быстрые ссылки для получения дополнительных технических деталей. Обратите внимание, что ни маркированные данные, ни код обучения в настоящее время не доступны, хотя мы можем пересмотреть этот подход в будущих выпусках.
Мы используем проблемы GitHub для публикации ошибок и запросов функций.
flarestrings получено из превосходной нити инструментов.