Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
ioc2rpz — ioc2rpz 是威胁情报与 DNS 交汇之处。 | Kitploit
工具/GitHubGitHub/homas/ioc2rpz
防御工具危害指标 (IOC) 管理网络安全恶意软件分析威胁情报入侵检测DNS 模糊测试事件响应DNS 分析
GitHubhomas/ioc2rpz

ioc2rpz

ioc2rpz 是威胁情报与 DNS 交汇之处。

11621242个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
查看仓库

ioc2rpz™ 让您的威胁情报可付诸行动

License Erlang/OTP Docker Hub

目录

  • 简短摘要
  • 概述
  • ioc2rpz™ —— 威胁情报与 DNS 的交汇点
  • 架构概述
  • 如何使用 ioc2rpz™
  • ioc2rpz™ Web 界面
  • 协议支持
    • 端口摘要
    • UDP(端口 53)
    • TCP(端口 53)
    • DNS over TLS / DoT(端口 853)
    • DNS over HTTPS / DoH(端口 443/8443)
    • 速率限制
    • DNS NOTIFY
  • ioc2rpz™ 与 ISC BIND 及其他 DNS 的对比
  • 安装
  • Docker 容器
  • 环境变量
  • Docker Compose
  • 在 AWS 上运行 ioc2rpz™
  • 证书设置
  • 从源码构建
  • ioc2rpz™ 管理
    • 通过 DNS
    • 通过 REST
  • 监控与健康检查
  • 故障排查
  • 配置文件
  • 预定义配置值
  • AXFR 与 IXFR 缓存如何更新
  • 热缓存
  • 如何试用 ioc2rpz™
  • 一些免费的威胁情报订阅源
  • 更多文档
  • 参考资料
  • 支持 / 支持者
  • 联系我们
  • 许可证

简短摘要

ioc2rpz™:DNS 安全解决方案 —— ioc2rpz™ 是一款强大的 DNS 服务器,可将威胁指标转换为可操作的响应策略区(RPZ)订阅源。它自动化更新流程,确保您的网络免受最新威胁(包括恶意域名和 IP 地址)的侵害。通过将 IOC 订阅源转换为 RPZ,ioc2rpz™ 成为威胁情报与 DNS 安全之间的关键纽带,兼容 ISC Bind 或 PowerDNS 等支持 RPZ 的 DNS 服务器。

概述

DNS 是互联网的控制平面。通常 DNS 用于正当目的,但:

  • 它可被用于追踪用户的位置及其行为;
  • 恶意软件利用 DNS 进行命令与控制、数据外泄或流量重定向;
  • 根据 2016 年思科年度安全报告,91.3% 的恶意软件使用 DNS;
  • 广告公司通常使用独立且隐蔽的域名来展示广告;
  • 免费 DNS 服务(例如 1.1.1.1、8.8.8.8、9.9.9.9 等)可以帮助您解决部分担忧,但您无法自定义自己的防护设置或广告过滤规则。

ISC Bind 实际上是域名服务器的事实标准。随着响应策略区在 ISC BIND 9.8 中的引入,在 DNS 层监控和遏制恶意软件已成为一项简单的任务。PowerDNS recursor 4.0.0 及更高版本支持 RPZ。Knot DNS 也部分支持 RPZ。

与传统网络防护解决方案相比,DNS 服务器可以处理数百万个指标而不会影响性能,但当时没有自动化且高效的方法来维护主 DNS 服务器上的响应策略区。

通常,失陷指标(IOC)以纯文本形式分发,但格式各不相同,只有少数 IOC 提供商通过 RPZ 提供这些指标。

ioc2rpz™ 是一款定制 DNS 服务器,可自动将来自各种来源的指标(例如恶意 FQDN、IP)转换为 RPZ 订阅源,并自动维护/更新它们。这些订阅源可分发到任何支持 RPZ 的开源和/或商业 DNS 服务器,例如 ISC Bind、PowerDNS。您可以在路由器、台式机、服务器甚至 Raspberry Pi 上运行带 RPZ 过滤功能的自有 DNS 服务器。唯一的限制是系统内存。

使用 ioc2rpz™,您可以定义自己的订阅源、操作,并防止不需要的通信。

ioc2rpz™ —— 威胁情报与 DNS 的交汇点

