滲透技巧-橫向滲透-導出Firefox等瀏覽器中保存的密碼


轉自:https://3gstudent.github.io/

  • 密碼保存方式
  • 原理介紹
  • 常用的導出工具
  • 利用思路

由於瀏覽器會記錄用戶保存的用戶名和密碼用於下次自動登錄。

包括以下信息:

  • Website address
  • Username
  • Password
  • Created
  • Last modified
  • Last used
所有記錄保存在同一個文件中,具體位置為:
%APPDATA%\Mozilla\Firefox\Profiles\xxxxxxxx.default\

注:

xxxxxxxx為8位隨機字母和數字的組合

不同版本的Firefox保存記錄的文件名稱不同,具體區別如下:

  • Version大於等於32.0,保存記錄的文件為logins.json
  • Version大於等於3.5,小於32.0,保存記錄的文件為signons.sqlite

更詳細的文件說明可參考:

http://kb.mozillazine.org/Profile_folder_-_Firefox

不同版本Firefox的下載地址:

http://ftp.mozilla.org/pub/firefox/releases/

定位logins.json文件的位置可通過cmd命令實現,內容如下:

dir %APPDATA%\Mozilla\Firefox\Profiles\*logins.json /s /b

查看logins.json文件的內容,如下圖

其中encryptedUsernameencryptedPassword是加密的內容,解密需要獲得密鑰文件(key和iv)並作3DES-CBC解密

不同版本的Firefox密鑰文件的位置不同,具體區別如下:

  • Version小於58.0.2,密鑰文件為key3.db
  • Version大於等於58.0.2,密鑰文件為key4.db

注:

key3.db和key4.db的版本區別來源於https://github.com/lclevy/firepwd/blob/master/firepwd.py#L236

我在我的測試系統(Win7x64)下,安裝64位Firefox,測試結果有所不同,具體如下:

  • 如果Firefox的版本低於58.0,密鑰文件為key3.db
  • 如果Firefox為更高的版本,密鑰文件為key4.db

默認情況下,當前用戶的權限可以查看Firefox瀏覽器中保存的所有密碼,為了提高安全性,Firefox瀏覽器支持為保存的密碼添加額外的保護:設置Master Password

具體位置如下圖

添加Master Password后,查看保存的密碼需要額外輸入Master Password

解密流程:

  1. 讀取密鑰文件(key4.db或key3.db),獲得key和iv
  2. 讀取記錄文件(logins.json或signons.sqlite)的內容
  3. 如果未設置Master Password,使用key和iv對記錄文件中的加密內容進行3DES-CBC解密 如果設置Master Password,還需要獲得明文形式的Master Password,才能進行解密

 

0x03 導出工具


1.WebBrowserPassView.exe

下載地址:

https://www.nirsoft.net/utils/web_browser_password.html

注:

這個版本不支持命令行操作

命令行版本需要在另一地址下載:

https://www.nirsoft.net/password_recovery_tools.html

命令行下的使用方法:

WebBrowserPassView.exe /LoadPasswordsFirefox 1 /shtml "c:\test\passwords.html"

結果保存在c:\test\passwords.html中,內容如下圖

能獲得完整的信息,包括以下類別:

  • Website address
  • Username
  • Password
  • Created
  • Last modified
  • Last used

不支持使用Master Password解密

2.firepwd.py

地址:https://github.com/lclevy/firepwd

需要安裝依賴包:

pip install pyasn1
pip install pycrypto

能獲得部分信息,包括以下類別:

  • Website address
  • Username
  • Password

命令示例:

firepwd.py -d C:\Users\a\AppData\Roaming\Mozilla\Firefox\Profiles\5a4gs6zh.default-release\

結果如下圖

支持使用Master Password解密

注:

我在自己的測試環境下,firepwd.py只支持key3.db的Master Passwor解密,key4.db的Master Passwor解密存在bug

命令示例:

使用測試文件mozilla_db(key3.db),Master Password為MISC*,命令如下:

python firepwd.py -p 'MISC*' -d mozilla_db/

結果正常,如下圖

 我的測試環境(key4.db),Master Password為12345678,命令如下:

firepwd.py -d C:\Users\a\AppData\Roaming\Mozilla\Firefox\Profiles\5a4gs6zh.default-release\ -p "12345678"

解密存在bug,提示口令失敗,如下圖

3.Lazagne

地址:

https://github.com/AlessandroZ/LaZagne/

導出Firefox瀏覽器的代碼來自https://github.com/lclevy/firepwd

結果同上,如下圖

4.firefox_decrypt.py

地址:https://github.com/unode/firefox_decrypt

使用NSS(Network Security Services)進行解密,支持key3.db和key4.db的Master Password解密

能獲得部分信息,包括以下類別:

  • Website address
  • Username
  • Password

測試結果如下圖

在64位系統下,Python和Firefox的版本需要保持一致(同為32位或者同為64位),否則會提示ERROR - Problems opening 'nss3.dll' required for password decryption

5.Firefox瀏覽器

通過導出配置文件的方式實現

需要獲得記錄文件(logins.json或signons.sqlite)和密鑰文件(key4.db或key3.db),保存在本地的文件夾C:\test\data1

使用-profile參數啟動Firefox:

firefox.exe -profile C:\test\data1

輸入正確的Master Password,成功獲得Firefox瀏覽器保存的信息

0x04 利用思路


如果Firefox設置了Master Password,使用以上工具嘗試導出密碼時,結果會顯示為0條結果,所以需要先讀取記錄文件確認是否存在記錄

可以通過查詢注冊表的方式獲得Firefox的版本,這里可以參考之前開源的代碼:https://github.com/3gstudent/ListInstalledPrograms/blob/master/ListInstalledPrograms.ps1

不同版本的Firefox對應的記錄文件不同,具體區別如下:

  • Version大於等於32.0,保存記錄的文件為logins.json
  • Version大於等於3.5,小於32.0,保存記錄的文件為signons.sqlite

定位logins.json文件的命令如下:

dir %APPDATA%\Mozilla\Firefox\Profiles\*logins.json /s /b

定位signons.sqlite文件的命令如下:

dir %APPDATA%\Mozilla\Firefox\Profiles\*signons.sqlite /s /b

如果存在記錄,接下來就可以使用工具嘗試導出

在離線導出時需要注意以下問題:

1.未設置Master Password

只需要獲得記錄文件(logins.json或signons.sqlite)和密鑰文件(key4.db或key3.db)

使用firepwd.py或者Firefox瀏覽器導入配置文件即可

2.設置Master Password

(1)只獲得記錄文件(logins.json或signons.sqlite)和密鑰文件(key4.db或key3.db)

本地使用Firefox瀏覽器導入配置文件,輸入Master Password

(2)需要獲得完整的配置文件

需要包括以下文件:

  • %APPDATA%\Mozilla\Firefox\profiles.ini
  • %APPDATA%\Mozilla\Firefox\Profiles\xxxxxxxx.default\中的文件

使用firefox_decrypt.py,命令示例:

firefox_decrypt.py C:\test\data1

對於普通用戶來說,為了增加密碼的安全性,建議設置Master Password

大佬的另外兩篇文章:

滲透技巧——導出Chrome瀏覽器中保存的密碼

通過Network Security Services導出Firefox瀏覽器中保存的密碼

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM