• 渗透技巧-横向渗透-导出Firefox等浏览器中保存的密码


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

    • 密码保存方式
    • 原理介绍
    • 常用的导出工具
    • 利用思路

    由于浏览器会记录用户保存的用户名和密码用于下次自动登录。

    包括以下信息:

    • Website address
    • Username
    • Password
    • Created
    • Last modified
    • Last used
    所有记录保存在同一个文件中,具体位置为:
    %APPDATA%MozillaFirefoxProfilesxxxxxxxx.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%MozillaFirefoxProfiles*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:	estpasswords.html"

    结果保存在c: estpasswords.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:UsersaAppDataRoamingMozillaFirefoxProfiles5a4gs6zh.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:UsersaAppDataRoamingMozillaFirefoxProfiles5a4gs6zh.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: estdata1

    使用-profile参数启动Firefox:

    firefox.exe -profile C:	estdata1

    输入正确的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%MozillaFirefoxProfiles*logins.json /s /b

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

    dir %APPDATA%MozillaFirefoxProfiles*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%MozillaFirefoxprofiles.ini
    • %APPDATA%MozillaFirefoxProfilesxxxxxxxx.default中的文件

    使用firefox_decrypt.py,命令示例:

    firefox_decrypt.py C:	estdata1

    对于普通用户来说,为了增加密码的安全性,建议设置Master Password

    大佬的另外两篇文章:

    渗透技巧——导出Chrome浏览器中保存的密码

    通过Network Security Services导出Firefox浏览器中保存的密码

    为美好的生活奋斗!
  • 相关阅读:
    EF框架开发后台错误问题集合
    如何实践MVP+RxJava+Retrofit(1)
    Android的FixScrollView自定义控件
    那些React-Native踩过的的坑
    P3105 [USACO14OPEN]公平的摄影Fair Photography
    模板合集
    关于最近情况的说明
    落谷P3941 入阵曲
    51nod 1952 栈
    BZOJ 2298: [HAOI2011]problem a
  • 原文地址:https://www.cnblogs.com/ethtool/p/12507649.html
Copyright © 2020-2023  润新知