tylabs/quicksand
GitHub: tylabs/quicksand
一个基于 Python 的文档与 PDF 恶意代码分析框架,使用 Yara 规则识别漏洞与高风险内容。
Stars: 142 | Forks: 24
# QuickSand 版本 2
QuickSand Python 包和命令行工具
QuickSand 是一个基于 Python 的分析框架,用于分析可疑的恶意文档,以识别不同编码或压缩流中的漏洞。QuickSand 支持文档、PDF、Mime/电子邮件、Postscript 以及其他常见格式。内置的命令行工具可以处理单个文档或文档目录。
QuickSand 通过扫描文档和 PDF 解码流中的内容,使用 Yara 签名来识别漏洞或高风险的活动内容。
一个托管版本已可用,无需任何安装即可试用:[scan.tylabs.com](https://scan.tylabs.com/)。
## 文件:
- src/quicksand/quicksand.py:主 Quicksand 类和 CLI 工具
- src/quicksand/quicksand_exe.yara:用于检测可执行文件的 Yara 规则
- src/quicksand/quicksand_exploits.yara:用于检测文档中漏洞的 Yara 规则
- src/quicksand/quicksand_pdf.yara:用于检测 PDF 中漏洞的 Yara 规则
- bin/quicksand:命令行工具
- requirements.txt:Python 依赖项
- [gcloud/](gcloud/README.md) 可选的 Google Cloud Run 函数
- [lambda/](lambda/README.md) 可选的 AWS Lambda 函数
## 使用 pip 从 PyPI 安装
```
pip3 install quicksand
```
## 使用 pip 升级
```
pip3 install --upgrade quicksand
```
## 从源代码安装
如果你想从源代码安装,例如从 GitHub 下载的 uicksand-main.zip:
```
pip3 install quicksand-main.zip
```
## 命令行用法
一个用于处理并输出 JSON 或 TXT 结果的 Quicksand 命令行工具。
```
usage: quicksand [-h] [-v] [-c] [-y] [-t TIMEOUT] [-e EXPLOIT] [-x EXE] [-a PDF] [-f {json,txt}] [-o OUT] [-p PASSWORD]
[-d DROPDIR]
document
QuickSand Document and PDF maldoc analysis tool.
positional arguments:
document document or directory to scan
optional arguments:
-h, --help show this help message and exit
-v, --verbose increase output verbosity
-c, --capture capture stream content
-y, --yara capture yara matched strings
-t TIMEOUT, --timeout TIMEOUT
timeout in seconds
-e EXPLOIT, --exploit EXPLOIT
yara exploit signatures
-x EXE, --exe EXE yara executable signatures
-a PDF, --pdf PDF yara PDF signatures
-f {json,txt}, --format {json,txt}
output format
-o OUT, --out OUT save output to this filename
-p PASSWORD, --password PASSWORD
password to decrypt ole or pdf
-d DROPDIR, --dropdir DROPDIR
save objects to this directory
```
### 处理单个文件
```
quicksand document.doc
```
### 处理文件目录
```
quicksand malware/
```
## Python 模块用法
### 内存中的文件
```
from quicksand.quicksand import quicksand
import pprint
qs = quicksand(data, timeout=18, strings=True)
qs.process()
pprint.pprint(qs.results)
```
### 使用文件名处理
```
from quicksand.quicksand import quicksand
qs2 = quicksand("file.doc")
qs2.process()
qs.results
```
### 处理目录
```
from quicksand.quicksand import quicksand
qs = quicksand.readDir("malware")
qs
```
返回一个字典,格式为 {文件名: `qs_results`, ...}。
### 可选的初始化参数
- capture:True|False,返回提取流的内容
- debug:True|False,将调试信息打印到标准输出
- exploityara:漏洞 Yara 规则路径
- execyara:可执行文件 Yara 规则路径
- pdfyara:PDF 漏洞 Yara 规则路径
- password:加密文档/PDF 的密码
- timeout:处理超时设置;0 表示无限制
## 评分机制
文档会根据关联的 Yara 签名中的排名值进行评分。
此外,每个签名会定义检测到的项是漏洞、警告还是风险特征。如需了解如何解读结果,请参阅[如何解读结果](https://scan.tylabs.com/howto)。
如果你添加自己的签名,它们不需要包含额外的元数据即可正常工作。
### MacOS 上的 zlib 问题
MacOS 用户可能会遇到 zlib 问题(PDF FlateDecode 等),原因是自 MacOs 10.4 起缺少 OpenSSL 头文件。
```
zlib.error: Error -3 while decompressing data: unknown compression method
zlib.error: Error -3 while decompressing data: incorrect header check
```
一种解决方案是使用 Brew.sh 安装 zlib,然后使用 pyenv 重新安装 Python 3:
```
export LDFLAGS="-L/usr/local/opt/zlib/lib"
export CPPFLAGS="-I/usr/local/opt/zlib/include"
pyenv install 3.8.5
```
## 使用 QuickSand?
[让我们知道](https://tylabs.com) @tylabs
## 问题与项目主页
[QuickSand GitHub](https://github.com/tylabs/quicksand/)
标签:AWS Lambda, DevSecOps, DNS信息、DNS暴力破解, Google Cloud Run, MIME分析, PB级数据处理, PDF分析, PostScript分析, Python安全工具, YARA规则, 上游代理, 云函数, 依赖管理, 关键词提取, 压缩分析, 反病毒, 威胁情报, 安全运维, 开发者工具, 开源安全工具, 恶意文档分析, 数字取证, 文件类型识别, 无服务器计算, 沙箱分析, 流解码, 网络安全, 自动化分析, 自动化脚本, 跨站脚本, 逆向工具, 逆向工程平台, 邮件安全, 隐私保护