深入分析网络智能摄像头的RTSP协议安全风险

本文为转载,原作者:山石网科安全技术研究院

网络摄像头作为现代安防体系的关键组成部分,已经广泛应用于各类场所,包括交通枢纽、教育机构、企业办公区、零售商场等公共和私人领域。它们主要负责提供实时视频监控,以加强安全性并防范事故。随着物联网(IoT)技术的不断发展,网络摄像头的功能日益智能化,不仅可以进行图像捕捉,还能进行事件检测、自动跟踪和数据分析等操作。

然而,随着技术的进步,网络摄像头的安全风险也日益凸显。由于这些设备经常配置为通过公网进行远程访问,因此它们本身存在安全漏洞、不当的安装和配置,以及缺乏持续的维护和更新,使其成为网络攻击的易目标。黑客可能会利用这些漏洞进行数据泄露、侵犯隐私,甚至发动更广泛的网络攻击。

网络摄像头所面临的威胁不仅限于黑客的恶意入侵,还包括软件缺陷、固件漏洞、默认密码的滥用以及不安全的网络通信协议等。在评估网络摄像头的安全性时,需要从设备、软件和网络三个层面来探讨潜在的风险和防御措施。

设备层面涉及网络摄像头的物理安全性和固件更新;软件层面关注摄像头的操作系统和应用程序的安全性;而网络层面则包括设备的网络配置、数据传输加密和访问控制策略等。只有全面理解并采取综合性的安全策略,才能有效地提升网络摄像头的安全防护能力,保护其免受网络威胁和滥用的危害。

01关于RTSP协议

RTSP(实时流协议)是一个网络控制协议,设计用于娱乐和通信系统中控制流媒体服务器。该协议用于建立和控制媒体会话中的时间同步流。RTSP 提供了一个可扩展框架,使得能够实现对实时数据,如音频和视频的控制。与HTTP不同,RTSP提供了对流数据的实时控制功能,比如可以随意快进或倒退。

RTSP 主要用于以下场景:

①视频监控系统

②会议系统

③媒体播放器与媒体服务器之间的交互

RTSP 协议通常运行在 TCP 或 UDP 协议之上,使用的端口是554。它允许客户端发送播放、暂停和停止等控制指令,以及进行实时播放位置的调整。

RTSP 与 RTP(实时传输协议)通常一起使用,其中 RTSP 负责控制和信令,而 RTP 负责数据的实时传输。

RTSP(Real Time Streaming Protocol)定义了多种方法(也称为命令或操作),用于客户端与流媒体服务器之间的通信。以下是RTSP协议中定义的一些常见方法:

①OPTIONS:用于查询服务器支持的方法和功能,客户端可以向服务器发送OPTIONS请求,以确定服务器所支持的操作。

②DESCRIBE:用于获取流媒体会话的描述信息,包括媒体类型、编解码器信息、媒体流地址等。

③SETUP:用于建立客户端和服务器之间的传输通道,包括传输协议(如RTP/UDP或RTP/TCP)、媒体流地址和端口等参数。


④PLAY:用于开始播放流媒体数据,客户端发送PLAY请求后,服务器开始向客户端发送媒体数据。


⑤PAUSE:用于暂停播放,暂停后可以通过发送PLAY请求来继续播放。

⑥TEARDOWN:用于关闭流媒体会话,释放相关资源。

⑦ANNOUNCE:用于向服务器发布新的媒体流,通知服务器有新的媒体流可用。

⑧RECORD:用于开始录制媒体数据,告知服务器将数据录制到指定的存储位置。

⑨REDIRECT:用于重定向客户端到另一个RTSP服务器或媒体流地址。

这些方法构成了RTSP协议中客户端和服务器之间的基本通信机制,通过这些方法可以实现对流媒体数据的控制和管理。

1.1 RTSP认证方式

RTSP(Real Time Streaming Protocol)支持多种认证方式,用于保护流媒体服务器资源,以下是一些常见的RTSP认证方式:

①基本认证(Basic Authentication):

基本认证是最简单的一种认证方式,客户端发送用户名和密码的组合给服务器,以进行身份验证。这种方式的安全性相对较低,因为用户名和密码会以明文形式发送,容易受到中间人攻击的威胁。

②摘要认证(Digest Authentication):

摘要认证是一种更安全的认证方式,它使用哈希算法来保护用户的密码。服务器向客户端发送一个随机数(称为nonce),客户端使用该随机数、用户名、密码等信息计算一个哈希值,并将其发送给服务器进行验证。由于密码在传输过程中不以明文形式发送,摘要认证比基本认证更安全。

