热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

打造你的专属黑客U盘

文中提及的部分技术、工具可能带有一定攻击性,仅供安全学习和教学用途,禁止非法使用!FreeBuf之前已经介绍过很多次BadUSB——这个号称“世界上最邪恶的USB外设”。不久前,这款工具发布

文中提及的部分技术、工具可能带有一定攻击性,仅供安全学习和教学用途,禁止非法使用!

FreeBuf之前已经介绍过很多次BadUSB——这个号称“世界上最邪恶的USB外设”。不久前,这款工具发布了第二个版本,新版本中的一个最重大的改进就是反应速率只要把它插入电脑,只需要几秒钟电脑就关机并停止工作。

简介

由于“Bad USB漏洞”的存在,USB闪存驱动器也成了常见的攻击目标。Bad-USB让黑客可以重新编程微控器作为一个“人机界面装置”(HID)或键盘,然后在目标机器上执行自定义键盘敲击。这种情况通常被称为“HID Payload攻击”,由于你需要向BadUSB上交你的脚本用于执行(稍后我们还会有更为详细的讨论)。尽管几乎所有的USB闪存驱动器都可以执行漏洞利用,但是重新编程“群联(Phison)”微控制器的唯一方式已经公开了。

本教程中我们将改造USB闪存驱动器的微控制器,使用发布于github上面的源代码进行编译,并构建一个带有内置HID负载的自定义固件,然后把我们无邪的USB变成一个用于我们“入侵”受害者设备的恶意键盘。

整个过程有点像对你的安卓设备进行编译和清除。:P

准备工作

· 我们需要在win环境下工作

· 我们需要一个带有Phison 2303(2251-03)微处理器的USB 3.0闪存驱动器

教程中,我会使用“Toshiba TransMemory-MX USB 3.0 8GB”,东芝,8GB。

· 确定你能在不损害USB的情况下打开它。我的一个朋友由于太草率,完全按照字面意思锯断了他的USB。详情可以阅读“将我们设备设置为手动‘启动模式’”。

小笔记:

· 你能够在github找到可支持的设备名单。

有时候拥有一台名单中的可支持设备,并不意味着一定使用了PS2251-03。即使是同一台设备模型,制造商也可能使用不同的控制器。

· 请你继续自己的冒险,尽管并没有办法保证你的设备之后仍然可以工作。理论上,出现任何问题都是不科学的。

改造U盘的微控制器

开始之前,先确定一下我们的U盘使用的是可支持控制器。我们可以用一个叫做“闪存驱动器信息提取器”的程序,收集关于U盘的必要信息。

并不需要任何安装。只要将Upan插到电脑上,然后打开工具点击“获取U盘信息”按钮。如果你的驱动器使用的是Phison2303(2251-03)控制器,输出应该如下:

但是,如果你的U盘不同,它便非常有可能无法使用exp重新编程为HID设备。我建议在github上找到可支持设备,然后再购买一个即可。

开始构建环境

代码开发者推荐我们使用任意版本或者更高级的“Microsoft Visual Studio 2012”来编译工具,SDCC用于构建自定义固件。

Visual Studio 下载可能需要好几个小时,中间不能停顿,因此你需要保证自己加油足够的时间。令人略烦的一点是,它会在你的主要驱动器上占据好几个G的空间,在我的SSD上占了约10GB。

下载及编译源代码

为了定制U盘,我们需要构建与之交互的工具。可以使用adamcaudill发表于Github上的源代码。

实际上,Visual Studio(简称VS)提供了一个简洁的功能,让我们复制了整个储存库。你甚至可能从github站点与VS进行交互:

在复制和打开存储库之后,你很可能看到三个解决方案:

· DriveCom
· EmbedPayload
· Injector

我们只需要“DriveCom”和“EmbedPayload”,如果你能够通过以下进行编译:

Ctrl + Shift + B
或者
Menu bar - Build - Build Solution

如果你无法通过VS复制存储库,从github下载.zip文件并打开每个解决方案中的.sln文件。

现在,DriveCom和EmbedPayload应该在…\Psychson\tools目录中。

E:\Documents\Bad_USB\Psychson\tools
DriveCom and EmbedPayload should be in the ...\Psychson\tools directory now: E:\Documents\Bad_USB\Psychson\tools

获取一个Burner Image

一个“Burner Image”是在你的设备上倾倒与刷新固件所需。它们通常使用“BNxxVyyyz.BIN”规则来命名。用于Phison控制器的Burner Image可以在这里找到。

即使这个网站仅仅在俄罗斯可用也不要紧,如果你扫描“BN03”站点,你便会找到下载链接。BN意味着“Burner Image”,而03与PS2251-03对应。下面便是我提取的文件:

E:\Documents\BadUSB\Burner_Image\。

每个Burner Image应该完成这个工作,但你能够使用最新版本——由名称的一部分“Vyyy”来表示的。

下载Duck Encoder

“Duck Encoder”是基于Java平台的工具,可以将脚本转化为HID负载。这个是建立于黑客Hak5发开的、被称为“Rubber Ducky”的Bad-USD。你可以从这里下载到(不要忘记安装Java)。我将其保存在 E:\Documents\Bad_USB\DuckEncoder\。

