在今年早些时候,FB就对Bash Bunny做了相关的报导。这款号称“世界上最先进的USB攻击工具”的Bash Bunny,是否真的像其所说的一样是款渗透神器呢?下面,我将通过实例演示如何利用Bash Bunny QuickCreds模块,获取到目标主机上的登陆凭据。

简介

很幸运,我得到了一个Bash Bunny的硅谷优惠码,并非常期待Bash Bunny的表现。

首先,对于那些不熟悉该类攻击的人,我强烈推荐你可以先去阅读下mubix的原始帖子

配置

首先,我需要将payload加载到设备上并使它能正常工作。

我在Windows和Mac上的尝试都遇到了许多麻烦,最终我在Kali VM成功执行了Bunny。

随着你的[sic]VM被关闭,进入到设置>端口>USB 启用usb 3.0

将bunny切换到状态1;插入并等待它完全加载

添加一个usb过滤器(+图标)并添加设备(Linux 3.4.39 sunxi_usb_udc RNDIS/Ethernet Gadget [0333]驱动)

弹出bunny

将开关调到状态2和3,然后重复步骤2-4

打开你的vm,并且保持bunny未插入状态

在vm上wget bb.sh脚本

运行`sudo bash bb.sh`并按照引导设置

当bunny不在arm模式(位置3),在第三步后插入bunny

如果你操作正确的话,脚本会在这个阶段“检测”bunny

最后一步是再次使用你刚刚的设置“connect”主菜单后按“C”

现在你应该能够ssh到bunny,并可通过ping命令测试连接状态

DNS问题

完成上述配置步骤后,我可以SSH连接到我的bunny。

不幸的是,我无法正确下载任何内容或是更新它。

经过一番折腾后,我查看了一下在设备上的resolv.conf文件。

root@bunny:~# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) () bytes of data.
bytes from 8.8.8.8: icmp_seq= ttl= time=26.7 ms
^C
--- 8.8.8.8 ping statistics ---
packets transmitted, received, % packet loss, time 0ms
rtt min/avg/max/mdev = 26.766/26.766/26.766/0.000 ms
root@bunny:~# ping google.com
^C
root@bunny:~# cat /etc/resolv.conf
# Dynamic resolv.conf() file for glibc resolver() generated by resolvconf()
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 8.8.8.8
nameserver 8.8.4.4

我发现我的 pfSense 被配置为阻止所有传出的DNS请求。为了后续演示的方便,这里我禁用了我的防火墙规则。

工具安装

在Bash Bunny QuickCreds payload工作之前,我需要在设备上使用Responder。

首先,我将 ToolsInstaller 包添加到switch1有效载荷中。

接下来,我将QuickCreds有效载荷添加到switch2中。

不幸的是,ToolsInstaller的安装仍然失败。

接下来,我手动创建了一个名为pentest的文件夹。

完成创建后,我手动上传了impacket和responder到设备。

但不幸的是,安装依旧失败。

固件更新

至此我意识到可能是固件的问题,因此我决定更新我的固件版本。

进入下载页面,我发现目前最新的版本为1.3。

我按照页面的更新说明,完成了对设备上的固件更新操作。

成功安装

接着,我将Responder移动到了/tools/responder并尝试了快速攻击。

但问题再次出现,Bunny并没有显示攻击成功的绿光,我相信这肯定是Responder的问题。

最后,我找到了.deb文件,并成功安装了Responder!

执行

现在到了最激动人心的时刻了,我决定拿我女朋友加密锁定的笔记本电脑作为我的渗透目标。

我将bunny插入了她的笔记本,可以看到琥珀色的灯光。

没过几秒钟灯光颜色变成了绿色,说明我们的payload成功被执行。

检查设备后我们发现,多了一个包含NTLM哈希的文件。

哈希破解

根据女友提供给我的一小点提示,我开始尝试破解哈希密码。

