Mimikatz之父:本杰明·德尔皮的编程革命

文摘   2024-06-15 15:25   中国香港  

十二年前,25岁的法国计算机程序员本杰明·德尔皮 (Benjamin Delpy) 刚刚入住莫斯科总统酒店的一个房间,他提前两天到达,准备参加附近的一个俄罗斯计算机安全会议并发表演讲。结果却发现酒店没有提供 Wi-Fi,以太网插孔也无法使用。

如果他无法上网查看他的演示文稿和他要讨论的计算机代码,他整个东欧之行可能都会陷入危险。他既恼火又担心,于是决定直接向酒店工作人员提出这个问题。

在乘坐电梯下楼前往前台的途中,德尔皮想起了他编写的那个让他来到这里的项目。这个程序名叫 Mimikatz,法语俚语,意思是“可爱的猫咪”,德尔皮开发这个程序是为了进一步了解 C 编程语言和 Windows 安全。

由于担心微软的 Windows 操作系统中存在一个安全漏洞,可能允许外部访问用户的密码和其他网络功能,德尔皮设计了一种方法,可以重复访问目标计算机和特定网络上的其他用户,以测试这个可疑的弱点。

这个项目立即引起了轰动。在发布闭源程序几个月后,他发现一些黑客试图对 Mimikatz 进行逆向工程,该程序随后被用来监视 30 万伊朗 Gmail 用户。德尔皮摇了摇头,想着他的代码是如何开始流行起来的。

他走出电梯,来到前台,向酒店工作人员投诉,酒店工作人员表示愿意派一名技术人员上来解决这个问题。但德尔皮拒绝了,他宁愿自己解决这个问题。

他乘电梯回到自己的房间,到达后,他刷卡进去,发现一个他不认识的、穿着黑色西装的男人坐在他的办公桌前,试图使用他的笔记本电脑。

他停下脚步,站在地板边上,心脏突然怦怦直跳。德尔皮看着他的笔记本电脑,里面有 Mimikatz 的源代码以及演讲的文本和幻灯片。德尔皮仍然僵在那里,无法做出反应,然后看着那个男人站起来,用英语含糊地道歉说他的钥匙卡开错了房间,冲过他身边,离开了房间,关上了身后的门。

神秘人是谁?他想干什么?他为什么在德尔皮的房间里?各种可能性在他脑海里不断闪现,让他心神不宁,整晚辗转反侧。

“对我来说一切都很奇怪,”德尔佩后来说道,“就像身处间谍电影中一样。”

—这也不会是最后一次有人试图获得德尔皮的强大程序。


2000 年底和 2010 年代初,本杰明·德尔皮 (Benjamin Delpy) 在法国一家政府机构担任 IT 经理(他拒绝透露机构的名称),当时他对编程和计算机安全产生了浓厚的兴趣。在 2019 年的 BlueHat Illinois 会议上,他讲述了这一切的起源:“Mimikatz 的最初目的不是泄露密码,而是作为一个业余项目让我学习 C 语言和Windows编程。”


德尔皮从事 IT 工作,但当时他对计算机编程知之甚少。他想改变这种状况,于是自学了“代码”。他从流行的 C 语言开始,这是一种功能强大、通用的语言,早在 20 世纪 70 年代的打孔卡时代就已创建,但至今仍在使用。

在自学过程中,他深入研究了微软的 Windows 操作系统,并发现了一个问题:他可以“从操作系统或软件中获取账户登录和密码信息。然后可以使用凭证进行横向移动并访问受限制的信息。”

他担心自己经验不足,而且是新手,无法发现如此重大的问题,于是他一遍又一遍地检查代码,以确保自己看到的东西与自己所想的完全一致。但他一次又一次得出了相同的结论:微软存在一个巨大的安全漏洞,而他们庞大、国际化、价值数十亿美元的团队中,没有人能够在他之前发现它。他只能对这种疏忽摇头,对各种可能性微笑。

回想起来,德尔皮回想道:“2011 年,我第一次公开发现了密码,明文密码。那真是一段美好的时光。”

德尔皮很兴奋,他能在这么短的时间内找到这家如此强大和有影响力的公司的一个漏洞。他认为最好和最道德的做法是直接联系该公司,让他们知道这个问题,他相信他们会很快解决这个问题。

所以,2011 年,德尔皮在微软的支持页面上向微软提交了一条消息,指出了潜在的安全漏洞,但最后却没有预料到他听到的回复。

微软对他不以为然。

他们回复说,他发现的并不是“真正的漏洞”,“毕竟,黑客必须先获得受害者机器的深度访问权限,然后才能获取内存中的密码”,微软还说“用户只需更新他们的操作系统并遵循安全最佳实践”。

