Jeudis du Libre S02E01 : La VoIP avec Asterisk - Support de présentation
Slides Securite Voip Attaque Blackbox Nbareil Jssi Celar 2006
1. T´l´phones
ee
S´curit´ r´seau
e ee
´
Ecoute t´l´phonique
ee
S´curit´ des syst`mes VoIP
e e e
Ou comment tester ses ´quipements. . .
e
Nicolas Bareil
nicolas.bareil@eads.net
EADS Corporate Research Center
SSI Department
Suresnes, FRANCE
18 Janvier 2007
GITSIS
Nicolas Bareil S´curit´ des syst`mes VoIP
e e e 1/35
2. T´l´phones
ee
S´curit´ r´seau
e ee
´
Ecoute t´l´phonique
ee
Banc de torture
Montage d’un banc d’essai
Un Cisco Callmanager 4.x,
Deux t´l´phones Cisco (7960 et 7970) ;
ee
´
=⇒ Etude de type (( blackbox ))
Boˆ noire
ıte
Configuration inconnue ;
Version des firmwares inconnue ;
Protocole peu connu ;
Aucun manuel fourni.
Nicolas Bareil S´curit´ des syst`mes VoIP
e e e 2/35
3. T´l´phones
ee
S´curit´ r´seau
e ee
´
Ecoute t´l´phonique
ee
Plan
T´l´phones
ee
1
Syst`me physique
e
D´marrage du t´l´phone
e ee
R´seau
e
S´curit´ r´seau
e ee
2
Architecture
TCP Hijacking
Man in the middle
´
Ecoute t´l´phonique
ee
3
Protocole de signalisation
Protocole de transport
I’m Listening To You
Nicolas Bareil S´curit´ des syst`mes VoIP
e e e 3/35
4. T´l´phones
ee Syst`me physique
e
S´curit´ r´seau
e ee D´marrage du t´l´phone
e ee
´
Ecoute t´l´phonique
ee R´seau
e
Plan
T´l´phones
ee
1
Syst`me physique
e
D´marrage du t´l´phone
e ee
R´seau
e
S´curit´ r´seau
e ee
2
Architecture
TCP Hijacking
Man in the middle
´
Ecoute t´l´phonique
ee
3
Protocole de signalisation
Protocole de transport
I’m Listening To You
Nicolas Bareil S´curit´ des syst`mes VoIP
e e e 4/35
5. T´l´phones
ee Syst`me physique
e
S´curit´ r´seau
e ee D´marrage du t´l´phone
e ee
´
Ecoute t´l´phonique
ee R´seau
e
Mat´riel pr´sent
e e
Avec un peu d’intuition et de curiosit´ :
e
Processeur MIPS ( ? ? ?) ;
L’espace de stockage ne d´passe pas les 4 Mo ;
e
Ports switch et PC bridg´s par d´faut.
e e
Nicolas Bareil S´curit´ des syst`mes VoIP
e e e 5/35
6. T´l´phones
ee Syst`me physique
e
S´curit´ r´seau
e ee D´marrage du t´l´phone
e ee
´
Ecoute t´l´phonique
ee R´seau
e
Configuration r´seau : VLAN
e
VLAN & CDP
R´cup´ration des informations sur les VLAN disponibles (voix ou
ee
donn´es) via le protocole propri´taire Cisco.
e e
En abuser, ca craint
¸
Les annonces CDP ne sont pas authentifi´es.
e
Sur un r´seau n’utilisant pas les VLAN, que se passe-t-il si on
e
annonce un faux VLAN ?
=⇒ Cr´ation d’un r´seau virtuel ?
e e
Nicolas Bareil S´curit´ des syst`mes VoIP
e e e 6/35
7. T´l´phones
ee Syst`me physique
e
S´curit´ r´seau
e ee D´marrage du t´l´phone
e ee
´
Ecoute t´l´phonique
ee R´seau
e
Configuration r´seau : IP
e
Simplement
R´cup´ration de l’adresse IP via une requˆte DHCP.
ee e
L’option 150 identifie l’adresse IP du serveur TFTP (le Call
Manager en fait).
Si aucune r´ponse DHCP, r´utilisation de la derni`re configuration
e e e
utilis´e.
e
Nicolas Bareil S´curit´ des syst`mes VoIP
e e e 7/35
8. T´l´phones
ee Syst`me physique
e
S´curit´ r´seau
e ee D´marrage du t´l´phone
e ee
´
Ecoute t´l´phonique
ee R´seau
e
Chargement de la configuration
T´l´chargement de fichier
ee
Les fichiers sont t´l´charg´s par TFTP au d´marrage uniquement.
ee e e
Plusieurs types de fichiers :
Extension Description
certificate trust list
.tlv
universal application loader
.loads
secure universal application loader
.sbn
configuration
.cnf
firmware non sign´ e
.bin
firmware sign´ e
.sb2
Java
.jar
Nicolas Bareil S´curit´ des syst`mes VoIP
e e e 8/35
9. T´l´phones
ee Syst`me physique
e
S´curit´ r´seau
e ee D´marrage du t´l´phone
e ee
´
Ecoute t´l´phonique
ee R´seau
e
Rogue TFTP server
Gros fichier toi mˆme !
e
L’envoi d’un gros fichier entraine une fuite m´moire dans le
e
padding des trames Ethernet. Overflow ? M´moire non initialis´e ?
e e
>>> a.nzpadding()
0022 Ether / IP / UDP 10.0.1.11:49946 > 10.0.0.1:33572 / Raw / Padding
---> 4C 53 45 50 30 30 31 34 41 38 39 32 34 44 LSEP0014A8924D
...
0536 Ether / IP / TCP 10.0.1.11:50099 > 10.0.0.1:skinny S / Padding
---> 46 2E F.
0549 Ether / IP / TCP 10.0.1.11:50103 > 10.0.0.1:skinny S / Padding
---> 34 44 4D
0560 Ether / IP / TCP 10.0.1.11:50108 > 10.0.0.1:skinny S / Padding
---> 46 2E F.
Nicolas Bareil S´curit´ des syst`mes VoIP
e e e 9/35
10. T´l´phones
ee Syst`me physique
e
S´curit´ r´seau
e ee D´marrage du t´l´phone
e ee
´
Ecoute t´l´phonique
ee R´seau
e
Fichier de configuration
Le Call Manager, un serveur TFTP particulier
Composition du nom de fichier : SEP.<adresse mac>.cnf.xml
Les configurations ne sont pas stock´es mais g´n´r´es ` la vol´e !
e e ee a e
Fichier XML ;
Logique invers´e : 0 ⇒ vrai, 1 ⇒ faux ;
e
Aucune signature cryptographique pr´sente.
e
Nicolas Bareil S´curit´ des syst`mes VoIP
e e e 10/35
12. T´l´phones
ee Syst`me physique
e
S´curit´ r´seau
e ee D´marrage du t´l´phone
e ee
´
Ecoute t´l´phonique
ee R´seau
e
Dissection de ces octets
x01x00 ## d´but de section ?
e
x02x01x01
x02x00 ## d´but de section ?
e
x02x01x94
x03x00 ## d´but de section ?
e
x5b
x04x00 ## d´but de section ?
e
x5c
x27 ## longueur : 39 octets
CN=someSigner;OU=someOrgUnit;O=someOrgx00 ## Certificat Autorit´e
x05x00 ## d´but de section ?
e
x08 ## longueur : 8 octets
x12x34x56x78x90xabxcdxef ## 123456789abcdef Pour l’endianess ?
x06x00 ## d´but de section ?
e
x23 ## longueur : 35 octets
CN=someCA;OU=someOrgUnit;O=someOrgx00 ## Certificat racine
x07x00 ## d´but de section ?
e
x0f
x08x00 ## d´but de section ?
e
x01x01tx00
x08nx00x01x00
x0b ## longueur : 11 octets
x00x01x02x0cx01x00
ACx14xe1x06x1dx84xf2x0ex0b*xc4xb7xf4x9bxffr
xccxccx0f|xf7x14xb8x18$xaeK;x04x9fuxf8xd3xbdxabx8axc0~^xedxf
ex9dx01x16/x8fex18wxf0x92xfcx14xa1x867xabSx88xb6xac’xfc7x02x8
9Ux0fx89&xdd?xcfrxc2?xe32x7fxcbx1dTxbfxe5wmxe4x03xf8x8bxb2#x93:
!xf2xb6xf0|x93!x0c;sx82x08xc8xb4xdejxd7xbaOxcezx8bOOxabx8f~xe2
x83x86x99x05xa9xc2M;;x0ex054xc4x90tx9f[$x82x83quot;xa0x84xccvqxcdxc
2xe26x19x19x06xecx98_xc6cxfcntxa6x93>^x07.x9bxd3xd0x9eDlyx81xd
5xa2rxc8xb0Dxd3gx18x9d~x08x1fx81xfcx88xa6xe3x92xfbxacx19J0xaa
xc8’xbcqxb7ZUx8d[x87xf4Kxeckx8cx842x17x01*xbax847|q{xf6xf0xf4.x12xbdx55xc8
x3cx3bxe91xf3x3dxebx80xe74x8e5xa9x3bxe3x0ex00 ## MD5? 3C3BE931F33DEB80E7348E35A93BE30E
x13 ## longueur : 19 octets
P00307010200.loadsx00r ## nom de fichier avec octet nul
P00307010200.sbnrn ## nom de fichier
P00307010200.sb2rn ## nom de fichier
LA_VERSION=PAS30708rn ## version du loader
Nicolas Bareil S´curit´ des syst`mes VoIP
e e e 12/35
13. T´l´phones
ee Syst`me physique
e
S´curit´ r´seau
e ee D´marrage du t´l´phone
e ee
´
Ecoute t´l´phonique
ee R´seau
e
Chargement du firmware
Extrait de strings P00307010200.sb2
(( The Moving Finger writes ; and, having writ,
Moves on : nor all thy Piety nor Wit
Shall lure it back to cancel half a Line,
Nor all thy Tears wash out a Word of it. ))
— Omar Khayyam
D´sassemblage impossible
e
Processeur inconnu ;
Format de fichier inconnu : ni ELF, ni PE, etc ;
O` est le point d’entr´e du fichier ?
u e
Probl`me de l´galit´.
e e e
Nicolas Bareil S´curit´ des syst`mes VoIP
e e e 13/35
14. T´l´phones
ee Syst`me physique
e
S´curit´ r´seau
e ee D´marrage du t´l´phone
e ee
´
Ecoute t´l´phonique
ee R´seau
e
Scan des t´l´phones : TCP
ee
Ports TCP
Interesting ports on CCM:
Not shown: 1678 closed ports
Maigre r´sultat mais. . .
e
PORT STATE SERVICE
80/tcp open tcpwrapped
Beaucoup d’informations utiles
sur le t´l´phone via l’interface
ee
Device type: VoIP phone
Running: Cisco embedded
Web.
OS details: Cisco IP Phone 7970G
Bien prot´g´
ee
Protocoles
Une fois la connexion TCP vers
Interesting protocols on phoneA:
le Call Manager ´tablie, on est
e
Not shown: 252 closed protocols
PROTOCOL STATE SERVICE
bloqu´.
e
1 open icmp
2 open|filtered igmp
6 open|filtered tcp
17 filtered udp
Nicolas Bareil S´curit´ des syst`mes VoIP
e e e 14/35
15. T´l´phones
ee Syst`me physique
e
S´curit´ r´seau
e ee D´marrage du t´l´phone
e ee
´
Ecoute t´l´phonique
ee R´seau
e
Jute pour rire. . .
nmap Call Manager
PORT STATE SERVICE VERSION
80/tcp open http Microsoft IIS webserver 5.0
102/tcp open iso-tsap?
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn
443/tcp open ssl/http Microsoft IIS webserver 5.0
445/tcp open microsoft-ds Microsoft Windows 2000 microsoft-ds
1433/tcp open ms-sql-s?
1720/tcp open tcpwrapped
2000/tcp open callbook?
2001/tcp open dc?
2002/tcp open globe?
3389/tcp open microsoft-rdp Microsoft Terminal Service
8009/tcp open ajp13?
Non !
On ne tire pas sur les ambulances !
Nicolas Bareil S´curit´ des syst`mes VoIP
e e e 15/35
16. T´l´phones
ee Syst`me physique
e
S´curit´ r´seau
e ee D´marrage du t´l´phone
e ee
´
Ecoute t´l´phonique
ee R´seau
e
Jute pour rire. . .
nmap Call Manager
PORT STATE SERVICE VERSION
80/tcp open http Microsoft IIS webserver 5.0
102/tcp open iso-tsap?
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn
443/tcp open ssl/http Microsoft IIS webserver 5.0
445/tcp open microsoft-ds Microsoft Windows 2000 microsoft-ds
1433/tcp open ms-sql-s?
1720/tcp open tcpwrapped
2000/tcp open callbook?
2001/tcp open dc?
2002/tcp open globe?
3389/tcp open microsoft-rdp Microsoft Terminal Service
8009/tcp open ajp13?
Non !
On ne tire pas sur les ambulances !
Nicolas Bareil S´curit´ des syst`mes VoIP
e e e 15/35
17. T´l´phones
ee Syst`me physique
e
S´curit´ r´seau
e ee D´marrage du t´l´phone
e ee
´
Ecoute t´l´phonique
ee R´seau
e
Cisco Discovery Protocol
c´d´p´. nom compos´ masculin. protocole de d´couverte r´seau
eee e e e
Protocole ferm´, propri´taire, utilis´ uniquement par les
e e e
´quipements Cisco.
e
Espoir ?
Impl´mentation d’un add-on CDP pour [scapy] :
e
Fuzzing possible ;
Injection de fausses annonces ;
Debugging du r´seau plus ais´.
e e
Nicolas Bareil S´curit´ des syst`mes VoIP
e e e 16/35
18. T´l´phones
ee Syst`me physique
e
S´curit´ r´seau
e ee D´marrage du t´l´phone
e ee
´
Ecoute t´l´phonique
ee R´seau
e
scapy+cdp+skinny
>>> sniffed[2].show()
###[ Cisco Discovery Protocol version 2 ]###
vers= 1
Fuzzing
ttl= 180
cksum= 0xf960
>>> CDPv2_HDR(str(fuzz(CDPv2_HDR()))).show()
|###[ Device ID ]###
###[ Cisco Discovery Protocol version 2 ]###
| type= Device ID
vers= 251
| len= 25
ttl= 56
| val= ’ccm.papanoel.fr’
cksum= 0x4c7
|###[ Addresses ]###
>>> send(fuzz(IP(dst=’callman...’) / CDPv2_HDR())
| type= Addresses
, loop=1)
| len= 17
| naddr= 1L
| |###[ CDP Addresses ]###
| | ptype= NLPID
Packet of death ?
| | plen= 0x1
| | proto= IP >>> killme=Dot3(dst=’01 :00 :0c :cc :cc :cc’)
| | addrlen= 4 / LLC() / SNAP() / CDPv2_HDR()
| | ipaddr= 10.0.0.1 / CDPMsgPower(power=0xffff)
|###[ Software Version ]### >>> killme.show()
| type= Software Version ###[ Cisco Discovery Protocol version 2 ]###
| len= 33 ###[ Power ]###
| val= ’Cisco Discovery Protocol v4.0’ type= Power
|###[ Platform ]### len= 6
| type= Platform power= 65535 mW
| len= 18 >>> sendp(killme, iface=’eth0’)
| val= ’Win2000 Server’
____________________
Nicolas Bareil S´curit´ des syst`mes VoIP
e e e 17/35
19. T´l´phones
ee Syst`me physique
e
S´curit´ r´seau
e ee D´marrage du t´l´phone
e ee
´
Ecoute t´l´phonique
ee R´seau
e
scapy+cdp+skinny
>>> sniffed[2].show()
###[ Cisco Discovery Protocol version 2 ]###
vers= 1
Fuzzing
ttl= 180
cksum= 0xf960
>>> CDPv2_HDR(str(fuzz(CDPv2_HDR()))).show()
|###[ Device ID ]###
###[ Cisco Discovery Protocol version 2 ]###
| type= Device ID
vers= 251
| len= 25
ttl= 56
| val= ’ccm.papanoel.fr’
cksum= 0x4c7
|###[ Addresses ]###
>>> send(fuzz(IP(dst=’callman...’) / CDPv2_HDR())
| type= Addresses
, loop=1)
| len= 17
| naddr= 1L
| |###[ CDP Addresses ]###
| | ptype= NLPID
Packet of death ?
| | plen= 0x1
| | proto= IP >>> killme=Dot3(dst=’01 :00 :0c :cc :cc :cc’)
| | addrlen= 4 / LLC() / SNAP() / CDPv2_HDR()
| | ipaddr= 10.0.0.1 / CDPMsgPower(power=0xffff)
|###[ Software Version ]### >>> killme.show()
| type= Software Version ###[ Cisco Discovery Protocol version 2 ]###
| len= 33 ###[ Power ]###
| val= ’Cisco Discovery Protocol v4.0’ type= Power
|###[ Platform ]### len= 6
| type= Platform power= 65535 mW
| len= 18 >>> sendp(killme, iface=’eth0’)
| val= ’Win2000 Server’
____________________
Nicolas Bareil S´curit´ des syst`mes VoIP
e e e 17/35
20. T´l´phones
ee Syst`me physique
e
S´curit´ r´seau
e ee D´marrage du t´l´phone
e ee
´
Ecoute t´l´phonique
ee R´seau
e
scapy+cdp+skinny
>>> sniffed[2].show()
###[ Cisco Discovery Protocol version 2 ]###
vers= 1
Fuzzing
ttl= 180
cksum= 0xf960
>>> CDPv2_HDR(str(fuzz(CDPv2_HDR()))).show()
|###[ Device ID ]###
###[ Cisco Discovery Protocol version 2 ]###
| type= Device ID
vers= 251
| len= 25
ttl= 56
| val= ’ccm.papanoel.fr’
cksum= 0x4c7
|###[ Addresses ]###
>>> send(fuzz(IP(dst=’callman...’) / CDPv2_HDR())
| type= Addresses
, loop=1)
| len= 17
| naddr= 1L
| |###[ CDP Addresses ]###
| | ptype= NLPID
Packet of death ?
| | plen= 0x1
| | proto= IP >>> killme=Dot3(dst=’01 :00 :0c :cc :cc :cc’)
| | addrlen= 4 / LLC() / SNAP() / CDPv2_HDR()
| | ipaddr= 10.0.0.1 / CDPMsgPower(power=0xffff)
|###[ Software Version ]### >>> killme.show()
| type= Software Version ###[ Cisco Discovery Protocol version 2 ]###
| len= 33 ###[ Power ]###
| val= ’Cisco Discovery Protocol v4.0’ type= Power
|###[ Platform ]### len= 6
| type= Platform power= 65535 mW
| len= 18 >>> sendp(killme, iface=’eth0’)
| val= ’Win2000 Server’
____________________
Nicolas Bareil S´curit´ des syst`mes VoIP
e e e 17/35
21. T´l´phones
ee Architecture
S´curit´ r´seau
e ee TCP Hijacking
´
Ecoute t´l´phonique
ee Man in the middle
Plan
T´l´phones
ee
1
Syst`me physique
e
D´marrage du t´l´phone
e ee
R´seau
e
S´curit´ r´seau
e ee
2
Architecture
TCP Hijacking
Man in the middle
´
Ecoute t´l´phonique
ee
3
Protocole de signalisation
Protocole de transport
I’m Listening To You
Nicolas Bareil S´curit´ des syst`mes VoIP
e e e 18/35
22. T´l´phones
ee Architecture
S´curit´ r´seau
e ee TCP Hijacking
´
Ecoute t´l´phonique
ee Man in the middle
´
Equipements
Un r´seau VoIP est constitu´ de :
e e
T´l´phones adapt´s ;
ee e
Call Manager.
´
Equipement IP =⇒ Pile IP =⇒ Complexe =⇒ Int´ressant !
e
Nicolas Bareil S´curit´ des syst`mes VoIP
e e e 19/35
23. T´l´phones
ee Architecture
S´curit´ r´seau
e ee TCP Hijacking
´
Ecoute t´l´phonique
ee Man in the middle
´
Equipements
Un r´seau VoIP est constitu´ de :
e e
T´l´phones adapt´s ;
ee e
Call Manager.
´
Equipement IP =⇒ Pile IP =⇒ Complexe =⇒ Int´ressant !
e
Nicolas Bareil S´curit´ des syst`mes VoIP
e e e 19/35
24. T´l´phones
ee Architecture
S´curit´ r´seau
e ee TCP Hijacking
´
Ecoute t´l´phonique
ee Man in the middle
´
Equipements
Un r´seau VoIP est constitu´ de :
e e
T´l´phones adapt´s ;
ee e
Call Manager.
´
Equipement IP =⇒ Pile IP =⇒ Complexe =⇒ Int´ressant !
e
Nicolas Bareil S´curit´ des syst`mes VoIP
e e e 19/35
25. T´l´phones
ee Architecture
S´curit´ r´seau
e ee TCP Hijacking
´
Ecoute t´l´phonique
ee Man in the middle
´
Equipements
Un r´seau VoIP est constitu´ de :
e e
T´l´phones adapt´s ;
ee e
Call Manager.
´
Equipement IP =⇒ Pile IP =⇒ Complexe =⇒ Int´ressant !
e
Nicolas Bareil S´curit´ des syst`mes VoIP
e e e 19/35
26. T´l´phones
ee Architecture
S´curit´ r´seau
e ee TCP Hijacking
´
Ecoute t´l´phonique
ee Man in the middle
Pile TCP/IP correcte
Robustesse de la pile TCP/IP
G´n´ration des ISN : (( compl´tement al´atoire )),
ee e e
IP ID incr´mentaux,
e
Protection anti-DDoS :
Bonne gestion des num´ros de s´quence :
e e
Nicolas Bareil S´curit´ des syst`mes VoIP
e e e 20/35
27. T´l´phones
ee Architecture
S´curit´ r´seau
e ee TCP Hijacking
´
Ecoute t´l´phonique
ee Man in the middle
Pile TCP/IP correcte
Robustesse de la pile TCP/IP
G´n´ration des ISN : (( compl´tement al´atoire )),
ee e e
IP ID incr´mentaux,
e
Protection anti-DDoS :
Requˆte/R´ponse ARP,
e e
SYN / SYN+ACK ;
Bonne gestion des num´ros de s´quence :
e e
Nicolas Bareil S´curit´ des syst`mes VoIP
e e e 20/35
28. T´l´phones
ee Architecture
S´curit´ r´seau
e ee TCP Hijacking
´
Ecoute t´l´phonique
ee Man in the middle
Pile TCP/IP correcte
Robustesse de la pile TCP/IP
G´n´ration des ISN : (( compl´tement al´atoire )),
ee e e
IP ID incr´mentaux,
e
Protection anti-DDoS :
Bonne gestion des num´ros de s´quence :
e e
D´tection d’une d´synchronisation,
e e
R´´criture des donn´es non acquitt´es ;
ee e e
Nicolas Bareil S´curit´ des syst`mes VoIP
e e e 20/35
29. T´l´phones
ee Architecture
S´curit´ r´seau
e ee TCP Hijacking
´
Ecoute t´l´phonique
ee Man in the middle
Pile TCP/IP correcte
Robustesse de la pile TCP/IP
G´n´ration des ISN : (( compl´tement al´atoire )),
ee e e
IP ID incr´mentaux,
e
Protection anti-DDoS :
Bonne gestion des num´ros de s´quence :
e e
Pile TCP/IP d´riv´e d’un IOS ?
ee
Nicolas Bareil S´curit´ des syst`mes VoIP
e e e 20/35
30. T´l´phones
ee Architecture
S´curit´ r´seau
e ee TCP Hijacking
´
Ecoute t´l´phonique
ee Man in the middle
TCP Hijacking
Avis de tempˆte
e
Blind TCP Hijacking non trivial.
=⇒ L’insertion na¨ de paquets entraˆ un ACK-storm !
ıve ıne
The lazy way
Utilisons la possibilit´ de r´´crire des paquets non acquitt´s !
e ee e
Anticiper la taille du prochain segment,
1
Envoyer le paquet,
2
R´ussir ` ce qu’il soit trait´ avant la r´ception du vrai paquet,
e a e e
3
Attendre :)
4
Nicolas Bareil S´curit´ des syst`mes VoIP
e e e 21/35
31. T´l´phones
ee Architecture
S´curit´ r´seau
e ee TCP Hijacking
´
Ecoute t´l´phonique
ee Man in the middle
Suite de paquets
Comment anticiper ?
Il y a constamment des suites de paquets :
D´marrage,
e
Keep Alive,
D´crochage du t´l´phone,
e ee
R´ception d’un appel,
e
...
Nicolas Bareil S´curit´ des syst`mes VoIP
e e e 22/35
32. T´l´phones
ee Architecture
S´curit´ r´seau
e ee TCP Hijacking
´
Ecoute t´l´phonique
ee Man in the middle
Applications du TCP Hijacking
Applications possibles :
Modification des num´ros de t´l´phone compos´s,
e ee e
Impossible de modifier les options de s´curit´ ainsi,
e e
=⇒ Car modifi´es par le fichier de configuration (via TFTP)
e
Too easy !
L’utilisation de [scapy] et de son add-on Skinny facilite ce type
d’interception.
Nicolas Bareil S´curit´ des syst`mes VoIP
e e e 23/35
33. T´l´phones
ee Architecture
S´curit´ r´seau
e ee TCP Hijacking
´
Ecoute t´l´phonique
ee Man in the middle
Applications du TCP Hijacking
Applications possibles :
Modification des num´ros de t´l´phone compos´s,
e ee e
Impossible de modifier les options de s´curit´ ainsi,
e e
=⇒ Car modifi´es par le fichier de configuration (via TFTP)
e
Too easy !
L’utilisation de [scapy] et de son add-on Skinny facilite ce type
d’interception.
Nicolas Bareil S´curit´ des syst`mes VoIP
e e e 23/35
34. T´l´phones
ee Architecture
S´curit´ r´seau
e ee TCP Hijacking
´
Ecoute t´l´phonique
ee Man in the middle
Applications du TCP Hijacking
Applications possibles :
Modification des num´ros de t´l´phone compos´s,
e ee e
Impossible de modifier les options de s´curit´ ainsi,
e e
=⇒ Car modifi´es par le fichier de configuration (via TFTP)
e
Too easy !
L’utilisation de [scapy] et de son add-on Skinny facilite ce type
d’interception.
Nicolas Bareil S´curit´ des syst`mes VoIP
e e e 23/35
35. T´l´phones
ee Architecture
S´curit´ r´seau
e ee TCP Hijacking
´
Ecoute t´l´phonique
ee Man in the middle
ICMP Redirect
Message ICMP Redirect
Redirection d’un routeur par un autre routeur.
Support de l’ICMP insuffisant dans [scapy],
R´impl´mentation de l’ICMP,
e e
Mais les t´l´phones ne suivent pas les redirections ICMP :-(
ee
Nicolas Bareil S´curit´ des syst`mes VoIP
e e e 24/35
36. T´l´phones
ee Architecture
S´curit´ r´seau
e ee TCP Hijacking
´
Ecoute t´l´phonique
ee Man in the middle
ICMP Redirect
Message ICMP Redirect
Redirection d’un routeur par un autre routeur.
Support de l’ICMP insuffisant dans [scapy],
R´impl´mentation de l’ICMP,
e e
Mais les t´l´phones ne suivent pas les redirections ICMP :-(
ee
Nicolas Bareil S´curit´ des syst`mes VoIP
e e e 24/35
37. T´l´phones
ee Architecture
S´curit´ r´seau
e ee TCP Hijacking
´
Ecoute t´l´phonique
ee Man in the middle
Modes Gratuitous ARP
Gratuitous ARP
C’est une r´ponse ARP non d´sir´e afin de mettre ` jour les caches.
e ee a
Les t´l´phones peuvent autoriser cette fonctionnalit´ ou non.
ee e
Avec GARP, toutes les attaques ARP sont possibles,
Sans GARP, rien n’est possible
Une fois la premi`re r´solution faite, l’entr´e du cache est fig´e
ee e e
Nicolas Bareil S´curit´ des syst`mes VoIP
e e e 25/35
38. T´l´phones
ee Architecture
S´curit´ r´seau
e ee TCP Hijacking
´
Ecoute t´l´phonique
ee Man in the middle
Modes Gratuitous ARP
Gratuitous ARP
C’est une r´ponse ARP non d´sir´e afin de mettre ` jour les caches.
e ee a
Les t´l´phones peuvent autoriser cette fonctionnalit´ ou non.
ee e
Avec GARP, toutes les attaques ARP sont possibles,
Sans GARP, rien n’est possible
Une fois la premi`re r´solution faite, l’entr´e du cache est fig´e
ee e e
Sauf une fois. . .
Nicolas Bareil S´curit´ des syst`mes VoIP
e e e 25/35
39. T´l´phones
ee Architecture
S´curit´ r´seau
e ee TCP Hijacking
´
Ecoute t´l´phonique
ee Man in the middle
Comportement bonus
>>> from Crypto.Hash import MD5
>>> hash=MD5.new()
>>> def hashoir(x):
... hash.update(str(x.payload))
... hex=hash.hexdigest()
... print x.sprintf(quot;%Ether.src% > %Ether.dst% / {UDP: UDP(%UDP.sport% > %UDP.dport%)}quot;
... quot;{TCP: TCP(%TCP.sport% > %TCP.dport%)} MD5=%squot; % hex)
...
>>> map(hashoir, sniffedpkt)
00:14:A8:92:4D:3F > 00:0B:CD:AE:FC:27 / UDP(50036 > tftp) MD5=45733f4ea925a5d4c336287bdd7411c3
00:14:A8:92:4D:3F > 00:0B:AA:BB:CC:DD / UDP(50036 > tftp) MD5=45733f4ea925a5d4c336287bdd7411c3
00:14:A8:92:4D:3F > 00:0B:CD:AE:FC:27 / TCP(1570 > skinny) MD5=a20675fc6702ae5ebdb1b94dfdc10096
00:14:A8:92:4D:3F > 00:0B:AA:BB:CC:DD / TCP(1570 > skinny) MD5=a20675fc6702ae5ebdb1b94dfdc10096
00:14:A8:92:4D:3F > 00:0B:CD:AE:FC:27 / TCP(1570 > skinny) MD5=ca8f5150150d1090244d9a49d75868e9
00:14:A8:92:4D:3F > 00:0B:AA:BB:CC:DD / TCP(1570 > skinny) MD5=ca8f5150150d1090244d9a49d75868e9
Do you ?
Vous ne voyez rien de bizarre ?
Nicolas Bareil S´curit´ des syst`mes VoIP
e e e 26/35
40. T´l´phones
ee Protocole de signalisation
S´curit´ r´seau
e ee Protocole de transport
´
Ecoute t´l´phonique
ee I’m Listening To You
Plan
T´l´phones
ee
1
Syst`me physique
e
D´marrage du t´l´phone
e ee
R´seau
e
S´curit´ r´seau
e ee
2
Architecture
TCP Hijacking
Man in the middle
´
Ecoute t´l´phonique
ee
3
Protocole de signalisation
Protocole de transport
I’m Listening To You
Nicolas Bareil S´curit´ des syst`mes VoIP
e e e 27/35
41. T´l´phones
ee Protocole de signalisation
S´curit´ r´seau
e ee Protocole de transport
´
Ecoute t´l´phonique
ee I’m Listening To You
Les protocoles mis en jeux
Un r´seau VoIP est g´r´ via :
e ee
Un protocole de signalisation
Un protocole de transport
de la voix
Nicolas Bareil S´curit´ des syst`mes VoIP
e e e 28/35
42. T´l´phones
ee Protocole de signalisation
S´curit´ r´seau
e ee Protocole de transport
´
Ecoute t´l´phonique
ee I’m Listening To You
Skinny Client Control Protocol
Skinny :
Utilise TCP/2000
Protocole binaire (contrairement ` SIP)
a
Champs ` positions fixes
a
Skinny : Le Yin ?
Analyse difficile sans sp´cifications :
e
Plus de trois cents types de messages ;
Champs compos´s complexes ;
e
Beaucoup de champs (( r´serv´s )) ;
e e
=⇒ Impl´mentation partielle dans [scapy]
e
Nicolas Bareil S´curit´ des syst`mes VoIP
e e e 29/35
43. T´l´phones
ee Protocole de signalisation
S´curit´ r´seau
e ee Protocole de transport
´
Ecoute t´l´phonique
ee I’m Listening To You
Real Time Protocol : le Yang
RTP : Le Yang
Protocole simple et g´n´raliste standardis´ par la RFC 3550.
ee e
=⇒ Utilis´ par (presque) toutes les solutions VoIP
e
Les num´ros de ports ne sont pas fixes et sont assign´s
e e
dynamiquement via le protocole de signalisation.
Nicolas Bareil S´curit´ des syst`mes VoIP
e e e 30/35
44. T´l´phones
ee Protocole de signalisation
S´curit´ r´seau
e ee Protocole de transport
´
Ecoute t´l´phonique
ee I’m Listening To You
Real Time Protocol : voix
Apr`s les en-tˆtes. . . la voix !
e e
La voix n’est pas chiffr´e, juste cod´e ;
e e
Si on intercepte ces paquets, on peut alors ´couter.
e
´
Etat de l’art des logiciels d’´coute t´l´phonique
e ee
vomit (N. Provos) ;
voipong (M. Balaban) ;
cain (M. Montoro).
Nicolas Bareil S´curit´ des syst`mes VoIP
e e e 31/35
45. T´l´phones
ee Protocole de signalisation
S´curit´ r´seau
e ee Protocole de transport
´
Ecoute t´l´phonique
ee I’m Listening To You
I’m listening to you !
ilty : I’m listening to you !
Logiciel Libre,
Inteface user friendly
D´velopp´ en Python,
e e
Fonctionnalit´s
e
´
Ecouter une conversation en direct,
Logguer les appels,
Surveille le protocole de signalisation,
Nicolas Bareil S´curit´ des syst`mes VoIP
e e e 32/35
46. T´l´phones
ee Protocole de signalisation
S´curit´ r´seau
e ee Protocole de transport
´
Ecoute t´l´phonique
ee I’m Listening To You
La signalisation
Surveiller le protocole de signalisation permet :
Reconnaˆ pr´cisemment les appels :
ıtre e
Acc`s aux informations de l’annuaire,
e
Num´ro de t´l´phone,
e ee
Extension du num´ro de t´l´phone ;
e ee
Voir les touches compos´es :
e
Capture du code de messagerie vocale,
Num´ros de carte bleue ;
e
Nicolas Bareil S´curit´ des syst`mes VoIP
e e e 33/35
47. T´l´phones
ee Protocole de signalisation
S´curit´ r´seau
e ee Protocole de transport
´
Ecoute t´l´phonique
ee I’m Listening To You
Des questions ?
Si on avait eu plus du temps. . .
V´rification de la solidit´ du code cryptographique.
e e
Remerciements
Phil, Serpilliere, Sid, Arnaud, news0ft, Kostya, Stf et tout le reste
de l’´quipe d’EADS CCR DCR/STI/C !
e
Plus d’information ?
nicolas.bareil@eads.net
Nicolas Bareil S´curit´ des syst`mes VoIP
e e e 34/35
48. T´l´phones
ee Protocole de signalisation
S´curit´ r´seau
e ee Protocole de transport
´
Ecoute t´l´phonique
ee I’m Listening To You
Bibliography
P. Biondi, scapy
Interactive packet manipulation program
http://secdev.org/projects/scapy/
N. Bareil, ilty
I’m listening to you
http://chdir.org/∼nico/ilty/
SSTIC 2005 — http://actes.sstic.org/SSTIC05/
N. Provos, vomit
http://vomit.xtdnet.nl/
M. Balaban, voipong
http://www.enderunix.org/voipong/
M. Montoro, Cain
http://www.oxid.it/cain.html
Nicolas Bareil S´curit´ des syst`mes VoIP
e e e 35/35