本文创作背景 源于谷歌浏览器提示密码被泄露 并且某站很快收到了异地企图登录的提醒。 当即怀疑是不是谷歌浏览器保存的密码不安全,最后查阅诸多资料 并找到一个go语言编写的开源项目进行研究,虽然最终不能确定密码是如何泄露的 但研究结论还是让人不由感慨互联网的不安全。
文章目录
- go项目如何启动
- 为什么说cookie不安全
go项目如何启动
-
下载goland ,goland是jetbrains家族的IDE,IDEA和pycharm的亲兄弟,博主用的是2021版 为什么不用新版你懂的
-
下载golang, 博主找到的go项目是基于1.19的,经了解 1.19和1.18差距不大,所以一身反骨的博主下载的1.18版本 并且完美运行(golang1.18有点类似jdk1.8 有了一次很大的改动)
-
配置golang的环境变量
PATH里面添加上:
- 用goland打开go项目,goland首次使用时 有30天试用期,但必须先登录jetbrains账号
并在goland中配置go路径
-
重点来了, 如果go项目基于github的依赖比较多 因为国内网络问题大概率是会下载失败的
在Teminal中输入
go env
修改代理:
go env -w GOPROXY=https://goproxy.cn,direct
有的时候会失败 可以修改为:
go env -w GOPROXY=https://goproxy.io
或
go env -w GOPROXY=https://mirrors.aliyun.com/goproxy
-
检查go项目是否有go.mod文件
-
找到main函数 点执行等待依赖下载并启动完成即可
为什么说cookie不安全
很多同学喜欢用浏览器的保存密码功能,但方便的同时也很不安全;当问及为什么不安全的时候,大多数人都知道四个字概况:对称加密。
考虑到用户需要看到自己的密码 所以不得不对称加密,那么不安全的细节又是如何的呢?
重要提示: 本教程旨在提供学习测试交流,请勿违法使用,任何后果由恶意使用者自行承担
我们从github找到开源项目: HackBrowserData
-
分析整体代码逻辑
-
重点步骤在于如何获取浏览器数据 我们跟进BrowsingData方法
解释都写在注释里面了:
再来看看DPAPI里面做了什么:
-
至此masterKey已获取,接下来的中间调用步骤省略,我们看核心步骤:
至此明文密码已经拿到,接下来回到Output方法输出即可
明文密码、历史记录、书签等等信息 都能被获取到
整体流程:
从windows本地文件夹 获取ChromiumKey
将ChromiumKey及ChromiumKey中的秘钥取出,进行base64编码
将编码后的结果 与调用windows自带的dll的结果 进行某种格式的数据处理 得到masterKey
查询sqlite (tips:谷歌浏览器的账号密码 会存于浏览器内置的sqlite中) 得到密码
通过masterKey 对密码进行aes解密 得到明文密码
将明文密码导出
通过这些分析,不难看出 账号密码是由windows和谷歌浏览器共同维护的,谷歌获取密码 中间也是有多重算法,规则也较为复杂,但是解密源码就这么被开源出来了,并且在网上广为流传,不由让人好奇,规则 包括调用windows dll文件后的处理 是如何泄露的,是内鬼泄露还是被大神给破解 就不得而知了
应对方法就是杀毒软件了,相信主流的安全软件都可以做到,但是黑客和网安本身就是一组矛盾,有查杀就有免杀。安全软件并非完全安全 何况电脑裸奔; 强烈建议电脑不要没有安全软件去选择裸奔。
火绒似乎有自定义规则控制对文件夹读写的权限,个人认为这个是上策, 因为控制了文件读写,本地文件夹的信息才能更好的避免泄露 具体教程需要自行搜索。