
SIPベースのVoIPシステムを監査するためのツールセット
Sipptsは、SIPプロトコルを使用するVoIPサーバーやデバイスを監査するためのツールセットです。SipptsはPythonでプログラムされており、SIPプロトコルを使用するVoIPサーバーのセキュリティをチェックすることができます。
はい。自由に使用、変更、配布することができます。変更した場合は、このサイトへの参照を含めてください。
このツールの目的は、自身のシステムを監査すること、または明示的な許可を得たシステムに対してペネトレーションテストを実行することです。このツールの誤用については責任を負いません。
ヘルプを表示:``` sippts -h usage: sippts [-h] [-up] {video,astami,scan,exten,rcrack,send,wssend,enumerate,leak,ping,invite,dump,dcrack,flood,sniff,spoof,pcapdump,rtpbleed,rtcpbleed,rtpbleedflood,rtpbleedinject} ...
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣀⣀⣀⣤⣤⣤⣤⣤⣤⣤⣤⣤⣤⣄⣀⣀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣤⠤⠶⠒⠛⠉⠉⠉⠉⠀⠀⢀⣀⣀⣀⣤⣤⣤⣤⣤⣤⣤⣤⣬⣍⣙⣳⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⠴⠒⠋⠉⠀⠀⠀⢀⣀⣠⡤⠴⠖⠚⠛⠉⠉⠉⠀⣠⡶⠖⠲⣄⠀⠀⠀⠀⠀⠀⠀⠈⠉⢷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⡤⠖⠋⠁⠀⠀⠀⣀⣤⠴⠖⣛⣉⣁⠀⠀⠀⠀⠀⠀⠀⣀⣀⣠⡇⢹⡄⠀⠸⡆⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⣀⡤⠞⠋⠀⠀⠀⢀⣠⠴⠚⠋⠁⠀⠀⡿⡏⠀⠈⣧⣤⠴⠖⠚⠛⠉⠉⠳⢄⡀⠀⣧⠀⠀⢷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⢠⡞⠧⣄⠀⢀⣠⠴⠚⠉⠀⠀⠀⠀⠀⢀⣴⠇⢹⠀⠀⢸⡆⠀⠀⠀⠀⠀⠀⠀⠀⠉⣲⣿⣀⣠⣼⣦⣤⣀⣀⣀⡀⠀⢀⣀⣠⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⢀⡿⠀⠀⠈⣿⠉⠀⠀⠀⠀⠀⠀⠙⢄⣰⠏⠀⠀⠘⡇⠀⠀⣇⢀⣀⡤⠤⠖⠒⠛⠉⠉⠉⣁⣀⠀⠀⠀⠉⠙⠛⢿⣿⡛⠛⠛⢻⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⣸⣧⣄⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⢈⣿⡄⠀⠀⠀⣷⠴⠚⠋⠉⠀⠀⢀⣠⣴⡖⠛⠉⠿⢻⣿⣉⡉⠙⠓⢲⠦⢤⣈⠙⢶⣶⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⢠⣏⠙⢦⣹⣼⠀⠀⠀⠀⠀⠀⢀⣴⣾⠟⠁⢀⡏⢀⡞⠀⠀⠀⠀⠀⣰⣯⡟⡀⠀⣼⡏⢘⡢⢠⣷⣾⡿⠿⠿⣷⣤⣞⠀⠙⢦⡀⠀⠙⢿⣷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⣰⡟⠿⡍⢷⢀⡇⠀⠀⠀⠀⠀⠀⠀⣠⣾⠏⣧⠀⢀⡞⠁⠀⠀⠀⠀⢠⡴⠋⠛⠻⣧⣤⡶⢿⡹⡟⠛⢯⣉⣿⢾⣧⣄⡈⠙⠲⢝⣷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⢠⣏⠙⢦⣹⣼⠀⠀⠀⠀⠀⠀⢀⣴⣾⠟⠁⢀⡏⢀⡞⠀⠀⠀⠀⠀⣰⣯⡟⡀⠀⣼⡏⢘⡢⢠⣷⣾⡿⠿⠿⣷⣤⣞⠀⠙⢦⡀⠀⠙⢿⣷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ SIPPTS version 4.1.2 (updated) ⣿⣍⡓⣄⣿⣧⣤⣤⣤⣶⣶⠿⠟⠋⠀⠀⣠⣎⣠⠎⠘⢄⠀⠀⠀⢀⡏⠛⠙⠋⢸⠋⠧⠤⠗⣾⢻⠁⠀⠀⠀⠀⠈⠻⡳⡀⠀⠙⢦⠀⣠⡹⡟⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀ CVE version 0.1 (updated) ⣷⣤⣙⢾⣿⣭⡉⠉⠉⠁⠀⠀⣀⣠⠴⠚⠉⠉⠀⠀⠀⠈⠳⡀⠀⠘⣧⣤⢀⠀⢸⡶⣏⠙⣦⠹⡜⢦⡀⠀⠀⠀⠀⢀⡇⣿⣶⣶⣾⣿⣥⡇⠹⡌⠻⣄⠀⠀⠀⠀⠀⠀⠀⠀ https://github.com/Pepelux/sippts ⣿⠤⢬⣿⣇⠈⢹⡟⠛⠛⠛⠉⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢆⠀⢻⡹⡎⠃⠀⠳⡄⣽⠛⠦⠉⠲⣍⣓⣒⢒⣒⣉⡴⠋⣟⠙⢲⣿⠘⠃⠀⣷⠀⠙⢧⡀⠀⠀⠀⠀⠀⠀by Pepelux - https://twitter.com/pepeluxx ⣿⠶⠒⠺⣿⡀⢸⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢣⡀⠳⡄⢀⡀⠀⠙⠮⣗⠚⢠⡖⠲⣌⣉⡭⣍⡡⣞⠓⣾⠉⣽⠃⢠⡄⣼⣿⠀⠀⠈⠳⡄⠀⠀⠀⠀⠀ ⠸⡟⠉⣉⣻⣧⣼⠿⣦⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⣄⠙⢮⡿⢿⡃⠀⠈⠑⠶⢽⣒⣃⣘⣲⣤⣗⣈⣹⠵⠛⠁⠀⠀⡴⣻⠃⠀⠀⠀⠀⠹⣆⠀⠀⠀⠀ ⠀⠹⣯⣁⣠⠼⠿⣿⡲⠿⠷⣤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢦⠀⠙⠳⣄⡀⠀⣄⣶⣄⠀⠉⠉⠉⣉⡉⠉⠀⠀⠘⣶⣴⣦⠞⠁⠀⠀⠀⠀⠀⠀⠘⣧⠀⠀⠀ ⠀⠀⠘⣧⡤⠖⢋⣩⠿⣶⣤⣈⣙⣷⣤⣀⣠⣤⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢳⡀⠀⠀⠉⠓⠶⢽⣼⣆⡀⠀⠀⢿⣿⣶⣀⣀⡬⠷⠚⠁⣀⣀⣀⠀⢰⣿⠿⡇⠀⠘⣧⠀⠀ ⠀⠀⠀⠀⠙⠾⣏⣤⠞⢁⡞⠉⣿⠋⣹⠉⢹⠀⣿⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⡄⠀⠀⠀⠀⠀⠀⠉⠉⠉⠉⠉⠉⠉⠉⠀⣤⣤⣄⠀⣿⠙⢻⠆⠀⠓⢒⣁⡤⠴⠺⡆⠀ ⠀⠀⠀⠀⠀⠀⠀⠙⠒⠻⠤⣴⣇⣀⣿⣀⣾⡤⠿⢷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣆⠀⠀⠀⠀⠀⣀⣀⡀⠀⢸⠿⢷⡄⠀⣿⣀⡿⠀⢈⣉⡭⠴⠒⠋⠉⠀⠀⠀⠀⢻⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠻⣦⣀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢆⠀⠀⠀⠰⣟⠛⡇⠀⠘⠧⠞⢁⣀⡤⠴⠒⠋⠉⠀⠀⠀⠀⠀⠀⠀⠀⣀⣠⣼⠃ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠳⣦⣀⠀⠀⠀⠀⠀⠀⠈⢧⠀⠀⠀⠉⢋⣁⡤⠴⠚⠋⠉⠀⠀⠀⠀⠀⠀⠀⢀⣀⣠⣴⠶⠚⠛⠉⢉⣽⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⠷⣤⡀⠀⠀⠀⠀⠘⡆⠴⠒⠋⠉⠀⠀ ⢀⣀⣤⠴⠖⠛⠉⠉⠉⠉⠙⠛⠋⠉⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢛⠷⠦⠀⠀⠀⣿⠀⠀ ⠀⠀⠀⢠⠴⡖⠛⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⠷⣤⡀⠀⠘⡆⠴⠒⠋⠉⣤⠴⠖⠛⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢛⢠⠴⡖⠛⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
-= SIPPTS is a set of tools for auditing VoIP systems based on the SIP protocol =-
Commands: {video,astami,scan,exten,rcrack,send,wssend,enumerate,leak,ping,invite,dump,dcrack,flood,sniff,spoof,pcapdump,rtpbleed,rtcpbleed,rtpbleedflood,rtpbleedinject} video Animated help astami Asterisk AMI pentest scan Fast SIP scanner exten Search SIP extensions of a PBX rcrack Remote password cracker send Send a customized message wssend Send a customized message over WS enumerate Enumerate methods of a SIP server leak Exploit SIP Digest Leak vulnerability ping SIP ping invite Try to make calls through a PBX dump Dump SIP digest authentications from a PCAP file dcrack SIP digest authentication cracking flood Flood a SIP server sniff SIP network sniffing spoof ARP Spoofing tool pcapdump Extract data from a PCAP file rtpbleed Detect RTPBleed vulnerability (send RTP streams) rtcpbleed Detect RTPBleed vulnerability (send RTCP streams) rtpbleedflood Exploit RTPBleed vulnerability (flood RTP) rtpbleedinject Exploit RTPBleed vulnerability (inject WAV file)
Options: -h, --help show this help message and exit -up Update scripts
Command help: sippts -h
コマンド scan のヘルプを表示します:```
sippts scan -h
usage: sippts scan [-i IP|HOST] [-f FILE] [-r REMOTE_PORT] [-p PROTOCOL]
[-proxy IP:PORT] [-m METHOD] [-d DOMAIN]
[-cd CONTACT_DOMAIN] [-fn FROM_NAME] [-fu FROM_USER]
[-fd FROM_DOMAIN] [-tn TO_NAME] [-tu TO_USER]
[-td TO_DOMAIN] [-ua USER_AGENT] [-ppi PPI] [-pai PAI] [-v]
[-vv] [-nocolor] [-o FILE] [-oi FILE] [-ot FILE] [-oj FILE]
[-ocsv FILE] [-cve] [-th THREADS] [-t TIMEOUT] [-ping]
[-fp] [-random] [-local-ip IP] [-h]
___ ___ ___ ___ _____ ___
/ __|_ _| _ \ _ \_ _/ __| ___ __ __ _ _ _
\__ \| || _/ _/ | | \__ \ (_-</ _/ _` | ' \
|___/___|_| |_| |_| |___/ /__/\__\__,_|_||_|
Module scan is a fast SIP scanner using multithread that can check several IPs and port ranges. It works with UDP, TCP and TLS protocols.
Target:
-i IP|HOST Host/IP address/network (ex: mysipserver.com | 192.168.0.10 | 192.168.0.0/24)
-f FILE File with several IPs or network ranges
-r REMOTE_PORT Ports to scan. Ex: 5060 | 5070,5080 | 5060-5080 | 5060,5062,5070-5080 | ALL for 1-65535 (default: 5060)
-p, --protocol PROTOCOL
Protocol: udp|tcp|tls|all (default: udp)
-proxy IP:PORT Use an outbound proxy (ex: 192.168.1.1 or 192.168.1.1:5070)
Headers:
-m METHOD SIP method: options, invite, register (default: options)
-d, --domain DOMAIN SIP Domain or IP address. Ex: my.sipserver.com (default: target IP address)
-cd CONTACT_DOMAIN Domain or IP address for Contact header. Ex: 10.0.1.2
-fn FROM_NAME From Name. Ex: Bob
-fu FROM_USER From User (default: 100)
-fd FROM_DOMAIN From Domain. Ex: 10.0.0.1
-tn TO_NAME To Name. Ex: Alice
-tu TO_USER To User (default: 100)
-td TO_DOMAIN To Domain. Ex: 10.0.0.1
-ua USER_AGENT User-Agent header (default: pplsip)
-ppi PPI P-Preferred-Identity
-pai PAI P-Asserted-Identity
Log:
-v Increase verbosity
-vv Increase more verbosity
-nocolor Show result without colors
-o FILE Save data into a log file
-oi FILE Save IPs into a log file
-ot FILE Save found hosts as ip:port/proto, ready for -f of exten, rcrack and leak
-oj FILE Save results into a JSON file
-ocsv FILE Save results into a CSV file
-cve Show possible CVEs
Other options:
-th THREADS Number of threads (default: 200)
-t, --timeout TIMEOUT
Sockets timeout (default: 5)
-ping Ping host before scan
-fp Try to fingerprinting
-random Randomize target hosts
-local-ip IP Set local IP address (by default try to get it)
-h, --help Show this help
Usage examples:
Searching for SIP services and devices with default ports (5060/udp) on the local network
sippts scan -i 192.168.0.0/24
Extend the port range from 5060 to 5080 and look for UDP, TCP and TLS services
sippts scan -i 192.168.0.0/24 -r 5060-5080 -p all
Load several target IP addresses from a file
sippts scan -f targets.txt
Random scanning for non-sequential scanning of IP ranges
sippts scan -f targets.txt -random
Disguise the tool behind another User-Agent
sippts scan -i 192.168.0.0/24 -ua Grandstream
Scan all ports and protocols of an address range using 500 threads (slow)
sippts scan -f targets.txt -r all -p all -th 500 -ua Grandstream
Typical scanning for large ranges
sippts scan -f targets.txt -r 5060-5080 -p all -th 500 -ua Grandstream -v -fp -o output.txt
Save the hosts found as ip:port/proto, to chain with exten, rcrack or leak
sippts scan -i 192.168.0.0/24 -r 5060-5080 -p all -ot targets.txt
sippts exten -f targets.txt -e 100-200 -oe extens.txt
sippts rcrack -f targets.txt -ef extens.txt -w wordlist.txt
Save the results as JSON or CSV, to process them with another tool
sippts scan -i 192.168.0.0/24 -oj result.json -ocsv result.csv
スクリプトを更新:``` sippts -up
# SIPプロトコル上のペネトレーションテスト用ツールセット #
このツールの使用方法に関するヘルプは、https://sippts.seguridadvoip.com および Github の wiki ページで確認できます:
Sippts は、SIP プロトコルを使用する VoIP サーバーやデバイスを監査するためのツールセットです。Sippts は Python でプログラムされており、以下のコマンドまたはモジュールで構成されています:
* _**scan**_ は、SIP サービス用の高速マルチスレッドスキャナーです。複数の IP アドレスとポート範囲をチェックでき、UDP、TCP、TLS で動作します。[scan コマンドの詳細についてはこちらをクリック](https://github.com/Pepelux/sippts/wiki/Command-scan)
* _**exten**_ は、SIP サーバー上の内線を識別します。また、その内線が認証を必要とするかどうかも通知します。複数の IP アドレスをチェックでき、-f を指定するとファイルからターゲットを読み取ります。[exten コマンドの詳細についてはこちらをクリック](https://github.com/Pepelux/sippts/wiki/Command-exten)
* _**rcrack**_ は、リモートパスワードクラッカーです。複数の IP アドレス上の複数のユーザーのパスワードをテストでき、-f を指定するとファイルからターゲットを読み取ります。[rcrack コマンドの詳細についてはこちらをクリック](https://github.com/Pepelux/sippts/wiki/Command-rcrack)
* _**invite**_ は、サーバーが認証なしで通話を許可するかどうかをチェックします。SIP サーバーの設定が不適切な場合、外部番号への通話を許可してしまいます。また、通話を2番目の外部番号に転送することもできます。[invite コマンドの詳細についてはこちらをクリック](https://github.com/Pepelux/sippts/wiki/Command-invite)
* _**leak**_ は、Sandro Gauci によって発見された SIP Digest Leak 脆弱性を悪用します。この脆弱性は、多数のハードウェアおよびソフトウェアデバイスに影響を与えます。[leak コマンドの詳細についてはこちらをクリック](https://github.com/Pepelux/sippts/wiki/Command-leak)
* _**flood**_ は、ターゲットに無制限のメッセージを送信します。[flood コマンドの詳細についてはこちらをクリック](https://github.com/Pepelux/sippts/wiki/Command-flood)
* _**send**_ は、カスタマイズされた SIP メッセージを送信し、応答を分析します。[send コマンドの詳細についてはこちらをクリック](https://github.com/Pepelux/sippts/wiki/Command-send)
* _**wssend**_ は、WebSockets 経由でカスタマイズされた SIP メッセージを送信し、応答を分析します。[wssend コマンドの詳細についてはこちらをクリック](https://github.com/Pepelux/sippts/wiki/Command-wssend)
* _**enumerate**_ は、SIP サービスまたはサーバーで利用可能なメソッドを列挙します。[enumerate コマンドの詳細についてはこちらをクリック](https://github.com/Pepelux/sippts/wiki/Command-enumerate)
* _**dump**_ は、PCAP ファイルから SIP Digest 認証情報を抽出します。[dump コマンドの詳細についてはこちらをクリック](https://github.com/Pepelux/sippts/wiki/Command-dump)
* _**dcrack**_ は、SIP プロトコルのダイジェスト認証情報をクラックします。[dcrack コマンドの詳細についてはこちらをクリック](https://github.com/Pepelux/sippts/wiki/Command-dcrack)
* _**pcapdump**_ は、PCAP ファイルから SIP および RTP データを抽出し、オーディオストリームを WAV ファイルとして保存できます。[pcapdump コマンドの詳細についてはこちらをクリック](https://github.com/Pepelux/sippts/wiki/Command-pcapdump)
* _**ping**_ は、SIP ping を送信して、サーバーまたはデバイスが稼働しているかどうかを確認します。[ping コマンドの詳細についてはこちらをクリック](https://github.com/Pepelux/sippts/wiki/Command-ping)
* _**astami**_ は、Asterisk Manager Interface (AMI) をスキャンおよび監査し、認証情報が機能するものに対してコマンドを実行できます。[astami コマンドの詳細についてはこちらをクリック](https://github.com/Pepelux/sippts/wiki/Command-astami)
* _**sniff**_ は、SIP トラフィックをライブでキャプチャし、検出したメッセージ、デバイス、ダイジェスト認証情報を表示します。[sniff コマンドの詳細についてはこちらをクリック](https://github.com/Pepelux/sippts/wiki/Command-sniff)
* _**spoof**_ は、ARP スプーフィングツールで、2つのデバイスの間に割り込み、それらのトラフィックをキャプチャします。[spoof コマンドの詳細についてはこちらをクリック](https://github.com/Pepelux/sippts/wiki/Command-spoof)
* _**video**_ は、一般的なワークフローのアニメーションデモを再生します:scan から exten へ、rcrack へ、dump から dcrack へ、leak から dcrack へ、そして spoof から sniff へ。
* _**rtpbleed**_ は、RTP ポートにデータを送信して RTP Bleed 脆弱性を悪用します。[rtpbleed コマンドの詳細についてはこちらをクリック](https://github.com/Pepelux/sippts/wiki/Command-rtpbleed)
* _**rtcpbleed**_ は、RTCP ポートにデータを送信して RTP bleed 脆弱性を悪用します。[rtcpbleed コマンドの詳細についてはこちらをクリック](https://github.com/Pepelux/sippts/wiki/Command-rtcpbleed)
* _**rtpbleedflood**_ は、アクティブなダイアログで RTP ポートをフラッディングして RTP Bleed 脆弱性を悪用します。[rtpbleedflood コマンドの詳細についてはこちらをクリック](https://github.com/Pepelux/sippts/wiki/Command-rtpbleedflood)
* _**rtpbleedinject**_ は、RTP トラフィックを注入して RTP Bleed 脆弱性を悪用します。[rtpbleedinject コマンドの詳細についてはこちらをクリック](https://github.com/Pepelux/sippts/wiki/Command-rtpbleedinject)
## TLS 証明書 ##
sippts は TLS を扱いますが、これまでは証明書を破棄していました。
`-tlsinfo` を指定すると、`scan` モジュールはサーバーが提示する内容を読み取ります:```
sippts scan -i 192.168.0.1 -r 5061 -p tls -tlsinfo
余分な接続は不要です。ハンドシェイクはどのみち行われるからです。通常のテーブルの後に2つのテーブルが続きます。1つは証明書が示す内容(TLSバージョン、暗号スイート、鍵、有効期限、そして-v指定時はサブジェクト、発行者、SAN、SHA-256)、もう1つはそれについて報告する価値のある事項 — 期限切れ、自己署名、2048ビット未満の鍵、SHA-1またはMD5署名、名前の不一致、古いTLSバージョン、弱い暗号スイートです。
VoIPで最も重要なのはCERT_DEFAULT_VENDORです。これはPBXや電話機の工場出荷証明書であり、その秘密鍵はファームウェアイメージ内に同梱されています。そのイメージをダウンロードした者は誰でもSIP-TLSの中間者になれます。
-tlsversionsを指定すると、TLS 1.0、1.1、1.2、1.3を1つずつ試します。これはバージョンごとに1回のハンドシェイクを要し、ホストとポートごとに1回だけ実行されます:```
sippts scan -i 192.168.0.1 -r 5061 -p tls -tlsversions
各バージョンは `accepted`、`refused`、または `untested` として返されます。最後のものは、*この* OpenSSL がそのバージョンを提供できないことを意味し、サーバー側で無効にされていることとは異なり、その違いは結果がレポートに記載される際に重要となります。
ツールが隠さずに表示する、2つの正直な制限:
* **SSLv2 と SSLv3 はテストできません。** OpenSSL 3 はこれらを除いてビルドされているため、sippts はこれらを提供できません。これらは `untested` として報告され、`disabled` として報告されることは決してありません。
* 内部 SIP トランク上の自己署名証明書は、それ自体では所見ではありません。文脈に照らして判断してください。
メインテーブル、`-o` のファイル、および `-ocsv` の CSV は変わりません。`-oj` の JSON には `tls` と `tls_findings` が追加されます。
## 通話ハイジャック ##
`Replaces` (RFC 3891) は、Call-ID と2つのタグによって、すでに確立されている通話を指し示します。`sippts dump` と `sippts sniff` は、キャプチャからこれら3つの値を取得する手段です。そこから:```
sippts send -i 192.168.0.1 -m REFER -refer-to 200 -replaces "CALLID;to-tag=X;from-tag=Y"
sippts send -i 192.168.0.1 -m INVITE -replaces "CALLID;to-tag=X;from-tag=Y"
REFER では着信転送となり、INVITE では通話を引き継ぎます。sippts invite は -replaces も受け付け、-t がすでに送信する REFER にこれを追加するため、転送は自身が設定した通話内で行われます。
enumerate は 14 の SIP メソッドを一つずつ試し、応答によってそれらを区別しますが、サーバーは Allow、Supported、Allow-Events ヘッダーで受け入れるものも示します。これらも読み取られ、2 番目の表に出力されます。この表は、注目すべき 2 つの矛盾も指摘します。Allow で通知されているのに 405 を返すメソッドと、通知されていないのに正常に応答するメソッドです。Allow-Events は、dialog、message-summary、presence を購読できるかどうかを示すもので、次に send -m subscribe が進む先です。```
sippts enumerate -i 192.168.0.1
最初のテーブルはこれまでと同じ形を保ち、`-ocsv` の CSV も同様です。新しいデータは `-oj` の JSON にのみ、`capabilities` の下に追加されます。
## 既知の脆弱性 ##
`-cve` を指定すると、`scan` モジュールはフィンガープリントした内容を、パッケージ内に同梱されている既知の脆弱性リスト(`src/sippts/data/cve.csv`)と照合します。このリストには 54 ベンダーの約 1400 件の CVE が含まれており、[NIST の NVD](https://nvd.nist.gov) から構築され、バージョン範囲は各 CVE の CPE に基づいています:```bash
sippts scan -i 192.168.0.0/24 -fp -cve
バージョンが実際に影響範囲内に収まっている結果が先に表示されます。 残りはその背後に「可能性あり」として表示されます。スキャナにおいては、 存在するCVEが報告されない方が、過剰に報告されるよりも悪いためです。範囲が ない行は、そのデバイスのすべてのバージョンが影響を受けることを意味します。
知っておく価値のある2つの制限があります。検出はUser-Agentに依存しているため、
それを隠すサーバーは何とも照合できません。また、一部の製品は文字付きで
バージョン管理されており(Asterisk Business EditionのA、B、C、あるいは
beta_5など)、数値比較では順序付けできません。これらはテキストのみで
照合され、常に「確定」ではなく「可能性あり」として出力されます。
リストを更新するには:```bash sippts -up
which downloads it from github along with the rest of the modules.
### Severity ###
各 CVE には CVSS が付与され、深刻度に応じて色分けされています。critical は紫、high は赤、medium は黄、low はシアンです。最も深刻なものが先頭に表示されます。
NVD にはすべての CVE について CVSS v3 が存在するわけではありません。リストのおよそ 3 分の 1 は 2016 年より古く、v2 しか持っておらず、Asterisk ではそのほとんどが該当します。v2 しか存在しない場合は v2 が使用され、**`v2` とマークされます**。これは 2 つのスケールが等価ではなく、v2 には CRITICAL レベルが存在しないためです。CVE-2017-16563 は v2 では 6.0 MEDIUM ですが、v3 では 8.0 HIGH です。
4.2.1 より古い sippts はこの列を読み取ることができません。`sippts -up` で更新してください。
### リストの再構築(メンテナー向け) ###
`tools/cve_update.py` は NVD から `cve.csv` を再構築します。これは sippts のユーザーが実行するものではありません。再生成し、diff を確認し、コミットし、他の全員が `sippts -up` で取得できるようにするという考え方です。これにより、API キーと NVD のレート制限を監査の途中に挟み込まずに済みます。```bash
./tools/cve_update.py --dry-run # what would change, writing nothing
./tools/cve_update.py # rebuild it
./tools/cve_update.py --vendor yealink # only one vendor
NVD_API_KEY=xxxx ./tools/cve_update.py # ten times faster
API キーがない場合、NVD では 30 秒ごとに 5 リクエストが許可され、完全な実行には約 15 分かかります。API キーは nvd.nist.gov で無料で取得できます。
スクリプトの先頭にある 2 つのリストが、何を検索するかを制御します。VENDORS にはベンダーが格納され、それぞれがベンダー全体、製品のリスト、またはタグでフィルタリングされたものになります。TAGS_VOIP にはタグ (voip、sip、ip_phone、ata、
pbx、ip_office、mivoice...) が格納されます。このフィルターは、ルーターやファイアウォールも製造しているベンダーにとって重要です。例えば、Zyxel 全体を NVD に問い合わせると、sippts が SIP 経由で見ることのない WiFi および DSL 機器の 3223 行が返されます。
Sippts は以下でテストされています:
git 経由でインストール: ```bash git clone https://github.com/Pepelux/sippts.git
```bash
cd sippts
pip3 install .