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

ops/2024/9/22 21:35:27/

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

网络摄像头作为现代安防体系的关键组成部分,已经广泛应用于各类场所,包括交通枢纽、教育机构、企业办公区、零售商场等公共和私人领域。它们主要负责提供实时视频监控,以加强安全性并防范事故。随着物联网(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协议进行安全分析和测试是确保网络摄像头安全的重要一环,通过深入理解协议特点和安全风险,以及采取相应的安全措施,可以有效提升摄像头系统的安全防护能力,避免被黑客攻击和滥用。

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


http://www.ppmy.cn/ops/41707.html

相关文章

手机号码的正则表达式

手机号码的正则表达式会根据不同的国家/地区有所不同&#xff0c;因为每个国家/地区都有自己特定的手机号码格式。但是&#xff0c;我可以为你提供一个通用的正则表达式模板&#xff0c;并给出一些具体国家/地区的例子。 通用模板 一个基本的手机号码正则表达式模板可能如下所…

【Python报错】Python安装模块时报错Fatal error in launcher

【Python报错】Python安装模块时报错Fatal error in launcher 最近需要用到python下载一个小工具&#xff0c;自信敲下回车键本想看到黑乎乎的终端上会出现快速跳跃的命令代码&#xff0c;没想到&#xff0c;报错了...... Fatal error in launcher: Unable to create process …

Linux进程控制——Linux进程程序替换

前言&#xff1a;Linux进程控制包含了进程终止&#xff0c;进程等待&#xff0c;进程程序替换。走到现在我们也只剩下进程程序替换没介绍了&#xff0c;那么让我们来看看进程程序替换到底是什么&#xff01; 本篇主要内容&#xff1a; 替换原理 替换函数 实现简易shell 我们所创…

2024年成都高新区支持企业申报国家、省级、市级大数据产业发展、新一代信息技术与制造业融合发展、工业互联网推广应用等试点示范项目申报对象条件和奖补

一、申报对象 &#xff08;一&#xff09;本政策支持注册地址、税收关系在成都高新区&#xff0c;具有独立法人资格的企业。 &#xff08;二&#xff09;管理规范&#xff0c;无不良信用记录&#xff0c;自觉遵守安全生产、环境保护等方面的法律法规&#xff0c;近三年未发生…

geotrust dv通配符证书800

Geotrust是成立时间较久的正规CA认证机构&#xff0c;在过去的几十年间颁发了无数的SSL证书&#xff0c;这些SSL证书被各个开发者使用&#xff0c;受到大多数浏览器的信任。而Geotrust旗下的DV通配符证书因其广泛的应用范围受到了用户的青睐。今天就随SSL盾小编了解Geotrust旗下…

react Hooks

首次渲染执行useState&#xff0c;获取初始值&#xff0c;之后重新渲染&#xff0c;获取的是新值&#xff0c;不是初始值&#xff08;hooks有缓存&#xff09;&#xff1b; 这也是Hooks顺序不能变化&#xff0c;不能使用if语句包裹的原因&#xff1b;Hooks内部维护一个有单向链…

picoCTF-Web Exploitation-Trickster

Description I found a web app that can help process images: PNG images only! 这应该是个上传漏洞了&#xff0c;十几年没用过了&#xff0c;不知道思路是不是一样的&#xff0c;以前的思路是通过上传漏洞想办法上传一个木马&#xff0c;拿到webshell&#xff0c;今天试试看…

Zookeeper and RPC dubbo

javaguide zookeeper面试题 Zookeeper 啥是Zookeeper干啥的 ZooKeeper 可以被用作注册中心、分布式锁&#xff1b; ZooKeeper 是 Hadoop 生态系统的一员&#xff1b; 构建 ZooKeeper 集群的时候&#xff0c;使用的服务器最好是奇数台。 启动ZK 下载安装解压 不过多赘述 我的…