破解Unifi控制器密码:乐趣与WiFi访问
作者:Kent Ickler //
因为,你知道——这应该是个事儿。
TL;DR:
不要把Unifi控制器运行在壁橱里的笔记本电脑上。
背景
Ubiquiti的Unifi控制器是一个网络设备或软件服务,用于控制Ubiquiti的Unifi系列设备。Unifi是一个设备品牌,它们统一在一起,为SMB领域的网络用户和系统管理员提供更好的用户体验。我们将留给你自己判断,但我们使用过这些设备,它们工作得还不错。
免责声明
我不是来从安全角度评论控制器软件设计的。Ubiquiti聘请安全专家来做这件事。那不是我或BHIS。这没问题。
我要告诉你的是:
一个被入侵的Unifi控制器主机就是一个被入侵的Unifi网络。
黑客总会黑
Unifi云启用设备不久前被攻破了。觉得我应该提一下。
https://krebsonsecurity.com/2021/03/whistleblower-ubiquiti-breach-catastrophic/
够了。
本地控制器
本地Unifi云控制器可以安装在Linux或Windows系统上,如果你不想购买他们的“Cloud Key”硬件控制器(https://store.ui.com/products/unifi-cloudkey)。他们为Unifi设备所有者提供可下载的控制器,这太棒了。这允许集中安装和管理本地Unifi设备,而无需购买额外的软件或硬件。
下载链接:https://www.ui.com/download/unifi/
事实上,它如此棒和多用途,就像他们希望我们把它安装在一个我们不经常使用的旧随机笔记本电脑上,并且会完全忘记它在运行。
控制器设计
控制器的后端数据库运行一个MongoDB数据库。虽然数据库服务器只监听它安装的主机的环回地址,但它不需要认证。
再次声明,我不评论这一点。
环回端口转发
信息安全领域的人知道,环回地址的安全性仅取决于运行它们的系统。在大局中,如果运行控制器的主机被入侵,使用环回地址获得对Unifi控制器的远程访问将变得微不足道,而无需远程桌面或控制台访问。为了演示目的,我通过RDP直接跳转到主机以获取一些简单的截图。
无SQL
我通常使用DBeaver(https://dbeaver.io/)来做这种事情。不久前,DBeaver从社区版本中移除了他们的No-SQL和MongoDB驱动程序。真遗憾。
NOSQLBooster(https://nosqlbooster.com/)是一个很好的替代品。
启动NOSQLBooster后,你需要连接到本地数据库。
DRAKE MONGODB端口热线
这里没有MongoDB。
即使没有Drake,这个环回混淆的端口也不会很难用一些cmd-fu找到。
但是…Ubiquiti足够友好地完整记录了它:https://help.ui.com/hc/en-us/articles/218506997-UniFi-Ports-Used
连接
在NOSQLBooster中,点击“Connect”然后“Create”。输入详细信息:
类型:Single Server
服务器:localhost
端口:27117
名称:Unifi
接下来,按“Save and Connect”。
数据库结构将在应用程序的左侧打开。
好黑客的东西
让我们深入到Unifi > ace > admin。
双击“admin”打开相关记录。
注意到x_shadow键了吗?它看起来非常像一个哈希密码。
剧透:它是。
让我们抓住那个键并做一些魔术。
停止,哈希时间
跟着这个跳舞,你会变瘦。
$6$KPCNpIC/$GzO92iNqVVQNN8cQonvDQumnwmYOnUzvC6WvGLLMcysBfporCeVt7UYgGKPnkxp8B/e0Ckp.57Q8UiWw32sM60
让我们剖析那个哈希。通过使用模块化加密格式(https://passlib.readthedocs.io/en/stable/modular_crypt_format.html)分析哈希,我们可以识别其各个部分。这种类型哈希的语法:$id$salt$encrypted
首先,id,$6$,告诉我们我们正在看某种SHA512-crypt的变体。
$6$和下一个$之间的文本是哈希盐(KPCNpIC/)。关于那个盐有一些有趣的点,我们稍后会讨论。
在盐和$之后是密码+盐的加密哈希(GzO92iNqVVQNN8cQonvDQumnwmYOnUzvC6WvGLLMcysBfporCeVt7UYgGKPnkxp8B/e0Ckp.57Q8UiWw32sM60)。
我闻到企鹅
值得注意的是,这是Linux影子文件中常见的哈希类型。聪明地,我们在一个名为x_shadow的键中找到了哈希。
你们中知道Linux的人已经识别出哈希为一个加盐的sha512crypt哈希。
Hashcat书呆子(像我)已经知道这是模式1800。
破解哈希,获取锅
继续吧。
首先,我们把那个哈希扔进一个名为“hash”的文件,然后启动Hashcat。Hashcat将尝试找到一个哈希碰撞,如果找到,将在一个名为“pot”的文件中输出碰撞。我们使用Hashcat的-m标志指定哈希类型,-a标志指定我们的攻击模式——在这种情况下,直接字典攻击。
echo $6$KPCNpIC/$GzO92iNqVVQNN8cQonvDQumnwmYOnUzvC6WvGLLMcysBfporCeVt7UYgGKPnkxp8B/e0Ckp.57Q8UiWw32sM60 > hash
hashcat -m 1800 -a 3 hash wordlist -o pot
命中了。你击沉了我的控制器船。让我们从潜在文件中抓取碰撞。
cat pot
$6$KPCNpIC/$GzO92iNqVVQNN8cQonvDQumnwmYOnUzvC6WvGLLMcysBfporCeVt7UYgGKPnkxp8B/e0Ckp.57Q8UiWw32sM60:Fall2021!
密码是Fall2021!
管理员登录时间
你现在可以用在ace admin键“name”中指定的用户名和破解的密码登录Unifi控制器https://localhost:8443/。在我们的例子中,Fall2021!它被黑了。
我的哈希,你的哈希
让我们谈谈盐和哈希。
为了有点乐趣(并证明关于未过滤盐的一点),让我们创建我们自己的哈希。
我们将使用openssl生成一个SHA512-crypt哈希。然而,我们将使用我们自己的自定义盐——一个Unifi应该知道它从未用于存储实际用户账户凭据的盐。
openssl passwd -6 -salt BHISWASHERE Fall2021!
$6$BHISWASHERE$M.ngiEju5sTwrsxbs3gRK/Ok.mp948HNn5x1PrB6UK3q/3acozGjEQtVSRZ4KUBmU02iI.TdJGhqNBj4ttbzI1
要“重置”那个Unifi控制器管理员密码,我们只需要用我们的新哈希覆盖ace>admin表中的x_shadow键:
$6$BHISWASHERE$M.ngiEju5sTwrsxbs3gRK/Ok.mp948HNn5x1PrB6UK3q/3acozGjEQtVSRZ4KUBmU02iI.TdJGhqNBj4ttbzI1
登录密码将然后是一个非常安全的Fall2021!
盐没有被过滤,它将工作以登录到控制器。
咸PADME
所以,盐不重要。它没有被过滤。大事。
抱歉,Padme。
想象一个运行时计算的盐,它是账户属性(如创建时间戳)加上设备GUID的衍生物,从未被存储,而是仅在认证时重新计算。
在认证时,用户提交一个密码,然后添加到运行时计算的盐——即,用户账户创建时间加上设备GUID的衍生物。由于盐永远不会被存储,黑客将“永远”无法正确产生和注入外部哈希到认证数据库。
但我是个理想主义者。
还有什么?
嗯,除了有趣的事情,如“payment”表,你可以在那里找到Hot Spot Unifi服务的支付细节,还有其他可能让你感兴趣的小细节。
“devices”表有你想要知道的关于控制器如何与设备通信的一切,包括认证。
“alert”表将有网络元数据警报。你可以观看用户在大楼里走动。
在“users”表中,你将找到控制器跟踪数据的每个网络设备的元数据(基本上任何受控Unifi设备在其网络广播中看到的任何东西)。
在“settings”表中,你会发现其他多汁的小细节,包括到Unifi云控制器服务的认证和API信息。
底线:控制器中的每个设置都可以被枚举。
SMTP配置、SYSLOG、SNMP等。如果它是控制器中存储的凭据,你现在拥有它。
咳嗽…IPSEC和VPN…咳嗽。
我来这里是为了“免费”无线
如果登录到仪表板不是你的菜,你总是可以直接从数据库中拉出无线预共享密钥,而无需登录到控制器界面。
如果你查看“wlanconf”表,你会发现如“name”和“x_passphrase”的待遇,它们分别是明文SSID和预共享密钥。记住,即使控制器设备本身无法“看到”无线网络,这也是可访问的。
说实话:如果你已经走到这一步,意大利面和明文预共享密钥是你最不关心的问题。
结论
坦率地说,这一切都是因为我忘记了我家里本地控制器的管理员密码。
哎呀。
红队:检查你的目标端点上是否有Unifi控制器。它可能是一个容易的胜利。
热门看法
软件Unifi控制器不安全吗?
不。我的意思是,是。也许。
如果运行Unifi控制器的主机被入侵,网络就被入侵了。任何在控制器中配置的外部服务,以及可能链接的Unifi云账户,应被视为已入侵,并更改密钥。
但话说回来,运行这个软件的主机可能应该更好地称为“Unifi控制器”,并像保护“Unifi控制器”一样受到保护。不要使用扔在壁橱后面的随机笔记本电脑,因为你不想购买Cloud Key硬件控制器。
顺便说一下,“入侵”在这里不意味着SYSTEM上下文。记住,MongoDB运行无需认证。你只需要本地环回权限(即使是远程)来修改数据库。
它可以更安全吗?
是,肯定。
但记住钟摆如何两边摆动;另一个极端:
所有敏感位可以用由Ubiquiti控制的PKI基础设施保护。那会更好,对吧?
#GetOffMYLawnAlexa
SHA512crypt不是已经坏了吗?
呃,当然,这里有一些数学:https://pthree.org/2018/05/23/do-not-use-sha256crypt-sha512crypt-theyre-dangerous/
我联系了Ubiquity吗?
不。这是他们的设计。我甚至不生气。
作为系统管理员,我承认这种行为与其他未安装在Windows上的制造商网络控制器一致。例如:一个控制台电缆可以给你交换机上的root权限,只需物理访问——但你把那个交换机锁在安全设施中。
这只看起