这样的反应激怒了德尔皮,他觉得自己没有受到重视。作为回应,他日复一日地热切地将他的研究成果转化为代码,从而创建了 Mimikatz,“作为概念验证,向微软展示他们的身份验证协议容易受到攻击”。无论好坏,这都会让该程序的用户轻松访问他发现的那些漏洞。

但现在该怎么办?被微软冷落后,德尔皮沮丧又难过,他必须做出决定:他是否应该得到应有的惩罚,将 Mimikatz 发布到全世界?当如此强大且易于使用的程序在网络上免费发布时,会发生什么?谁会使用它,最终会有什么结果?德尔皮发现自己处在十字路口。


这是一个不归路:出于反抗和抵抗,德尔皮决定将 Mimikatz 作为“闭源”程序发布,这意味着它的代码将受到保护,因此没有人能够确切地知道它是如何编写的以及它是如何工作的。

但他惊讶地发现,世界各地的黑客开始尝试入侵他的程序,试图弄清楚它是如何工作的,就像在网上论坛上讨论 Mimikatz 的黑客一样,试图对其进行逆向工程。

然后,一切都变得一团糟:德尔皮“第一次得知——他拒绝透露从谁那里得知——Mimikatz 曾被用来入侵外国政府网络。”

“第一次我感觉非常非常糟糕,”他回忆道。“Mimikatz 最初是德尔皮为更好地了解 Windows 安全性而构思的一个研究项目”,但现在已经远远超出了他的控制范围。

情况变得更糟:德尔皮眼睁睁地看着他的程序成为世界上最强大、最普遍的密码窃取方式之一。俄罗斯人用它入侵了德国议会。身份不明的黑客利用 Mimikatz 与泄露的 NSA 黑客工具配对,以创建自动攻击,其感染迅速饱和网络,造成灾难性的后果。Carbanak 组织犯下多起价值数百万美元的银行抢劫案,NotPetya 则能够破坏和冻结联邦快递、默克等公司的系统。

同年 9 月,Mimikatz 被用于对 DigiNotar 进行具有里程碑意义的黑客攻击,DigiNotar 是一家证书颁发机构,负责确保使用 HTTPS 的网站是他们声称的那个网站。据 Fox-IT 的安全研究人员称,这次入侵让身份不明的黑客能够颁发虚假证书,然后利用这些证书监视数千名伊朗人。DigiNotar 被网络浏览器列入黑名单,随后破产

总而言之,Mimikatz 恶意用户造成的经济损失已达数十亿美元。

但是德尔皮并没有回避因制造了超出他能力范围的问题而受到的关注,而是决定接受它,“继续打磨他的创作,公开谈论它,甚至多年来增加了更多的功能。”


到 2012 年初,由于这个引人注目的新程序的传播,德尔皮在计算机安全圈声名狼藉,并再次被邀请到俄罗斯参加另一次会议。在一座旧苏联工厂大楼里, Positive Hack Days 的演讲结束时,一位身着黑色西装的俄罗斯男子在他离开舞台时向他走来。

这不是之前酒店房间里的那个男人,但德尔皮再次停下了脚步。他的心脏再次怦怦乱跳。但与之前的遭遇不同,面前穿着黑色西装的男人没有动,没有道歉,而是粗鲁地要求德尔皮将他的会议演讲、幻灯片和代码的副本拷贝到他手上的U盘上面。

他现在就想要它。该怎么办?

这次,他遵从了。

德尔皮觉得自己别无选择。他担心在俄罗斯的个人安全。

然后,在他离开俄罗斯之前,他就在 Github 上公开发布了该代码,他既担心如果保密该工具的代码会危害自己的人身安全,又认为如果黑客要使用他的工具,那么防御者也应该了解它。

所以作为一种反抗和报复行为,他决定再次在互联网上发布代码,但这次攻击并不是针对微软,而是针对那些利用他的程序进行不法行为、盗窃或参与网络战争的人。

然而,这一次,它将是“开源的”,因此任何人都可以访问 Mimikatz 的内部工作原理并亲自查看代码。

毫不奇怪,该计划迅速传播开来。

就像他的软件一样,德尔皮也在旅行。他继续环游世界,乘坐飞机参加更多会议,谈论 Mimikatz 和他对计算机安全的新热情。

在拉斯维加斯举行的 2019 年美国黑帽大会上接受 Paula Januszkiewicz 采访时,他表示自己继续改进该程序并支持它的动机,即使其他人将其用于邪恶目的:“动机来自我发现微软并不关心......当时,这不是一个问题(对他们而言)。对于客户而言,我可以说这是一个问题。所以我让它不断发展,让它与所有 Windows 版本兼容。”

