ABUS Secvest是一种面向消费者和小型企业销售的无线报警系统,它通常由专业公司部署。 Secvest FUAA50000控制器的价格约为400欧元,带有运动传感器,警报器和门窗传感器的典型部署可能要花费数千欧元。在本文中,我将描述如何远程攻击和停用超过10000个与互联网连接的警报系统。
ABUS已发布了Secvest软件的固定版本,因此,如果你使用此系统,我们建议你安装版本V3.01.21或更高版本。你需要具有“安装程序”访问权限,如果你不是自己安装系统,则可能需要安装系统的公司的帮助。作为临时解决方法,你可以删除路由器中转发至端口4433的端口。但是,这将阻止你使用智能手机应用程序或Web界面来控制系统。
报警系统可通过报警面板、web界面或Secvest应用程序(iPhone或Android)进行控制。要通过Web界面的应用程序控制系统,需要将警报系统连接到互联网,并且需要将HTTPS端口(默认为4433)转发到系统。
根据这些信息,我们进行了快速调查,以了解该系统的受欢迎程度。为此,我们使用了Rapid7的公开HTTPS扫描:
如你所见,该系统主要用于德语国家和比荷卢联盟。根据ABUS的说法,Secvest是德国销售最广泛的无线报警系统。因为我们只调查了Rapid7数据覆盖的端口,所以由于人们更改了默认端口,因此实际暴露的系统数量可能会更高。
进入应用程序后,你可以查看警报系统的状态并将其打开和关闭。
我喜欢这样的事实,即该设置使我们能够控制警报系统,而无需依赖基于云的系统。但是,它确实会带来一些风险:由于警报系统已连接到我们的IP地址,因此它可能使犯罪分子能够调查互联网上有趣的目标。在某些情况下,根据你的IP地址,他们也许可以将此信息追溯到实际位置,这让它成为了犯罪分子瞄准高端住宅或企业的有趣目标。
如本文和本视频所述,德国安全公司SySS GmbH的安全研究人员已经很好地研究了系统的无线端口,并发现了一些问题。为此,我研究了一下系统的基于IP的连接,并发现一些严重的问题。
要通过Web界面进行身份验证,你需要一个用户名和一个4位数的警报PIN。在更高的固件版本中,添加了6位数pin的选项。共有三个用户级别:安装程序,管理员和常规用户。通过身份验证后,你可以更改配置,管理用户或(停用)系统,具体取决于你的用户角色。更高的固件版本为固件更新添加了第四个用户级别。我宁愿使用单独的密码而不是重复使用PIN码,因为4位数字可能在大约五分钟内被强行使用。多次尝试失败后,面板确实会发出警报,并且还必须猜测用户名。
我发现的是,尽管停用系统的HTTPS请求需要身份验证,但许多其他请求却不需要身份验证。例如,无需登录即可访问sec_about_panel.cgi脚本,从而提供系统摘要,包括传感器,锁的数量等。sec_virtkeypad_raster.bmp文件为攻击者提供了警报系统屏幕的实时视图,使他可以查看系统名称,以及警报是打开还是关闭:
我们还可以使用HTTP POST请求对内部警报器进行测试,如以下curl命令所示:
curl -kv https://192.168.99.230:4433/ -d 'events={"panelTest_intSirensState":1}'
幸运的是,我们也可以通过将最后一个“1”更改为“0”将其关闭。我没有购买外部警报器,但也可以对其进行测试(在这个过程中会把整个邻居都吵醒)。想象一下,攻击者“测试”了10000个警报系统的警报器,从而导致很多人(主要是德国人)恼火。
更严重的是,我们可以通过请求文件而无需任何形式的身份验证来下载警报系统配置的副本。此十六进制编码的二进制文件包含所有用户的用户名和密码,使我们能够通过Web界面进行身份验证并完全控制警报系统。以下是我的配置文件的十六进制转储的摘录:
0000f870 03 13 37 ff 01 73 03 70 69 63 6f 62 65 6c 6c 6f |..7..s.picobello| 0000f880 62 76 00 01 74 c3 05 00 00 00 00 00 01 75 c3 01 |bv..t........u..| 0000f890 0f 01 76 02 00 01 00 09 45 02 01 01 01 00 00 d2 |..v.....E.......| 0000f8a0 05 02 01 01 00 02 72 c3 03 13 38 ff 01 73 03 31 |......r...8..s.1| 0000f8b0 33 33 38 00 01 74 c3 05 00 00 00 00 00 01 75 c3 |338..t........u.| 0000f8c0 01 0f 01 76 02 01 01 00 09 45 02 01 01 01 00 00 |...v.....E......| 0000f8d0 d2 05 02 02 01 00 02 72 c3 03 12 34 ff 01 73 03 |.......r...4..s.| 0000f8e0 61 64 6d 69 6e 00 01 74 c3 05 00 00 00 00 00 01 |admin..t........| 0000f8f0 75 c3 01 0f 01 76 02 01 01 00 09 45 02 01 01 01 |u....v.....E....| 0000f900 00 00 d2 05 02 03 01 00 02 72 c3 03 99 99 ff 01 |.........r......| 0000f910 73 03 6e 69 65 6c 73 00 01 74 c3 05 00 00 00 00 |s.niels..t......|
我有四个用户:picobellobv(安装程序),1338,admin和niels。安装程序的代码为“1337”,可以在十六进制转储中清楚地看到,位于用户名之前的6个字节处。还可以清楚地看到其他两个用户(1338、1234和9999)的代码。
这确实是我们需要的唯一漏洞,通过提取配置文件,我们可以获得所有用户名和密码并登录到系统。现在,我们具有与警报系统的所有者(或安装程序)相同的特权。攻击者现在可以重新配置或停用系统,查看日志以建立生活模式,或寻找线索来查找系统的物理位置(例如所有者名称,安装程序通常将其输入为系统名称)。
配置文件中还包括用于已连接系统的纯文本密码。如果用户已将相机连接到系统,我们将能够使用配置文件中的密码来访问视频信息。
配置文件中还包含“ABUS服务器”的密码,这是ABUS提供的免费动态DNS服务。由于许多提供商没有为用户提供动态IP地址,因此ABUS提供了此解决方案。用户可以配置DNS名称,例如secvest.u12345.abus-server.com,而不是使用静态IP地址配置Android / iOS应用。对于攻击者而言,这会带来有趣的机会。通过接管动态DNS,我们可以将用户重定向到我们自己的IP地址并开始处理信息。例如,我们可以告诉应用程序警报系统处于活动状态,而实际上它已关闭。另外,如果用户有摄像头,我们可以操纵视频流。现在,我们可以录制一些视频并一遍又一遍地播放,因此对于最终用户来说,当我们攻击时一切看起来都很正常。
目前,大约有10%的Secvest系统正在运行该软件的最新版本,这意味着互联网上90%的系统运行的是易受攻击的版本。
时间表
2020-10-30:通过Web表单与ABUS联系,请求安全联系。
2020-11-04:收到了ABUS安全中心的支持电子邮件地址。已发送电子邮件,要求安全联系人。
2020-11-06:收到了技术总监的联系方式,并通过电子邮件发送了建议。
2020-11-08:ABUS确认已收到咨询。
2020-11-20:EYE通过电子邮件询问ABUS是否能够复制发现。
2020-11-20:ABUS确认他们能够复制发现,并且下一版本将包含一个修复程序。
2020-11-23:EYE请求CVE并将获得的CVE编号发送给ABUS。
2020-11-24:ABUS确认收到CVE。
2020-12-16:EYE要求更新,ABUS回应说他们希望在1月中旬发布新固件。
2021-01-22:ABUS发布了软件版本V3.01.21,该版本修复了所报告的漏洞。
本文翻译自:https://eye.security/en/blog/breaking-abus-secvest-internet-connected-alarm-systems-cve-2020-28973如若转载,请注明原文地址