Les fans du film Ocean's Eleven Friends doivent avoir reconnu le cadre que nous avons choisi pour illustrer cet article. Le moment où les durs ont habilement remplacé le signal analogique des caméras de vidéosurveillance du casino est entré dans l'esprit de beaucoup. Certains essaient même de le faire dans la vraie vie.

Les technologies ont changé, maintenant les caméras IP sont préférées aux analogues, les méthodes pour les casser seront discutées en détail plus tard.
Si vous n'êtes pas paranoïaque, cela ne signifie pas que vous n'êtes pas surveillé
La plupart des pirates le font pour le plaisir ou pour obtenir une certaine renommée sur Internet. Ils utilisent des «trous» bien connus dans les systèmes de support de caméra et publient, à leur avis, des vidéos amusantes sur des ressources Internet populaires. YouTube regorge de
vidéos similaires .
Nous considérerons les conséquences les plus graves de la vulnérabilité, à savoir lorsque le pirate ne se trahit pas et sa pénétration dans le système. Une telle attaque est généralement soigneusement planifiée à l'avance, une semaine, voire un mois avant le hack.
Comme dans notre exemple sur Ocean’s Eleven Friends, nous parlerons du remplacement d’un flux dans les systèmes de vidéosurveillance, pas seulement un signal analogique, mais un signal numérique, à savoir un flux RTSP.
Étant donné que toutes les informations contenues dans cet article sont de nature informative et visent principalement à éliminer les erreurs de sécurité lors de la création d'un système de vidéosurveillance, nous ne recommandons pas d'utiliser la vulnérabilité, qui est discutée plus loin. C'est pourquoi le piratage du réseau de vidéosurveillance lui-même ne sera envisagé que superficiellement et les méthodes décrites impliquent un accès libre au réseau de l'entreprise ou du particulier. N'oubliez pas que l'accès non autorisé aux données peut être poursuivi.
L'expérience de notre entreprise montre que le sujet est très pertinent, car au stade de la mise en service d'un système de vidéosurveillance, de nombreuses personnes connectent des caméras à leur système via des liaisons RTSP. Soit pour gagner du temps, soit par ignorance, soit par conviction que cela est nécessaire, beaucoup ne pensent même pas à changer les mots de passe ou à voir quels paramètres de sécurité leur caméra prend en charge.
Soit dit en passant, RTSP (Real Time Streaming Protocol) est un protocole qui vous permet de contrôler la vidéo en streaming en temps réel. Tout ce que nous devons savoir, c'est qu'avec l'aide du lien RTSP, nous prendrons le flux vidéo de la caméra.
Enfin, nous sommes arrivĂ©s Ă
pratiquer , Ă savoir au plan selon lequel nous allons agir:
1. Obtenir le lien RTSP pour la caméra dont nous voulons remplacer le flux.
2. Préparation du fichier vidéo pour une diffusion ultérieure.
3. Diffusez le fichier enregistré.
4. Protection contre l'échange de flux secondaire.
Obtention du flux URI RTSP
Pour remplacer le signal de la caméra, vous devez d'abord trouver le flux vidéo dont nous avons besoin. Cela nécessitera un lien vers celui-ci via le protocole RTSP. La caméra transmet généralement plusieurs images (haute et basse résolution). Le premier est utilisé pour l'enregistrement, et le second - pour la diffusion sur des écrans de vidéosurveillance. La résolution minimale (le plus souvent 320 x 240 pixels) réduit la charge sur l'équipement. Pour chaque flux RTSP, le lien se distingue souvent par un chiffre dans la clé.
Différentes caméras peuvent avoir différents liens RTSP, mais la vue générale est approximativement la suivante:
rtsp: // [login: mot de passe @] adresse IP: port RTSP [/ clé] .
Le décodage est le suivant:
- identifiant et mot de passe - ceux qui sont utilisés pour accéder à la caméra (ils peuvent ne pas l'être);
- si le lien contient le nom d'utilisateur et le mot de passe, le symbole @ est indiqué après eux pour séparer l'autorisation et l'adresse IP;
- Le port RTSP par lequel les commandes de contrôle vidéo en continu sont transmises est 554 par défaut;
- la clé est une partie unique du lien RTSP, qui peut varier en fonction du fabricant et du modèle de la caméra, par exemple:
/? user = admin & password = admin & channel = channel_number & stream = stream_number.sdp
/play1.sdp - au lieu de "1", le numéro de flux est indiqué;
/ live / ch00_0 00 - numéro de canal, 0 - numéro de flux;
/ channel1 - au lieu de «1», le numéro de flux est indiqué.
Comment trouver un lien RTSP sans avoir accès à la caméra? Quelques moyens simples:
1. Recherchez le lien sur le site Web du fabricant de l’appareil photo.
2. Recherchez sur Internet des sites qui fournissent des liens vers différents modèles de caméras, un exemple de ces sites
ici et
ici .
3. Téléchargez le manuel d'utilisation sur le site Web du fabricant et recherchez-y les informations nécessaires.
Pour les cas où aucune des méthodes simples n'a aidé, il y a un peu plus compliqué. Ici, au moins l'accès au réseau où se trouve la caméra sera nécessaire. Étant donné que la plupart des caméras modernes prennent en charge ONVIF, nous pouvons découvrir le lien RTSP en utilisant ce protocole.
Pour ce faire, envoyez plusieurs demandes sans autorisation ou avec autorisation sur la caméra proposée par défaut, par exemple, «admin: admin» ou «admin: 12345». Soit dit en passant, dans la pratique, il y avait des caméras qui avaient un filtre d'adresse IP valide et un identifiant et un mot de passe non standard, mais en raison d'erreurs dans le firmware lors de l'accès via le protocole ONVIF, ni l'autorisation ni le filtre n'ont été vérifiés.
Comment obtenir le lien souhaité vers les deux flux de la caméra via le protocole ONVIF?1. En utilisant la commande GetProfiles, nous découvrons le nom du profil dont nous avons besoin de l'URI POST / onvif / media_service HTTP / 1.1
HĂ´te: 192.168.1.77
User-Agent: gSOAP / 2.8
Type de contenu: application / soap + xml; charset = utf-8; action = "http://www.onvif.org/ver10/media/wsdl/GetProfiles"
Longueur du contenu: 2120
Connexion: garder en vie
SOAPAction: "http://www.onvif.org/ver10/media/wsdl/GetProfiles"
<? xml version = "1.0" encoding = "UTF-8"?>
<SOAP-ENV: Enveloppes xmlns: SOAP-ENV = "http://www.w3.org/2003/05/soap-envelope"
.
Ignorez la description de l'espace de noms complet.
.
xmlns: trt = "http://www.onvif.org/ver10/media/wsdl">
<SOAP-ENV: Header> </ SOAP-ENV: Header>
<SOAP-ENV: Corps>
<trt: GetProfiles />
</ SOAP-ENV: Corps>
</ SOAP-ENV: enveloppe>
2. Dans la réponse longue reçue, nous trouvons une ligne avec le nom du premier et du deuxième profil HTTP / 1.1 200 OK
Serveur: gSOAP / 2.8
Type de contenu: application / soap + xml; charset = utf-8; action = "http://www.onvif.org/ver10/media/wsdl/GetProfiles"
Longueur du contenu: 17405
Connexion: fermer
<? xml version = "1.0" encoding = "UTF-8"?>
<SOAP-ENV: Enveloppes xmlns: SOAP-ENV = "http://www.w3.org/2003/05/soap-envelope"
.
Ignorez la description de l'espace de noms complet.
.
xmlns: tns1 = "http://www.onvif.org/ver10/topics">
<SOAP-ENV: Header> </ SOAP-ENV: Header>
<SOAP-ENV: Corps>
<trt: GetProfilesResponse>
<trt: Profiles fixed = "true" token = "profile_cam1_stream1">
<tt: Nom> profile_cam1_stream1 </ tt: Nom>
<tt: VideoSourceConfiguration token = "videosource_config_cam1">
<tt: Name> videosource_config_cam1 </ tt: Name>
.
Ignorer la description du profil.
.
</ trt: Profils>
<trt: Profiles fixed = "true" token = "profile_cam1_stream2">
<tt: Nom> profile_cam1_stream2 </ tt: Nom>
.
Nous sautons la description du deuxième profil.
.
</ trt: Profils>
.
Nous ne considérons pas le troisième profil.
.
</ trt: GetProfilesResponse>
</ SOAP-ENV: Corps>
</ SOAP-ENV: enveloppe>
- profile_cam1_stream1 est le nom du premier profil sur la caméra.
- profile_cam1_stream2 est le nom du deuxième profil sur la caméra.
3. Vous devez maintenant demander uri rtsp pour ces profils à l'aide de la commande GetStreamUri, en spécifiant le profil souhaité dans le champ ProfileToken Exemple pour le premier thread:
POST / onvif / media_service HTTP / 1.1
HĂ´te: 192.168.1.77
User-Agent: gSOAP / 2.8
Type de contenu: application / soap + xml; charset = utf-8; action = "http://www.onvif.org/ver10/media/wsdl/GetStreamUri"
Longueur du contenu: 2479
Connexion: garder en vie
SOAPAction: "http://www.onvif.org/ver10/media/wsdl/GetStreamUri"
<? xml version = "1.0" encoding = "UTF-8"?>
<SOAP-ENV: Enveloppes xmlns: SOAP-ENV = "http://www.w3.org/2003/05/soap-envelope"
.
Ignorez la description de l'espace de noms complet.
.
xmlns: trt = "http://www.onvif.org/ver10/media/wsdl">
<SOAP-ENV: Header> </ SOAP-ENV: Header>
<SOAP-ENV: Corps>
<trt: GetStreamUri>
<trt: StreamSetup xsi: type = "tt: StreamSetup">
<tt: Stream xsi: type = "tt: StreamType"> RTP-Unicast </ tt: Stream>
<tt: Transport xsi: type = "tt: Transport">
<tt: Protocol xsi: type = "tt: TransportProtocol"> UDP </ tt: Protocol>
</ tt: Transport>
</ trt: StreamSetup>
<trt: ProfileToken xsi: type = "tt: ReferenceToken"> profile_cam1_stream1 </ trt: ProfileToken>
</ trt: GetStreamUri>
</ SOAP-ENV: Corps>
</ SOAP-ENV: enveloppe>
En réponse, nous obtenons le lien dont nous avons besoin:
HTTP / 1.1 200 OK
Serveur: gSOAP / 2.8
Type de contenu: application / soap + xml; charset = utf-8; action = "http://www.onvif.org/ver10/media/wsdl/GetStreamUri"
Longueur du contenu: 3701
Connexion: fermer
<? xml version = "1.0" encoding = "UTF-8"?>
<SOAP-ENV: Enveloppes xmlns: SOAP-ENV = "http://www.w3.org/2003/05/soap-envelope"
.
Ignorez la description de l'espace de noms complet.
.
xmlns: tns1 = "http://www.onvif.org/ver10/topics">
<SOAP-ENV: Header> </ SOAP-ENV: Header>
<SOAP-ENV: Corps>
<trt: GetStreamUriResponse>
<trt: MediaUri>
<tt: Uri> rtsp: //192.168.1.77: 554 / snl / live / 1/1 </ tt: Uri>
<tt: InvalidAfterConnect> false </ tt: InvalidAfterConnect>
<tt: InvalidAfterReboot> false </ tt: InvalidAfterReboot>
<tt: Timeout> PT0S </ tt: Timeout>
</ trt: MediaUri>
</ trt: GetStreamUriResponse>
</ SOAP-ENV: Corps>
</ SOAP-ENV: enveloppe>
Nous faisons de même pour le deuxième flux et obtenons le lien:
<tt: Uri> rtsp: //192.168.1.77: 554 / snl / live / 1/2 </ tt: Uri>
Écrire le flux RTSP dans un fichier
Lorsque nous avons obtenu les liens RTSP nécessaires, nous devons enregistrer une vidéo diffusée par eux pendant plusieurs heures. N'oubliez pas que le double thread est utilisé dans les systèmes modernes, vous devez donc enregistrer les deux flux en même temps.
Vous pouvez enregistrer un flux vidéo à l'aide du protocole RTSP à l'aide de divers logiciels. Considérez les plus populaires:
ffmpeg, gstreamer et vlc .
1. Enregistrement en continu via ffmpeg $ man ffmpeg
Nous sommes intéressés par:
- Copie vcodec - copie la vidéo dans un fichier;
- copie acodec - copie audio dans un fichier;
- rtsp_transport tcp - sélection d'une méthode de transmission d'un flux;
- r 25 - réglage de la fréquence d'images par seconde;
- copyts - copie des horodatages;
- start_at_zero - copie les horodatages Ă partir de 00: 00: 00: 000
Nous substituons notre lien RTSP et par copie nous spécifions le chemin et le nom du fichier vers lequel l'enregistrement ira
% ffmpeg -i rtsp: //192.168.1.77: 554 / snl / live / 1/1 -copyts -start_at_zero -rtsp_transport tcp -r 25 -vcodec copy -acodec copy /home/line/example/1.avi

L'écriture dans un fichier a commencé.
2. Enregistrement via vlc Vous pouvez vous familiariser avec l'ensemble des commandes que le lecteur multimédia vlc nous offre en utilisant la commande
$ vlc –h.
Nous sommes intéressés par:
- sout = # file {path} - pointez sur le fichier dans lequel nous voulons copier la vidéo;
- rtsp-tcp - reçoit rtsp par tcp;
- rtsp-frame-buffer-size = 1000 - tampon pour que la vidéo ne s'effrite pas pendant la lecture;
- h264-fps = 25 - module complémentaire pour 25 images.
Remplacer nos données et exécuter
$ cvlc rtsp: //192.168.1.77: 554 / snl / live / 1/1 --rtsp-tcp --rtsp-frame-buffer-size = 1000 --h264-fps = 25: sout = # file {dst = /home/line/example/1.avi}.
La fenĂŞtre vlc s'ouvrira et l'enregistrement commencera; lorsque vous fermerez la fenĂŞtre, l'enregistrement s'arrĂŞtera.
3. Enregistrement via gstreamer Vous trouverez des informations sur l'utilisation de gstreamer <a href="https://gstreamer.freedesktop.org/documentation/plugins.html"> ici </a>.
- rtspsrc location = "rtsp: //192.168.1.91: 554 / cam / realmonitor? Channel = 1 & subtype = 0 & unicast = true & proto = Onvif" - spécifiez le flux RTSP comme source de données.
- rtph264depay - dans RTSP, la vidéo va en petits morceaux (paquets rtp), via rtph264depay, nous recevrons la vidéo de ces paquets.
- h264parse - comme son nom l'indique, analyse le flux H.264.
- avimux - collecte le flux dans avi, vous pouvez également utiliser mp4mux ou matroskamux (mkv).
- filesink location = 1.avi - spécifiez le fichier dans lequel la vidéo sera enregistrée.
gst-launch-1.0 -v rtspsrc location = "rtsp: //192.168.1.91: 554 / cam / realmonitor? channel = 1 & subtype = 0 & unicast = true & proto = Onvif"! rtph264depay! h264parse! mp4mux! emplacement du collecteur de fichiers = 1.mp4

Diffuser le flux RTSP Ă partir d'un fichier
Il est temps de commencer à diffuser le fichier enregistré au format RTSP. Pour ce faire, nous utiliserons tous les mêmes programmes discutés dans la section ci-dessus.
1. Pour diffuser un flux vidéo depuis la caméra à l'aide de ffmpeg, vous devez utiliser ffserver. Sa description peut être trouvée
ici . Afin de définir les paramètres de traduction, il est nécessaire de
remplir le fichier ffserver.conf.
ffserver Fichier Ffserver.conf
RTSPPort - définissez le numéro du port rtsp par lequel la diffusion passera.
<Stream snl / live / 1/1> - après Stream, nous avons défini la clé nécessaire.
Format rtp - format de transmission.
Fichier "/home/line/example/1.avi" - rtsp_transport tcp - spécifiez le chemin d'accès au fichier que vous souhaitez transférer et la clé à transférer via tcp.
NoAudio - ne transmet pas de son.
Fichier Ffserver.conf
RTSPPort 554
<Stream snl / live / 1/1>
Format rtp
Fichier "/home/line/example/1.avi" -rtsp_transport tcp
NoAudio
</Stream>
Ensuite, exécutez% ffserver -f ffserver.conf.

2. Nous allons maintenant utiliser le lecteur vlc-media. Malgré le fait que c'est le moyen le plus simple, malheureusement, vlc ne peut diffuser un flux que sur UDP.
lecteur multimédia vlc Commande pour démarrer le flux rtsp:
- sout = # rtp {sdp = rtsp: //192.168.1.232: 554 / snl / live / 1/1} - définit le lien par lequel la diffusion aura lieu.
- répéter - si nécessaire, paramétrez la vidéo pour qu'elle soit répétée.
vlc /home/line/example/1.avi --sout = # rtp {sdp = rtsp: //192.168.1.232: 554 / snl / live / 1/1} - répétition
3. Enfin, en utilisant gst-server.
gst-server Vous devez d'abord l'installer.
$ sudo apt-get install gstreamer1.0
$ wget https://gstreamer.freedesktop.org/src/gst-rtsp-server/gst-rtsp-server-1.8.3.tar.xz
/gst-rtsp-server-1.8.3$ sudo apt install gtk-doc-tools
/gst-rtsp-server-1.8.3$ sudo apt-get install libgstreamer-plugins-base1.0-dev
/gst-rtsp-server-1.8.3$ make
Maintenant, nous pouvons changer le fichier /gst-rtsp-server-1.8.3/examples/test-launch.c
Ici, vous pouvez modifier le port RTSP par défaut
#define DEFAULT_RTSP_PORT "8554"
et la clé est dans le lien
gst_rtsp_mount_points_add_factory (montages, "/ test", usine).
Après avoir substitué nos valeurs, nous ferons.
Exécutez maintenant le fichier de lancement de test avec les clés.
- rtspsrc location = "/ home / line / example / 1.avi" - le chemin vers le fichier que nous allons lire.
- Encodeur H264 - encoder en h.264.
- rtph264pay name = pay0 pt = 96 - divisez notre flux en parties.
$ ~ / gst-rtsp-server-1.8.3 / examples $ ./test-launch "(rtspsrc location =" / home / line / example / 1.avi "! x264enc! rtph264pay name = pay0 pt = 96)"
Le fichier enregistré est diffusé au format RTSP, après quoi nous résolvons le problème de défaillance de la caméra. Voici quelques options qui varient en fonction de l'objet que nous voulons attaquer. En fait, il existe de nombreuses autres façons, ne considérez que les plus élémentaires. La première chose dont nous avons besoin est d'entrer dans le réseau dont nous avons besoin.
Si l'objet est grand territorialement, il est souvent possible d'approcher physiquement certaines caméras et même d'essayer de trouver l'équipement de commutation auquel la caméra est connectée.
Si l'objet est petit, vous pouvez essayer d'entrer dans le réseau via le wi-fi et le scanner en utilisant nmap, par exemple.
De plus, s'il existe un accès physique à la caméra, vous pouvez la pirater en plusieurs étapes à l'aide d'un ordinateur à plaque unique:
1) activer l'enregistrement wire-shark;
2) déconnectez brièvement le fil de la caméra et connectez-le à une seule carte;
3) remettre le câble à sa place;
4) étudier les journaux reçus.
Ou si vous avez accès au réseau, vous pouvez utiliser la méthode de substitution classique:
- en utilisant un support arpspoof entre la caméra et le serveur;
- utiliser ip_forward pour transmettre les requêtes du serveur de surveillance à la caméra IP, et vice versa;
- en utilisant iptables, redirigez toutes les demandes via le port RTSP vers le serveur de surveillance non pas depuis la caméra, mais depuis notre machine.
Piratage de caméras de sécurité
Afin de vous protéger contre l'usurpation de fil selon la procédure décrite ci-dessus, plusieurs méthodes peuvent être utilisées:
1. Intégration de la caméraLa meilleure protection est fournie par l'intégration de la caméra dans un produit logiciel. Vérifiez si votre caméra est intégrée au
système de surveillance de ligne ici .
Si votre caméra ou votre fabricant ne figure pas dans la liste, vous pouvez contacter
le support technique avec une demande d'intégration de votre modèle de caméra IP.
2. Mise à jour du firmwareIl est nécessaire de maintenir constamment le firmware de la caméra à jour, car avec l'aide de mises à jour, les développeurs corrigent diverses vulnérabilités et augmentent ainsi la stabilité des caméras.
3. Modification des identifiants et mots de passe standardLa première chose qu'un attaquant fait est d'essayer d'utiliser le nom d'utilisateur et le mot de passe de la caméra standard. Ils sont indiqués dans le mode d'emploi, il n'est donc pas difficile de les trouver. Par conséquent, utilisez toujours un nom d'utilisateur et un mot de passe uniques.
4. Activation de l'autorisation obligatoireCette fonctionnalité est présente dans de nombreux appareils photo modernes, mais, malheureusement, tous les utilisateurs ne la connaissent pas. Si vous désactivez cette option, la caméra ne demandera pas d'autorisation lorsqu'elle y sera connectée, ce qui la rendra vulnérable au piratage. Il convient de noter qu'il existe des caméras avec double autorisation pour l'accès http et pour l'accès via le protocole ONVIF. De plus, dans certaines caméras, il existe un paramètre distinct pour la demande d'autorisation lors de la connexion via une liaison RTSP directe.
5. Filtre d'adresse IPSi la caméra prend en charge la fonction de la soi-disant liste blanche, il est préférable de ne pas la négliger. Avec son aide, l'adresse IP à partir de laquelle vous pouvez vous connecter à la caméra est déterminée. Il doit s'agir de l'adresse du serveur auquel la caméra est connectée et, si nécessaire, de la deuxième adresse IP du poste de travail à partir duquel la configuration est effectuée. Mais ce n'est pas la méthode la plus fiable, car un attaquant peut utiliser la même adresse IP lors du remplacement d'un appareil. Par conséquent, il est préférable d'utiliser cette option avec d'autres recommandations.
6. Protection du réseauIl est nécessaire de configurer correctement l'équipement de commutation. La plupart des commutateurs prennent désormais en charge la protection contre l'usurpation d'arp - assurez-vous de l'utiliser.
7. Partage réseauVous devez porter une attention particulière à cet élément, car il joue un rôle important dans la sécurité de votre système. La séparation du réseau d'entreprise et du réseau de surveillance vous protégera des intrus ou même de vos propres employés qui ont accès au réseau partagé et veulent vous pirater.
8. Activer le menu OSDVous devez activer le menu OSD avec l'heure et la date actuelles sur l'appareil photo afin de pouvoir toujours vérifier la pertinence de l'image. C'est un bon moyen de se protéger contre la modification du métrage, car l'OSD est superposé à toutes les vidéos provenant d'une caméra spécifique. Même lorsqu'un attaquant écrit le flux RTSP, l'usurpation sera perceptible grâce aux données qui resteront toujours sur les images vidéo.
Malheureusement, de nombreux attaquants ont appris à trouver rapidement et à tirer parti des vulnérabilités des systèmes de vidéosurveillance IP. Pour sécuriser le réseau, il est nécessaire de vous familiariser avec les méthodes de protection décrites dans cet article. Prévoyez suffisamment de temps pour la mise en service du système, et en particulier pour configurer correctement tous ses composants. Vous pouvez donc fournir au réseau une sécurité maximale contre le piratage.
En conclusion, nous vous suggérons de partager dans les commentaires, comment aborderiez-vous la protection de votre réseau de vidéosurveillance contre le piratage? Quelles méthodes d'attaque considérez-vous comme les plus dangereuses?