Rays-MacBook-Pro:testing doyler$ hashcat -a  -m  -i --increment-min= --increment-max= hash.txt ?l?l?l?l?l?l?l?l?l?l
hashcat () starting... OpenCL Platform #: Apple
=========================
* Device #: Intel(R) Core(TM) i7-6920HQ CPU @ .90GHz, skipped.
* Device #: Intel(R) HD Graphics , / MB allocatable, 24MCU
* Device #: AMD Radeon Pro Compute Engine, / MB allocatable, 16MCU Hashes: digests; unique digests, unique salts
Bitmaps: bits, entries, 0x0000ffff mask, bytes, / rotates Applicable optimizers:
* Zero-Byte
* Not-Iterated
* Single-Hash
* Single-Salt
* Brute-Force Watchdog: Temperature abort trigger disabled.
Watchdog: Temperature retain trigger disabled. The wordlist or mask that you are using is too small.
This means that hashcat cannot use the full parallel power of your device(s).
Unless you supply more work, your cracking speed will drop.
For tips on supplying more work, see: https://hashcat.net/faq/morework Approaching final keyspace - workload adjusted. Session..........: hashcat
Status...........: Exhausted
Hash.Type........: NetNTLMv2
Hash.Target......: GIRLFRIEND::Girlfriend-THINK:dexxxxx...
Time.Started.....: Fri Jul :: ( secs)
Time.Estimated...: Fri Jul :: ( secs)
Guess.Mask.......: ?l []
Guess.Queue......: / (10.00%)
Speed.Dev.#.....: H/s (.45ms)
Speed.Dev.#.....: H/s (.00ms)
Speed.Dev.#*.....: H/s
Recovered........: / (0.00%) Digests, / (0.00%) Salts
Progress.........: / (100.00%)
Rejected.........: / (0.00%)
Restore.Point....: / (0.00%)
Candidates.#....: q -> x
Candidates.#....: [Generating] Session..........: hashcat
Status...........: Running
Hash.Type........: NetNTLMv2
Hash.Target......: GIRLFRIEND::Girlfriend-THINK:dexxxxx...
Time.Started.....: Wed Jul :: ( sec)
Time.Estimated...: Wed Jul :: ( secs)
Guess.Mask.......: ?l?l?l?l?l?l?l?l?l?l []
Guess.Queue......: / (100.00%)
Speed.Dev.#.....: 12865.7 kH/s (.11ms)
Speed.Dev.#.....: 60526.9 kH/s (.08ms)
Speed.Dev.#*.....: 73392.6 kH/s
Recovered........: / (0.00%) Digests, / (0.00%) Salts
Progress.........: xxxxxxxx/ (xx%)
Rejected.........: / (0.00%)
Restore.Point....: xxxxxxxx/ (xx%)
Candidates.#....: xxxxxxxxxx -> xxxxxxxxxx
Candidates.#....: xxxxxxxxxx -> xxxxxxxxxx GIRLFRIEND::Girlfriend-THINK:dexxxxx:xxxxx:xxxxx:(password here)

总结

在成功破解密码后,我成功登陆到了我女友的笔记本。

这是我在bunny上成功使用的第一个payload。

最后,如果你有其他关于payload更好的想法或建议,或尝试编写一些个人的payload,那么欢迎与我取得联系并分享你的成果。

原文链接:https://www.doyler.net/security-not-included/bash-bunny-quickcreds

