
sippts v4.2.1
Conjunto de ferramentas para auditar sistemas VoIP baseados em SIP
O que é o Sippts?
O Sippts é um conjunto de ferramentas para auditar servidores e dispositivos VoIP que utilizam o protocolo SIP. O Sippts é programado em Python e permite-nos verificar a segurança de um servidor VoIP utilizando o protocolo SIP.
É gratuito?
Sim. Pode utilizá-lo, modificá-lo e distribuí-lo livremente. Se o modificar, inclua uma referência a este site.
O sippts pode ser utilizado para fins ilegais?
O objetivo desta ferramenta é auditar os seus próprios sistemas ou realizar testes de intrusão em sistemas para os quais recebeu autorização expressa. Não sou responsável pela utilização indevida desta ferramenta.
Utilização
Mostrar ajuda:``` 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
Mostrar ajuda para o comando 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
Atualizar scripts:``` sippts -up
# Conjunto de ferramentas para teste de penetração no protocolo SIP #
Você pode obter ajuda sobre como usar esta ferramenta em https://sippts.seguridadvoip.com e também nas páginas wiki do Github:
Sippts é um conjunto de ferramentas para auditar servidores e dispositivos VoIP usando o protocolo SIP. Sippts é programado em Python e consiste nos seguintes comandos ou módulos:
* _**scan**_ é um scanner multithread rápido para serviços SIP. Ele pode verificar vários endereços IP e intervalos de portas, e funciona sobre UDP, TCP e TLS. [Clique aqui para ler mais sobre o comando scan](https://github.com/Pepelux/sippts/wiki/Command-scan)
* _**exten**_ identifica extensões em um servidor SIP. Também informa se a extensão requer autenticação. Ele pode verificar vários endereços IP, e com -f lê os alvos de um arquivo. [Clique aqui para ler mais sobre o comando exten](https://github.com/Pepelux/sippts/wiki/Command-exten)
* _**rcrack**_ é um quebrador de senhas remoto. Ele pode testar senhas para vários usuários em vários endereços IP, e com -f lê os alvos de um arquivo. [Clique aqui para ler mais sobre o comando rcrack](https://github.com/Pepelux/sippts/wiki/Command-rcrack)
* _**invite**_ verifica se um servidor nos permite fazer chamadas sem autenticação. Se o servidor SIP tiver uma configuração ruim, ele nos permitirá fazer chamadas para números externos. Ele também pode transferir a chamada para um segundo número externo. [Clique aqui para ler mais sobre o comando invite](https://github.com/Pepelux/sippts/wiki/Command-invite)
* _**leak**_ explora a vulnerabilidade SIP Digest Leak descoberta por Sandro Gauci, que afeta um grande número de dispositivos de hardware e software. [Clique aqui para ler mais sobre o comando leak](https://github.com/Pepelux/sippts/wiki/Command-leak)
* _**flood**_ envia mensagens ilimitadas para o alvo. [Clique aqui para ler mais sobre o comando flood](https://github.com/Pepelux/sippts/wiki/Command-flood)
* _**send**_ envia uma mensagem SIP personalizada e analisa a resposta. [Clique aqui para ler mais sobre o comando send](https://github.com/Pepelux/sippts/wiki/Command-send)
* _**wssend**_ envia uma mensagem SIP personalizada sobre WebSockets e analisa a resposta. [Clique aqui para ler mais sobre o comando wssend](https://github.com/Pepelux/sippts/wiki/Command-wssend)
* _**enumerate**_ enumera os métodos disponíveis de um serviço ou servidor SIP. [Clique aqui para ler mais sobre o comando enumerate](https://github.com/Pepelux/sippts/wiki/Command-enumerate)
* _**dump**_ extrai autenticações SIP Digest de um arquivo PCAP. [Clique aqui para ler mais sobre o comando dump](https://github.com/Pepelux/sippts/wiki/Command-dump)
* _**dcrack**_ quebra as autenticações digest do protocolo SIP. [Clique aqui para ler mais sobre o comando dcrack](https://github.com/Pepelux/sippts/wiki/Command-dcrack)
* _**pcapdump**_ extrai dados SIP e RTP de um arquivo PCAP, e pode salvar os fluxos de áudio como arquivos WAV. [Clique aqui para ler mais sobre o comando pcapdump](https://github.com/Pepelux/sippts/wiki/Command-pcapdump)
* _**ping**_ envia um ping SIP para verificar se um servidor ou dispositivo está ativo. [Clique aqui para ler mais sobre o comando ping](https://github.com/Pepelux/sippts/wiki/Command-ping)
* _**astami**_ escaneia e audita a Asterisk Manager Interface (AMI), e pode executar um comando naquelas onde as credenciais funcionam. [Clique aqui para ler mais sobre o comando astami](https://github.com/Pepelux/sippts/wiki/Command-astami)
* _**sniff**_ captura tráfego SIP ao vivo e mostra as mensagens, os dispositivos e as autenticações digest que vê. [Clique aqui para ler mais sobre o comando sniff](https://github.com/Pepelux/sippts/wiki/Command-sniff)
* _**spoof**_ é uma ferramenta de ARP spoofing, para se colocar entre dois dispositivos e capturar seu tráfego. [Clique aqui para ler mais sobre o comando spoof](https://github.com/Pepelux/sippts/wiki/Command-spoof)
* _**video**_ reproduz uma demonstração animada dos fluxos de trabalho usuais: scan para exten para rcrack, dump para dcrack, leak para dcrack, e spoof para sniff.
* _**rtpbleed**_ para explorar a vulnerabilidade RTP Bleed enviando dados para portas RTP. [Clique aqui para ler mais sobre o comando rtpbleed](https://github.com/Pepelux/sippts/wiki/Command-rtpbleed)
* _**rtcpbleed**_ para explorar a vulnerabilidade RTP bleed enviando dados para portas RTCP. [Clique aqui para ler mais sobre o comando rtcpbleed](https://github.com/Pepelux/sippts/wiki/Command-rtcpbleed)
* _**rtpbleedflood**_ para explorar a vulnerabilidade RTP Bleed inundando uma porta RTP com um diálogo ativo. [Clique aqui para ler mais sobre o comando rtpbleedflood](https://github.com/Pepelux/sippts/wiki/Command-rtpbleedflood)
* _**rtpbleedinject**_ para explorar a vulnerabilidade RTP Bleed injetando tráfego RTP. [Clique aqui para ler mais sobre o comando rtpbleedinject](https://github.com/Pepelux/sippts/wiki/Command-rtpbleedinject)
## Certificados TLS ##
sippts fala TLS, e até agora descartava o certificado. Com
`-tlsinfo` o módulo `scan` lê o que o servidor apresenta:```
sippts scan -i 192.168.0.1 -r 5061 -p tls -tlsinfo
Não custa nenhuma conexão extra, porque o handshake acontece de qualquer forma. Duas tabelas
vêm depois da habitual: o que o certificado diz (versão de TLS, cifra, chave,
expiração e, com -v, também subject, issuer, SAN e SHA-256), e o que
vale a pena reportar sobre ele — expirado, autoassinado, chave com menos de 2048 bits, assinatura
SHA-1 ou MD5, um nome que não corresponde, uma versão de TLS antiga ou uma cifra
fraca.
A que mais importa em VoIP é CERT_DEFAULT_VENDOR: o certificado
de fábrica de um PBX ou de um telefone, cuja chave privada vem dentro da imagem
do firmware. Qualquer pessoa que descarregue essa imagem pode colocar-se no meio do SIP-TLS.
Com -tlsversions também tenta TLS 1.0, 1.1, 1.2 e 1.3 um de cada vez,
o que custa um handshake por versão e é feito uma vez por host e porta:```
sippts scan -i 192.168.0.1 -r 5061 -p tls -tlsversions
Cada versão retorna como `accepted`, `refused` ou `untested`. A última
significa que *este* OpenSSL não pode oferecer essa versão, o que não é o mesmo
que o servidor tê-la desativada, e a diferença importa quando o resultado vai
para um relatório.
Dois limites honestos, que a ferramenta imprime em vez de esconder:
* **SSLv2 e SSLv3 não podem ser testados.** O OpenSSL 3 é compilado sem eles, então
o sippts não pode oferecê-los. Eles são reportados como `untested`, nunca como
`disabled`.
* Um certificado autoassinado num tronco SIP interno não é um achado por
si só. Julgue-o em contexto.
A tabela principal, o arquivo de `-o` e o CSV de `-ocsv` não mudam. O
JSON de `-oj` ganha `tls` e `tls_findings`.
## Sequestro de chamadas ##
`Replaces` (RFC 3891) aponta para uma chamada que já está ativa, pelo seu Call-ID e
suas duas tags. `sippts dump` e `sippts sniff` são o que lhe dão esses três
valores a partir de uma captura; a partir daí:```
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"
Em um REFER é uma transferência assistida, e em um INVITE ele assume a chamada. sippts invite também aceita -replaces, para adicioná-lo ao REFER que -t já envia, de modo que a transferência acontece dentro de uma chamada que ele acabou de estabelecer.
O que um servidor diz que suporta
enumerate tenta os 14 métodos SIP um a um e os distingue pela resposta, mas um servidor também declara o que aceita nos cabeçalhos Allow, Supported e Allow-Events. Esses também são lidos e impressos em uma segunda tabela, que também aponta as duas contradições que vale a pena observar: um método anunciado em Allow que depois responde 405, e um método que responde bem sem ser anunciado de forma alguma. Allow-Events é o que diz se dialog, message-summary ou presence podem ser assinados, que é para onde send -m subscribe vai em seguida.```
sippts enumerate -i 192.168.0.1
A primeira tabela mantém a forma que sempre teve, e o mesmo acontece com o CSV de
`-ocsv`. Os novos dados são adicionados apenas ao JSON de `-oj`, sob
`capabilities`.
## Vulnerabilidades conhecidas ##
Com `-cve`, o módulo `scan` compara o que identifica com uma lista de
vulnerabilidades conhecidas que viaja dentro do pacote
(`src/sippts/data/cve.csv`). Contém cerca de 1400 CVEs de 54 fornecedores, construída
a partir do [NVD do NIST](https://nvd.nist.gov), e os intervalos de versão vêm dos
CPEs de cada CVE:```bash
sippts scan -i 192.168.0.0/24 -fp -cve
Resultados cuja versão realmente cai dentro do intervalo afetado são listados primeiro. Os demais são mostrados atrás deles como meramente possíveis, porque em um scanner um CVE que existe e não é reportado é pior do que um reportado em excesso. Uma linha sem intervalo significa que todas as versões daquele dispositivo são afetadas.
Dois limites que vale a pena conhecer. A detecção se apoia no User-Agent, então um servidor
que o oculta não pode ser verificado contra nada. E alguns produtos são
versionados com letras (o A, B e C do Asterisk Business Edition, ou
beta_5), que nenhuma comparação numérica consegue ordenar: esses são correspondidos apenas por texto,
e sempre aparecem como possíveis em vez de confirmados.
Para atualizar a lista:```bash sippts -up
que o baixa do github juntamente com o resto dos módulos.
### Severidade ###
Cada CVE traz o seu CVSS, colorido por severidade: roxo para crítico, vermelho
para alto, amarelo para médio e ciano para baixo. Os piores são listados primeiro.
O NVD não tem CVSS v3 para todos os CVE: cerca de um terço da lista é
anterior a 2016 e só tem v2, e para o Asterisk é a maioria deles. Quando
só existe v2, este é usado e **marcado com `v2`**, porque as duas escalas não são
equivalentes e a v2 não tem nível CRITICAL: CVE-2017-16563 é 6.0 MEDIUM em
v2 e 8.0 HIGH em v3.
Um sippts anterior ao 4.2.1 não consegue ler esta coluna. Atualize com `sippts -up`.
### Reconstruir a lista (mantenedores) ###
`tools/cve_update.py` reconstrói o `cve.csv` a partir do NVD. Não é algo que o
utilizador do sippts executa: a ideia é regenerá-lo, olhar para o diff, fazer commit,
e deixar que todos os outros o obtenham com `sippts -up`. Isso mantém a chave da API e os
limites de taxa do NVD fora do meio de uma auditoria.```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
Sem uma chave de API, o NVD permite 5 pedidos a cada 30 segundos e uma execução completa demora cerca de quinze minutos. São gratuitas em nvd.nist.gov.
Duas listas no topo do script controlam o que é procurado. VENDORS contém
os fornecedores, e cada um pode ser o fornecedor completo, uma lista de produtos, ou
filtrado por tag. TAGS_VOIP contém as tags (voip, sip, ip_phone, ata,
pbx, ip_office, mivoice...). O filtro é importante para fornecedores que também
fabricam routers e firewalls: pedir ao NVD o Zyxel completo devolve 3223
linhas de equipamento WiFi e DSL que o sippts nunca vai ver via SIP.
Sistemas Operativos
O Sippts foi testado em:
- Linux
- MacOS
Requisitos
- Python 3
- As dependências listadas em requirements.txt, instaladas automaticamente pelo pip
- Para sniff, dump e pcapdump: tshark (parte do Wireshark)
- Para extrair áudio com pcapdump: sox e ffmpeg
Instalação
Instalar via git: ```bash git clone https://github.com/Pepelux/sippts.git
```bash
cd sippts
pip3 install .