③OAuth认证(OAuth Authentication):

OAuth是一种开放标准的认证协议,用于授权第三方应用程序访问用户的资源。在RTSP中,可以使用OAuth认证来实现对流媒体资源的安全访问控制。

④TLS/SSL认证(Transport Layer Security/Secure Sockets Layer Authentication):

TLS/SSL是一种基于公钥加密的安全传输协议,可以在RTSP连接上使用TLS/SSL来保护通信的安全性。客户端和服务器可以通过证书进行身份验证,确保数据在传输过程中不被窃听或篡改。

⑤IP地址认证(IP Address Authentication):

IP地址认证是一种简单的认证方式,服务器只允许特定IP地址范围的客户端访问资源。这种方式适用于需要限制特定网络或子网访问的场景。

1.2 RTSP流路径

RTSP(Real Time Streaming Protocol)中的路径指的是流媒体资源的标识符,用于客户端请求服务器上的特定媒体流或会话。RTSP路径通常由URL的路径部分表示,类似于HTTP URL中的路径。

RTSP URL的一般格式为:rtsp://<服务器地址>/<路径>

路径部分指定了服务器上的特定资源或媒体流。路径可以是相对路径或绝对路径,具体取决于服务器的配置和资源的存放方式。通常情况下,路径由斜杠(/)分隔成不同的部分,每个部分表示一个资源或目录。

|例如,一个RTSP URL可能是这样的:rtsp://example.com/live/stream1

在这个URL中,路径部分是/live/stream1,表示服务器上的一个名为stream1的实时媒体流,位于live目录下。客户端可以使用这个URL来请求并播放该媒体流。

02、shodan搜索网络摄像头

在shodan 使用语法 port:554 has_screenshot:true 进行搜索

打开VLC media player,配置流地址


播报rtsp流


03、摄像头rtsp安全测试

3.1 探测存活

使用nmap探测存活,命令:nmap -A --open -T4 -sV ip -p 554

编写python脚本扫描554端口,发送arp包获取mac地址,获取网卡厂商名称。

运行结果:


3.2 获取认证方式

获取rtsp协议认证方式,可以发送options和describe请求进行,如下图所示,获取到认证方式为401 Basic和Digest, 如果返回的状态码为200,说明存在未授权访问。

编写python脚本发送options和describe请求获取rtsp认证方式和未授权检测。

def get_auth_method(host, port):            
    sk = socket.socket(socket.AF_INET, socket.SOCK_STREAM)            
    try:            
        # print("check alive: {}:{}".format(host, port))            
        sk.settimeout(15)            
        sk.connect((str(host), port))            
        headers = "OPTIONS rtsp://{}:{}/ RTSP/1.0\r\n".format(host, str(port))            
        headers += "CSeq: 2\r\n"            
        headers += "User-Agent: LibVLC/3.0.18 (LIVE555 Streaming Media v2016.11.28)\r\n\r\n"            
        sk.send(headers.encode())            
        msg_recv = sk.recv(1024).decode()            
        if 'RTSP/1' in msg_recv:            
            dd = "DESCRIBE rtsp://{}:{}/ RTSP/1.0\r\nCSeq: 3\r\nUser-Agent: LibVLC/3.0.18 (LIVE555 Streaming Media v2016.11.28)\r\n\r\n".format(            
                host, port)            
            sk.send(dd.encode())            
            msg_recv = sk.recv(1024).decode()            
            # print(msg_recv)            
            if '200 OK' in msg_recv:            
                return (host, port, '未授权')            
            if 'WWW-Authenticate: Basic' in msg_recv:            
                return (host, port, 'basic')            
            if 'WWW-Authenticate: Digest' in msg_recv:            
                return (host, port, 'digest')            
            else:            
                return (host, port, 'unsupported')            
    except Exception as e:            
        pass            
    finally:            
        sk.close

3.3 爆..破用户名、密码和流路径

rtsp协议认证主要有Basic和Digest两种,它的rtsp url通常是这样的 rtsp://username:password@192.168.1.2/live/stream

我们可以通过字典穷举的方式,爆..破..用户、密码与rtsp流路径,rtsp流的路径可以通过ispyconnect进行收集,它包含了市面上几乎所有摄像头的rtsp流路径。

准备好字典后,我们就可以编写Python脚本进行自动化的爆破,代码的主要逻辑是通过遍历username、password、rtsp流路径进行爆破。

 

