Analyse VoIP Wireshark
A partir de nombreux fichiers d’exemples, on trouve ici un exemple d’analyse de trafic VoIP : configuration de Wireshark, première analyse, hiérarchie de protocoles et points de terminaison, protocoles VoIP, statistiques SIP, appels VoIP, champs SIP, jouer une conversation téléphonique, affichage des utilisateurs SIP, Analyse RTP sont au menu des activités.
1. Fichiers d’exemple
- get http + dns : https://www.cloudshark.org/captures/26c43039ccd6
- sip-2phones-B2BUA-Asterisk.pcapng : https://www.cloudshark.org/captures/b89478f0b2d8/
- sip.pcapng : https://www.cloudshark.org/captures/3380b7960f4d/
- Forensic_challenge_4.pcap : https://www.cloudshark.org/captures/908f122e3300/
2. Configuration générale
2.1. Création d’un profil de Configuration
Menu : Edit → Configuration Profiles …
2.2. Affichage des colonnes
Menu : Edit → Preferences
2.3. Horodatage
Le format par défaut de l’horodatage est “Seconds Since Beginning Capture”.
Pour changer en “Moment de la journée” : Aller dans le menu View → Time Display Format → Date and Time of Day.
Avec un affichage à la “Seconds”View → Time Display Format → “Seconds: 0”
2.4. Alignement des colonnes à gauche
Clic droit et alignement à gauche
2.5. Champs comme colonne
Par exemple ici avec le filtre http.request
, utiliser le champ HTTP Host:
en colonne :
2.6. Règles de colorisation
Menu : View → Coloring Rules
3. Première analyse
3.1. Propriétés du fichier
Menu : Statistics → Capture File Properties
3.2. Hiérarchie de protocoles
Pour avoir une vue d’ensemble des protocoles de la capture.
Menu : Statistics → Protocol Hierarchy
Couche 3
- LLC
- CDP
- STP
- IPv4
- ARP
Couche 4 IPv4
- UDP (84%)
- TCP (12%)
Couche 7 IPv4/UDP
- SNMP
- SIP
- RTP
- RTCP
- MGCP
- H323
Couche 7 IPv4/TCP
- Yahoo Messenger
- POP
- MSN Messenger
- HTTP
3.3. Points d’extrémités et conversations
Pour avoir une idée des Hôtes physiques et logiques de la capture.
Menu : Statistics → Endpoints
Menu : Statistics → Conversations
Couche 2
On reconnait du Cisco, du Dell, du Xircom, …
UDP
4. Analyse VoIP
4.1. Protocoles VoIP
4.2. Champs de références Wireshark
4.3. Statistiques SIP
Menu : Telephony → SIP Statistics
tshark -r sip-2phones-B2BUA-Asterisk.pcapng -q -z sip,stat
===================================================================
SIP Statistics
Number of SIP messages: 60
Number of resent SIP messages: 1
* SIP Status Codes in reply packets
SIP 401 Unauthorized : 7 Packets
SIP 404 Not Found : 1 Packets
SIP 180 Ringing : 2 Packets
SIP 200 OK : 9 Packets
SIP 480 Temporarily Unavailable : 1 Packets
SIP 489 Bad Event : 6 Packets
SIP 100 Trying : 3 Packets
* List of SIP Request methods
INVITE : 7 Packets
ACK : 6 Packets
REGISTER : 4 Packets
PUBLISH : 3 Packets
SUBSCRIBE : 9 Packets
BYE : 2 Packets
* Average setup time 2430 ms
Min 1 ms
Max 7071 ms
===================================================================
→ SIP Flows
4.4. Statistiques avec tshark
L’option -z
à exploiter …
tshark -z help
Par exemple, les adresses MAC :
tshark -q -z endpoints,eth -r sip.pcapng
4.5. Menu VoIP Calls
tshark -t ud -r sip.pcapng -Y "sip.CSeq.method eq INVITE"
1 2005-01-14 17:58:02.965944 200.57.7.195 → 200.57.7.204 SIP/SDP Request: INVITE sip:francisco@bestel.com:55060 |
2 2005-01-14 17:58:02.973833 200.57.7.204 → 200.57.7.195 SIP Status: 100 Trying |
3 2005-01-14 17:58:03.013468 200.57.7.204 → 200.57.7.195 SIP Status: 180 Ringing |
498 2005-01-14 17:58:11.443869 200.57.7.204 → 200.57.7.195 SIP/SDP Status: 200 Ok |
2964 2005-01-14 17:58:27.631897 200.57.7.195 → 200.57.7.204 SIP/SDP Request: INVITE sip:francisco@bestel.com:55060 |
2965 2005-01-14 17:58:27.640624 200.57.7.204 → 200.57.7.195 SIP Status: 100 Trying |
2967 2005-01-14 17:58:27.658696 200.57.7.204 → 200.57.7.195 SIP Status: 180 Ringing |
tshark -t ud -r sip-2phones-B2BUA-Asterisk.pcapng -Y "sip.CSeq.method eq INVITE"
19 2016-05-18 18:23:15.920336 172.16.98.1 → 172.16.98.101 SIP/SDP Request: INVITE sip:2302@172.16.98.101;transport=UDP |
20 2016-05-18 18:23:15.921110 172.16.98.101 → 172.16.98.1 SIP Status: 401 Unauthorized |
22 2016-05-18 18:23:15.921826 172.16.98.1 → 172.16.98.101 SIP/SDP Request: INVITE sip:2302@172.16.98.101;transport=UDP |
23 2016-05-18 18:23:15.922973 172.16.98.101 → 172.16.98.1 SIP Status: 100 Trying |
24 2016-05-18 18:23:15.923891 172.16.98.101 → 172.16.98.145 SIP/SDP Request: INVITE sip:telephone2@172.16.98.145:40216;rinstance=98920ece8998d44b;transport=UDP |
25 2016-05-18 18:23:16.423460 172.16.98.101 → 172.16.98.145 SIP/SDP Request: INVITE sip:telephone2@172.16.98.145:40216;rinstance=98920ece8998d44b;transport=UDP |
26 2016-05-18 18:23:16.559683 172.16.98.145 → 172.16.98.101 SIP Status: 100 Trying |
27 2016-05-18 18:23:16.559967 172.16.98.145 → 172.16.98.101 SIP Status: 100 Trying |
28 2016-05-18 18:23:16.664606 172.16.98.145 → 172.16.98.101 SIP Status: 180 Ringing |
29 2016-05-18 18:23:16.665071 172.16.98.101 → 172.16.98.1 SIP Status: 180 Ringing |
32 2016-05-18 18:23:22.982256 172.16.98.145 → 172.16.98.101 SIP/SDP Status: 200 OK |
34 2016-05-18 18:23:22.986781 172.16.98.101 → 172.16.98.1 SIP/SDP Status: 200 OK |
35 2016-05-18 18:23:22.987124 172.16.98.101 → 172.16.98.145 SIP/SDP Request: INVITE sip:telephone2@172.16.98.145:40216, in-dialog |
37 2016-05-18 18:23:22.993949 172.16.98.101 → 172.16.98.1 SIP/SDP Request: INVITE sip:telephone1@172.16.98.1:44285;transport=UDP, in-dialog |
38 2016-05-18 18:23:23.016554 172.16.98.1 → 172.16.98.101 SIP/SDP Status: 200 OK |
41 2016-05-18 18:23:23.173703 172.16.98.145 → 172.16.98.101 SIP/SDP Status: 200 OK |
406 2016-05-18 18:23:30.610529 172.16.98.101 → 172.16.98.145 SIP/SDP Request: INVITE sip:telephone2@172.16.98.145:40216, in-dialog |
407 2016-05-18 18:23:30.849885 172.16.98.145 → 172.16.98.101 SIP/SDP Status: 200 OK |
4.6. Afficher une charge SIP avec tshark
tshark -t ud -Y "frame.number == 1" -O sip -r sip-2phones-B2BUA-Asterisk.pcapng
4.7. Champs SIP
Ajuster les colonnes sur base des filtres ou baser des recherches sur :
sip.User-Agent
sip.Status-Line
sip.Callid
sip.Status-Code > 399
sip.Method
sip.to.user
Ces entrées peuvent servir à filtrer des paquets en fonction de valeurs, mais elles peuvent aussi servir de filtre d’affichage, comme par exemple ici pour afficher le nom d’utilisateur des messages REGISTER (-T fields -e sip.to.user
) :
4.8. Affichage des utilisateurs SIP enregistrés
tshark -t ud -Y "sip.Method == REGISTER" -r capture3.cap -T fields -e sip.to.user
4.9. Jouer une conversation téléphonique
Menu : Telephony → VoIP Calls → choisir un flux → Play Stream
Jouer la session RTP Forensic_challenge_4.pcap
4.10. Analyse RTP
- SSRC
- Setup frame
- Time Spans (s)
- Sample Rate (Hz)
- Payloads (Codecs)
SSRC
La valeur SSRC (Synchronization source) identifie la source de synchronisation, identifie un flux RTP. La valeur est choisie de manière aléatoire, avec l’intention qu’aucune source de synchronisation dans la même session RTP n’aura le même SSRC. Bien que la probabilité que les sources multiples choisissant le même identifiant soit faible, toutes les implémentations RTP doivent être préparées pour détecter et résoudre les collisions. Si une source change son adresse de transport source, elle doit également choisir un nouveau SSRC pour éviter d’être interprété comme une source en boucle.
Sample Rate
La famille des codecs G.711 utilisent une fréquence d’échantillonage de 8kHz (8000 Hz).
Cela signifie que le flux audio est échantilloné 8000 fois par seconde.
La longueur d’un échantillon audio est alors de 1/8000 s = 0.000125 s = 0.125 ms
4.11. Paramètres RTP
- Paquet: ce paramètre indique le nombre de paquets dans le fichier capturé.
- Sequence: ce paramètre indique le numéro de séquence RTP.
- Delta (ms): c’est la différence de temps entre le paquet actuel et le paquet précédent dans le flux.
- Filtered Jitter (ms): ce paramètre fait référence à la différence entre l’heure d’arrivée réelle et le paramètre d’horodatage RTP. Il devrait être aussi bas que possible et de préférence zéro.
- Skew Inclinaison (ms): Ce paramètre indique le début (ou le retard) du paquet par rapport à l’endroit où il était supposé être. Par exemple, si nous disposons d’un taux de paquets de 20 paquets par seconde, nous devrions avoir 50 ms entre les paquets, et si un paquet arrive 49 ms après le précédent, ce sera une inclinaison de -1 ms.
- IP BW (kbps): ce paramètre fait référence à la consommation de bande passante au niveau IP qui est avec tous les en-têtes jusqu’à la couche 3.
- Marqueur: ce paramètre indique si le marqueur est SET (SET = 1, UNSET = 0). Un marqueur indique différents phénomènes tels que la fin de la période de silence et la fin de la trame vidéo, et est ajouté par l’application. Statut: ce paramètre vous permet de vérifier si le statut est correct.
4.12. Analyse de flux RTP
Menu : Telephony → RTP → RTP Streams / Stream Analysis
tshark -r sip-2phones-B2BUA-Asterisk.pcapng -q -z rtp,streams
========================= RTP Streams ========================
Src IP addr Port Dest IP addr Port SSRC Payload Pkts Lost Max Delta(ms) Max Jitter(ms) Mean Jitter(ms) Problems?
172.16.98.1 8000 172.16.98.145 8000 0x44830D58 ITU-T G.711 PCMU 1 0 (0.0%) 0.00 0.00 0.00
172.16.98.145 8000 172.16.98.1 8000 0x6AB21E82 ITU-T G.711 PCMU 355 0 (0.0%) 52.35 10.17 7.64
==============================================================
tshark -r sip.pcapng -q -z rtp,streams
========================= RTP Streams ========================
Src IP addr Port Dest IP addr Port SSRC Payload Pkts Lost Max Delta(ms) Max Jitter(ms) Mean Jitter(ms) Problems?
200.57.7.204 8000 200.57.7.196 40376 0xD2BD4E3E ITU-T G.711 PCMA 548 0 (0.0%) 5843.74 7.41 2.60
200.57.7.196 40376 200.57.7.204 8000 0x58F33DEA ITU-T G.711 PCMA 891 0 (0.0%) 379.90 0.25 0.10
200.57.7.202 30000 200.57.7.196 40362 0x00002E3D ITU-T G.711 PCMA 6 0 (0.0%) 30.04 0.64 1.74
==============================================================
5. Captures SIP/RTP/VoIP
Captures SIP/RTP/VoIP disponibles sur : https://github.com/goffinet/sip_captures/archive/master.zip
- voip-skype-conn-disconn.pcap
- voip-extension2downata.pcap
- voip-extension.pcap
- Forensic_challenge_4.pcap
- nitroba-1.pcap
- sip.pcapng
- uac-uas-scenario-sipp.pcapng
- branch-scenario-sipp.pcapng
- sip-direct.pcapng
- RTP-Protocol.pcap
- SIP-SDP-Example.pcap
- SIP-Call-with-Proxy-Server.pcap
- SIP-Call-Flow-Over-TCP.pcap
- REGISTER-Request.pcap
- sip-2phones-B2BUA-Asterisk.pcapng
- sip-routing-error-wireshark.pcapng
- sip-register-ok-unregister-2.pcapng
- sip-register-publish-subscribe-489-401.pcapng
- sip-register-wrong_password-401-403-401-403.pcapng
- sip-register-wrong_user-401-403-404.pcapng
- sip-register-ok-unregister.pcapng
- sip-register-to-repo-proxy.pcapng
- SIP-Call-with-Proxy-Server.pcap
- SIP-Call-Flow-Over-TCP.pcap
- sip-rem-register.pcapng
- sip-register.pcapng
- SIP-SDP-Example.pcap
- sip-flow-private-3.pcapng
- sip-flow-private-2.pcapng
- sip-flow-private.pcapng
- sip-register-dns-srv.pcapng
- private-test-sip-2.pcapng
- private-test-sip.pcapng
- voip1b.pcapng
- sip-phone-to-phone.pcapng
- sip-cme-zoiper-register.pcapng
- test_voip.pcap.pcapng
- sip-488-Not-Acceptable-Here-codec-null.pcapng