雖然現在網上有很多開源的軟件可以幫助你解密那些存儲在GoogleChrome瀏覽器中的密碼,但是這些軟件幾乎只支持在Windows操作系統下使用。那么對于我們這些Mac用戶來說,當我們需要快速導出Chrome中存儲的全部密碼時,我們該怎么做呢?
直接進入正題
其中最常見的一種做法就是打開Chrome瀏覽器,選擇“瀏覽器設置”,點擊“管理密碼”,然后你將會看到如下圖所示的界面。接下來,你就可以在這里管理你的密碼了。
點擊了“顯示密碼”之后,系統此時便會要求你輸入本地用戶的密碼。但是,像這種極其不方便的方法,誰還想去使用它呢?
為了解決這個問題,為了避免被要求輸入用戶密碼,我們可以直接查詢GoogleChrome瀏覽器的SQL數據庫。在macOS平臺下,這個數據庫的存儲路徑為“~/Library/ApplicationSupport/Google/Chrome/Profile */Login Data”。
對于每一個存儲在GoogleChrome瀏覽器中的密碼來說,每一條密碼數據都是以類似下圖所示的這種數據格式存儲在“LoginData”數據庫中的:
我們可以從上圖中看到,對于這個用戶而言,其密碼就是那段以“v10”開頭的亂碼,這段密碼明顯已經被加密了。你可能想問了,它采用的到底是哪一種加密算法呢?為了解答這個問題,我們可以參考GoogleChromium的源代碼。在其源代碼中,我們發現了下面這段話:
加密機制:AES-128-CBC(使用固定鹽值和固定迭代次數)。解密密鑰是一個PBKDF2密鑰,該密鑰通過下列數據生成:
1. 鹽值:鹽值固定不變(saltysalt);
2. 迭代次數:在對稱密鑰的生成過程中進行1003次迭代計算;
3. 哈希函數:sha1;
4. 密碼:密碼是整個環節中最重要的一個部分了。我們所要獲取的,就是存儲在“ChromeSafe Storage”中的憑證數據,而這部分數據又保存在用戶的keychain之中。實際上,我們在訪問這個安全存儲密鑰的時候并不需要獲取到用戶的keychain密碼。因為我們可以在終端中使用命令“securityfind-generic-password -ga Chrome”來直接調用macOS的安全處理進程,此時系統將會顯示如下圖所示的對話框:
如上圖所示,我們在沒有輸入用戶密碼的情況下獲取到了Chrome的安全存儲密鑰。沒錯,就是這么簡單!
加密與解密
之前我們也已經討論過了,其中的AES解密密鑰是通過PBKDF2密鑰(‘sha1’,safeStorageKey, ‘saltysalt’, 1003)來生成的。既然我們已經獲取到了這些數據,那么接下來我們怎么利用這些數據來自動化地從數據庫中提取信息并解密所有的數據條目呢?沒錯,我們要使用的就是Python,毫無疑問,Python永遠是最贊的!而且更棒的地方就在于,macOS已經幫我們安裝好了Python的運行環境了,所以我們無需再去配置各種各樣亂七八糟的東西了,我們可以直接在任何一臺macOS設備上運行Python腳本。只需五秒鐘,一切都可以搞定!
如果你想要使用Python來進行AES解密的話,我們通常都會使用這個功能強大的第三方加密庫來完成【傳送門】,但悲劇的地方就在于,它并不是一個原生代碼庫。所以我打算使用OpenSSL命令行工具來發送一個采用base64編碼的加密密碼副本和PBKDF2解密密鑰的十六進制副本。在這個過程中我還使用到了一些其他的工具,這些工具可以在我的Github代碼庫中獲取到【傳送門】。輸出信息如下圖所示:
我們可以從上圖中看到,Google并沒有對這些keychain數據進行加密保護。實際上,當用戶在除了Chrome瀏覽器以外的地方訪問這些密碼的時候,Google完全可以要求用戶提供Keychain密碼,但是很明顯他們并沒有這樣做!
如果Google想要修復這個問題的話,那么他們在最初創建安全存儲密鑰的時候就得要求用戶輸入密碼以驗證登錄信息。除此之外,蘋果公司在向開發者提供這類功能的時候,也應該謹慎考慮安全性的問題。
總結
各位同學可以直接使用這個程序來解密macOS平臺下的Chrome密碼【工具下載】。這是目前唯一一個針對macOS/OS X平臺的Chrome密碼解密軟件,用戶無需配置任何的依賴環境即可直接使用這款軟件。如果你動手能力很強的話,你也可以添加一些額外的功能代碼,讓這款工具幫助你自動提取密碼,然后將其上傳至遠程FTP服務器中,并清除你在目標主機中的所有操作痕跡。這樣一來,它就變成了一款黑客工具了,這就是開源的魅力。