
SentryPeer v4.0.5
VoIP 공격에 대한 사기 데이터를 탐지하고 공유하는 분산형 SIP 허니팟입니다. P2P 네트워크를 통해 악성 행위자의 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 Node에서 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