跳到主要内容

RTSP狩猎之旅从协议解析到黑客实战

· 阅读需 12 分钟

大家新年好呀!好久没给大家整点技术干货了,回想上次写文章还是 2024 年 4月,分享了一波 AI 安全相关的内容,结果一眨眼都快一年了(时间过得也太快了吧?)。

不过没关系,新的研究文章它来了!这次的内容比之前更硬核,涉及视频流传输协议,不仅有深度分析,还有实战案例,保证让大家看完有收获。

技术这条路就是不断折腾、不断进步,感谢一路陪伴的朋友们!这篇文章希望能带给你们新的思考,欢迎评论区一起交流,咱们继续冲!,最后在开源一个大师和朋友写的测试工具,方便大家平时日常渗透和漏洞挖掘!!

嘿嘿,最近经历了一些事,一直在折腾 RTSP 协议的攻击可能性。结果研究着研究着发现——市面上那些 RTSP 攻击工具,很多都不太行,根本打不动真正的 RTSP 设备,比如摄像头、视频盒子这些。

既然这样,那还等什么?咱自己动手整一个!在彻底搞明白 RTSP 协议的攻击点之后,我撸了个小工具,专门针对这些设备优化,方便大家直接上手实战。工具已经就绪,细节和玩法都给你们安排上了,感兴趣的兄弟们冲就完了!

1738758342_67a358c6ea847f7940671.png!small?1738758338469

0x01什么是 RTSP?

大家有没有想过,为什么有些摄像头可以被远程访问,而有些却只能在本地局域网看?这背后的关键技术就是 RTSP(Real-Time Streaming Protocol,实时流传输协议)。

RTSP 是个啥?简单来说,它是控制音视频流的“指挥官”,让客户端和服务器能够交互,决定什么时候播放、暂停、停止。常见的应用场景包括:

  • IP摄像头监控(企业、大街、工厂的监控头)
  • 流媒体直播(某些私人推流服务器)
  • 智能家居设备(比如可视门铃)

RTSP 主要通过 TCP/UDP 传输数据,默认端口是554,但不同厂商可能会选8554、之类的端口。

一般情况下都是554端口,所以我们在进行红队攻击或者渗透测试的时候可以着重关注fofa、hunter、钟馗之眼等网络空间搜索平台找到的554端口资产。

1738758342_67a358c6dd111e5b1a335.png!small?1738758338469

0x02RTSP 的流量特征(如何抓住它的尾巴)

作为一款明文传输的协议,RTSP 的流量特征十分明显,抓包分析的时候,很容易找到它的痕迹。主要有两类:

  1. 控制信令流量 (相当于对摄像头的操作指令)
  • 典型请求头:
    OPTIONS rtsp://192.168.1.100:554/live.sdp RTSP/1.0CSeq: 1User-Agent: VLC/3.0.16
  • OPTIONS请求用于查询服务器支持的命令
  • CSeq是请求序列号
  • User-Agent可以透露访问者是谁,比如 VLC、FFmpeg 等
  1. 视频数据流量 (承载实际的音视频内容)
  • 使用 RTP/RTCP协议传输
  • UDP端口号通常是 <span>5</span><span>0</span><span>0</span><span>4</span>/<span>5</span><span>0</span><span>0</span><span>5</span>
  • RTCP负责流控制,位于 RTP端口相邻位置

0x03RTSP 协议的安全机制

RTSP 协议常见的认证方式有以下几种:

1.Basic 认证(基本认证)

特点:

  • 最简单的认证方式,客户端在 Authorization头中直接发送 Base64编码用户名:密码
  • 服务端在未认证时返回 <span>4</span><span>0</span><span>1</span>Unauthorized,并带上 WWW-Authenticate: Basic realm="RTSP Server"头,要求客户端提供凭据。

安全性问题:

  • Base64只是编码,不是加密 ,容易被嗅探截获并解码出明文密码。
  • 明文 RTSP 连接(未加密) 中,这种认证方式极不安全,极易被中间人攻击(MITM)。

示例:


Authorization: Basic dXNlcm<span>5</span>hbWU<span>6</span>cGFzc<span>3</span>dvcmQ= ("username:password" 的 Base<span>6</span><span>4</span>编码)


2.Digest 认证(摘要认证)

特点:

  • 比 Basic 认证更安全,它采用 MD5哈希计算身份凭据,而不是直接传输密码。
  • 服务器返回 <span>4</span><span>0</span><span>1</span>Unauthorized时,WWW-Authenticate头中会带一个 nonce值(防重放攻击)。
  • 客户端需要用 nonce计算哈希值,生成 response,然后发送给服务器进行验证。

安全性改进:

  • 避免了直接明文传输密码的风险。
  • 但是 MD5 哈希较弱,仍然可以通过 彩虹表等方式破解。

示例:


Authorization: Digest username="user", realm="RTSP Server", nonce="abc<span>1</span><span>2</span><span>3</span>", uri="rtsp://example.com/stream", response="md<span>5</span>_hash"


