1、介绍WIFI DUCKY

它是一个Wi-Fi控制的BadUSB设备来远程执行Ducky Scripts。

使用充当键盘的USB设备来注入攻击,Hak5 的 USB Rubber Ducky 是这种攻击的黑客小工具。它引入了一个简单的脚本语言,称为Ducky Script,这个项目也是这样使用的。

该设备使用 ESP8266 + ATMEGA32U4 创建WIFI信号,进行远程上传、保存和运行脚本进行攻击

但是为什么要添加Wi-Fi,你可能会问。

使用Wi-Fi,您可以远程上传并运行Ducky Script。

只需将设备插入,连接到其Wi-Fi网络,即可完全控制目标机器。

它还给你一个比其他BadUSB更大的优势,你可以测试你的脚本!您不需要将它们复制到micro-sd卡或编译它们。您可以通过web界面直接运行它们,这使得它非常容易测试和改进脚本。

它还为不同的攻击增加了很多可能性。您可以使目标从Wi-Fi网络下载可执行文件,而不是互联网。或者执行不同的攻击并将结果发回。或者打开ESP8266s Wi-Fi上的反向Shell。

等等...有这么多的可能性,赶快动手做起来吧!

2、所需材料:

1.CJMCU-Beetle Leonardo USB ATMEGA32U4

2.ESP8266-12F

3.AMS1117-3.3V电源模块

3、所需软件:

ARDUINO IDE 下载地址:https://www.arduino.cc/en/Main/Software

NodeMCU Flasher 下载地址:https://github.com/nodemcu/nodemcu-flasher

4、接线图:

5、写入固件到ESP8266

首先,然后将下列代码上传到Arduino:

int program_pin = 12;
int enable_pin = 13;void setup()
{Serial1.begin(115200);Serial.begin(115200);pinMode(enable_pin, OUTPUT);pinMode(program_pin, OUTPUT);digitalWrite(program_pin, LOW);digitalWrite(enable_pin,HIGH);
}void loop()
{while(Serial1.available()){Serial.write((uint8_t)Serial1.read());}if(Serial.available()){while(Serial.available()){Serial1.write((uint8_t)Serial.read());}}
}

将设备连接PC,打开Arduino IDE,选择开发板和端口

然后点击 上传 将代码写入Arduino

写入成功后,前往https://github.com/spacehuhn/wifi_ducky/releases 下载esp8266_wifi_duck_4mb.bin 固件

我编译的中文web界面固件 点击下载

然后打开 NodeMCU Flasher 写入软件

将参数设置如下

然后选择固件

选择端口,点击 Flash 开始写入固件

写入完成后需要将 GPIO0 的线断开,变成如下的接线,即可进行下一步写入代码

6、写入代码到ATMEGA32U4

