
Conjunto de herramientas para auditar sistemas VoIP basados en SIP
Sippts es un conjunto de herramientas para auditar servidores y dispositivos VoIP que utilizan el protocolo SIP. Sippts está programado en Python y nos permite comprobar la seguridad de un servidor VoIP utilizando el protocolo SIP.
Sí. Puedes usarlo, modificarlo y distribuirlo libremente. Si lo modificas, por favor incluye una referencia a este sitio.
El propósito de esta herramienta es auditar tus propios sistemas o realizar pruebas de penetración en sistemas para los que hayas recibido autorización expresa. No soy responsable del mal uso de esta herramienta.
Mostrar ayuda:``` 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
Muestra la ayuda para el 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
Actualizar scripts:``` sippts -up
# Conjunto de herramientas para pruebas de penetración sobre el protocolo SIP #
Puedes obtener ayuda sobre cómo usar esta herramienta en https://sippts.seguridadvoip.com y también en las páginas wiki de Github:
Sippts es un conjunto de herramientas para auditar servidores y dispositivos VoIP que utilizan el protocolo SIP. Sippts está programado en Python y consta de los siguientes comandos o módulos:
* _**scan**_ es un escáner multihilo rápido para servicios SIP. Puede comprobar varias direcciones IP y rangos de puertos, y funciona sobre UDP, TCP y TLS. [Haz clic aquí para leer más sobre el comando scan](https://github.com/Pepelux/sippts/wiki/Command-scan)
* _**exten**_ identifica extensiones en un servidor SIP. También te indica si la extensión requiere autenticación. Puede comprobar varias direcciones IP, y con -f lee los objetivos desde un archivo. [Haz clic aquí para leer más sobre el comando exten](https://github.com/Pepelux/sippts/wiki/Command-exten)
* _**rcrack**_ es un crackeador de contraseñas remoto. Puede probar contraseñas para varios usuarios en varias direcciones IP, y con -f lee los objetivos desde un archivo. [Haz clic aquí para leer más sobre el comando rcrack](https://github.com/Pepelux/sippts/wiki/Command-rcrack)
* _**invite**_ comprueba si un servidor nos permite hacer llamadas sin autenticación. Si el servidor SIP tiene una mala configuración, nos permitirá hacer llamadas a números externos. También puede transferir la llamada a un segundo número externo. [Haz clic aquí para leer más sobre el comando invite](https://github.com/Pepelux/sippts/wiki/Command-invite)
* _**leak**_ explota la vulnerabilidad SIP Digest Leak descubierta por Sandro Gauci, que afecta a un gran número de dispositivos hardware y software. [Haz clic aquí para leer más sobre el comando leak](https://github.com/Pepelux/sippts/wiki/Command-leak)
* _**flood**_ envía mensajes ilimitados al objetivo. [Haz clic aquí para leer más sobre el comando flood](https://github.com/Pepelux/sippts/wiki/Command-flood)
* _**send**_ envía un mensaje SIP personalizado y analiza la respuesta. [Haz clic aquí para leer más sobre el comando send](https://github.com/Pepelux/sippts/wiki/Command-send)
* _**wssend**_ envía un mensaje SIP personalizado sobre WebSockets y analiza la respuesta. [Haz clic aquí para leer más sobre el comando wssend](https://github.com/Pepelux/sippts/wiki/Command-wssend)
* _**enumerate**_ enumera los métodos disponibles de un servicio o servidor SIP. [Haz clic aquí para leer más sobre el comando enumerate](https://github.com/Pepelux/sippts/wiki/Command-enumerate)
* _**dump**_ extrae autenticaciones SIP Digest de un archivo PCAP. [Haz clic aquí para leer más sobre el comando dump](https://github.com/Pepelux/sippts/wiki/Command-dump)
* _**dcrack**_ crackea las autenticaciones digest del protocolo SIP. [Haz clic aquí para leer más sobre el comando dcrack](https://github.com/Pepelux/sippts/wiki/Command-dcrack)
* _**pcapdump**_ extrae datos SIP y RTP de un archivo PCAP, y puede guardar los flujos de audio como archivos WAV. [Haz clic aquí para leer más sobre el comando pcapdump](https://github.com/Pepelux/sippts/wiki/Command-pcapdump)
* _**ping**_ envía un ping SIP para comprobar si un servidor o dispositivo está activo. [Haz clic aquí para leer más sobre el comando ping](https://github.com/Pepelux/sippts/wiki/Command-ping)
* _**astami**_ escanea y audita la Asterisk Manager Interface (AMI), y puede ejecutar un comando en aquellas donde las credenciales funcionan. [Haz clic aquí para leer más sobre el comando astami](https://github.com/Pepelux/sippts/wiki/Command-astami)
* _**sniff**_ captura tráfico SIP en vivo y muestra los mensajes, los dispositivos y las autenticaciones digest que ve. [Haz clic aquí para leer más sobre el comando sniff](https://github.com/Pepelux/sippts/wiki/Command-sniff)
* _**spoof**_ es una herramienta de ARP spoofing, para colocarte entre dos dispositivos y capturar su tráfico. [Haz clic aquí para leer más sobre el comando spoof](https://github.com/Pepelux/sippts/wiki/Command-spoof)
* _**video**_ reproduce una demo animada de los flujos de trabajo habituales: scan a exten a rcrack, dump a dcrack, leak a dcrack, y spoof a sniff.
* _**rtpbleed**_ para explotar la vulnerabilidad RTP Bleed enviando datos a puertos RTP. [Haz clic aquí para leer más sobre el comando rtpbleed](https://github.com/Pepelux/sippts/wiki/Command-rtpbleed)
* _**rtcpbleed**_ para explotar la vulnerabilidad RTP bleed enviando datos a puertos RTCP. [Haz clic aquí para leer más sobre el comando rtcpbleed](https://github.com/Pepelux/sippts/wiki/Command-rtcpbleed)
* _**rtpbleedflood**_ para explotar la vulnerabilidad RTP Bleed inundando un puerto RTP con un diálogo activo. [Haz clic aquí para leer más sobre el comando rtpbleedflood](https://github.com/Pepelux/sippts/wiki/Command-rtpbleedflood)
* _**rtpbleedinject**_ para explotar la vulnerabilidad RTP Bleed inyectando tráfico RTP. [Haz clic aquí para leer más sobre el comando rtpbleedinject](https://github.com/Pepelux/sippts/wiki/Command-rtpbleedinject)
## Certificados TLS ##
sippts habla TLS, y hasta ahora descartaba el certificado. Con
`-tlsinfo` el módulo `scan` lee lo que presenta el servidor:```
sippts scan -i 192.168.0.1 -r 5061 -p tls -tlsinfo
No cuesta ninguna conexión adicional, porque el handshake ocurre de todos modos. Tras la tabla habitual vienen dos: lo que dice el certificado (versión de TLS, cifrado, clave, caducidad y, con -v, también subject, issuer, SAN y SHA-256), y lo que merece la pena reportar sobre él — caducado, autofirmado, clave de menos de 2048 bits, firma SHA-1 o MD5, un nombre que no coincide, una versión de TLS antigua o un cifrado débil.
El que más importa en VoIP es CERT_DEFAULT_VENDOR: el certificado de fábrica de una PBX o de un teléfono, cuya clave privada se distribuye dentro de la imagen del firmware. Cualquiera que descargue esa imagen puede situarse en medio del SIP-TLS.
Con -tlsversions también prueba TLS 1.0, 1.1, 1.2 y 1.3 uno a la vez, lo que cuesta un handshake por versión y se hace una vez por host y puerto:```
sippts scan -i 192.168.0.1 -r 5061 -p tls -tlsversions
Cada versión se devuelve como `accepted`, `refused` o `untested`. La última
significa que *este* OpenSSL no puede ofrecer esa versión, lo cual no es lo mismo que
el servidor la tenga desactivada, y la diferencia importa cuando el resultado va
a un informe.
Dos límites honestos, que la herramienta imprime en lugar de ocultar:
* **SSLv2 y SSLv3 no se pueden probar.** OpenSSL 3 está compilado sin ellos, por lo que
sippts no puede ofrecerlos. Se reportan como `untested`, nunca como
`disabled`.
* Un certificado autofirmado en un trunk SIP interno no es un hallazgo por
sí mismo. Júzgalo en contexto.
La tabla principal, el archivo de `-o` y el CSV de `-ocsv` no cambian. El
JSON de `-oj` gana `tls` y `tls_findings`.
## Secuestro de llamadas ##
`Replaces` (RFC 3891) apunta a una llamada que ya está establecida, por su Call-ID y
sus dos tags. `sippts dump` y `sippts sniff` son lo que te dan esos tres
valores a partir de una captura; a partir de ahí:```
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"
En un REFER es una transferencia atendida, y en un INVITE toma el control de la llamada. sippts invite también acepta -replaces, para añadirlo al REFER que -t ya envía, de modo que la transferencia ocurre dentro de una llamada que acaba de establecer.
enumerate prueba los 14 métodos SIP uno por uno y los distingue por la respuesta, pero un servidor también declara lo que acepta en las cabeceras Allow, Supported y Allow-Events. Esas también se leen y se imprimen en una segunda tabla, que además señala las dos contradicciones que merece la pena revisar: un método anunciado en Allow que luego responde 405, y un método que responde correctamente sin estar anunciado en absoluto. Allow-Events es la que indica si se puede suscribir a dialog, message-summary o presence, que es adonde va después send -m subscribe.```
sippts enumerate -i 192.168.0.1
La primera tabla conserva la forma que siempre tuvo, y también el CSV de
`-ocsv`. Los nuevos datos solo se añaden al JSON de `-oj`, bajo
`capabilities`.
## Vulnerabilidades conocidas ##
Con `-cve`, el módulo `scan` compara lo que identifica contra una lista de
vulnerabilidades conocidas que viaja dentro del paquete
(`src/sippts/data/cve.csv`). Contiene alrededor de 1400 CVE de 54 proveedores, construida
a partir del [NVD de NIST](https://nvd.nist.gov), y los rangos de versiones provienen de
los CPE de cada CVE:```bash
sippts scan -i 192.168.0.0/24 -fp -cve
Los resultados cuya versión realmente cae dentro del rango afectado se listan primero. El resto se muestra detrás de ellos como meramente posibles, porque en un escáner un CVE que existe y no se reporta es peor que uno reportado en exceso. Una fila sin rango significa que todas las versiones de ese dispositivo están afectadas.
Dos límites que conviene conocer. La detección se apoya en el User-Agent, por lo que un servidor
que lo oculta no puede comprobarse contra nada. Y algunos productos están versionados con letras (la A, B y C de Asterisk Business Edition, o
beta_5), que ninguna comparación numérica puede ordenar: esos se emparejan solo por texto
y siempre aparecen como posibles en lugar de confirmados.
Para actualizar la lista:```bash sippts -up
que lo descarga desde github junto con el resto de los módulos.
### Severidad ###
Cada CVE lleva su CVSS, coloreado por severidad: púrpura para crítico, rojo para
alto, amarillo para medio y cian para bajo. Los peores se listan primero.
El NVD no tiene CVSS v3 para cada CVE: aproximadamente un tercio de la lista es
anterior a 2016 y solo tiene v2, y para Asterisk es la mayoría de ellos. Cuando
solo existe v2 se usa y **se marca con `v2`**, porque las dos escalas no son
equivalentes y v2 no tiene nivel CRITICAL: CVE-2017-16563 es 6.0 MEDIUM en
v2 y 8.0 HIGH en v3.
Un sippts anterior a 4.2.1 no puede leer esta columna. Actualiza con `sippts -up`.
### Reconstruir la lista (mantenedores) ###
`tools/cve_update.py` reconstruye `cve.csv` desde el NVD. No es algo que el
usuario de sippts ejecute: la idea es regenerarlo, mirar el diff, hacer commit,
y que todos los demás lo obtengan con `sippts -up`. Eso mantiene la clave de API y los
límites de tasa del NVD fuera del medio de una auditoría.```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
Sin una clave de API, el NVD permite 5 solicitudes cada 30 segundos y una ejecución completa tarda alrededor de quince minutos. Son gratuitas en nvd.nist.gov.
Dos listas en la parte superior del script controlan lo que se busca. VENDORS contiene
los proveedores, y cada uno puede ser el proveedor completo, una lista de productos, o
filtrado por etiqueta. TAGS_VOIP contiene las etiquetas (voip, sip, ip_phone, ata,
pbx, ip_office, mivoice...). El filtro importa para proveedores que también
fabrican routers y firewalls: pedirle al NVD todo Zyxel trae 3223
filas de equipos WiFi y DSL que sippts nunca verá por SIP.
Sippts ha sido probado en:
Instalación vía git: ```bash git clone https://github.com/Pepelux/sippts.git
```bash
cd sippts
pip3 install .