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

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

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

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

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

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/mandiant/stringsifter
Обратная инженерияАнализ вредоносных программАнализ Бинарных ФайловМашинное Обучение
GitHubmandiant/stringsifter

stringsifter

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

Репозиторий
7611261 месяц назадПроверено Kitploit

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться

StringSifter — это инструмент машинного обучения, который автоматически ранжирует строки по их релевантности для анализа вредоносного ПО.

Быстрые ссылки

  • Технический пост в блоге - Обучение ранжированию вывода Strings для ускоренного анализа вредоносного ПО
  • Анонс в блоге - Открытие исходного кода StringSifter
  • Доклад на DerbyCon - StringSifter: обучение ранжированию вывода Strings для ускоренного анализа вредоносного ПО
  • Релизы StringSifter на PyPi

Использование

Для StringSifter требуется Python версии 3.9 или новее. Выполните следующие команды, чтобы получить код, запустить модульные тесты и использовать инструмент:

Установка

root@kitploit:~
pip install stringsifter

Для разработки используйте poetry:

root@kitploit:~
git clone https://github.com/mandiant/stringsifter.git
cd stringsifter
poetry install --with dev

Запуск модульных тестов

Чтобы запустить модульные тесты из каталога установки StringSifter:

root@kitploit:~
poetry run tests -v

Запуск из командной строки

Команда pip install устанавливает два исполняемых скрипта flarestrings и rank_strings в ваше окружение Python. При разработке из исходного кода используйте pipenv run flarestrings и pipenv run rank_strings.

flarestrings имитирует функции strings из GNU binutils, а rank_strings принимает входные данные через конвейер, например:

root@kitploit:~
flarestrings <my_sample> | rank_strings

rank_strings поддерживает ряд аргументов командной строки. Позиционный аргумент input_strings указывает файл со строками для ранжирования. Необязательные аргументы:

Параметр

Ранжированные строки записываются в стандартный вывод, если не указан параметр --batch; в этом случае результаты ранжирования записываются в файлы с именами <input_file>.ranked_strings.

flarestrings поддерживает параметр -n (или --min-len) для вывода последовательностей символов длиной не менее min-len символов вместо значения по умолчанию 4. Например:

root@kitploit:~
flarestrings -n 8 <my_sample> | rank_strings

выведет и ранжирует только строки длиной 8 и более символов.

Запуск из Docker-контейнера

  • После клонирования репозитория соберите контейнер. Из корневого каталога пакета:
root@kitploit:~
docker build -t stringsifter -f docker/Dockerfile .
  • Запустите контейнер с аргументом flarestrings или rank_strings, чтобы использовать соответствующую команду. Команды из контейнера можно использовать в конвейерах:
root@kitploit:~
cat <my_sample> | docker run -i stringsifter flarestrings | docker run -i stringsifter rank_strings
  • Либо запустите контейнер без аргументов, чтобы получить приглашение оболочки, используя флаг -v для предоставления контейнеру доступа к каталогу хоста:
root@kitploit:~
docker run -v <my_malware>:/samples -it stringsifter

где <my_malware> — каталог с образцами для анализа, например:

root@kitploit:~
docker run -v $HOME/malware/binaries:/samples -it stringsifter
  • В приглашении контейнера:
root@kitploit:~
flarestrings /samples/<my_sample> | rank_strings <options>

Все аргументы командной строки поддерживаются в скриптах, запускаемых в контейнере.

Запуск на выходных данных FLOSS

StringSifter можно применять к произвольным спискам строк, что делает его полезным для специалистов, которые хотят извлечь сведения из альтернативных источников разведданных, таких как дампы живой памяти, результаты работы в песочнице или бинарные файлы с обфусцированными строками. Например, FireEye Labs Obfuscated Strings Solver (FLOSS) извлекает печатные строки так же, как Strings, но дополнительно выявляет обфусцированные строки, которые были закодированы, упакованы или вручную сконструированы в стеке. Его можно использовать как замену Strings в конвейере, а значит, StringSifter можно аналогичным образом вызывать для выходных данных FLOSS с помощью следующей команды:

root@kitploit:~
$PY2_VENV/bin/floss –q <options> <my_sample> | rank_strings <options>

Примечания:

  1. Аргумент –q подавляет заголовки и форматирование, чтобы отображать только извлечённые строки. Дополнительные сведения о параметрах FLOSS см. в его документации по использованию.
  2. FLOSS требует Python 2, тогда как StringSifter требует Python 3. В примере команды как минимум один из вызовов — floss или rank_strings — должен включать относительный путь, указывающий на виртуальное окружение Python.
  3. FLOSS можно загрузить в виде автономного исполняемого файла. В этом случае указывать окружение Python не требуется, поскольку исполняемый файл не зависит от интерпретатора Python.

Примечания по запуску strings

В этот дистрибутив включена программа flarestrings, чтобы гарантировать предсказуемый вывод на всех платформах. Если вы решите использовать установленную в системе strings, учтите, что её параметры различаются в зависимости от версии и платформы:

Linux

В большинстве дистрибутивов Linux есть программа strings из GNU Binutils. Чтобы извлечь как «широкие», так и «узкие» строки, программу нужно запустить дважды, перенаправив вывод в файл:

root@kitploit:~
strings <my_sample>       > strs.txt   # narrow strings
strings -el <my_sample>  >> strs.txt   # wide strings.  note the ">>"

MacOS

Некоторые версии BSD strings, поставляемые с MacOS, не поддерживают широкие строки. Также учтите, что параметр -a, позволяющий strings сканировать весь файл, может быть отключён в конфигурации по умолчанию. Без -a информативные строки могут быть потеряны. Мы рекомендуем установить GNU Binutils через Homebrew или MacPorts, чтобы получить версию strings с поддержкой широких символов. Будьте внимательны и вызывайте правильную версию strings.

Windows

В Windows strings не установлена по умолчанию. Мы рекомендуем установить Windows Sysinternals, Cygwin или Malcode Analyst Pack, чтобы получить рабочую версию strings.

Обсуждение

Эта версия StringSifter была обучена на выходных данных Strings для выбранных бинарных файлов вредоносного ПО, связанных с первым набором данных EMBER. Порядковые метки создавались с помощью процедур слабого контроля, а обучение с учителем выполняется с помощью градиентного бустинга деревьев решений с целевой функцией learning-to-rank. Дополнительные технические сведения см. в разделе Быстрые ссылки. Обратите внимание, что размеченные данные и обучающий код в настоящее время недоступны, хотя в будущих выпусках мы, возможно, пересмотрим этот подход.

Вопросы

Для сообщений об ошибках и запросах новых функций мы используем GitHub Issues.

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

  • Благодарим команды FireEye Data Science (FDS) и FireEye Labs Reverse Engineering (FLARE) за рецензирование и обратную связь.
  • StringSifter спроектировали и разработали Филип Талли (FDS), Мэттью Хейг (FLARE), Джей Гиббл (FLARE) и Майкл Сикорски (FLARE).
  • Логотип StringSifter разработал Джош Лангнер (FLARE).
  • flarestrings создан на основе отличного инструмента FLOSS.
Скачать инструмент
Значение
--scores (-s)Включает оценки ранжирования в вывод
--limit (-l)Ограничивает вывод первыми limit ранжированными строками
--min-score (-m)Ограничивает вывод строками с оценкой >= min-score
--batch (-b)Указывает папку с выходными данными strings для пакетной обработки