因此,Mimikatz 在计算机安全圈和黑客组织中变得更加普遍,其中一些人将该程序与泄露的NSA工具结合起来,创建了自我复制、自我传播、自包含的勒索软件,不需要人工参与即可传播到越来越多易受攻击的系统。

Mimikatz 甚至在 USA Network 的黑客惊悚剧《黑客军团》的一集中出现在好莱坞。在第二季的一集中,配角 Angela Moss 使用 Mimikatz 获取了老板的明文密码,从而进入了他的计算机并下载了他系统上的敏感文件。

她使用 Rubber Ducky(一种伪装成通用可移动磁盘的击键注入工具 BADUSB)提取所需数据。回到自己的工作站后,她发现了老板的密码,Mimikatz 可以从老板的计算机内存中获取该密码,而无需翻查字典或使用任何其他暴力破解。

这是 Mimikatz 能够轻松访问受保护的系统的关键,现在它以视觉、引人注目的方式展示在数百万原本无知的观众面前,这些观众原本可能不知道这个深奥的计算机软件。

因此,Mimikatz 现在已成为主流。

德尔皮“无意中创造了过去 20 年来使用最广泛、下载量最大的黑客工具之一”,现在甚至在热门电视节目中客串出演,一举成名。接下来会发生什么?

对于德尔皮来说,他原本是一个温文尔雅的计算机爱好者,他只是想学习用 C 语言编程,而 Mimikatz 却有了自己的生命,而他并不总是为此感到自豪。“Mimikatz 根本不是为攻击者设计的。但它帮助了他们,”德尔皮现在说。“当你为善意创造这样的东西时,你知道它也可以被坏人利用。”

“我创建这个是为了向微软表明这不是一个理论上的问题,而是一个真正的问题,”他说。“如果没有真实数据,没有危险数据,他们永远不会做任何事情来改变它。”

另一方面,加州大学伯克利分校安全研究员尼古拉斯·韦弗 (Nicholas Weaver) 表示,“我认为我们必须诚实:如果不是 Mimikatz,就会有其他工具。”

最后,微软注意到了这一点。在德尔皮的不断敦促下,该公司最终承认并修复了德尔皮在其程序中明确指出的安全问题。尽管德尔皮曾多次公开演讲,但他还是受邀在微软的两次安全会议上发表演讲,并被邀请加入其新研究提交的审查委员会之一。

邀请那些利用系统漏洞的人加入微软似乎有些奇怪,但正如德尔皮在 2014 年挪威科技大学会议上解释的那样,“微软并没有雇佣我。我有时会遇到一些问题,但有时他们也能做出好东西。在新版 Windows(Windows 8.1)中,他们引入了远程桌面连接的受限管理模式。这很酷!”

那天,他向一群欧洲计算机爱好者发表了演讲,题目是“如何推动微软改变一些小东西”。可以说,德尔皮对微软既感到困惑又感到沮丧,但他还是实现了最初的目标:该公司专门引入了新功能来降低 Mimikatz 的效率,从而使计算机和网络更加安全。

如今,Mimikatz 已成为 Windows 身份验证技巧的全套实用工具,从窃取散列密码并将其作为凭证,到生成欺诈性“票据”作为 Microsoft 的 Kerberos 身份验证系统中的识别令牌,再到从 Chrome 和 Edge 浏览器的自动填充功能中窃取密码。如今,Mimikatz 甚至包含一项在 Windows 的扫雷游戏中作弊的功能,即从计算机内存中提取游戏中每个地雷的位置。


德尔皮表示,在添加利用 Windows 中任何严重新安全问题的功能之前,他都会提前几个月通知微软。不过,这个存储库已经发展成为一个相当大的存储库。

“这是我的工具箱,我把所有的想法都放在那里,”德尔皮说道。

在这长达数年的演讲和培训过程中,德尔皮发现,对于计算机用户和其他对互联网安全感兴趣的人来说,最好的方法就是像他一样自己动手。

他最后说道:“You look at my works and you create your own tools to make adaptations to understand how it works, so I'm very happy because at the beginning and even now Mimikatz is sitting as a...tool to say, 'Hey, I made that!' But, come on, make your own one. Because without creating we will not understand”


参考:

https://www.wired.com/story/how-mimikatz-became-go-to-hacker-tool/

https://blog.xpnsec.com/exploring-mimikatz-part-1/


老鑫安全
真正的大师永远都怀着一颗学徒的心,专注于渗透测试,红蓝对抗,漏洞挖掘等安全技术培训 B站:老鑫安全 知识星球:老鑫安全 官网论坛:https://www.laoxinsec.com