#include <Keyboard.h>
#define BAUD_RATE 57200#define ExternSerial Serial1String bufferStr = "";
String last = "";int defaultDelay = 0;void Line(String _line)
{int firstSpace = _line.indexOf(" ");if(firstSpace == -1) Press(_line);else if(_line.substring(0,firstSpace) == "STRING"){for(int i=firstSpace+1;i<_line.length();i++) Keyboard.write(_line[i]);}else if(_line.substring(0,firstSpace) == "DELAY"){int delaytime = _line.substring(firstSpace + 1).toInt();delay(delaytime);}else if(_line.substring(0,firstSpace) == "DEFAULTDELAY") defaultDelay = _line.substring(firstSpace + 1).toInt();else if(_line.substring(0,firstSpace) == "REM"){} //nothing :/else if(_line.substring(0,firstSpace) == "REPLAY") {int replaynum = _line.substring(firstSpace + 1).toInt();while(replaynum){Line(last);--replaynum;}} else{String remain = _line;while(remain.length() > 0){int latest_space = remain.indexOf(" ");if (latest_space == -1){Press(remain);remain = "";}else{Press(remain.substring(0, latest_space));remain = remain.substring(latest_space + 1);}delay(5);}}Keyboard.releaseAll();delay(defaultDelay);
}void Press(String b){if(b.length() == 1) Keyboard.press(char(b[0]));else if (b.equals("ENTER")) Keyboard.press(KEY_RETURN);else if (b.equals("CTRL")) Keyboard.press(KEY_LEFT_CTRL);else if (b.equals("SHIFT")) Keyboard.press(KEY_LEFT_SHIFT);else if (b.equals("ALT")) Keyboard.press(KEY_LEFT_ALT);else if (b.equals("GUI")) Keyboard.press(KEY_LEFT_GUI);else if (b.equals("UP") || b.equals("UPARROW")) Keyboard.press(KEY_UP_ARROW);else if (b.equals("DOWN") || b.equals("DOWNARROW")) Keyboard.press(KEY_DOWN_ARROW);else if (b.equals("LEFT") || b.equals("LEFTARROW")) Keyboard.press(KEY_LEFT_ARROW);else if (b.equals("RIGHT") || b.equals("RIGHTARROW")) Keyboard.press(KEY_RIGHT_ARROW);else if (b.equals("DELETE")) Keyboard.press(KEY_DELETE);else if (b.equals("PAGEUP")) Keyboard.press(KEY_PAGE_UP);else if (b.equals("PAGEDOWN")) Keyboard.press(KEY_PAGE_DOWN);else if (b.equals("HOME")) Keyboard.press(KEY_HOME);else if (b.equals("ESC")) Keyboard.press(KEY_ESC);else if (b.equals("BACKSPACE")) Keyboard.press(KEY_BACKSPACE);else if (b.equals("INSERT")) Keyboard.press(KEY_INSERT);else if (b.equals("TAB")) Keyboard.press(KEY_TAB);else if (b.equals("END")) Keyboard.press(KEY_END);else if (b.equals("CAPSLOCK")) Keyboard.press(KEY_CAPS_LOCK);else if (b.equals("F1")) Keyboard.press(KEY_F1);else if (b.equals("F2")) Keyboard.press(KEY_F2);else if (b.equals("F3")) Keyboard.press(KEY_F3);else if (b.equals("F4")) Keyboard.press(KEY_F4);else if (b.equals("F5")) Keyboard.press(KEY_F5);else if (b.equals("F6")) Keyboard.press(KEY_F6);else if (b.equals("F7")) Keyboard.press(KEY_F7);else if (b.equals("F8")) Keyboard.press(KEY_F8);else if (b.equals("F9")) Keyboard.press(KEY_F9);else if (b.equals("F10")) Keyboard.press(KEY_F10);else if (b.equals("F11")) Keyboard.press(KEY_F11);else if (b.equals("F12")) Keyboard.press(KEY_F12);else if (b.equals("SPACE")) Keyboard.press(' ');//else Serial.println("not found :'"+b+"'("+String(b.length())+")");
}void setup() {Serial.begin(BAUD_RATE);ExternSerial.begin(BAUD_RATE);pinMode(13,OUTPUT);digitalWrite(13,HIGH);Keyboard.begin();
}void loop() {if(ExternSerial.available()) {bufferStr = ExternSerial.readStringUntil("END");Serial.println(bufferStr);}if(bufferStr.length() > 0){bufferStr.replace("\r","\n");bufferStr.replace("\n\n","\n");while(bufferStr.length() > 0){int latest_return = bufferStr.indexOf("\n");if(latest_return == -1){Serial.println("run: "+bufferStr);Line(bufferStr);bufferStr = "";} else{Serial.println("run: '"+bufferStr.substring(0, latest_return)+"'");Line(bufferStr.substring(0, latest_return));last=bufferStr.substring(0, latest_return);bufferStr = bufferStr.substring(latest_return + 1);}}bufferStr = "";ExternSerial.write(0x99);Serial.println("done");}
}

等提示 写入成功,把设备拔出,重新连接PC

7、如何使用它

这时用手机搜索WIFI会找到

WIFI:WIFI DUCK  PASSWD:quackquack

打开浏览器,输入 http://192.168.4.1 进入管理地址

在这里,你可以上传,查看,删除和运行新的Ducky Scripts。

请注意,脚本的每行最大长度为600个字符。

如何写Ducky Scripts:https://github.com/hak5darren/USB-Rubber-Ducky/wiki/Duckyscript

8、通过Web界面更新ESP8266固件

如想更新固件,可以通过Web界面进行更新。

转到192.168.4.1/info并上传新的.bin文件

9、编译自定义固件

安装Arduino库

ESP8266 SDK

ESPAsyncWebServer

ESPAsyncTCP

打开Arduino点击 文件->首选线

http://arduino.esp8266.com/stable/package_esp8266com_index.json

添加上列代码到 附加开发板管理网址,然后点击 工具->开发板->开发板管理器 搜索 ESP 点击安装

然后下载 ESPAsyncWebServer 和 ESPAsyncTCP 在Arduino中点击 项目->加载库->添加一个.zip库

修改esp8266_wifi_duck\html\files下的文件,然后打开 minifier.html点击 "minify + byte-ify"转换格式,并替换掉 data.h 里面的内容(这里提供下我汉化的中文WEB界面:点击下载)

然后在Arduino IDE中打开 esp8266_wifi_duck.ino 开发板选择:Generic ESP8266 Module Flash大小选择:4M (1M SPIFFS)然后点击 项目->验证/编译 再点击 项目->导出已编译的二进制文件

10、制作过程视频(生肉)

11、参考资料

https://github.com/spacehuhn/wifi_ducky

https://github.com/basic4/WiDucky

http://www.cnblogs.com/k1two2/p/6849941.html(文章末尾有网友"g0ttl"的演示作品)

 
本文转自 K1two2 博客园博客,原文链接:http://www.cnblogs.com/k1two2/p/7083159.html  ,如需转载请自行联系原作者

