Bash Bunny
前书中我们讨论了 Rubber Ducky 以及它是如何模拟 HID 设备(如键盘)来存储命令。对红队成员而言,Rubber Ducky 仍然是个不错的工具,因为它可以加速 PowerShell 命令的传递,用于社会工程学攻击,并且可以在没有键盘但有 USB 插槽的柜台系统(如 ATM 机、自动售货机等)上做出入侵操作。
Bash Bunny 是 Rubber Ducky 的升级版本。它不仅可以执行 HID 攻击(HID 是 Human Interface Device的缩写,意思是人机接口设备),还有许多其他操作。Bash Bunny 有两个独立的设置选项来分别保存对 BunnyTap 和 QuickCreds 这两种攻击的设置(以及一个额外的管理设置)。这些 payload 可以执行攻击来窃取凭证、进行网络钓鱼、执行 Ducky 攻击、运行 PowerShell 命令、执行扫描和侦察、执行 Metasploit autopwn 等。
译者注 :HID Attack 是最近几年流行的一类攻击方式。HID 是 Human Interface Device的缩写,意思是人机接口设备。它是对鼠标、键盘、游戏手柄这一类可以操控电脑设备的统称。
由于电脑对这类设备缺少严格的检测措施,只是简单的识别设备类型,就允许设备对电脑进行各项操作。所以,通过修改篡改设备反馈信息,就可以很轻松的让电脑将其他设备误认为 HID 设备,从而获取控制权限。尤其是 USB 和蓝牙这类即插即用接口出现,导致 HID Attack 成为重要方式。例如,Bad USB 就是 USB 类攻击的典型代表。
参考资料:WHID Injector:将 HID 攻击带入新境界
前书,我们谈到了使用 KonBoot 来绕过你没有密码的机器。KonBoot 在未加密的机器上工作时,可以从 U 盘启动并覆写本地管理员的密码。尽管这个操作需要完整地重启客户机,但一旦重启完成,你就可以不用借助任何凭证的访问被攻击的机器。我们团队一直使用 KonBoot 并且取得了很好的效果。所以如果你还没尝试过 KonBoot 的话,不妨一试。
但是,仍然有两个理由使你不想选择 KonBoot:
- 此攻击在加密的计算机上不起作用;
- 你可能不想重启受害者的计算机。
那么如何从被锁定的系统中获取信息,以访问网络上的其他内容或者取得哈希、身份凭据?这就是 Bash Bunny 初显身手的地方。
我们将使用 Bash Bunny 运行两种不同攻击的 payload。在我们可以进入该目标组织的机房的前提下,这两种攻击都允许我们从一个被锁定(或未锁定)的系统中获取信息。下面演示如何使用 BunnyTap 和 QuickCreds 。
闯入 Cyber Space Kittens
几个小时后你终于进到 Cyber Space Kittens 部门内。没被人察觉,所以你有几小时的时间来进行入侵行动。你入侵第一台机器,装上 KonBoot 并重启机器,但你注意到这些机器的系统是加密的。然后你转到下一台处于屏幕锁定保护状态的计算机。你两次插入 Bash Bunny,运行 BunnyTap 和 QuickCreds 。几分钟后,通过运行 Responder,QuickCreds 收集到了Net-NTLMv2 哈希值。将它放进 Hashcat 运行,片刻钟就破解了用户密码!在我们无法获取或破解哈希的机器上,BunnyTap 会运行 PosionTap,它可以对常见的站点捕获 cookie,这可以用于对内部应用程序进行配置。我们把这些窃取到的 cookie 保存到我们的攻击者笔记本电脑,将我们的攻击者笔记本电脑连接到他们的网络,用本地保存的窃取到的 cookie 来替换敏感 Web 应用程序中现在的cookie,这样我们就在不知道密码的情况下获取了这些 Web 应用程序的访问权限。
在 Kali 环境下设置 Bash Bunny
- 下载最新固件:https://bashbunny.com/downloads
- 将 Bash Bunny 的开关3(最靠近 USB 端口那个)设置为启用模式。
- 将下载的固件放在 USB 挂载的根目录, 拔出 Bash Bunny,再重新插入,然后等待大约 10 分钟,直到它呈蓝色闪烁。
- 完成后,重新进入 Bash Bunny 并编辑 payloads>switch1>payload.txt 这个文件。
# System default payload
LED B SLOW
ATTACKMODE ECM_ETHERNET STORAGE
- 拔出你的设备
- 在你的 Kali 系统中,设置 Internet 共享:
wget bashbunny.com/bb.sh
chmod +x bb.sh
./bb.sh
Guided Mode(所以选项都保留默认值)
- 在 Bash Bunny 上,打开开关1(离 USB 插孔最远的那个开关)上,然后插入。完成后,请确保连接到 Bash Bunny,在那里你可以看到 Cloud <-> Laptop <-> Bunny image
- 在你的 Kali 机器上,用密码 hak5bunny 通过 SSH 进入 Bash Bunny
登陆进入你的 Bash Bunny
- 在你的 Kali 机器上,用密码 hak5bunny 通过 SSH 进入 Bash Bunny
- ssh root@172.16.64.1
- 让我们更新 Bash Bunny 并安装一些工具
apt-get update
apt-get upgrade
export GIT_SSL_NO_VERIFY=1
git clone https://github.com/lgandx/Responder.git/tools/responder
git clone https://github.com/CoreSecurity/impacket.git/tools/impacket
cd /tools/impacket && python ./setup.py install
apt-get -y install dsniff
- 在 Kali 机器的另一个终端上,安装你想要的所有模块。
git clone https://github.com/hak5/bashbunny-payloads.git /opt/bashbunny-payloads
- 你可以选择任何类型的 payload ,但是在我们的例子中,我们将使用 BunnyTap 和 QuickCreds 这两个 payload 来设置 Bash Bunny
cp -R /opt/bashbunnypayloads/payloads/library/credentials/BunnyTap/* /media/root/BashBunny/payloads/switch1/
cp -R /opt/bashbunnypayloads/payloads/library/credentials/QuickCreds/* /media/root/BashBunny/payloads/switch2/
注意,在 switch1 和 switch2 文件夹中都有一个名为 payload.txt 的文件。而对于每一个这个文件,你需要将其配置为攻击 Windows 或 Mac 计算机。对于 Windows 机器,确保 AttackMode 设置为 RNDIS_ETHERNET,对于 Mac,将 AttackMode 配置为 ECM_ETHERNET。
QuickCreds
QuickCreds 是一个很棒的工具,它使用 Responder 攻击从锁定和未锁定的机器上捕获 NTLMv2 Challenge 哈希。假设你在做一次物理评估,为此你闯进一栋大楼,碰到了一堆锁着的机器。你使用 QuickCreds 的开关插入 Bash Bunny ,每台机器等待大约 2 分钟。Bash Bunny 将接管网络适配器,使用 Response 重新传输任何共享和身份验证请求,然后记录这些数据。它将所有凭证保存到 USB 磁盘上的 loot 文件夹中。
译者注: 如若不懂“NTLMv2 Challenge 哈希”,可以参考此篇:Windows 下的密码 hash——NTLM hash 和 Net-NTLM hash 介绍
参考资料:
- https://github.com/hak5/bashbunny-payloads/tree/master/payloads/library/credentials/QuickCreds
- https://room362.com/post/2016/snagging-creds-from-locked-machines/
BunnyTap
BunnyTap 基于由 Samy Kamkar 开发的知名工具 PoisonTap ( https://www.youtube.com/watch?v=Aatp5gCskvk )。PoisonTap 是一个非常优秀的工具,即使是在锁定的机器上,也可以执行以下操作:
- 通过 USB(或 Thunderbolt )模拟以太网设备。
- 劫持所有来自机器的网络流量(尽管是通过低优先级或未知的网络接口)。
- 从 Web 浏览器中提取和存储位居 Alexa 排行榜最受欢迎的前100,0000 站的 HTTP cookie 和会话。
- 将内部路由器暴露给攻击者,这样攻击者就可以通过连接外网的 WebSocket 和 DNS 重新绑定攻击来远程访问内部路由器。(感谢 Matt Austin 提供的关于“DNS 重新绑定攻击”的思路!)
- 在 HTTP 缓存中,为数十万个域名和常见的 JavaScript CDN URL 安装一个基于 Web 的持久后门。通过缓存投毒的方式,我们可以获取用户对于这些资源的 cookie 。
- 允许攻击者通过在任何有后门的域中获取的用户 cookie,来远程强制用户来发起 HTTP 请求(包括 GET 和 POST)和通过代理传回响应。
- 不需要将机器解锁。
- 后门和远程访问权限即使在设备被移除且攻击者离开后仍然存在( https://samy.pl/poisontap/ )。
从一次物理评估的角度来看,你进入他们的办公室,在每台机器上插上 Bash Bunny,然后等待大约2分钟。Bash Bunny 会让电脑中的所有流量都走 Bash Bunny 转发。如果他们有一个打开并且活动的浏览器(如广告或任何定期更新的页面),BunnyTap 将启动并向所有 Alexa Top 100,0000 网站发出请求。此时,受害者用户若登录到这些站点中的任何一个,BunnyTap 将捕获受害者的所有 cookie。现在,我们可以将这些 cookie 发回到自己的计算机上,把我们的 cookie 替换成他们的,这样即可在不知道他们密码的情况下,冒充他们的身份进入网站。
请务必查看所有 Bash Bunny 的 payload: