ioc-fang/ioc-fanger
GitHub: ioc-fang/ioc-fanger
一个用于在文本中对入侵指标(IOC)进行去防御化和反去防御化转换的 Python 库,帮助安全团队安全分享和高效解析威胁情报数据。
Stars: 69 | Forks: 12
# IOC Fanger
[](https://pypi.python.org/pypi/ioc_fanger)

[](https://github.com/ioc-fang/ioc-fanger/actions)
[](https://github.com/ioc-fang/ioc-fanger/actions)
[](https://codecov.io/gh/ioc-fang/ioc-fanger)
[](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, 威胁情报, 安全规则引擎, 开发者工具, 文本处理, 无后门, 逆向工具