Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/mandiant/stringsifter
静态分析逆向工程恶意软件分析二进制分析机器学习恶意软件分析 分类第 17 名静态分析 分类第 20 名
GitHubmandiant/stringsifter

stringsifter

一个根据字符串与恶意软件分析的相关性对其进行排名的机器学习工具。

查看仓库
762126653年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

StringSifter 是一个机器学习工具,可根据字符串与恶意软件分析的相关性自动对其排序。

快速链接

  • 技术博客文章 - Learning to Rank Strings Output for Speedier Malware Analysis
  • 公告博客文章 - Open Sourcing StringSifter
  • DerbyCon 演讲 - StringSifter: Learning to Rank Strings Output for Speedier Malware Analysis
  • PyPi 上的 StringSifter 发布版本

用法

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 命令会在你的 Python 环境中安装两个可运行脚本:flarestrings 和 rank_strings。从源码进行开发时,请使用 pipenv run flarestrings 和 pipenv run rank_strings。

flarestrings 模拟 GNU binutils 中 strings 的功能,而 rank_strings 接受管道输入,例如:

root@kitploit:~
flarestrings <my_sample> | rank_strings

rank_strings 支持许多命令行参数。位置参数 input_strings 指定要排序的字符串文件。可选参数如下:

选项含义
--scores (-s)

排序后的字符串会写入标准输出,除非指定了 --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
  • 或者,不带参数运行容器以获得 shell 提示符,使用 -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 的直接替代品,这意味着也可以使用以下命令对 FLOSS 输出类似地调用 StringSifter:

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 发行版都包含来自 GNU Binutils 的 strings 程序。要同时提取“宽”字符串和“窄”字符串,必须运行该程序两次,并将输出重定向到文件:

root@kitploit:~
strings <my_sample>       > strs.txt   # 窄字符串
strings -el <my_sample>  >> strs.txt   # 宽字符串。注意使用 ">>"

MacOS

某些随 MacOS 打包的 BSD strings 版本不支持宽字符串。另请注意,默认配置中可能禁用了用于扫描整个文件的 -a 选项。如果没有 -a,可能会丢失有信息量的字符串。我们建议通过 Homebrew 或 MacPorts 安装 GNU Binutils,以获得支持宽字符的 strings 版本。请小心调用正确版本的 strings。

Windows

Windows 默认不安装 strings。我们建议安装 Windows Sysinternals、Cygwin 或 Malcode Analyst Pack 以获得可用的 strings。

讨论

此版本的 StringSifter 使用与第一个 EMBER 数据集 相关的恶意软件二进制样本的 Strings 输出进行训练。使用弱监督程序生成序数标签,并由 梯度提升决策树 以学习排序目标函数执行监督学习。更多技术细节请参阅快速链接。请注意,目前既不提供标签数据,也不提供训练代码,尽管我们可能会在未来的版本中重新考虑这种方法。

问题

我们使用 GitHub Issues 来发布错误报告和功能请求。

致谢

  • 感谢 FireEye Data Science (FDS) 和 FireEye Labs Reverse Engineering (FLARE) 团队的审核与反馈。
  • StringSifter 由 Philip Tully (FDS)、Matthew Haigh (FLARE)、Jay Gibble (FLARE) 和 Michael Sikorski (FLARE) 设计和开发。
  • StringSifter 徽标由 Josh Langner (FLARE) 设计。
  • flarestrings 源自优秀的工具 FLOSS。
下载工具
在输出中包含排序分数
--limit (-l)将输出限制为排名前 limit 的字符串
--min-score (-m)将输出限制为分数 >= min-score 的字符串
--batch (-b)指定一个包含 strings 输出文件的文件夹,用于批量处理