总结

网络摄像头在现代安防体系中扮演着重要的角色,摄像头的RTSP协议作为流媒体传输的重要组成部分,也存在着一系列安全挑战,对摄像头的RTSP协议进行安全分析和测试是确保网络摄像头安全的重要一环,通过深入理解协议特点和安全风险,以及采取相应的安全措施,可以有效提升摄像头系统的安全防护能力,避免被黑客攻击和滥用。

本文为转载,原作者:山石网科安全技术研究院

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/602676.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

中国棋手再夺世界桂冠,李轩豪问鼎第五届梦百合杯世界围棋公开赛

5月4日,第五届“MLILY梦百合0压床垫杯”世界围棋公开赛决赛在江苏省如皋市圆满结束,中国棋手党毅飞和李轩豪展开巅峰对决,最终,李轩豪执白168手战胜党毅飞,以3比1的比分夺得桂冠并获得由MLILY梦百合赞助的180万冠军奖金,这是李轩豪个人职业生涯中首次问鼎世界冠军,成为世界棋坛…

等离子刻蚀中的化学键是如何断裂与生成的?

知 识星球&#xff08;星球名&#xff1a; 芯片制造与封测社区&#xff0c;星球号&#xff1a; 63559049&#xff09;里的学员问&#xff1a; 我看 到一本书上 说刻蚀SiO2需要C&#xff0c;这个C会和SiO2中的O结合。 较弱的 si和f结合从而被刻蚀。 但是另一本书上写Si…

DI-engine强化学习入门(十)如何使用RNN——模型构建和包装

一、RNN简介 循环神经网络&#xff08;Recurrent Neural Network, RNN&#xff09;是一类用于处理序列数据的神经网络。与传统的前馈神经网络不同&#xff0c;RNN引入了“内部状态”&#xff08;或称为“隐藏状态”&#xff09;&#xff0c;使得网络能够存储过去的信息&#xf…

初学C++——C++基础、变量、字面量、常量、数据类型、类型转换、变量命名规则、开发环境配置

文章目录 简介C 语言的特性C 开发环境配置C 变量&#xff0c;字面量和常量C 变量变量命名规则 C 字面量C 常量 C 数据类型C 基本数据类型派生数据类型 C 类型转换隐式类型转换C 显式转换 简介 C 是一种静态类型的&#xff0c;自由形式的&#xff08;通常&#xff09;编译的&…

python中如何遍历字典

