这个工具将从 Google Chrome 浏览器中提取 Cookie, 是一个. NET 程序集, 可以在 C2 中通过工具如 https://github.com/nettitude/PoshC2.git 使用或 CobaltStrike 的命令. run-exe execute-assembly
项目地址是 https://github.com/m0rv4i/SharpCookieMonster.git .
用法
只需将站点输入即可.
SharpCookieMonster.exe [https://sitename.com] [Chrome-debugging-port] [user data dir]
可选的第一个参数分隔 Chrome 启动时最初连接的网站 (默认为 https://www.google.com/ ).
第二个可选参数指定用于启动 Chrome 调试器的端口 (默认为 9142).
最后, 可选的第三个参数指定用户数据目录的路径, 可以覆盖该路径以访问不同的配置文件 (默认为%APPDATALOCAL%\ Google \ Chrome \ User Data).
如您所见, 它可用于提取 session,httpOnly 并通过 C2 传输 cookie. 它还已作为模块添加到 PoshC2 中, 并设置了自动加载和别名功能, 因此可以使用来简单地运行它 sharpcookiemonster .
这也适用于 CobaltStrike 的, 可以使用 execute-assembly .
还值得注意的是, 您不需要任何特权访问权限即可执行此操作, 只需在存储会话的计算机上在该用户上下文中执行代码即可.
它是如何工作的?
在后台, 这是通过首先启动 Google Chrome 来实现的. 我们首先枚举任何正在运行的 Chrome.exe 进程以提取其镜像路径, 但是如果失败, 则默认为 C:\ Program Files(x86)\ Google \ Chrome \ Application \ Chrome.exe. 然后, 我们启动该可执行文件, 设置适当的标志并将该进程的输出重定向到我们的 stdout, 以便即使在 C2 通道上运行它时也可以查看它是否出错.
该 --headless 标志意味着 Chrome.exe 实际上将在没有任何用户界面的情况下运行, 但可以使用其 API 进行交互. 对于红队成员而言, 这是完美的选择, 因为它将仅作为另一个 Chrome.exe 进程出现, 而不会向用户显示任何内容. 然后, 通过 --remote-debugging-port 标记为此过程启用远程调试, 然后使用将数据目录指向用户的现有数据目录 --user-data-dir .
启动
启动后, 我们将检查进程是否正在运行, 并等待调试器端口打开.
然后, 我们可以在该端口上与 API 交互以获取 websocket 调试器 URL. 该 URL 允许程序通过 websockets 上的 API 与 Chrome 的 devtools 进行交互, 从而为我们提供了这些 devtools 的全部功能. 所有这些操作都是在受害人的计算机上本地完成的, 因为该二进制文件正在运行, 而无界面的 Chrome 进程正在运行.
然后, 我们可以发出请求以检索该配置文件的缓存中的所有 cookie, 并将其返回给操作员.
编译
如果您想自己构建二进制文件, 只需克隆它并在 Visual Studio 中构建它即可.
该项目已设置为与. NET 3.5 兼容, 以便与安装较旧版本. NET 的受害人兼容. 但是, 为了使用 WebSockets 与 Chrome 进行通信, 添加了 WebSocket4Net 程序包.
如果要在 C2 上运行此命令 (例如使用 https://github.com/nettitude/PoshC2 的 sharpcookiemonster 命令或通过 CobaltStrike 的命令), 请 execute-assembly 使用 ILMerge 将生成的可执行文件与依赖库合并.
例如, 首先重命名原始二进制文件, 然后运行:
ILMerge.exe /targetplatform:"v2,C:\Windows\Microsoft.NET\Framework\v2.0.50727" /out:SharpCookieMonster.exe SharpCookieMonsterOriginal.exe WebSocket4Net.dll SuperSocket.ClientEngine.dll
来源: http://www.tuicool.com/articles/nU3QVrV