
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 -vpip install命令将两个可运行的flarestrings rank_strings在您的Python环境中。从源开发时,请使用pipenv run flarestrings和pipenv run rank_strings 。
flarestrings模仿gnu binutils strings的特征,而rank_strings接受管道输入,例如:
flarestrings < my_sample > | rank_strings rank_strings支持许多命令行参数。位置参数input_strings指定一个字符串文件进行排名。可选论点是:
| 选项 | 意义 |
|---|---|
| - 得分(-s) | 在输出中包括等级分数 |
| - 限制(-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 >所有命令行参数均在容器化脚本中支持。
弦乐器可以应用于任意列表的字符串列表,这对于希望从替代智能收集来源(例如Live Memory转储,沙盒运行)或包含混淆字符串的二进制文件等替代智能收集来源中获得见解的从业者有用。例如,FireEye Labs混淆了字符串求解器(牙线),就像字符串一样提取可打印的字符串,但另外揭示了在堆栈上编码,包装或手动构建的混淆的字符串。它可以用作字符串的在线替换,这意味着可以使用以下命令在牙线输出上类似地调用字符串:
$PY2_VENV /bin/floss –q < options > < my_sample > | rank_strings < options >笔记:
–q参数抑制标题并格式化以显示仅提取的字符串。要了解有关其他牙线选项的更多信息,请参阅其用法文档。floss或rank_strings必须包括一个相对路径,引用了python python virtual enviroment。strings的注释此分布包括flarestrings计划,以确保跨平台可预测的输出。如果您选择运行系统的已安装strings ,请注意,其选项在版本和平台上不一致:
大多数Linux分布都包括GNU Binutils的strings程序。要提取“宽”和“狭窄”字符串,该程序必须运行两次,将输出文件输送到输出文件:
strings < my_sample > > strs.txt # narrow strings
strings -el < my_sample > >> strs.txt # wide strings. note the ">>"包装带有MACO的BSD strings的某些版本不支持宽字符串。另请注意,扫描整个文件的-a选项可以在默认配置中禁用。没有-a可能会丢失信息的字符串。我们建议通过自制或MacPorts安装GNU Binutils,以获取支持宽字符的strings 。使用护理调用正确的strings版本。
默认情况下, strings未安装在Windows上。我们建议安装Windows Sysinternals,Cygwin或Malcode Analyst Pack以获取工作strings 。
使用与第一个Ember数据集相关的采样恶意软件二进制文件的字符串输出对此版本的弦乐器进行了训练。使用弱监督程序生成序数标签,并通过具有学习对目标功能的梯度提升决策树来执行监督学习。有关更多技术细节,请参见快速链接。请注意,尽管我们可以在将来的版本中重新考虑这种方法,但目前均未可用标记的数据和培训代码。
我们使用GitHub问题来发布错误和功能请求。
flarestrings源自出色的工具牙线。