[发布][release] | [文档][wiki] | [拉取请求][pr] | [问题][issues]
[![GitHub 发布][img-version-badge]][repo] [![构建状态][img-actions-badge]][actions-ci] [![拉取请求][img-pr-badge]][pr] [![Slack][img-slack-badge]][slack] [![许可证][img-license-badge]][license]
Strelka 是一个实时、基于容器的文件扫描系统,用于威胁搜寻、威胁检测和事件响应。最初基于洛克希德·马丁公司的 Laika BOSS 和类似项目(参见:相关项目)的设计,Strelka 的目的是在企业规模上执行文件提取和元数据收集。
Strelka 与其同类项目在几个重要方面有所不同:
- 核心代码库使用 Go 和 Python3.10+
- 服务器组件在容器中运行,便于灵活部署
- 为 Windows、Mac 和 Linux 提供原生客户端应用程序
- 使用允许跨平台、跨语言支持的库和格式构建
功能
Strelka 是一个模块化的数据扫描平台,允许用户或系统提交文件以进行分析、提取和报告文件内容和元数据。结合 SIEM,Strelka 能够聚合、预警,并为分析师提供更好地了解其环境的能力,而无需直接进行数据收集或耗时的文件分析。
快速入门
使用 Strelka 处理文件非常简单。在本节中,我们将演示 Strelka 的提取和分析功能,进行一次性分析。
请查看文档以了解如何在企业环境中正确构建和部署 Strelka 的详细信息。
步骤 1:安装先决条件
# Ubuntu 23.04
sudo apt install -y wget git docker docker-compose golang jq && \
sudo usermod -aG docker $USER && \
newgrp docker
步骤 2:下载 Strelka
git clone https://github.com/target/strelka.git && \
cd strelka
步骤 3:下载并安装首选的 yara 规则(可选)
rm configs/python/backend/yara/rules.yara && \
git clone https://github.com/Yara-Rules/rules.git configs/python/backend/yara/rules/ && \
echo 'include "./rules/index.yar"' > configs/python/backend/yara/rules.yara
步骤 4a:拉取预编译镜像并启动 Strelka
注意:您可以跳过 go build
过程,直接使用 http://0.0.0.0:9980
上的 Strelka UI
来分析文件。
docker-compose -f build/docker-compose-no-build.yaml up -d && \
go build github.com/target/strelka/src/go/cmd/strelka-oneshot
步骤 4b:构建并启动 Strelka
注意:您可以跳过 go build
过程,直接使用 http://0.0.0.0:9980
上的 Strelka UI
来分析文件。
docker-compose -f build/docker-compose.yaml build && \
docker-compose -f build/docker-compose.yaml up -d && \
go build github.com/target/strelka/src/go/cmd/strelka-oneshot
步骤 5:准备要分析的文件
使用任何恶意软件样本或您想让 Strelka 分析的其他文件。
wget https://github.com/ytisf/theZoo/raw/master/malware/Binaries/Win32.Emotet/Win32.Emotet.zip -P samples/
步骤 6:使用容器化的 oneshot 通过 Strelka 分析文件
./strelka-oneshot -f samples/Win32.Emotet.zip -l - | jq
这里发生了什么?
- Strelka 确定提交的文件是一个加密的 ZIP(参见:taste.yara backend.yaml)
- ScanEncryptedZip 使用字典破解了 ZIP 文件密码,并提取了压缩文件
- 提取的文件被扫描器送回 Strelka 管道,Strelka 确定提取的文件是一个 EXE
- ScanPe 解析了 EXE 文件并在输出中添加了有用的元数据
- ScanYara 使用提供的规则分析了 EXE 文件,并在输出中添加了多个匹配项,其中一些表明该文件可能是恶意的
以下输出已经过编辑以简化内容。
{
"file": {
"depth": 0,
"flavors": {
"mime": ["application/zip"],
"yara": ["encrypted_zip", "zip_file"]
},
"scanners": [
"ScanEncryptedZip",
"ScanEntropy",
"ScanFooter",
"ScanHash",
"ScanHeader",
"ScanYara",
"ScanZip"
]
},
"scan": {
"encrypted_zip": {
"cracked_password": "infected",
"elapsed": 0.114269,
"total": {"extracted": 1, "files": 1}
}
}
}
{
"file": {
"depth": 1,
"flavors": {
"mime": ["application/x-dosexec"],
"yara": ["mz_file"]
},
"name": "29D6161522C7F7F21B35401907C702BDDB05ED47.bin",
"scanners": [
"ScanEntropy",
"ScanFooter",
"ScanHash",
"ScanHeader",
"ScanPe",
"ScanYara"
]
},
"scan": {
"pe": {
"address_of_entry_point": 5168,
"base_of_code": 4096,
"base_of_data": 32768,
"checksum": 47465,
"compile_time": "2015-03-31T08:53:51",
"elapsed": 0.013076,
"file_alignment": 4096,
"file_info": {
"company_name": "In CSS3",
"file_description": "注意:在CSS3中,text-decoration属性是text-decoration-line、text-decoration-color和text-decoration-style的简写属性,但目前尚未完全实现。",
"file_version": "1.00.0065",
"fixed": {"operating_systems": ["WINDOWS32"]},
"internal_name": "Callstb",
"original_filename": "NOFAstb.exe",
"product_name": "Goodreads",
"product_version": "1.00.0065",
"var": {"character_set": "Unicode", "language": "美国英语"}
}
},
"yara": {
"elapsed": 0.068918,
"matches": [
"SEH__vba",
"SEH_Init",
"Big_Numbers1",
"IsPE32",
"IsWindowsGUI",
"HasOverlay",
"HasRichSignature",
"Microsoft_Visual_Basic_v50v60",
"Microsoft_Visual_Basic_v50",
"Microsoft_Visual_Basic_v50_v60",
"Microsoft_Visual_Basic_v50_additional",
"Microsoft_Visual_Basic_v50v60_additional"
],
"tags": [
"AntiDebug",
"SEH",
"Tactic_DefensiveEvasion",
"Technique_AntiDebugging",
"SubTechnique_SEH",
"PECheck",
"PEiD"
]
}
}
}
接下来该怎么做?
如果Strelka已部署并在您的环境中收集文件,您可能正在SIEM中收集这些事件。通过这项分析,您可以编写一个规则来查找匹配可疑yara标签的事件,从而提醒您注意潜在的恶意文件。
scan.yara.tags:("Technique_AntiDebugging" && "SubTechnique_SEH")
Fileshot用户界面
构建提供的容器时可以使用Strelka的用户界面。这个Web界面允许您将文件上传到Strelka并捕获事件,这些事件会在本地存储。
导航到http://localhost:9980/ 并使用登录凭证strelka/strelka。
潜在用途
Strelka拥有超过50个针对最常见文件类型(如exe、docx、js、zip)的文件扫描器,为用户提供了获取主机、网络或企业文件新见解的能力。虽然Strelka本身不是一个检测引擎(尽管它确实使用了YARA),但它可以提供足够的元数据来识别可疑或恶意文件。Strelka的一些潜在用途包括:
其他文档
更多关于Strelka的文档可以在README中找到,包括:
贡献
贡献指南可以在这里找到。
已知问题
加载YARA规则的问题
建议用户预编译他们的YARA规则以获得最佳性能,并避免在运行时可能出现的问题。 使用预编译的YARA文件有助于减少加载时间和资源使用,特别是在具有大量规则的环境中。 确保在Strelka配置中使用编译选项 指向预编译的规则文件。
其他问题
请查看问题跟踪器中标记为bug
的问题以了解任何其他问题。
相关项目
许可
Strelka及其相关代码根据Apache 2.0许可证的条款发布。