Bella 是一款纯 Python 的 macOS 后渗透数据挖掘工具和远程管理工具。🍎💻
Bella 是一个纯 Python 的 macOS 后渗透数据挖掘工具和远程管理工具。🍎 💻
Bella 是一个健壮的、纯 Python 的 macOS 后渗透和远程管理工具。
Bella(即服务端)是一个基于 SSL/TLS 加密的反向 shell,可以部署在任何运行 macOS >= 10.6 的系统上。Bella 提供以下功能:
模拟 SSH 的伪 TTY [支持大多数功能的 CTRL-C、流式输出、完整的内联 bash 脚本支持、Tab 补全、命令历史等]。
自动安装器! 只需执行二进制文件,Bella 就会处理其余部分——在硬盘上的隐藏位置创建一个持久反向 shell,且可被杀毒软件检测不到。
上传/下载任意文件
反向 VNC 连接
流式传输并保存计算机麦克风输入
通过系统提示进行登录/钥匙串密码钓鱼
通过 iTunes 提示进行 Apple ID 密码钓鱼
iCloud 令牌提取
通过提取的令牌或密码访问用户的所有 iCloud 服务
这包括:iCloud 通讯录、查找我的 iPhone、查找我的朋友、iOS 备份。
Google Chrome 密码提取
Chrome 和 Safari 历史记录提取
发现钥匙串密码后自动解密
macOS 聊天记录
iTunes iOS 备份枚举
详细记录所有 Bella 活动和下载的文件
非常全面的数据存储 Bella 发现的所有信息(令牌、密码等)都存储在运行 Bella 的计算机上的加密 SQL 数据库中。这些信息用于更快地执行功能,以及实现“更智能”的反向 shell。
还有很多其他优秀功能! 试试看就能体验它的实际效果。
以上是在用户权限下可用的部分功能。只要用户处于登录状态且电脑未休眠,只要用户有网络连接,即可随时访问此 shell。
如果我们获得 root 权限,Bella 的能力会大幅提升。
类似于 meterpreter shell 中的 getsystem 功能,Bella 有一个 get_root 函数,它会尝试通过多种方式获取 root 访问权限,包括通过钓鱼获取的用户密码和/或(如果系统存在漏洞)本地提权漏洞。
一旦获得 root 访问权限,Bella 会迁移到 /Library 下的隐藏目录,并将自身加载为 LaunchDaemon。这样一来,只要电脑有网络连接,随时都能远程访问该 Bella 实例。获得 root 后,我们可以执行以下操作:
多用户支持! Bella 会在一个综合性数据库中跟踪计算机上所有活跃用户的信息,并自动切换到当前活跃用户。前述的所有数据提取技术现在均可用于计算机上的每个用户。
解密所有 TLS/SSL 流量并将其重定向到控制中心! [一个漂亮的主动型 MITM 攻击]
禁用/启用键盘和/或鼠标
加载 Insomnia KEXT,在用户合上笔记本时保持连接开启
自动转储 iCloud 令牌和 Chrome 密码 [若 SIP 被禁用,则利用 keychaindump 和 chainbreaker]
大量后台自动化操作
Bella 的强大之处在于,它使后渗透场景中许多繁琐的工作实现了高度自动化。设置和使用非常简单,无需在目标上进行预先配置,也几乎不需要在控制中心进行配置。它利用 令人难以置信的 macOS 和 Python 后台能力,提供流畅的后渗透体验。
下载/克隆此仓库。
运行 ./BUILDER 并输入适当的信息。
搞定!Bella 已准备就绪。只需在 macOS 目标上上传并执行 Bella。
现在在你的 macOS 控制中心上运行 Control Center.py。它不需要依赖(除非你想要 MITM,那样需要 mitmproxy)。它会自动配置,几秒钟后你会看到类似下面的内容。
控制中心会不断更新此列表,最多支持 128 台不同的电脑。
按 Ctrl-C 从列表中选择,然后输入你想控制的电脑编号。你会看到类似下面的界面。
开始运行命令!bella_info 是个好命令。运行 manual 可获取所有命令的完整手册。另外,按两次 Tab 键可以查看可用命令列表。
小提示:Bella 可以通过互联网工作,但需要做一些配置。配置防火墙将 Bella 的端口转发到你的控制中心。其他需要转发的关键端口: 1) VNC - 5500。2) 麦克风 - 2897。3) MITM - 8081
本项目正在积极维护中。请提交所有错误报告、问题、功能请求或相关信息。
Bella 通过将 base64 编码的 C 二进制文件发送到 Bella 服务端/目标,来利用 keychaindump、VNC、麦克风流式传输等功能。我已经在 Payloads/payloads.txt 文件中包含了预编译和编码的文件。如果你想编译自己的版本,编译后请按以下步骤操作:
将它们用 base64 编码,然后按以下顺序放入 payloads.txt 中,每个 payload 之间用换行符分隔。
顺序为:vnc、keychaindump、microphone、rootshell、insomnia、lock_icon、chainbreaker。
Payloads 目录中的 payload_generator 应该能帮助你完成此操作。
如果有任何问题,请告诉我。
https://github.com/juuso/keychaindump
https://github.com/n0fate/chainbreaker
https://github.com/richardkiss/speakerpipe-osx
https://github.com/semaja2/InsomniaX
https://github.com/stweil/OSXvnc
Linux 控制中心支持 [应该只需要稍作调整]
反向 SOCKS 代理,通过服务器隧道传输我们的流量
Firefox 密码解密/提取
按键记录,输出可读 [完成 80%]
检测所有导致阻塞的程序并杀死它们 [完成 85%]
interactive_shell 命令,通过 ptty 模块提供完全交互式的 tty。目前该功能的唯一缺点是无法运行预编程功能。[完成 95%,正在集成预编程功能]
如前所述,Bella 是一个伪 TTY。从根本上说,Bella 的套接字和远程代码执行处理是一个相当抽象的、非常简单的请求-响应套接字。Bella 从服务器接收命令。如果该命令匹配一个预编程的功能(例如 chrome 历史转储),则执行该功能并将响应发送回客户端。客户端会以相同方式处理响应。处理完响应后,它会提示客户端发送下一个命令。
底层套接字的问题非常多,包括但不限于: 3. 程序执行会阻塞并挂起管道,等待永远不会到来的输出(如 sudo、nano、ftp) 4. 不知道 socket.recv() 调用中期望接收多少数据 5. 无法发送 ctrl-C、ctrl-Z 等命令 6. 没有命令历史 7. 崩溃的程序可能会杀死 shell 8. 请求和响应是一一对应的。
Bella 通过以下方式解决上述问题: 4. recv() 和 send() 函数序列化消息长度,并相应循环处理响应/请求。 5. 集成 Readline,提供更像 'tty' 的体验,包括 ctrl-C 支持、命令历史和 Tab 补全。 6. 检测阻塞程序并杀死它们 beta 7. 允许一次发送多条消息,无需客户端提示更多输入(非常适合 ping、tree 等实时更新的命令)。
要了解预编程功能的完整信息,请在连接到服务器后运行 manual 命令。
--