制作Wi-Fi Ducky远程HID攻击设备相关推荐

  1. wifi频率和zigbee干扰_浅谈ZigBee和Wi—Fi的共存和干扰

    龙源期刊网 http://www.qikan.com.cn 浅谈 ZigBee 和 Wi - Fi 的共存和干扰 作者:姜伟 朱凯 刘童 来源:<科技视界> 2013 年第 16 期 [摘 ...

  2. 比较802.11ac(Wi‑Fi 5)和802.11ax(Wi‑Fi 6)

    MIMO 802.11ac仅在下行模式下,支持多用户MIMO. 802.11ax不仅下行链路:也在上行链路支持MIMO功能,因此多个用户可以同时上传视频. 调制方法 802.11ax具有更高的调制方案 ...

  3. 从零开始学USB(二十四、USB接口HID类设备(六)_物理描述符)

    物理描述符也称作实体描述符.被用来描述设备的行为特性. 物理描述符是一种数据结构,它提供有关激活控件或控件的人体特定部分的信息. 例如,物理描述符可能指示右手拇指用于激活按钮5.应用程序可以使用此信息 ...

  4. Typora远程解绑设备的方法

    Typora远程解绑设备的方法 Typora远程解绑设备的方法 重装了一下电脑又要重新激活typora,但是提示了设备超过3台,所以就要去解绑设备.但是由于电脑已经重装了,所以没有办法在软件上进行解绑 ...

  5. ctf ddos数据包 杂项 流量_抗DDoS攻击设备化解危机于无形

    攻击手法翻新 DDoS攻击已经存在发展了很多年,近来这类攻击方式发生了一些新的变化. 传统的DDoS攻击是黑客通过大量僵尸主机针对目标发送海量伪造数据,阻塞用户网络或应用,这种大流量的.伪造数据包攻击 ...

  6. IE无法上网,远程计算机或设备将不接受连接,其他浏览器可用

    IE浏览器突然不能上网了,但是其他浏览器可以,QQ什么的也都正常,只有IE是出现:远程计算机或设备将不接受连接 这个问题,网上找了很多答案都没用,什么设置WINS,允许远程访问,取消internet代 ...

  7. 远程计算机或设备将不接受连接 解决方案

    问题场景 某天早上过来打开电脑谷歌浏览器突然不能联网了,但是电脑本身是有网的,QQ啥的都能登,运行网络诊断后显示:远程计算机或设备将不接受连接 解决方案 我这里是由于上次关闭电脑时kxsw软件没有正常 ...

  8. 显示远程计算机或设备将不接受连接的解决办法

    当你的电脑浏览器不能正常上网时,显示 点击网络诊断,显示远程计算机或设备将不接受连接 此时,不要慌. 解决办法: 1.点击左下角开始,点击运行,输入inetcpl.cpl,点击确定,打开Interne ...

  9. WIN7 | 网络正常,但网页打不开 | 远程计算机或设备不接受连接

    1. 远程计算机或设备不接受连接-太平洋IT百科手机版  我的电脑网络问题是靠这个博客解决的: 2. win7不能打开网页怎么办_win7系统中浏览器无法打开网页怎么解决-win7之家 3. 网络连接 ...

最新文章

  1. Dalvik与JVM区别
  2. Python-技术篇-使用logging模块打印详细报错日志,获取报错信息位置行数方法
  3. UA MATH636 信息论8 纠错码简介
  4. Oracle日期相关
  5. mysql加入用户_Mysql 添加用户
  6. 企鹅java游戏下载安装_企鹅企鹅生活安卓版游戏下载|企鹅企鹅生活手游下载v1.6.1-乐游网安卓下载...
  7. Linux NTP服务配置 for Oracle RAC
  8. linux下iostat命令无效,linux iostat命令详解
  9. 如何在服务器上使用宝塔面板?
  10. 微pe添加网络组件_Nature子刊 | 微塑料影响微生物群落和氮循环
  11. 迅为IMX6ULL开发板Linux系统移植-NXP官方Linux源码编译
  12. 问题:找不到该项目,该项目不在指定目录下.......请确认位置......
  13. 黑苹果10.14版本n卡安装以及声卡驱动
  14. linux中 . .bash_profile是什么意思
  15. unbuntu 安装vscode
  16. 操作系统—PV操作解决和尚打水问题
  17. MobileNetV2: Inverted Residuals and Linear Bottlenecks(MobileNetV2)-论文阅读笔记
  18. 用Python批量下载视频
  19. Python读取zip文件中的图片(无需解压)
  20. ARP欺骗数据帧转发之MAC修改

热门文章

  1. compact php,php compact 通过变量创建数组
  2. iBus拼音输入法导入搜狗词库
  3. 东南亚跨境一件代发好用的Shopee货代系统—星卓越
  4. python 3.10不支持torch,因而无法安装和使用cnocr
  5. Chrome 浏览器清除单张网页缓存
  6. TMS320F28335调用官方库进行FFT频谱分析
  7. 泉州dns服务器无响应,泉州联通dns服务器地址
  8. 响应式编程之Spring Webflux
  9. 如果拿破仑年轻时没有经历过窘迫而绝望的生活
  10. sql知识——数据库设计