五年前,當本杰明·德爾皮(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)安全會議上發表了兩次講話,今年更是邀請他加入新版研究報告的評審委員會。至于德爾皮,他對自己的工作表示毫不后悔。比起把微軟的漏洞留給間諜們獨自享用,被俄羅斯間諜追蹤對他而言并不算什么。他說:“我設計這個工具的目的是為了向微軟證明這不是一個理論問題,這是一個真正存在的漏洞。要是沒有真實的數據,沒有可怕的數據,他們永遠不會做任何改進的事情。”
參考鏈接
“德爾皮在黑客論壇中看到中國用戶在討論 Mimikatz,并試圖對其進行逆向工程” 文中提到的是 “看雪論壇” 中的帖子
“逆向sekurlsa.dll_實現讀內存獲得開機密碼” https://bbs.pediy.com/thread-156643.htm
“可怕的神器:抓取windows明文密鑰–mimikatz” https://bbs.pediy.com/thread-149236.htm
德爾皮(Benjamin Delpy)的博客 http://blog.gentilkiwi.com/
Mimikatz項目地址 https://github.com/gentilkiwi/mimikatz