
SentryPeer v4.0.5
分散型SIPハニーポットで、VoIP攻撃に関する不正データを検出・共有します。ピアツーピアネットワークを介して悪意のあるアクターのIPアドレスと電話番号を収集し、REST APIおよびWebHook統合によりリアルタイムの脅威インテリジェンスを提供します。
SIPサーバーを悪意のある攻撃者から保護する
2024年にスポンサーいただいたDeutsche Telekom Security GmbHに特別な感謝を申し上げます。
ぜひスターを付けていただき、Twitterでフォローしてください!
目次
- はじめに
- 概要
- 機能
- 講演
- 採用事例
- 設計
- Docker
- インストール
- SentryPeer の実行
- WebHook
- RESTful API
- Syslog と Fail2ban
- JSON ログ形式
- コマンドラインオプション
- IPv6 マルチキャストアドレス
- ライセンス
- コントリビューション
- プロジェクトウェブサイト
- 商標
- 質問、バグ報告、機能リクエスト
- 特別な感謝
- スポンサーシップ
はじめに
SentryPeer® は不正検知ツールです。悪意のある攻撃者に電話をかけさせ、その発信元 IP アドレスと かけようとした電話番号を保存します。これらの詳細は、サービスプロバイダーのネットワークで通知を発するために使用でき、 次にユーザー/顧客が収集された番号に電話をかけようとしたときに、好きなように対応できます。
例えば:
あなたが自社サイトで独自の VoIP PBX を運用しているとします。この状況で SentryPeer が可能にするのは、 ユーザーが発信通話を行う際に(RESTful API を使用して)電話番号のリストを参照することです。ヒットした場合、 ネットワーク内のデバイスが、以下のいずれかである既知のプロービング電話番号に電話をかけようとしている可能性があるという 警告を受け取ります:
- 自分で運用しているSentryPeerノードが収集した番号
- ピアツーピアネットワーク経由で自分のノードに複製された、他のSentryPeerノードが確認した番号
これにより、高額な通話が積み上がったり、さらに悪い事態が発生する前に、監視システムから通知を生成できるようになります。
どのようなシナリオがこれにつながるのでしょうか?
- ボイスメール詐欺の可能性。これは、着信番号(あなたのDID/DDI)への通話をボイスメールシステムに接続し、その後PINの入力を求める場合に発生する可能性があります。このPINが脆弱で、ボイスメールシステムが「*」を押すことでボイスメールを残した発信者IDに折り返し発信できる場合です。攻撃者はボイスメールを残し、その後あなたのPINを推測して折り返し発信します。CLIは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