我要为这件事承担全部责任--这是我搞砸的地方,如果我不他妈的搞砸了,那么这一切都不会发生。
但对我来说,也有来自不同供应商的一系列设计决定合并成完美风暴的部分。
因此,我从为数不多的几家云服务提供商中的一家租了一台,因为这是你在不实际拥有苹果设备的情况下运行MacOS的唯一方式。
那些云MacOS机器通常都启用了远程桌面,对MacOS来说,这意味着VNC。他们会为你生成密码。
但是VNC,特别是在MacOS上,速度很慢。现在是2020年,还有更快的替代方案。Windows RDP和NoMachine都利用了半现代的视频编解码器(H264),并且做了很多其他完全超出本文讨论范围的智能事情。
然后我做了第二件蠢事,也是迄今为止最糟糕的一件事--我从Safari登录了一个Google账户。不久之后,第三件蠢事发生了:我让Safari保存密码。
我说让我们一起去吧,因为我绝对不记得做过那件事。这将是有意义的-这一过程(记住密码)对用户来说尽可能无摩擦是有意义的,这样就间接地鼓励他们使用强密码,因为他们的浏览器可以为他们记住密码。
所以就是这样,对吧--为什么会有这篇文章,很明显这是你的责任,等等--现在就把你的系统全部拿出来,这是我承认的。我搞砸了,我不应该做这些事。
我不是在开玩笑--只要花一分钟对自己说,啊,我真不敢相信有人会做这么愚蠢的事,然后上网抱怨别的事情。
你知道吗,我同意。我很生自己的气。我对自己进行了严厉的训斥,并建立了新的安全做法,包括经常接受培训。
所以有人在互联网上扫描端口,发现在那个特定的IP上,TCP端口4000是打开的。这是NoMachine的默认端口。
然后,他们继续猜测或暴力强制本地用户密码,这是NoMachine用于身份验证的密码。这部分是如何发生的我还不是很确定,但它并不是特别强烈,所以,奇怪的事情已经发生了。
这就是为什么我总是禁用sshd的密码登录,并设置ail2ban等-在这种情况下,这些都没有帮助,因为,嘿,NoMachine!第三方软件,没有真正与系统集成!会出什么差错。
所以他们进入了MacOS机器。这就是锁定屏幕的用武之地,除了MacOS锁定屏幕只在VNC会话(或者,你知道,物理会话)上显示,而不是在NoMachine会话上,因为NoMachine使用与系统锁定屏幕相同的凭据。
在四处重置凭证和评估损失后,我能够重建他们所做的一些事情的大致时间线。
首先,他们检查了/etc/dow-这就是MacOS Catalina,那么,为什么呢?然后他们尝试了一大堆sudo-l,以及其他一些随机的东西。
他们不知何故使用了XCode编辑了一个Python文件,我为方便您重新输入了该文件--不要执行它。他们甚至下载了一份xmr-stak-cpu副本,以防以后需要进行挖掘。
然后他们注意到那里有一个未到期的Google会话(这也是我搞砸的)。他们通过Drive,看了几个文件,然后切换到Gmail。
因为它是过期的会话登录,而不是设置新设备登录-在谷歌当前的安全模型中,它被称为刷新受祝福的会话,没有两步验证(没有2FA提示)。
所以到目前为止一切都是100%由我承担。不应该安装NoMachine,应该用更强的密码替换密码,从一开始就不应该登录到这台机器上的Google帐户,而且绝对不应该保存密码而不是注销。
但我之所以写这篇文章,不仅仅是为了让互联网可以评判我在与CI建立斗争了一整天后做出的糟糕决定。这是检查谷歌做出的关于密码管理器的决定。
现在,我是一个快乐的1Password用户。我所有的密码都在一个私人保险库里,有一个很棒的强壮的主密码,只有我知道。我在所有对我很重要的网站上启用了2FA--其中可能有12个。
在我认真对待密码管理之前(嗯,除了我们现在再讨论的一件事),我只是使用了Google Chrome内置的密码管理。打开一个网站,输入你的密码,Chrome会提供保存,当然,这很方便。
当然,Google Chrome会将这些密码同步到他们的服务器上,所以如果你从另一台设备登录Chrome,你就可以访问所有这些密码。
我没有意识到的是,默认情况下,你的谷歌账户凭证是用来加密这些密码的。这意味着谷歌能够解密这些密码。
我应该更早地意识到这一点--像密码检查这样的功能还能有什么用呢?
此外,同样,如果您使用的是默认加密模式,则会有一个完整的在线密码管理器。
所以到目前为止,袭击已经相当严重了。谷歌账户是非常有价值的目标。
但使用密码管理器和Safari的密码自动填充功能,他们继续逐一检查我的旧密码-然后最终通过方便的CSV导出功能抓取整个密码。
现在,大多数密码都过时了,因为我现在只把东西保存到1Password,而且从那时起我就轮换了重要的密码。现在的密码大部分还是没用的--就像我在重要网站上启用的2FA一样--里面有任何有价值的东西。
除了OVH,我只用它来购买域名,所以,我每年都会和一对夫妇互动。我厌倦了手工支付账单,因为我可能有几十个客户,所以我连接了我的Paypal账户,接下来,你知道,攻击者给自己订购了一台闪亮的新专用服务器。
(攻击者很友善地选择了一个大小合理的实例,这可能会更糟)。
然后袭击者犯了一个错误。不管出于什么原因,他们试图使用我的密码从布宜诺斯艾利斯的一个IP地址登录我的Google帐户。可能他们想要获取他们全新服务器的凭据,而他们不知道NoMachine具有剪贴板同步功能?
谷歌的防御升级了:度假?那么远吗?在缺铁性贫血的时候?我不这么认为。登录尝试被阻止了,谷歌在我的手机上给我发了一条通知。
这就是我醒来时收到的通知。同时还有一条来自斯利普的2FA短信息。
(就糟糕的唤醒方式而言,这一点排名相当靠前。此外,我后来发现攻击者看到了来自受损机器的安全通知--之后他们很快就跳伞了)。
直到后来,我才意识到他们对我的谷歌账户禁用了2FA。事实上,在检查我的安全设置时。
我还没有收到那件事的通知呢!不是通过电子邮件,不是通过电话,最糟糕的是他们不需要我的2FA凭证来禁用2FA。
在做了大量的凭据清理之后,我最终在Twitter上发帖:嘿,嗯,PSA,你不再需要2FA凭据就可以为你的谷歌账户禁用2FA了,而且当发生这种情况时,你也不会得到通知。
我遇到的大多数人都持怀疑态度,当然你需要2FA才能禁用2FA,那就是证明它有效,然后是哦,天哪,你说得对,你不需要。
您的Google存储的密码还有另一种加密方案,该方案显示为“选择密码”(";Choose as Passphrase";)。这会阻止您的电子仓库在服务器端解密,从而禁用密码检查功能。
我认为这个可能有帮助--它可能会在访问谷歌密码管理器页面时要求密码短语,然后攻击者就会在那里被阻止。
这不会有任何帮助,因为即使启用了应用程序,你所需要的也只是一个神圣的会话(即使是过期的)和一个密码来禁用2FA。
首先,他们正在努力减少2FA提示的数量,以避免让用户对此失去敏感性。这个想法是,如果用户被左右提示输入他们的2FA凭证,他们将不再过多地考虑为什么要重新输入这些凭证,这会使整个方案变得不那么安全。
第二条信息是,在攻击者物理(或像我的情况一样,远程)访问您之前登录的设备的特定情况下,第一个因素是密码,但第二个因素是设备的锁屏/密码。
在我的例子中,这两个都很快就失败了:Safari自动填写密码,NoMachine跳过锁屏。我问他们怎么知道锁屏真的设置了,更不用说最近解决了,答案是:在Android上,我们知道--对于Windows&;MacOS,我们可能需要浏览器扩展。
现在,我不知道你怎么样--我还在为我的专业他妈的搞砸而相当生气,但这似乎是更重要的事情。
在任何情况下都不会请求2FA凭据,您也不需要这些凭据来禁用2FA。
在我们讨论的最后,在几个澄清之后,谷歌工程师同意这一特殊情况是一个安全故障,他将推动做出改变。
首先,如果你正在桌面上使用第三方密码管理器-1Password,KeePassXC,一个.txt文件,去擦洗你的谷歌密码管理器。
即使是我们这些转向另一种浏览器、注重隐私的人,他们的谷歌账户中也可能隐藏着他们无法完全摆脱的骷髅,因为现在是2020年,你可以跑,但你不能藏起来。
(此外,如果您在第三方密码管理公司工作,您可能希望将该步骤添加到入职流程中,以警告用户。)。
如果您没有使用第三方密码管理器,请选择密码短语。这将使你的生活不那么方便,但它将显著减轻损害,以防你像我一样最终非常疲惫,并做出一连串糟糕的决定。
我不知道APP是什么东西,所以你们中的一些人可能也不会-如果你们对一些额外的安全性感兴趣的话,你们可能会想看看这个。
最后,照顾好你们自己。如果我没有那么累,我很可能不会在那天这么粗心大意,这一切都不会发生。