建立自定义固件

目前,我们所有的准备工作已经完成,现在我们可以开始使用工具了。在这一步我们只需要进入我们的…\Psychson\firmware\存储库然后运行build.bat。如果一切顺利,你便可以看到一个里面带许多不同文件的新文件夹。

fw.bin是我们接下来会用到的文件。

写一个脚本

你可能会问自己我们需要使用哪种语言写脚本。由于DuckEncoder是基于“Rubber Ducky”的,因此我们使用“Duckyscript”语音。语法很简单,更详细的说明在这里。

我们需要在我们喜欢的目录中创建一个.txt文件:

E:\Documents\Bad_USB\DuckEncoder\script.txt

我在这里为你们展示一个比“Hello World”还要有趣的脚本:

你可能在想,Bad U盘会“按下”windows + r,然后这个脚本造成windows立即关闭。此外,你可以很清楚的发现我写的是“/”而不是“-”。这是因为我们的“键盘”Bad-U盘有一个美国版本,而且在这里windows被设置为德语。记住这点,我们必须变更windows布局为美式,然后我们就可以平时一样地写脚本,而不需要为输入方式而困惑。

你甚至可以使用自定义脚本,然后在这里进行一些逆向工程。

转换为HID负载

现在是时候开始使用windows终端-cmd。

java -jar "PATH to \duckencode.jar" -i "PATH to \script.txt"-o "\payload.bin Path"

例如:

java -jar E:\Documents\BadUSB\DuckEncoder\duckencode.jar -i 
E:\Documents\Bad_USB\DuckEncoder\script.txt -o 
E:\Documents\Bad_USB\DuckEncoder\inject.bin

我们并不会得到任何输出,但是在我的示例当中应当在"E:\Documents\Bad_USB\DuckEncoder\" 中创建一个inject.bin。

将有效负载嵌入固件

现在,我们需要使用之前与VS一起构建的工具。显然EmbedPayload用于嵌入有效负载。我们只需要在cmd中执行它即可:

"Path to EmbedPayload.exe" "PATH to payload" "PATH to the firmware we built"

我的示例当中:

E:\Documents\BadUSB\Psychson\tools\EmbedPayload.exe 
E:\Documents\Bad_USB\DuckEncoder\inject.bin 
E:\Documents\Bad_USB\Psychson\firmware\bin\fw.bin

这里需要注意现在fw.bin中包含了有效负载。你也可以通过再次执行build.bat覆盖固件。

清除当前U盘固件

我强烈建议你复制当前U盘中的固件,以防你今后想要恢复它。如果我们想要采取任何行动来控制我们的U盘,可以使用“tools”工具文件夹中的DriveCom。

"PATH to DriveCom.exe" /drive="Drive Letter of our USB" /action=DumpFirmware /burner="PATH to our burner image" /firmware="PATH of the output.bin"

我的示例当中:

E:\Documents\Bad_USB\Psychson-master\tools\DriveCom.exe 
/drive=F /action=DumpFirmware 
/burner=E:\Documents\Bad_USB\Firmware\BN03V117M.BIN 
/firmware=E:\Documents\Bad_USB\originalfw.bin

刷新固件

最后我们可以将非常恶意的关闭负载嵌入我们的U盘固件当中:

"PATH to DriveCom.exe" /drive="Drive Letter" /action=SendFirmware /burner="PATH to our burner image" /firmware="PATH to the firmware"

我的示例当中:

E:\Documents\BadUSB\Psychson\tools\DriveCom.exe 
/drive=F /action=SendFirmware 
/burner=E:\Documents\Bad_USB\Firmware\BN03V117M.BIN 
/firmware=E:\Documents\Bad_USB\Psychson\firmware\bin\fw.bin

一个成功的输出应该是这个样子:

DriveCom将我们U盘切换成固件刷新自动启动模式。现在我们的U盘变成了我们无法切换模式的键盘,同时我们也无法访问内存,但这仅仅是个小问题。在下一节中,我将着重讲述如何解决这个问题。

将设备设置为手动“启动模式”

如果你想用U盘采取进一步的行动,你会发现无论是DriveCom还是Windows,任何操作系统都无法访问它,毕竟它只是一个键盘。我们需要打开U盘,然后当我们把U盘插在电脑的时候连接到两个微控制器的插针上。从上面这个角度看起来,我需要连接底部左边的两个插针:

我通常使用U盘链接器的边缘来连接这两个插针。在这种情况下,另一个U盘延长线可以会非常有用。看起来或许很难,但是你会习惯的。使用任何你喜欢的工具,只要不伤害你的U盘即可。如果你做得正确,驱动便会再次出现在windows中:

…然后我们可以再次修改我们的驱动或者清除原始固件。

如果很不幸,你的电脑关闭了,下次再努力试一下吧!

注释:

·Bad-USB不一定在每个windows电脑上都适用,因为它可能无法加载驱动程序。

·请记住,当你的U盘假装成HID设备时,你是无法访问内存的。

