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