ioc2rpz™ 将 IOC 订阅源转换为响应策略区(RPZ)。您可以混合订阅源以生成单个 RPZ 或多个 RPZ。受信任的域名和 IP 可被加入白名单。ioc2rpz™ 支持指标过期并相应地重建区域。
Alt ioc2rpz™ 当前版本支持:本地文件、通过 http/https/ftp 获取的文件/请求,以及用于访问其他资源类型的 shell 脚本。只要您能编写 REGEX 来提取指标,并且指标以换行符和/或回车符(/n、/r、/r/n)分隔,您就可以使用任何文件格式。

架构概述

ioc2rpz 基于 Erlang/OTP 构建,带有监督树,可确保容错和自动恢复。有关完整详情,请参阅 docs/architecture.md。``` ioc2rpz_app (application) └── ioc2rpz_sup (supervisor) ├── ioc2rpz_db_sup — ETS table heir process ├── ioc2rpz_tcp_sup — TCP listener pool (5 workers) ├── ioc2rpz_udp_sup — UDP listener ├── ioc2rpz_tls_sup — TLS/DoT listener pool (5 workers) [if cert configured] └── ioc2rpz_rest_sup — Cowboy HTTPS (REST API + DoH) [if cert configured]

关键模块:

| 模块 | 职责 |
|--------|---------------|
| `ioc2rpz.erl` | TCP/TLS DNS 工作进程 — 接受、解析、验证、响应 |
| `ioc2rpz_udp.erl` | UDP DNS 监听器 — SOA 查询 |
| `ioc2rpz_conn.erl` | IOC 源获取(HTTP/HTTPS/文件/Shell) |
| `ioc2rpz_db.erl` | 基于 ETS 的区域和包缓存 |
| `ioc2rpz_sup.erl` | 主监督者、配置加载、区域调度 |
| `ioc2rpz_rest.erl` | REST 管理 API(Cowboy) |
| `ioc2rpz_doh.erl` | DNS-over-HTTPS 处理器 |

## 如何使用 ioc2rpz™
你可以将 ioc2rpz™ 与任何支持响应策略区域(Response Policy Zones)的 DNS 服务器配合使用,例如较新版本的 ISC BIND、PowerDNS,以及任何基于这些产品的商业 DNS 服务器(例如 Infoblox、Blue Cat、Efficient IP)。cfg 文件夹中提供了一份示例 BIND 配置文件(named.conf)。
<p align="center"><a href="http://www.youtube.com/watch?feature=player_embedded&v=bvhyMFa_mBM" target="_blank"><img src="https://raw.githubusercontent.com/Homas/ioc2rpz/master/ioc2rpz_demo.png"></a></p>

## ioc2rpz™ Web 界面
[ioc2rpz.gui](https://github.com/Homas/ioc2rpz.gui) 是一个独立项目开发的 Web 管理界面。运行 ioc2rpz™ 并不需要它。

## 协议支持

ioc2rpz™ 监听多种传输协议。所有传输共享相同的查询处理流程:限速、TSIG 验证、区域查询和响应生成。完整的协议文档请参阅 [docs/protocols.md](https://github.com/homas/ioc2rpz/blob/master/docs/protocols.md)。

### 端口摘要

| 端口 | 协议 | 服务 | 条件 |
|------|----------|---------|-----------|
| 53 | UDP | DNS 查询(仅 SOA) | 始终 |
| 53 | TCP | DNS 查询、AXFR/IXFR 区域传输、管理 | 始终 |
| 853 | TCP+TLS | DoT — 与 TCP 相同,但已加密 | 需要 `cert` 配置 |
| 443/8443 | TCP+TLS | DoH(`/dns-query`)和 REST API | 需要 `cert` 配置 |

### UDP(端口 53)

UDP 用于轻量级 DNS 查询,主要是 SOA 查找。响应超过 512 字节(或 EDNS0 通告的缓冲区大小)时,会按照 RFC 1035 §4.2.1 设置 TC(截断)位,提示客户端通过 TCP 重试。UDP 不支持管理命令。```bash
dig @127.0.0.1 zone.ioc2rpz SOA -y hmac-sha256:keyname:base64key

TCP (Port 53)

