
sippts v4.2.1
Набор инструментов для аудита VoIP-систем на основе SIP
Что такое Sippts?
Sippts — это набор инструментов для аудита VoIP-серверов и устройств, использующих протокол SIP. Sippts написан на Python и позволяет проверять безопасность VoIP-сервера, использующего протокол SIP.
Это бесплатно?
Да. Вы можете свободно использовать, изменять и распространять его. Если вы его модифицируете, пожалуйста, укажите ссылку на этот сайт.
Можно ли использовать sippts в незаконных целях?
Цель этого инструмента — аудит ваших собственных систем или проведение тестов на проникновение в системах, на которые вы получили явное разрешение. Я не несу ответственности за неправомерное использование этого инструмента.
Использование
Показать справку:``` 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:
Sippts — это набор инструментов для аудита VoIP-серверов и устройств, использующих протокол SIP. 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-сервер имеет плохую конфигурацию, он позволит нам совершать вызовы на внешние номера. Также может перевести вызов на второй внешний номер. [Нажмите здесь, чтобы узнать больше о команде invite](https://github.com/Pepelux/sippts/wiki/Command-invite)
* _**leak**_ — эксплуатирует уязвимость SIP Digest Leak, обнаруженную Sandro Gauci, которая затрагивает большое количество аппаратных и программных устройств. [Нажмите здесь, чтобы узнать больше о команде 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**_ — отправляет настроенное SIP-сообщение через WebSockets и анализирует ответ. [Нажмите здесь, чтобы узнать больше о команде wssend](https://github.com/Pepelux/sippts/wiki/Command-wssend)
* _**enumerate**_ — перечисляет доступные методы службы или сервера SIP. [Нажмите здесь, чтобы узнать больше о команде enumerate](https://github.com/Pepelux/sippts/wiki/Command-enumerate)
* _**dump**_ — извлекает данные аутентификации SIP Digest из файла PCAP. [Нажмите здесь, чтобы узнать больше о команде dump](https://github.com/Pepelux/sippts/wiki/Command-dump)
* _**dcrack**_ — взламывает данные digest-аутентификации протокола SIP. [Нажмите здесь, чтобы узнать больше о команде dcrack](https://github.com/Pepelux/sippts/wiki/Command-dcrack)
* _**pcapdump**_ — извлекает данные SIP и RTP из файла PCAP и может сохранять аудиопотоки в виде WAV-файлов. [Нажмите здесь, чтобы узнать больше о команде pcapdump](https://github.com/Pepelux/sippts/wiki/Command-pcapdump)
* _**ping**_ — отправляет SIP-пинг для проверки того, активен ли сервер или устройство. [Нажмите здесь, чтобы узнать больше о команде 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-трафик в реальном времени и показывает сообщения, устройства и данные digest-аутентификации, которые видит. [Нажмите здесь, чтобы узнать больше о команде sniff](https://github.com/Pepelux/sippts/wiki/Command-sniff)
* _**spoof**_ — инструмент ARP-спуфинга, позволяющий разместиться между двумя устройствами и захватывать их трафик. [Нажмите здесь, чтобы узнать больше о команде spoof](https://github.com/Pepelux/sippts/wiki/Command-spoof)
* _**video**_ — воспроизводит анимированную демонстрацию типичных рабочих процессов: scan → exten → rcrack, dump → dcrack, leak → dcrack и spoof → sniff.
* _**rtpbleed**_ — для эксплуатации уязвимости RTP Bleed путём отправки данных на порты RTP. [Нажмите здесь, чтобы узнать больше о команде rtpbleed](https://github.com/Pepelux/sippts/wiki/Command-rtpbleed)
* _**rtcpbleed**_ — для эксплуатации уязвимости RTP bleed путём отправки данных на порты RTCP. [Нажмите здесь, чтобы узнать больше о команде rtcpbleed](https://github.com/Pepelux/sippts/wiki/Command-rtcpbleed)
* _**rtpbleedflood**_ — для эксплуатации уязвимости RTP Bleed путём флудинга порта RTP с активным диалогом. [Нажмите здесь, чтобы узнать больше о команде rtpbleedflood](https://github.com/Pepelux/sippts/wiki/Command-rtpbleedflood)
* _**rtpbleedinject**_ — для эксплуатации уязвимости RTP Bleed путём инъекции RTP-трафика. [Нажмите здесь, чтобы узнать больше о команде 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
Это не требует дополнительного соединения, поскольку рукопожатие происходит в любом случае. После обычной таблицы идут две: что говорит сертификат (версия TLS, шифр, ключ, срок действия, а с -v также subject, issuer, SAN и SHA-256), и что о нём стоит сообщить — истёк, самоподписанный, ключ меньше 2048 бит, подпись SHA-1 или MD5, несовпадающее имя, старая версия TLS или слабый шифр.
Наиболее важный в VoIP — CERT_DEFAULT_VENDOR: заводской сертификат АТС или телефона, закрытый ключ которого поставляется внутри образа прошивки. Любой, кто скачает этот образ, может встать в середину SIP-TLS.
С -tlsversions он также пробует TLS 1.0, 1.1, 1.2 и 1.3 по одному за раз, что стоит одного рукопожатия на версию и выполняется один раз на хост и порт:```
sippts scan -i 192.168.0.1 -r 5061 -p tls -tlsversions
Каждая версия возвращается как `accepted`, `refused` или `untested`. Последнее
означает, что *данный* OpenSSL не может предложить эту версию, что не то же самое,
что сервер отключил её, и эта разница важна, когда результат попадает
в отчёт.
Два честных ограничения, которые инструмент выводит, а не скрывает:
* **SSLv2 и SSLv3 невозможно протестировать.** OpenSSL 3 собран без них, поэтому
sippts не может их предложить. Они сообщаются как `untested`, никогда как
`disabled`.
* Самоподписанный сертификат на внутреннем SIP-транке сам по себе не является находкой.
Оценивайте его в контексте.
Основная таблица, файл `-o` и CSV `-ocsv` не меняются. JSON
`-oj` получает `tls` и `tls_findings`.
## Перехват вызовов ##
`Replaces` (RFC 3891) указывает на вызов, который уже установлен, по его Call-ID и
двум тегам. `sippts dump` и `sippts sniff` — это то, что даёт вам эти три
значения из захвата; оттуда:```
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, чтобы добавить его к REFER, который -t уже отправляет, так что передача происходит внутри только что установленного вызова.
Что сервер заявляет о своей поддержке
enumerate перебирает 14 методов SIP один за другим и различает их по ответу, но сервер также указывает, что он принимает, в заголовках Allow, Supported и Allow-Events. Они тоже считываются и выводятся во второй таблице, которая также указывает на два противоречия, заслуживающих внимания: метод, объявленный в Allow, который затем отвечает 405, и метод, который отвечает нормально, вообще не будучи объявленным. Allow-Events — это тот, который говорит, можно ли подписаться на dialog, message-summary или presence, куда дальше идёт send -m subscribe.```
sippts enumerate -i 192.168.0.1
Первая таблица сохраняет свою прежнюю форму, как и CSV-файл
`-ocsv`. Новые данные добавляются только в JSON-файл `-oj`, в раздел
`capabilities`.
## Известные уязвимости ##
С флагом `-cve` модуль `scan` сравнивает полученные отпечатки со списком
известных уязвимостей, который поставляется внутри пакета
(`src/sippts/data/cve.csv`). Он содержит около 1400 CVE от 54 вендоров, собранных
из [NVD от NIST](https://nvd.nist.gov), а диапазоны версий берутся из
CPE каждой CVE:```bash
sippts scan -i 192.168.0.0/24 -fp -cve
Результаты, версия которых действительно попадает в уязвимый диапазон, перечисляются первыми. Остальные показываются после них как лишь возможные, потому что в сканере CVE, которая существует и не обнаружена, хуже, чем CVE, о которой сообщено избыточно. Строка без диапазона означает, что затронуты все версии этого устройства.
Стоит знать о двух ограничениях. Обнаружение опирается на User-Agent, поэтому сервер,
который его скрывает, невозможно проверить ни по чему. А некоторые продукты
версионируются с буквами (A, B и C в Asterisk Business Edition, или
beta_5), которые никакое числовое сравнение не может упорядочить: они сопоставляются только по тексту
и всегда оказываются возможными, а не подтверждёнными.
Чтобы обновить список:```bash sippts -up
который загружает его с github вместе с остальными модулями.
### Severity ###
Каждый CVE имеет свой CVSS, окрашенный по уровню серьёзности: фиолетовый для critical, красный для
high, жёлтый для medium и голубой для low. Самые серьёзные перечислены первыми.
В NVD не для каждого CVE есть CVSS v3: примерно треть списка
старше 2016 года и имеет только v2, а для Asterisk это большинство из них. Когда
существует только v2, он используется и **помечается `v2`**, потому что эти две шкалы
не эквивалентны и в v2 нет уровня CRITICAL: CVE-2017-16563 — это 6.0 MEDIUM в
v2 и 8.0 HIGH в v3.
sippts версии старше 4.2.1 не может прочитать этот столбец. Обновите с помощью `sippts -up`.
### Пересборка списка (для сопровождающих) ###
`tools/cve_update.py` пересобирает `cve.csv` из NVD. Это не то, что
запускает пользователь 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 разрешает 5 запросов каждые 30 секунд, а полный запуск занимает около пятнадцати минут. Они бесплатны на nvd.nist.gov.
Два списка в верхней части скрипта управляют тем, что ищется. VENDORS содержит
производителей, и каждый из них может быть как полным именем производителя, так и списком продуктов или
отфильтрован по тегу. TAGS_VOIP содержит теги (voip, sip, ip_phone, ata,
pbx, ip_office, mivoice...). Фильтр важен для производителей, которые также
выпускают роутеры и межсетевые экраны: запрос к NVD по всему Zyxel приносит 3223
строки WiFi и DSL-оборудования, которое sippts никогда не увидит по SIP.
Операционные системы
Sippts был протестирован на:
- Linux
- MacOS
Требования
- Python 3
- Зависимости, перечисленные в requirements.txt, устанавливаемые автоматически через pip
- Для sniff, dump и pcapdump: tshark (часть Wireshark)
- Для извлечения аудио с помощью pcapdump: sox и ffmpeg
Установка
Установка через git: ```bash git clone https://github.com/Pepelux/sippts.git
```bash
cd sippts
pip3 install .