最后的想法

如果你拥有访问受害者电脑的权限,Bad-USB会是一个非常有用的工具,即使windows会在加载U盘的时候崩溃。此外,由于它是一个“键盘”而不是病毒,因此它逃过了AV检测。

如果你正在考虑找一个简单的借口将U盘插入您选择的电脑,请注意最好准备一个正常的U盘,万一你被抓住了,也可以轻松解围。

此外,感谢各位的阅读和提供的建设性反馈。如果发现任何问题,请及时让我知道。

参考

https://github.com/adamcaudill/Psychson
https://github.com/hak5darren/USB-Rubber-Ducky/wiki

*文章来源:null-byte,编译/哆啦A梦,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)


推荐阅读
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • 如何搭建Java开发环境并开发WinCE项目
    本文介绍了如何搭建Java开发环境并开发WinCE项目,包括搭建开发环境的步骤和获取SDK的几种方式。同时还解答了一些关于WinCE开发的常见问题。通过阅读本文,您将了解如何使用Java进行嵌入式开发,并能够顺利开发WinCE应用程序。 ... [详细]
  • 本文介绍了在MFC下利用C++和MFC的特性动态创建窗口的方法,包括继承现有的MFC类并加以改造、插入工具栏和状态栏对象的声明等。同时还提到了窗口销毁的处理方法。本文详细介绍了实现方法并给出了相关注意事项。 ... [详细]
  • GPT-3发布,动动手指就能自动生成代码的神器来了!
    近日,OpenAI发布了最新的NLP模型GPT-3,该模型在GitHub趋势榜上名列前茅。GPT-3使用的数据集容量达到45TB,参数个数高达1750亿,训练好的模型需要700G的硬盘空间来存储。一位开发者根据GPT-3模型上线了一个名为debuid的网站,用户只需用英语描述需求,前端代码就能自动生成。这个神奇的功能让许多程序员感到惊讶。去年,OpenAI在与世界冠军OG战队的表演赛中展示了他们的强化学习模型,在限定条件下以2:0完胜人类冠军。 ... [详细]
  • svnWebUI:一款现代化的svn服务端管理软件
    svnWebUI是一款图形化管理服务端Subversion的配置工具,适用于非程序员使用。它解决了svn用户和权限配置繁琐且不便的问题,提供了现代化的web界面,让svn服务端管理变得轻松。演示地址:http://svn.nginxwebui.cn:6060。 ... [详细]
  • 本文介绍了OkHttp3的基本使用和特性,包括支持HTTP/2、连接池、GZIP压缩、缓存等功能。同时还提到了OkHttp3的适用平台和源码阅读计划。文章还介绍了OkHttp3的请求/响应API的设计和使用方式,包括阻塞式的同步请求和带回调的异步请求。 ... [详细]
  • Windows7企业版怎样存储安全新功能详解
    本文介绍了电脑公司发布的GHOST WIN7 SP1 X64 通用特别版 V2019.12,软件大小为5.71 GB,支持简体中文,属于国产软件,免费使用。文章还提到了用户评分和软件分类为Win7系统,运行环境为Windows。同时,文章还介绍了平台检测结果,无插件,通过了360、腾讯、金山和瑞星的检测。此外,文章还提到了本地下载文件大小为5.71 GB,需要先下载高速下载器才能进行高速下载。最后,文章详细解释了Windows7企业版的存储安全新功能。 ... [详细]
  • PL2303HXD电路图(USB转UART)介绍及应用
    本文介绍了PL2303HXD电路图(USB转UART)的特性和应用,该电路图可以实现RS232和USB信号的转换,方便嵌入到手持设备中。PL2303HXD作为USB/RS232双向转换器,可以将USB数据转换为RS232信息流格式发送给外设,并将RS232外设的数据转换为USB数据格式传送回主机。通过利用USB块传输模式和自动流量控制,PL2303HXD能够实现更高的数据传输吞吐量比传统的UART端口。 ... [详细]
  • VSCode快速查看函数定义和代码追踪方法详解
    本文详细介绍了在VSCode中快速查看函数定义和代码追踪的方法,包括跳转到定义位置的三种方式和返回跳转前的位置的快捷键。同时,还介绍了代码追踪插件的使用以及对符号跳转的不足之处。文章指出,直接跳转到定义和实现的位置对于程序员来说非常重要,但需要语言本身的支持。以TypeScript为例,按下F12即可跳转到函数的定义处。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文讨论了如何在dotnet桌面(Windows)应用程序中添加图标。作者提到可以使用dotnet命令行工具与resource.rc文件一起使用来为标准.NET核心应用程序添加图标。作者还介绍了在创建控制台应用程序时如何编辑projeto1.csproj文件来添加图标。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • 本文介绍了Python语言程序设计中文件和数据格式化的操作,包括使用np.savetext保存文本文件,对文本文件和二进制文件进行统一的操作步骤,以及使用Numpy模块进行数据可视化编程的指南。同时还提供了一些关于Python的测试题。 ... [详细]
author-avatar
绿色好心情
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有