使用Bash Bunny从被锁定的系统抓取登陆凭据的更多相关文章

  1. Java模拟登录系统抓取内容【转载】

    没有看考勤的习惯,导致我的一天班白上了,都是钱啊,系统也不发个邮件通知下....     为了避免以后还有类似状况特别写了个java模拟登录抓取考勤内容的方法(部分代码来自网络),希望有人修改后也可以 ...

  2. C#winform窗体利用系统抓取关闭按钮事件

    const int WM_SYSCOMMAND = 0x112;        const int SC_CLOSE = 0xF060;        const int SC_MINIMIZE = ...

  3. #在FLAT模式下,需要设置flat子网,VM的IP从这个设置的子网中抓取,这时flat_injected需要设置为True,系统才能自动获得IP,如果flat

    #在FLAT模式下,需要设置flat子网,VM的IP从这个设置的子网中抓取,这时flat_injected需要设置为True,系统才能自动获得IP,如果flat子网和主机网络是同一网络,网络管理员要注 ...

  4. 一淘搜索网页抓取系统的分析与实现(3)—scrapy+webkit & mysql+django

    图 scrapy+webkit: 如结构图③. scrapy不能实现对javascript的处理,所以须要webkit解决问题.开源的解决方式能够选择scrapinghub的scrapyjs或者功能更 ...

  5. 一个简易的Python全站抓取系统

    很长时间没有更新博客了,前一阵时间在做项目,里面有一个爬虫系统,然后就从里面整理了一点代码做成了一个简易的爬虫系统,还挺实用的. 简单说来,这个爬虫系统的功能就是:给定初始的链接池,然后设定一些参数, ...

  6. 【转】Linux系统抓包命令tcpdump使用实例

    tcpdump是linux命令行下常用的的一个抓包工具,记录一下平时常用的方式,测试机器系统是ubuntu 12.04. tcpdump的命令格式tcpdump的参数众多,通过man tcpdump可 ...

  7. Python 爬虫-抓取中小企业股份转让系统公司公告的链接并下载

    系统运行系统:MAC 用到的python库:selenium.phantomjs等 由于中小企业股份转让系统网页使用了javasvript,无法用传统的requests.BeautifulSoup库获 ...

  8. bash编程之 ~制作Mini Linux系统~

    说明1:在一个Linux宿主机系统上,通过以上步骤,可以制作一个微小的Linux系统(可以放置在U盘中等),然后在其它的主机(虚拟机或者物理机)上运行,以实现最小化定制系统的目的. 说明2:上图中黑色 ...

  9. 如何锁定Android系统CPU的频率

    接触到了Android系统的Performance测试,所以有锁定CPU的需求: 由于要首先读取到此系统所支持的CPU频率,之后再所支持的频率中选取你想要的频率,之后进行锁定. 这个过程,手动也是可以 ...

随机推荐

  1. erlang下lists模块sort(排序)方法源码解析(一)

    排序算法一直是各种语言最简单也是最复杂的算法,例如十大经典排序算法(动图演示)里面讲的那样 第一次看lists的sort方法的时候,蒙了,几百行的代码,我心想要这么复杂么(因为C语言的冒泡排序我记得不 ...

  2. 现代 PHP 新特性 —— 内置的 HTTP 服务器 (转)

    转自 https://laravelacademy.org/post/4422.html 从 PHP 5.4.0 起,PHP内置了Web服务器,这对于认为需要Apache或Nginx才能预览PHP应用 ...

  3. 在html后面拼接字符串后页面的跳转

    我就举一个简单的栗子,主要目的是实现页面跳转时后面获取的参数 <div class="active"> 点击我可以跳转 </div> 样式就随便写一下 之后 ...

  4. Java使用Redis--jedis

    参考:菜鸟教程 http://www.runoob.com/redis/redis-java.html 1.Java 使用 Redis 开始在 Java 中使用 Redis 前, 我们需要确保已经安装 ...

  5. 在Windows Server 2012下安装 php memcache模块

    一.环境描述 操作系统:Windows Server 2012 R2 Datacenter Web服务提供软件:Microsoft IIS 8.5.9600.16384 IIS调用PHP方法:增加处理 ...

  6. jq里验证插件的自定义方法Jquery.validator.addMethod()示例

    最近写验证的时候感觉原生的验证谢了一遍又一遍,就想到了“不要重复造轮子,学会管理自己的工具库”这句名言,于是尝试用jq的validator. 用过又发现需要自定义方法去验证,于是去查官网,写了Jque ...

  7. 拷贝的表的SQL语句 SELECT INTO 和 INSERT INTO SELECT的用法与区别

    一.select   into  from 语句形式为:Insert into Table2(field1,field2,...) select value1,value2,... from Tabl ...

  8. 李航《统计学习方法》CH02

    CH02 感知机 前言 章节目录 感知机模型 感知机学习策略 数据集的线性可分性 感知机学习策略 感知机学习算法 感知机学习算法 感知机学习算法的原始形式 算法的收敛性 感知机学习算法的对偶形式 导读 ...

  9. .NET Core和Swagger 生成 Api 文档转

    阅读目录 1.引用 2.打开startup.cs文件 3.设置XML注释 4.运行结果 5.主要问题的解决办法 6.可以自定义UI 前言 最近写了好多Web api, 老大说太乱了,要整理一下,使用S ...

  10. 转载:dos批处理中路径获取

    在DOS的批处理中,有时候需要知道当前的路径. 在DOS中,有两个环境变量可以跟当前路径有关,一个是%cd%, 一个是%~dp0.      这两个变量的用法和代表的内容是不同的.  1. %cd% ...