โชReplay de stream camera
Introduction
Prรฉrequis: position de MITM (Man-In-The-Middle), voir attaques ARP poisoning et DHCP spoofing
Dans le cas ou la camรฉra ne possรจderait pas de vulnรฉrabilitรฉ connue, un attaquant qui gagne une position d'homme du milieu sur le rรฉseau pourrait capter le trafic de tout canal de communication non sรฉcurisรฉ potentiel. Ici le but est dans un premier temps de capturer le trafic d'un streaming puis le sauvegarder dans un fichier .pcap.
Protocoles de streaming
Il existe trois protocoles liรฉes au streaming fonctionnant la plupart du temps dรฉpendamment les uns des autres:
Le RTSP (Real-Time Streaming Protocol): Est un protocole client-serveur qui agit comme une tรฉlรฉcommande rรฉseau pour les serveurs multimรฉdia avec des flux en direct et des clips stockรฉs comme sources de donnรฉes.
Le RTP (Real-Time Transport Protocol): Est le protocol qui s'occupe de la transmission des donnรฉes mรฉdia (Fonctionne de pair avec le RTSP).
Le RTCP (Real-Time Transport Control Protocol): Envoie pรฉriodiquement des rapports hors bande qui annoncent des statistiques (par exemple, le nombre de paquets envoyรฉs et perdus etc) au Participants RTP. Bien que RTP soit gรฉnรฉralement envoyรฉ sur un numรฉro de port UDP pait, RTCP est envoyรฉ sur le port UDP suivant avec le numรฉro impair le plus รฉlevรฉ.
SRTP (Secure Real-Time Transport Protocol): Protocole RTP sรฉcurisรฉ avec une couche de chiffrement.
Le protocole SRTP est plus rare car la couche de chiffrement apportรฉe ralentie considรฉrablement la rapiditรฉ du protocole (perte de qualitรฉ) et n'est pas toujours compatible avec la camรฉra.
Anatomie du trafic RTSP/RTP
Les protocoles RTSP et RTP fonctionnent sous forme de session. Voici les diffรฉrentes รฉtapes par lesquelles ils passent:
Le client envoie un packet
RTSP OPTIONS
permettant comme pour le protocole HTTP par exemple de connaitre les mรฉthodes qu'il peut utiliser. (exp: DESCRIBE, SETUP, TEARDOWN, PLAY, SET_PARAMETER, GET_PARAMETER, PAUSE)Le client envoie un packet
RTSP DESCRIBE
incluant l'url du stream (exp: rtsp://192.168.4.180:554/video.mp4). Avec cette requรชte, le client est invitรฉ ร donner l'URL et le format que le client comprend en utilisant l'en-tรชte Accept (Accept:application/sdp)
.Le client va ensuite envoyer une requรชte
RTSP SETUP
qui va permettre de spรฉcifier les deux ports du client pour la rรฉception des donnรฉes RTP (vidรฉo et audio) et Donnรฉes RTCP (statistiques et informations de contrรดle).Puis il envoie une requรชte
RTSP PLAY
qui va tout simplement demander au serveur de lancer le stream.
Extraire le stream vidรฉo
Le paquet SDP (Session Description Protocol) reรงu via la rรฉponse du serveur ร la deuxiรจme รฉtape prรฉsentรฉe ci-dessus contient des valeurs importantes sur la faรงon dont la vidรฉo est encodรฉe, nous avons besoin de ces informations pour lire la vidรฉo. Pour l'extraire sur Wireshark, on va se rendre dans les information du packet puis faire un clic droit sur la partie "Session Description Protocol" et enfin cliquer sur "Export packet bytes..."
Une fois cela fait, en ouvrant le packet exportรฉ on doit retrouver quelque chose comme ceci:
Les paramรจtres SDP:
V : Version du protocole SDP
O : Origine de la session
I : Information sur la session
U : URI (Uniform Ressource Identifier)
E : E-mail P : Tรฉlรฉphone
B : Bande passante requise
T : Timer (dรฉbut et fin de la session)
M : Media ( Type, format, protocole de transport)
A : Attribut (contenant plusieurs informations : Codec, Ptime, fmtp, Silence suppressionโฆโฆ
Falsification du SDP
On va ensuite modifier le packet SDP extrait pour avoir un rรฉsultat comme celui-ci:
L' รฉtape suivante consiste ร extraire le flux RTP de Wireshark. Le flux RTP contient les donnรฉes vidรฉo codรฉes. Ouvrez le fichier pcap qui contient les paquets RTP capturรฉs au tout dรฉbut puis cliquez sur "Tรฉlรฉphonie > RTP Stream". Sรฉlectionnez le flux affichรฉ, cliquez dessus avec le bouton droit de la souris et sรฉlectionnez "Prepare Filter". Cliquez ร nouveau avec le bouton droit de la souris et sรฉlectionnez "Export as RTPDump". Enregistrez ensuite la sรฉlection RTP Stream sous forme de fichier rtpdump (extension .rtpdump).
Lecture du fichier rtpdump
Pour extraire la vidรฉo du fichier rtpdump et la lire, vous aurez besoin les outils suivants:
RTP Tools: Pour lire et rejouer la session RTP
VLC: Pour rejouer le fichier vidรฉo finale
FFmpeg: Pour convertir le stream
La procรฉdure ร suivre ensuite est la suivante:
Conversion du stream avec FFmpeg
$ ffmpeg -v warning -protocol_whitelist file,udp,rtp -f sdp -i <fichier SDP falsifiรฉ>.sdp -copyts -c copy -y out.mkv
Lancer la session avec rtpplay
$ ./rtpplay -T -f path/to/exemple.rtpdump 127.0.0.1/<port defini dans fichier sdp>
Notez que vous devez exรฉcuter la commande rtpplay immรฉdiatement aprรจs vous dรฉmarrez FFmpeg, car par dรฉfaut FFmpeg se terminera s'il n'y a pas d'incom- ing stream arrive bientรดt.
L'outil FFmpeg dรฉcodera alors la lecture session RTP et gรฉnรฉrera le fichier out.mkv.
Finalement, lire le fichier mkv avec VLC
$ vlc out.mkv
Outils
RTP Tools
RTP Tools est un ensemble de petites applications qui peuvent รชtre utilisรฉes pour traiter les donnรฉes RTP.
Installation
Ressource: https://github.com/irtlab/rtptools/
FFmpeg
Une solution complรจte et multiplateforme pour enregistrer, convertir et diffuser de l'audio et de la vidรฉo.
Installation
$ apt install ffmpeg
ressource: https://ffmpeg.org/
Derniรจre mise ร jour