发布于2022年11月8日2年前 0x00 前言 上一篇文章《渗透技巧——导出Firefox浏览器中保存的密码》介绍了常用的导出Firefox浏览器密码的方法,其中firefox_decrypt.py使用NSS(网络安全服务)进行解密,支持key3.db和key4.db的主密码解密,本文将介绍其中涉及的原理,编写测试代码,验证主密码,分享脚本编写的细节。 0x01 简介 本文将介绍以下内容: 网络安全服务简介 通过python调用网络安全服务导出Firefox浏览器密码 开源python脚本 爆破脚本的实现 0x02 Network Security Services简介 网络安全服务(NSS)是一组支持安全客户端和服务器应用程序跨平台开发的库。 参考文件: https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS Firefox使用NSS作为加密算法和安全网络协议的基本库,PKCS#11标准用于凭证加密和解密。 参考文件: https://developer . Mozilla . org/en-US/docs/Mozilla/Projects/NSS/PKCS11 0x03 通过Python调用Network Security Services导出Firefox浏览器的密码 参考代码: https://github.com/unode/firefox_decrypt https://github . com/Kerisa/browser password dump/blob/master/Mozilla pwd . py Windows系统下的解密过程如下: 加载网络安全服务需要Nss3.dll 调用NSS_Init()进行初始化。 调用PK11_GetInternalKeySlot()获取内部插槽(用作身份验证主密码) 调用PK11_CheckUserPassword()来验证主密码。 读取logins.json以获取加密数据 调用PK11SDR_Decrypt()进行解密 需要注意的具体问题如下: 1. Python和Firefox的版本需要保持一致 在64位系统下,32位和64位都需要。 2. 将Firefox的安装路径加入到环境变量,便于调用 Firefox的安装目录中有一个我们需要调用的nss3.dll,所以可以选择将Firefox的安装路径添加到环境变量PATH中,对应的python代码如下: 导入操作系统 Firefox path=' C:\ Program Files \ Mozilla Firefox ' OS . environ[' PATH ']=';'。join([firefoxPath,os.environ['PATH']]) 注: 在64位操作系统下,64位Firefox浏览器的默认安装目录是C:\Program Files\Mozilla Firefox,32位Firefox浏览器的默认安装目录是C:\ Program Files(x86)\ Mozilla Firefox。 调用nss3.dll的python代码如下: 导入类型 NssDll=ctypes。CDLL('nss3.dll ') 3. NSS初始化时需要三个文件 位置是:% appdata % \ Mozilla \ Firefox \ profiles \
创建帐户或登录后发表意见