ioc-fang/ioc-fanger

GitHub: ioc-fang/ioc-fanger

一个用于在文本中对入侵指标(IOC)进行去防御化和反去防御化转换的 Python 库,帮助安全团队安全分享和高效解析威胁情报数据。

Stars: 69 | Forks: 12

# IOC Fanger [![PyPi](https://img.shields.io/pypi/v/ioc_fanger.svg)](https://pypi.python.org/pypi/ioc_fanger) ![PyPI - Downloads](https://img.shields.io/pypi/dm/ioc-fanger) [![CI](https://static.pigsec.cn/wp-content/uploads/repos/cas/ad/ad5834178f7599af9fdda11629d49cae07f2997beec49821b2920eff5bfd50e7.svg)](https://github.com/ioc-fang/ioc-fanger/actions) [![Lint](https://static.pigsec.cn/wp-content/uploads/repos/cas/15/15e9e38379783188cff60c52dc1a4956f07be3c00c7a8bad969dd41a89434ae0.svg)](https://github.com/ioc-fang/ioc-fanger/actions) [![Codecov](https://codecov.io/gh/ioc-fang/ioc-fanger/branch/master/graph/badge.svg)](https://codecov.io/gh/ioc-fang/ioc-fanger) [![在线演示](https://img.shields.io/badge/live%20demo-%E2%86%92-green)](http://ioc-fanger.hightower.space/) Python 包,用于对文本中的[入侵指标](https://digitalguardian.com/blog/what-are-indicators-compromise)进行反去防御化 (`example[.]com => example.com`) 和去防御化 (`example.com => example[.]com`)。 在我们的[交互式文档](http://ioc-fanger.hightower.space/)中了解更多信息! ## 哪些内容可以被反去防御化? `ioc_fanger.fang` 识别以下去防御化模式,并将其恢复为正常形式: - `.` 或 `,` 外部包裹的中括号、圆括号或花括号 — 例如 `example[.]com`, `example(.)com`, `example{.}com`, `example[,]com` - `:` 外部包裹的中括号、圆括号或花括号 — 例如 `http[:]//example.com` - 使用字面单词 `DOT`, `dot`, `punto` 或 `punkt` 代替 `.` — 例如 `example[dot]com`, `example DOT com`, `example-punto-com` - `://` 外部包裹的中括号、圆括号或花括号 — 例如 `http[://]example.com` - `www` 外部包裹的中括号、圆括号或花括号 — 例如 `[www]example.com` - `-` 外部包裹的中括号、圆括号或花括号 — 例如 `service[-]ict.nl` - 使用 `at`, `et`, `arroba` 替换 `@`,或者 `@` 本身被中括号/圆括号/花括号包裹 — 例如 `user[at]example.com`, `user(@)example.com`, `user AT example.com` - 去防御化的 URL scheme,例如 `hXXp://`, `hXXps://`, `hxxp://`, `xxxx://`, `xxxxs://`, `xxxx[s]://`,以及带括号的变体如 `[http]://` 和 `htt[p]://` - 被额外斜杠或空格分隔的 URL scheme — 例如 `http:///example.com`, `http: //example.com`, `https : //example.com` - 使用逗号代替点号编写的 IPv4 地址 — 例如 `8,8,8,8` → `8.8.8.8` - 使用反斜杠、插入符 (`^`) 或尖括号转义的点号 — 例如 `example\.com`, `example^.com`, `example<.>com` - 使用反斜杠转义的斜杠 — 例如 `http:\/\/example.com` - 电子邮件地址中 `@` 周围多余的空格 — 例如 `user @ example.com` 这些模式会结合在一起,因此像 `hXXp://bad[.]example[dot]com/file[.]php` 这样的输入可以通过一次调用完全恢复。 ## 哪些内容可以被去防御化? `ioc_fanger.defang` 应用了一组规模较小且刻意保守的替换规则,以确保输出在进行反去防御化时是明确的: - 两个单词字符之间的 `.` 会变成 `[.]` — 例如 `example.com` → `example[.]com`, `8.8.8.8` → `8[.]8[.]8[.]8` - URL scheme `http:` 和 `https:` 会变成 `hXXp:` 和 `hXXps:` — 例如 `http://example.com` → `hXXp://example[.]com` - 两个非空格字符之间的 `@` 会变成 `(at)` — 例如 `user@example.com` → `user(at)example[.]com` ## 开发者文档 对于正在开发或测试此库的开发者,这里有一些有用的提示。 ### 更新基准测试 本项目使用 [pytest-benchmark](https://pypi.org/project/pytest-benchmark/) 来测试变更对性能的影响。 默认情况下,每次运行测试时,它都会将新结果与现有结果进行比较。 如果您需要更新基准测试,请打开 `pyproject.toml` 并将以 `--benchmark` 开头的所有标志替换为: ``` --benchmark-save=benchmark ``` 这将会在 `.benchmarks/` 目录中保存一个文件。
标签:IOC处理, Python, 威胁情报, 安全规则引擎, 开发者工具, 文本处理, 无后门, 逆向工具