很多人都知道badusb,可以用u盘攻击或者开发板都可以实现,比如TEENSY和橡皮鸭,今天我们要实现的是用你的安卓手机实现HID攻击测试。由于usb通信需要修改内核才能实现所以需要更换内核。

Step 1: 准备工作

1.首先需要一部安卓手机(为了避免不必要的折腾您的手机最好在下面连接的列表里面,如果不在,需要您具备编译对应安卓内核的条件,具体如何编译内核github中给出了概述,如果您有什么问题可以私下联系我。)

https://github.com/pelya/android-keyboard-gadget

2.root您的手机,这里为了避免麻烦(我试过自己的moto重新编译内核但是失败了)我找到了一部在列表里面的手机红米1s

kernel2.png

red1.png

3.安装Custom Recovery(twrp or clockworkmod)

红米1S安装recovery

http://www.muzisoft.com/shuaji/76719.html

4.找到红米1s的kernel刷进去(因为本文重点不是刷机,不做详述)看到kernel已经变成the beast kernel

kernel.png

Step 2:下载文件

clone 或下载zip文件

https://github.com/anbud/DroidDucky

首先使用usb连接你的手机到电脑,使用ADB工具,这里我使用的是某刷机软件里面自带的adb工具

捕获1.PNG

捕获.PNG

Step 3: 找到一个适合你的payload

badusb payload

语法详解

经过分析,Duckyscript可以经过简单修改就能运行metasploit payload,由于我这里有现成的环境,我就是用了venom 工具生成了一段简单的powershell代码只需要我的badusb 设备能够运行 win+r 键后运行cmd窗口输入我的 powershell代码就能反弹一个shell

这里给出一个相当不错的免杀payload工具venom

venom 项目

生成payload后需要注意

1.修改为Duckyscript,并且要转换为unix格式的文件(由于回车换行,win和unix之间存在区别)

Edit > EOL Conversion > UNIX/OSX Format 

hid-keyboard-attack-with-android-not-kali-nethunter.w1456.jpg

2.转换方法


	

REM The next three lines execute a command prompt in Windows

GUI r STRING cmd ENTER STRING PAYLOADSTRING ENTER

这里 GUI r 其实对应的 键盘操作就是 win+r (打开“运行”窗口)

STRING cmd 输入“cmd” 字符

ENTER 回车(这时就打开了命令行)

PAYLOADSTRING 就是通过venom工具生成的powershell payload

3.生成的payload 保存为txt文件用adb 工具push到手机/data/local/tmp 目录下面

4.运行payload 需要bash命令支持,由于我的红米手机没有bash,如果你喜欢折腾可以自己编译属于你手机的bash

这里我给出一个简单的办法请下载

bash 下载

下载安装完毕后,找到bash运行的目录,把对应的bash文件移动到/data/local/tmp下面,并保证有可执行的权限

这里需要注意的是bash需要较高版本,我找到一个3.2的bash是不能用的,经过测试这个是4.2运行没有问题

现在万事具备,只欠东风。

Step 4: Running the Payload

1.在你的攻击机上运行msf并开始监听吧。

2.使用usb连接到你的pc

3.在手机端运行你的命令行(可以安装一个模拟终端的app)

获取超级权限

sucd data/local/tmp./bash droidducky.sh filename.txt 

注意我的手机是没有bash的所以使用的是./,不知什么原因我的手机开始可以在/system/bin中写入bash文件,但后来一直提示文件系统是只读系统,没办法就移到了/data/local/tmp 目录下。

这时你就可以看到靶机在迅速的打开cmd窗口并运行你的payload,因为venom生成的payload字符串太长。这是一个很大的弊端

结语:

1.可以弄一个安卓应用监听usb插入的消息,一旦插入usb就执行payload,这个实现起来还是不难的

2.payload 字符串不能太长所以可以采用Duckyscript给出的payload 用nc来监听,另外使用js后门生成的payload非常短,可以迅速返回一个shell,使用这个shell加载功能更多的payload也不错(或者使用剪切板应该速度更快。。。)

3.编译内核的方式部分手机厂商提供了源码,值得一试。

* 本文原创作者:7763sea