互联网不完全扫描非正式监控摄像头安全报告

Peng’s Cybersecurity Lab

简介

在完成了累计24小时对全球1.2%的公开IPV4网络设备(NAT之后的以及路由器之后的设备未扫描)的每个主机的10个端口,针对海康威视,大华以及雄迈摄像头,后台弱密码或漏洞的非常粗略的探测后,我发现了来自全球多个国家和地区的100多台摄像头主机存在弱密码或高危漏洞现象,可轻松进入后台。

整体情况

其中大华摄像头表现最为糟糕,很多设备可以通过cve-2021-33045cve-2021-33044 绕过验证,进入后台,其余摄像头大多是因为弱密码。

海康威视部分是因为cve-2021-33044漏洞,部分是因为弱密码被我获取了后台权限。

雄迈摄像头扫描到了很多,但我我装不上一个插件,无法验证是否真的获取了控制权,先按下不表。

这些摄像头的账号和密码,很多堪称弱智,如下图,是截取的一部分:

密码展示

有相当一部分是默认密码,这种相当于敞开家门让路人看了。

资产呈现

目前实控50+台摄像头,它们分布在野外,院落,街道,酒店,光伏发电站,办公室,商店,工厂,仓库等等。体现了管理人员安全意识的缺失。

安徽某茶园,下雨了,玻璃栈道上有很多水

中亚地区的某家中,看到有人,我接通语音:

image

I: Hello, please change your password for the camera

图中女人:(吓了一跳)Who are you?

I: Ethical hacker. Just a kind reminder.

今天早上已经失去了对该摄像头的控制,好事情。

18+商店?卖电子烟的罢了。

image

哞~

image

我猜他在玩手机

image

Good morning!

image

东南亚工厂,晚上八点的夜班工人

image

还有一张也是工厂里的:

image

🎱 台球?喜欢!

image

好喜欢维也纳这个摄像头

这组照片是奥地利🇦🇹维也纳的一个摄像头拍的,位置角度都好极了,有那种胶片摄影风格。蓝天白云绿草,或者黎明破晓。

黎明

太阳升起不久

天还不是特别亮

已经很明媚了

好科幻的装修

image

开张前的打扫

image

杂项

以上只是部分,我已经尽可能地提醒了,仁至义尽。

复现方法

工具准备

我们将使用两款强大的扫描工具进行组合扫描:

  1. Masscan - 超高速端口扫描器,可在5分钟内扫描整个互联网(需要硬件足够好,我做不到,我的设备至多每秒30k个包,要一个多月才能扫完,所以我只扫描了2%
  2. Ingram - 专注于摄像头漏洞扫描的框架,支持海康、大华等主流品牌

安装步骤

建议使用linux或macos,安装简便一点,性能也更好,因为没有针对Windows优化,速度慢很多

1
2
3
4
5
6
7
8
9
10
11
12
13
14

git clone https://github.com/robertdavidgraham/masscan
cd masscan
make
sudo make install

其实也可以从包管理器安装,如果你的发行版提供了


git clone https://github.com/jorhelp/Ingram.git
cd Ingram
python3 -m virtualenv venv
source venv/bin/activate
pip install -r requirements.txt

扫描策略设计

1. 目标范围选择

理想状态下,我们将扫描整个IPv4地址空间(IPv6这辈子算了),但排除以下私有地址段:

  • 10.0.0.0/8
  • 172.16.0.0/12
  • 192.168.0.0/16

创建排除文件exclude.txt

1
2
3
10.0.0.0/8
172.16.0.0/12
192.168.0.0/16

2. 端口选择

我为了省时间,只扫描了部分默认端口,还没扫全,ingram给出的规则里至少有这些:

1
'ports': [80, 81, 82, 83, 84, 85, 88, 8000, 8001, 8080, 8081, 8085, 8086, 8088, 8090, 8181, 2051, 9000, 37777, 49152, 55555],

但我其实只扫描了80,8000-8008 ,现在发现只扫80,8000就有不少,以后再尝试其他的吧。

分阶段扫描

第一阶段:Masscan快速端口扫描

1
2
3
4
5
masscan 0.0.0.0/0 -p80,81,8000-8010,554,37777 \
--excludefile exclude.txt \
--max-rate 100000 \
-oL masscan-results.txt \
--open-only

参数说明

  • --max-rate 100000:每秒10万包的速度,这个速度一般网络都ok的吧,你可以往上加。
  • -oL:输出纯文本格式结果
  • --open-only : 输出文件里只有开放端口,节省存储空间

第二阶段:结果整理

如果你只需要尝试一下的话,不需要扫太久,可以按Ctrl+C停止,

1
grep 'open' masscan-results.txt | awk '{printf"%s:%s\n", $4, $3}' > camera-targets.txt

第三阶段:Ingram深度扫描

这里解释一下,如果你不用masscan直接用ingram扫描0.0.0.0/0也是可以的,但是太慢了,所以不推荐。

1
python run_ingram.py -i camera-targets.txt -o scan-results -t 500

关键参数

  • -t 500:使用500线程并发扫描,这个速度会导致我家里其他设备上不了网,请求数可能太多了
  • -o scan-results:结果输出目录

结果分析

扫描完成后,重点关注以下文件:

  • scan-results/results.csv:漏洞设备清单
  • scan-results/snapshots/:摄像头截图

典型结果格式:

1
192.168.1.100,80,Hikvision,admin,12345,CVE-2021-36260

法律声明

此方法仅限授权安全测试使用。未经授权扫描他人网络设备可能违反当地法律。实际操作前请确保已获得合法授权。

“With great power comes great responsibility.”

  • Benjamin Parker

国内网段还是exclude掉吧,法律风险大,而且因为NAT,你扫不到什么。

一点感想

只能说,本来以为简单的测试,收获颇丰。同一时刻,世界上不同的角落,有的晴天,有的暴雨,有的白昼,有的深夜。你起床的时候,有的人刚结束一天的劳累。同在地球,不同国家,不同文化,不同职业,不同肤色的人以不一样的方式活着,在和我们一样或不一样的环境中活着,他们的住所、工作地点和我们不一样,但是他们开心了也会笑,工厂的工人劳累过后也会疲倦。看完感觉世界好大,脚步到不了的地方,网络可以,但我还是希望有一天我能用自己的眼睛去张望。

给惴惴不安的你

大家不用担心,国内互联网环境是全球最复杂的,有多层NAT,从外部很难扫到。因祸得福。

这些数据我也不会恶意利用或者泄露的,放心,我的人品还是靠得住的。不过看到这篇文章,还是建议你去提醒你的亲戚家人朋友,更新摄像头固件,用更复杂的密码,不要用默认的80800X端口。我只是一个菜鸡,用着简陋的设备,尚能获得这么多信息,更不用说别有用心者了。

引用一句诗,写当今网络空间

溪云初起日沉阁,山雨欲来风满楼。

  • 晚唐·许浑