五年前,当本杰明·德尔皮(Benjamin Delpy)走进莫斯科总统酒店的房间时,发现一名身穿深色西装的可疑男子在使用他的笔记本。就在几分钟前,这名 25 岁的法国程序员匆匆跑到前台去投诉房间的网络状况。为了一场在附近主办的安全会议,他提前两天就到达了这里,结果发现酒店没有 Wi-Fi,网口也坏了。酒店的工作人员让德尔皮在前台等着维修人员过来,但他想回房间里等着所以拒绝了。 于是,当德尔皮回来时,他就震惊地看到那个陌生人站在自己的办公桌旁,身旁还有一个黑色手提箱,在听到声响之后,快速缩回了键盘上的手。笔记本上 Windows 的登录界面还没有登进去,而这个人用英语咕哝了一句抱歉,说他刷错了门卡,然后趁德尔皮还没反应过来之前就逃出了房间。 德尔皮很快就知道了他的笔记本为什么会被人非法搜查,因为他在笔记本里存放了莫斯科会议上的主题演讲资料,其中包含了一个早期程序 Mimikatz。Mimikatz 能在极短的时间内从计算机内存中抓取 Windows 用户的密码,从而获得该计算机的访问权或者受害人在网络上的其他访问权。和全世界的黑客一样,俄罗斯人也想拿到德尔皮的源代码。 在此后的几年中,德尔皮向公众公布了该代码,Mimikatz 已经成为一种无处不在的黑客渗透工具,入侵者们一旦打开缺口,就能迅速从一台联网设备跳到下一台。最近,Mimikatz 重新回到了人们的视线中,它成为了 NotPetya 和 BadRabbit的组成部分,而这两个勒索蠕虫已经击垮了乌克兰,并且蔓延到整个欧洲、俄罗斯和美国。 仅 NotPetya 就导致了马士基、默克和联邦快递等公司数千台电脑的瘫痪,已经造成 10 亿多美元的损失。 那些引发网络震动的涟漪,至少在某种程度上是由德尔皮随意编出来的程序所引发的。德尔皮表示,一位拒绝透露姓名的服务于法国政府机构的 IT 经理,最初将 Mimikatz 作副项目来开发,期望更加了解 Windows 的安全性能和 C 语言,同时意在向微软证明 Windows 密码中存在的安全漏洞。他的概念验证达到了预期效果,在最新版本的 Windows 中,微软更改了其认证系统,使系统更不易被类似 Mimikatz 的工具攻破。但此时,德尔皮的工具早已进入广大黑客的武器库中。德尔皮说:“虽然 Mimikatz 不是为攻击者设计的,但是它却帮助了他们,任何一个事物,有利就有弊。” 安全公司 Rendition Infosec 创始人兼渗透测试员杰克·威廉姆斯(Jake Williams)表示,即便在今天,尽管微软尝试修复系统漏洞,Mimikatz 仍然是一个强大的黑客工具。 窃取方法Mimikatz 最初因其利用了 Windows 的 WDigest 功能而成为了核心的黑客资产。WDigest 旨在使公司和政府的 Windows 用户更方便地向内网或网络上的应用程序证明身份,它会将用户的身份验证信息保存在内存中,并自动重用它们,因此用户只需输入一次用户名和密码即可多次访问。 尽管 Windows 会将用户密码的副本加密,但系统也同样保留了密钥的副本以便解密。德尔皮说:“这就像把加密邮件和密钥同时放在邮箱里一样。” 德尔皮表示他已经向微软提出了潜在的安全问题,但该公司对他的提醒置之不理,认为不是什么大问题。毕竟,黑客想在内存中找到密码,就先要深度访问受害人的机器,这显然是不太容易做到的。微软曾在《连线》杂志的采访中回应了关于 Mimikatz 的问题,“只有在系统已经被破坏的前提下,该工具才能入侵,为了安全起见,我们建议用户遵循安全的操作方法,同时保持更新。” 但德尔皮在实践中发现,Windows 认证系统仍是一块强有力的跳板,黑客们一直借此扩大感染。如果用管理员权限运行一款恶意软件,那么它可以将加密的密码与解密的密钥一起从内存中窃取出来,然后用它们来访问网络上的另一台计算机。如果另一名用户登录到该计算机上,攻击者就可以在第二台计算机上运行相同的程序来窃取他们的密码,如此往复。 因此,德尔皮编写出了 Mimikatz 来证明微软存在的问题,“mimi”在法语中的意思是“可爱”,因此这个程序的全称是指“可爱的猫咪”。他在 2011 年 5 月公布了 Mimikatz,但没有开放源代码。德尔皮说他当时的态度是这样的,“你们既然不想修复系统,那我就来向世人证明你们的问题。事实证明微软需要好几年的时间才能修复系统,而期间黑客们也没闲着。” 不久,德尔皮在黑客论坛中看到中国用户在讨论 Mimikatz,并试图对其进行逆向工程。然后在 2011 的年中,他才发现 Mimikatz 被用于入侵外国政府网络。他在回忆时说道:“这种情况让我感觉非常非常的难受。” 2011 年 9 月,Mimikatz 被用于入侵 DigiNotar,其发布的认证证书是用于确保网站使用者的身份。据 Fox-IT 的安全研究人员表示,这种入侵让身份不明的黑客发出了伪造的证书,然后监视了数以千计的伊朗人。结果,DigiNotar 被网络浏览器列入黑名单,最终破产。 第二个穿西装的俄罗斯男人在 2012 年初,德尔皮应邀在莫斯科举办的 Positive Hack Days 大会上进行了一场关于 Windows 安全问题的演讲。他仍然认为多数国家支持的黑客已经掌握了 Mimikatz 的代码。但即便是在酒店房间的那次接触之后,俄罗斯人还是不死心。当他在一座苏联老厂房里和一群黑客交谈之后,一个穿着深色西装的男人走近他,要求他把会议幻灯片和 Mimikatz 拷在 U 盘上,德尔皮照做了。然后,甚至在他离开俄罗斯之前,他还在 Github 上发布了的开源代码,既出于自身的安全考虑,也希望防御者能够借此抵御黑客的攻击。 2013 年,微软最终在 Windows 8.1 中增加了禁用 WDigest 的方法,以此防御了 Mimikatz 。在 Windows 10 中,微软默认禁用该项功能。但是,Rendition 的威廉姆斯指出,即使在今天,Mimikatz 还是能影响到很多他碰到的 Windows 机器,要么是因为这些机器没有升级系统,要么是因为他有权限启用 WDigest。 近年来,Mimikatz 要么被俄罗斯黑客用来攻击德国议会,要么是被 Carbanak 网络团伙用来犯下了“十亿美元大劫案”。但 NotPetya 和 BadRabbit 勒索蠕虫使用 Mimikatz 的方式却比较迂回:他们将攻击工具放在可自我传输的蠕虫中,同时将其与 EternalBlue 和 EternalRomance 黑客工具一起泄露给了 Shadow Brokers。这些工具允许恶意软件通过微软的服务器消息块协议传输到所有未针对攻击打补丁的接入系统。他们与 Mimikatz 一起打出的组合拳,最大程度地扩散了这些自动感染。德尔皮说:“当你把这两种技术混合起来时,它是非常强大的。” 尽管 Mimikatz 造成了这些攻击,但德尔皮并未因此疏远它。相反,他继续打磨着自己的作品,公开地讨论它,甚至在过去几年中为它增加了更多的功能。如今,Mimikatz 已经对 Windows 身份验证功能造成了重击,从窃取哈希密码传递身份认证信息,到在微软的 Kerberos 身份验证系统生成可替代身份令牌的虚假票据(Ticket),甚至是在 Chrome 和 Edge 浏览器中窃取自动填充的密码。不过德尔皮说,在利用 Windows 的安全问题之前,他会提前几个月向微软发出警告。 令人苦涩的密码试炼工具Mimikatz 中的功能不是为了便宜犯罪分子和间谍,而是为了证明 Windows 的设计方式或公司及政府的使用方式都存在着安全问题和隐患。德尔皮说,毕竟,如果系统管理员限制用户的权限,Mimikatz 就无法获得管理员访问权限,也无法跳到其他计算机同时窃取更多的认证信息。加州大学伯克利分校安全研究员尼古拉斯·韦弗(Nicholas Weaver)表示,尽管如此,Mimikatz 仍然非常强大,德尔皮也不应该为此受到指责。他说:“要是说起来,如果没有出现 Mimikatz,还是会有其他的黑客工具。” 到最后,连微软都开始试着欣赏德尔皮的成果,邀请他在公司的蓝帽(Blue Hat)安全会议上发表了两次讲话,今年更是邀请他加入新版研究报告的评审委员会。至于德尔皮,他对自己的工作表示毫不后悔。比起把微软的漏洞留给间谍们独自享用,被俄罗斯间谍追踪对他而言并不算什么。他说:“我设计这个工具的目的是为了向微软证明这不是一个理论问题,这是一个真正存在的漏洞。要是没有真实的数据,没有可怕的数据,他们永远不会做任何改进的事情。” |