TCP 负责处理区域传输(AXFR/IXFR)、SOA 查询和管理命令。一个由 5 个预派生的 accept 工作进程组成的池负责处理传入连接。```bash

AXFR zone transfer

dig @127.0.0.1 zone.ioc2rpz AXFR +tcp -y hmac-sha256:keyname:base64key

IXFR incremental transfer

dig @127.0.0.1 zone.ioc2rpz IXFR=12345 +tcp -y hmac-sha256:keyname:base64key

### DNS over TLS / DoT (端口 853)

ioc2rpz™ 支持通过 DoT 进行 RPZ 分发。当配置中存在 `cert` 记录时,TLS 监听器会自动在 853 端口启动。DoT 支持与 TCP 相同的操作(AXFR、IXFR、SOA、管理)。

- 支持的 TLS 版本:1.2 和 1.3(`?TLSVersion = 'tlsv1.2-1.3'`)
- 支持连接复用(依据 RFC 7858 §3.4,每个 TLS 会话可执行多个查询,空闲超时 30 秒)
- 不支持 TLS PIN
- DNS NOTIFY 消息以未加密方式发送(纯 UDP)
- 当磁盘上的文件被替换时,证书会自动刷新(由于 Erlang SSL 缓存,最多约 2 分钟延迟)

有关证书设置,请参阅 [证书设置](#certificate-setup)。```bash
# SOA query over DoT
kdig @127.0.0.1 -p 853 zone.ioc2rpz SOA +tls -y hmac-sha256:keyname:base64key

# AXFR over DoT
dig @127.0.0.1 -p 853 zone.ioc2rpz AXFR +tls +tcp -y hmac-sha256:keyname:base64key

DNS over HTTPS / DoH(端口 443/8443)

DoH 通过 /dns-query 端点提供基于 HTTPS 的 DNS 解析。支持的方法:

  • GET,在 ?dns= 查询参数中携带 base64url 编码的 DNS 消息
  • POST,请求体使用 Content-Type: application/dns-message(最大 4096 字节;更大的负载将收到 HTTP 413)

响应使用 Content-Type: application/dns-message。DoH 携带完整的 DNS 线格式消息,并通过与 Do53/DoT 相同的路径进行处理,因此它继承了相同的 TSIG 认证;区域传输(AXFR/IXFR)仍然仅限 TCP,不通过 DoH 提供。```bash

DoH GET request

curl -H "Accept: application/dns-message"
"https://127.0.0.1:443/dns-query?dns=AAABAAABAAAAAAAAA3d3dwdleGFtcGxlA2NvbQAAAQAB" -k

DoH POST request

curl -X POST -H "Content-Type: application/dns-message"
--data-binary @dns_query.bin "https://127.0.0.1:443/dns-query" -k

### 速率限制

DNS 查询使用智能(混合)键进行速率限制,这样合法的多区域客户端不会受到惩罚,同时可阻止通过改变查询名称进行的滥用:

- **已配置区域 + 支持的 QTYPE**(`SOA`/`AXFR`/`IXFR`,类别 `IN`)和**可识别的管理命令**(类别 `CHAOS`/`TXT`)按 `{client_IP, query_name, query_type}` 进行跟踪——因此,从同一 IP 轮询/传输多个区域(例如 `rpz1`、`rpz2`、`rpz3`)并执行管理操作的辅助服务器,会按区域+类型独立计数。
- **其他所有情况**(未知/未配置的区域、不支持的查询类型、错误的类别或无法识别的管理名称)按 `{client_IP}` 聚合,因此攻击者无法通过改变查询名称来绕过限制。

当超过限制时,服务器返回 DNS `REFUSED` 响应。

| 参数 | 默认值 | 宏 |
|-----------|---------|-------|
| 窗口 | 10 秒 | `?RATE_LIMIT_WINDOW`(10000 ms) |
| 每窗口最大请求数(细粒度:已知区域+类型 / 管理) | 1 | `?MAX_REQUESTS_PER_WINDOW` |
| 每窗口最大请求数(聚合:未知区域 / 不支持的查询类型) | 1 | `?MAX_UNKNOWN_REQUESTS_PER_WINDOW` |

速率限制适用于所有 DNS 查询传输(UDP、TCP、TLS、DoH)。窗口和阈值可通过 `include/ioc2rpz.hrl` 中的宏进行配置。

### DNS NOTIFY
下载工具