1. 遍历字典的键key ① >>> d{list:[1, 2, 3],1:123,111:python3,tuple:(4, 5, 6)} >>> for key in d:print(str(key):str(d[key])) list:[1, 2, 3] 1:123 111:python3 tuple:(4, 5, 6) ② >>> d{list:[1, 2, 3],1:123,111:python3,tuple:(4, 5, 6…

2024年数维杯数学建模C题思路

文章目录 1 赛题思路2 比赛日期和时间3 竞赛信息4 建模常见问题类型4.1 分类问题4.2 优化问题4.3 预测问题4.4 评价问题 5 建模资料 1 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 2 比赛日期和时间 报名截止时间&#xff1a;2024…

包装类~~

包装类的分类 针对八种基本数据类型相应的引用类型——包装类有了类的特点&#xff0c;就可以调用类中的方法 包装类和基本数据的转换 演示 包装类和 基本数据类型的相互转换&#xff0c;这里以int 和 Integer演示 jdk5前是手动装箱和拆箱方式 装箱&#xff1a;基本类型-&…

Temu、Shopee、阿里国际卖家如何利用自养号测评提升店铺排名

在流量为王的时代&#xff0c;流量无疑等同于销量和利润。对于temu、Shopee以及阿里国际的卖家们来说&#xff0c;关注流量成为了日常运营中不可或缺的一环。今天&#xff0c;我们将一同探讨和分析temu、Shopee及阿里国际的流量来源&#xff0c;帮助卖家们更有效地提升店铺流量…

comfyui安装deforum启动不了,多半是ffmpeg的问题

如果报错中出现imageio 和 ffmpeg 的字样&#xff0c;去装requirement也没啥用 这里最好到cmd中&#xff0c;进入comfyui的python环境&#xff0c;运行以下两句&#xff1a; import imageio imageio.plugins.ffmpeg.download() 图例&#xff1a; 如果节点不报错了&#xff0…

UE5自动生成地形一:地形制作

UE5自动生成地形一&#xff1a;地形制作 常规地形制作地形编辑器地形管理添加植被手动修改部分地形的植被 置换贴图全局一致纹理制作地貌裸露岩石地形实例 常规地形制作 地形制作入门 地形导入部分 选择模式&#xff1a;地形模式。选择地形子菜单&#xff1a;管理->导入 …

mac监听 linux服务器性能可视化(Grafana+Promethus+Node_exporter)

Grafana和promethus(普罗米修斯)的安装和使用 监控系统的Prometheus类似于一个注册中心&#xff0c;我们可以只需要配置一个Prometheus,而在其他服务器&#xff0c;只需要安装node_exporter,它们的数据流转就是通过exporter采集数据信息&#xff0c;然后告诉prometheus它的位置…

【声明ACL权限】

声明ACL权限 当应用在申请权限来访问必要的资源时&#xff0c;发现部分权限的等级比应用APL等级高&#xff0c;开发者可以选择通过ACL方式来解决等级不匹配的问题。 举例说明&#xff0c;如果应用需要使用全局悬浮窗&#xff0c;需要申请 ohos.permission.SYSTEM_FLOAT_WINDO…

信息熵为凹函数-推导

凹函数和凸函数&#xff0c;是凹凸是相对于x轴来说的&#xff0c;对于熵来说&#xff0c;它是凹函数。因为它是-log函数&#xff0c;函数曲线相对于x轴来说是凸的。 Jensen不等式推导 以下是证明熵是凹函数。 引理&#xff1a; ①Jensen不等式&#xff0c;条件&#xff1a;…

【计算机网络】因特网概述

一.发展的三个阶段 二.ISP介绍 因特网服务提供者&#xff08;Internet Service Provider&#xff09;&#xff0c;简称ISP&#xff0c;普通用户是通过 ISP 接入到因特网的&#xff0c;ISP 可以从因特网管理机构申请到成块的 IP 地址&#xff0c;同时拥有通信线路以及路由器等连…

Linux 第二十三章

&#x1f436;博主主页&#xff1a;ᰔᩚ. 一怀明月ꦿ ❤️‍&#x1f525;专栏系列&#xff1a;线性代数&#xff0c;C初学者入门训练&#xff0c;题解C&#xff0c;C的使用文章&#xff0c;「初学」C&#xff0c;linux &#x1f525;座右铭&#xff1a;“不要等到什么都没有了…

AR人脸道具SDK解决方案,实现道具与人脸的自然融合

AR人脸道具SDK解决方案&#xff0c;实现道具与人脸的自然融合美摄科技以其卓越的技术实力和创新能力&#xff0c;为企业带来了全新的AR人脸道具SDK解决方案。这一解决方案将为企业打开全新的市场机会&#xff0c;为用户带来前所未有的互动体验。 颠覆传统&#xff0c;开启AR人…

如何使用cPanel的Transfers功能迁移cPanel账户

近期由于我们的原虚拟主机提供商不再支持低版本的PHP&#xff0c;我们准备将所有的cPanel账户都迁移到在Hostease购买的独立服务器中&#xff0c;新购买的独立服务器配置了cPanel&#xff0c;下面我就介绍如何使用cPanel的Transfers功能&#xff0c;将旧服务器的cPanel账户迁移…

5月的现货黄金价格还会涨吗

近期美国经济陷入滞胀的预期升温&#xff0c;市场对美联储年内降息的预期有所走低&#xff0c;然而目前美国10年期国债的实际收益率已处于2%左右的历史高位&#xff0c;降息空间最终还是打开&#xff0c;带来实际利率的趋势下行——在去全球化的背景下&#xff0c;美元信用持续…

Tuxera NTFS for Mac Mac用户无缝地读写NTFS格式的硬盘和U盘

在数字化时代&#xff0c;数据交换和共享变得日益重要。然而&#xff0c;对于Mac用户来说&#xff0c;与Windows系统之间的文件交换可能会遇到一些挑战。这是因为Mac OS默认不支持Windows常用的NTFS文件系统。幸运的是&#xff0c;Tuxera NTFS for Mac为我们提供了一个优雅的解…

JAVA代码审计2个小tips

1、lib文件过多时&#xff0c;快速定位lib代码文件 如已知java-callgraph找出的类名 但不知道在哪个lib文件时可利用该工具快速获取到相关lib&#xff0c;适用于大量不知道lib文件的情况。 SearchClassInJar.jar 2、快速定位api路由思路 静态&#xff1a; springmvc框架 …