3.RTSP + TLS(RTSPS,基于 HTTPS 的认证)

特点:

  • RTSPS(RTSP over SSL/TLS) 通过 加密传输保护 RTSP 认证过程,防止嗅探攻击。
  • 认证方式仍然可以是 Basic 或 Digest,但由于使用了 TLS 加密通道 ,即使是 Basic 认证也不会被轻易嗅探破解。

安全性改进:

  • 基于 HTTPS 的安全模型,避免了明文密码和中间人攻击。
  • 但很多老旧设备不支持 RTSPS,加密传输带来的额外开销也可能影响性能。

4.基于 IP/MAC 绑定的认证

特点:

  • 部分 RTSP 服务器支持基于 IP 地址或 MAC 地址进行访问控制,只允许特定设备访问流媒体。
  • 这种方式通常用于企业或内网环境,结合防火墙策略进行访问限制。

安全性问题:

  • 只要攻击者能伪造 IP 地址或 MAC 地址 ,就可以绕过限制。
  • 如果没有额外的认证(如用户名/密码),这种方式相对较弱。

总结

认证方式安全性易用性主要风险
Basic 认证简单明文 Base64,易被嗅探
Digest 认证中等中等仍然依赖 MD5,有破解风险
RTSPS(TLS 加密)需配置证书设备兼容性问题
IP/MAC 绑定中等简单可被伪造,适用于局域网

一般来说,如果你在研究 RTSP 认证攻击 ,最容易入手的就是 Basic 和 Digest 认证,很多老旧设备依然使用这两种方式。如果目标设备支持 RTSPS,加密会增加攻击难度,而 IP/MAC 绑定则更依赖环境限制。

0x04如果你是黑客你会怎么进行攻击?

首先rtsp作为一种简单的协议,我们能从他的认证机制着手进行攻击,比如暴力破解。最早我也是这么想的,我使用了hydra或者无影等支持rtsp协议爆破工具,通过wireshark进行抓包的时候发现一个问题。rtsp和我们传统爆破是由一些区别的。

rtsp爆破的时候他会判断路径是否存在,只有路径存在的时候。才会进行下一步爆破。就是说一般的工具先探测是否存在默认路径。当路径匹配成功后在进行爆破,但是hydra等工具内置的路径字典有限还无法自定义,就是说即使当前设备的rtsp存在弱口令,也无法爆破成功。

Hydra 爆破的流量特征

在抓包软件里,Hydra 的攻击流量长这样:

  • **短时间内大量 **<strong>DESCRIBE</strong>**或 **<strong>OPTIONS</strong> 请求 (用于探测服务器是否需要认证)
  • **大量 **<strong><span>4</span><span>0</span><span>1</span>Unauthorized</strong> 响应 (说明服务器在拒绝非法访问)
  • **最终 **<strong><span>2</span><span>0</span><span>0</span>OK</strong> 响应 (爆破成功后,说明已经登录成功!)
  • **紧接着是 **<strong>PLAY</strong>请求,获取视频流

用 Wireshark 抓包,可能会看到如下内容:

DESCRIBE rtsp://192.168.1.100:554/live.sdp RTSP/1.0CSeq: 1Authorization: Basic YWRtaW46MTIzNDU=  #admin:12345

(如果摄像头还在用默认密码,那基本就直接沦陷了。)

一般我们攻击就可以基于rtsp的两种认证模式进行攻击,即Digest和Basic。那么有师傅就会问了,有很多摄像头设备他都是有web端的,我直接爆破web端不就好了,那么你如果这么操作,在我实践情况下会发现两个问题。

1、web端登录口一般有登录次数限制。

2、web端走http和https协议大多数流量监测设备都可以监测出来。(态势感知等设备)

但是如果你直接攻击554端口的rtsp协议的话,大多数就没有登录次数限制(实操证明)。你可以通过rtsp爆破出的密码再去登录web。

1738758343_67a358c76c9d874253637.png!small?1738758338469

0x05具体攻击实操

扫描 RTSP 端口,看看哪些摄像头是“裸奔”的:

1、masscan或者网络空间搜索引擎nmap都可以,可以识别出协议就行。或者盲打

2、看了上面的内容大家应该明白了要攻击rtsp首先要知道他具体的路径,或者先进行路径的爆破,只有识别到路径才能进行进一步的密码爆破,所以我和xxtt师傅一起写了一个小工具,可以自定义uri(路径)、用户名、密码字典等。用于rtsp协议设备的攻击。同时我也内置了市面上大多数摄像头路径。(也是没办法,市面上找到的都爆破不出我们想要的结果只能自己写了,工具后面放在github,链接放在文章最后)

1738758625_67a359e141f5078383a33.png!small?1738758619536

0x06总结

攻击rtsp协议目前发现有这么几个优势:

1、非全流量设备可能没有相关规则能检测到你的爆破攻击流量。

2、rtsp大多数设备都是有web界面的,rtsp协议直接爆破可能没有爆破数量限制,爆破出来后直接登录web。

工具Github路径:https://github.com/returnwrong/RTSP-Cracker-Pro