
新发布Jul 27, 2026
SentryPeer v4.0.5
分布式SIP蜜罐,检测并共享VoIP攻击中的欺诈数据。通过点对点网络收集恶意行为者的IP和电话号码,并集成REST API和WebHook以实现实时威胁情报。
保护您的 SIP 服务器免受恶意行为者攻击
特别感谢 Deutsche Telekom Security GmbH 在 2024 年对我们的赞助。
为什么不给我们点个星,并在 Twitter 上关注我们呢!
目录
- 简介
- 概述
- 功能特性
- 演讲
- 采用情况
- 设计
- Docker
- 安装
- 运行 SentryPeer
- WebHook
- RESTful API
- Syslog 与 Fail2ban
- JSON 日志格式
- 命令行选项
- IPv6 组播地址
- 许可证
- 贡献
- 项目网站
- 商标
- 问题、缺陷报告、功能请求
- 特别感谢
- 赞助
简介
SentryPeer® 是一款欺诈检测工具。它让恶意行为者尝试拨打电话,并保存他们来源的 IP 地址以及 他们尝试拨打的号码。这些详细信息随后可用于在服务提供商网络上发出通知,并且下次 当用户/客户尝试拨打已收集的号码时,您可以采取任何您认为合适的行动。
例如:
假设您在现场运行自己的 VoIP PBX。在这种情况下,SentryPeer 将允许您做的是, 当您的用户拨打外呼电话时,深入查询电话号码列表(使用 RESTful API)。如果命中, 您将收到预警,提示您网络内的某个设备可能正在尝试拨打已知的探测电话号码,这些号码要么已被:
- 您自己运行的 SentryPeer 节点收集的号码
- 其他 SentryPeer 节点看到并通过点对点网络复制到您节点的号码
这将允许您在产生任何昂贵通话费用或更糟糕的事情发生之前,从您的监控系统生成通知。
什么情况会导致这种场景?
- 潜在的语音邮件欺诈。如果您允许拨打入站号码(您的 DID/DDI)进入语音邮件系统,然后提示输入 PIN 码,就可能发生这种情况。该 PIN 码很弱,且语音邮件系统允许您按 '*' 回拨留下语音邮件的来电号码。攻击者留下了一条语音邮件,然后猜出您的 PIN 码并回拨。该来电号码是 SentryPeer 已见过的已知号码。您可以对此发出警报。
- 设备被劫持和/或软电话或类似设备正在使用他们从电话 GUI 窃取的凭据,试图注册到您的系统并拨打 SentryPeer 见过的号码。
- 无辜用户正在拨打 SentryPeer 之前见过的钓鱼号码或已知的昂贵号码等。
传统上,这些数据会被发送到中央位置,因此您并不拥有自己收集的数据。这个项目完全是关于该数据的点对点共享。用户拥有数据以及各种服务提供商/网络提供商相关的数据馈送,对我来说是关键所在。我受够了市面上那些保留数据并出售数据的服务。如果您收集了数据,您应该有权选择保留它和/或选择通过 p2p 方法与其他 SentryPeer 社区成员共享。
概述
SentryPeer 节点
这里我们使用 Mermaid 序列图 来展示从 SentryPeer 节点到 SentryPeerHQ 的数据流。
sequenceDiagram
actor A as Attacker
participant S as SentryPeer Node
participant DS as Data Store
participant W as WebHook <br/>Endpoint
Note over DS: sqlite/json log/syslog <br/>(if enabled)
Note over W: if enabled
A->>S: SIP probe OPTIONS/REGISTER/etc
S->>DS: Save event
S->>W: Send event
W->>S: 200 OK
S->>A: 200 OK
A->>S: INVITE sip:00046500729221@
SentryPeer 节点到 SentryPeerHQ
sequenceDiagram
actor A as Attacker
participant S as SentryPeer Node
participant DS as Data Store
participant HQ as SentryPeerHQ
Note over DS: sqlite/json log/syslog (if enabled)
Note over HQ: OAuth2 creds required.<br/> if using https://sentrypeer.com
A->>S: SIP probe OPTIONS/REGISTER/etc
S->>DS: Save event
S->>HQ: Send event
HQ->>S: 201 Created
S->>A: 200 OK
A->>S: INVITE sip:00046500729221@
使用 SentryPeer Node 和 SentryPeerHQ API
sequenceDiagram
Actor U as User
participant S as SentryPeer Node/HQ API
Note over S: if enabled
U->>S: GET /numbers
S->>U: 200 OK Return all Phone numbers seen in database
与您自己的系统集成
sequenceDiagram
participant D as Device
participant P as PBX/ITSP/Carrier
participant HQ as SentryPeer Node/HQ API
participant N as NOC
Note over P: Integration with <br/>SentryPeer needed
Note over N: Consumes alerts
Note over HQ: OAuth2 creds required<br/> if using SentryPeerHQ
Note over P,HQ: API rate limiting if using SentryPeerHQ
D->>P: SIP INVITE
P->>HQ: Have you seen attackers call this number?
HQ->>P: Yes, this has been seen on SentryPeer Nodes
HQ->>N: WebHook/Email/Slack
Note over HQ,N: Only if using SentryPeerHQ
P->>D: I'm blocking this call. Sorry
🚧 功能特性
- 所有代码均为自由/开源软件
- 快速
- 用户_拥有自己的_数据
- 用户可根据自身意愿提交数据(需启用 p2p 模式 -
-p) - 用户仅当选择将数据提交至数据池时,才能获取其他用户的数据
- 使用 OpenDHT 嵌入分布式哈希表(DHT)节点(
-p命令行选项) - 使用 OpenDHT 对收集到的 bad_actors 进行点对点共享(默认关闭)
- 使用 OpenDHT 进行点对点数据复制以接收收集到的 bad_actors(默认关闭)
- 设置自己的 DHT 引导节点(
-b命令行选项) - 多线程
- UDP 传输
- TCP 传输
- TLS 传输
- JSON 日志输出到文件
- 可禁用 SIP 模式。这允许您仅以 API 模式或 DHT 模式等运行 SentryPeer,即不作为蜜罐,而是作为 SentryPeer 社区中的一个节点,或仅用于提供复制数据
- 可启用 SIP 响应模式以收集数据 - 命令行 / 环境变量标志
- 本地数据副本以实现快速访问 - 命令行 / 环境变量数据库位置标志
- 本地 API 以实现快速访问 - 命令行 / 环境变量标志
- WebHook 用于将 bad actor json POST 到中心位置 - 命令行 / 环境变量标志
- 通过 OAuth2 bearer token 与 SentryPeerHQ 集成
- 查询 API 获取 bad actors 的 IP 地址
- 查询 API 获取 bad actors 的 IPSET
- 查询 API 获取特定 bad actor 的 IP 地址
- 查询 API 获取 bad actors 尝试呼叫的电话号码
- 查询 API 获取 bad actor 尝试呼叫的某个电话号码
- 通过
syslog支持 Fail2Ban,依据功能请求 - 本地 sqlite 数据库 - 功能 / 命令行标志
- 分析 - 选择加入
- 用于外部访问的 SDK/库 - 从 CGRateS 开始,或使用我们自己的 nftables 防火墙
- 适用于 IoT 的小型二进制文件
- 跨平台
- 防火墙选项可实时使用分布式数据
- 容器位于 Docker Hub 最新构建
- BGP 代理用于对等以黑洞收集到的 IP 地址(类似于 Team Cymru Bogon Router Server Project)
- SIP 代理用于返回 404 或 SIP 重定向的默认目的地