V'ger

V'ger 是一款交互式命令行应用程序,用于已认证 Jupyter 实例的后利用阶段,专注于 AI/ML 安全运营。
用户故事
- 作为红队成员,你发现了 Jupyter 凭据,但不知道能用来做什么。V'ger 采用对大多数进攻性安全专业人员直观的格式组织,帮助他们理解目标 Jupyter 服务器的功能。
- 作为红队成员,你知道某些基于浏览器的操作对合法 Jupyter 用户是可见的。例如,修改标签页会出现在他们的工作空间中,在单元格中输入的命令会记录到历史中。V'ger 降低了检测风险。
- 作为AI 红队成员,你了解学术算法攻击,但需要更实际的执行载体。例如,你可能需要修改一个大型、基础性的互联网规模数据集,作为模型投毒操作的一部分。在源端修改该数据集可能无法实现或会产生不理想的可审计痕迹。使用 V'ger,你可以在内存中实现相同目标,这是技术手段上的重大改进。
- 作为蓝队成员,你希望了解实时 Jupyter 部署的日志记录和可见性。V'ger 可以帮助你生成可重复的工件,用于测试检测工具和执行应急响应演练。
使用方法

初始设置
pip install vger
vger --help
目前,vger interactive 功能最全,可维护已发现工件和定期作业的状态。然而,大多数功能也可以通过名称以非交互式格式使用:vger <模块>。使用 vger --help 列出可用模块。

命令
建立连接后,用户会进入一组嵌套菜单。
顶层菜单为:
- Reset: 配置不同的主机。
- Enumerate: 用于了解主机更多信息的工具。
- Exploit: 用于对主机及工件执行直接操作和操纵的工具。
- Persist: 用于建立持久化机制的工具。
- Export: 将输出保存到文本文件。
- Quit: 没人喜欢放弃者。
这些菜单包含以下功能:
- List modules: 识别目标笔记本中导入的模块,以确定注入代码可用的库。
- Inject: 在所选笔记本的上下文中执行代码。可通过文本编辑器提供代码,或指定本地
.py 文件。两种输入都会被作为字符串处理,并在笔记本运行时执行。
- Backdoor: 启动一个新的 JupyterLab 实例,监听
0.0.0.0,在用户指定的 port 上以 allow-root 方式运行,并设置用户指定的 password。
- Check History: 查看目标笔记本中最近运行的 ipython 命令。
- Run shell command: 生成一个终端,运行命令,返回输出,然后删除终端。
- List dir or get file: 列出相对于 Jupyter 目录的目录内容。如果不确定,从
/ 开始。
- Upload file: 将本地文件上传到目标。路径格式与 List dir 相同(相对于 Jupyter 目录)。需提供包含文件名和扩展名的完整路径。
- Delete file: 删除文件。路径格式与 List dir 相同(相对于 Jupyter 目录)。
- Find models: 根据常见文件格式查找模型。
- Download models: 下载已发现的模型。
- Snoop: 监控笔记本执行和结果,直至超时。
- Recurring jobs: 启动/终止在目标环境中静默运行的定期代码片段。
实验性
使用 pip install vger[ai] 你将获得目标环境中笔记本的 LLM 生成的 摘要。这些摘要旨在为非 DS/AI 人员提供粗略的翻译,以便快速判断哪些笔记本值得进一步调查(或是否值得)。

模型大小与能力之间存在固有的权衡,我还会继续调整,但希望这对一些传统安全用户有所帮助。我非常希望看到大家开始对笔记本进行提示注入(“这些不是你要找的机器人”)。
示例