专栏首页晨星先生的自留地物理入侵之你真的敢用的我的U盘么?

物理入侵之你真的敢用的我的U盘么?

00x0 元旦快乐

这是第一次用Markdown编辑器写东西。感觉还是不错的,可以省下很多排版的时间。@豆瓣将军,夜豆女侠可以尝试着使用呦!然后发现微信公众号的编辑器不支持Markdown,不过一折腾发现是有方法的!

写在文章前面的东西,对,今天是元旦。大家昨天晚上都在跨年,看烟花,约会,看电影。而我,弄着某sb单片机做的傻逼东西,说实话真的是吃力不讨好,具体原因不详。其实对我等对跨年没有什么感觉了,自从中国台湾回来之后,感觉没有这个气氛了。别的不说,原单快乐吧,然后明天答辩快乐~

00x1 前言

今天要讲述的是一个汉子插我的U盘的血泪史,那天。某超太无聊了就去想着要不要去把某个LED大屏幕给黑掉,没错。。就是那个天天在放视频的,既然内容天天更新又没看到工作人员天天在换单片机,那么肯定是用电脑控制这个大屏幕的。因为天天烧录什么的太麻烦了,有一套软件。做广告的姐夫告诉我的~~~ 然后我就用了一次物理入侵,或者专业一点叫社会工程学。什么是社工这里就不展开了,后面权限是拿到了。但是某牛,也就是我学长说喂小组宣传要注意影响,就没有继续展开了。于是就有了这篇文章,这么制作一个能黑掉人的U盘。

00X2 什么是HID

USB-HID 是Human Interface Device的缩写,由其名称可以了解HID设备是直接与人交互的设备,例如键盘、鼠标与游戏杆等。不过HID设备并不一定要有人机接口,只要符合HID类别规范的设备都是HID设备。 交换的数据存储在称为报表(report)的结构内,设备的固件必须支持HID报表的格式。主机在控制与中断传输中传送与要求报表,来传送与接收数据。报表的格式非常有弹性,可以处理任何类别的数据。

驱动:驱动程序即添加到操作系统中的一小块代码,其中包含有关硬件设备的信息。有了此信息,计算机就可以与设备进行通信。驱动程序是硬件厂商根据操作系统编写的配置文件,可以说没有驱动程序,计算机中的硬件就无法工作。 但是HID有一个特性:就是操作系统自带了HID类的驱动程序,而用户无需去开发很麻烦的驱动程序,只要直接使用API调用即可完成通信。所以很多简单的USB设备,喜欢枚举成HID设备,这样就可以不用安装驱动而直接使用。所以HID设备≠安装驱动。

00x3 HID攻击介绍

HID设备并不一定要有人机接口,只要符合HID类别规范的设备都是HID设备。由于这个特性,一般来讲针对HID的攻击主要集中在键盘鼠标上,因为只要控制了用户键盘,基本上就等于控制了用户的电脑。攻击者会把攻击隐藏在一个正常的鼠标键盘中,当用户将含有攻击向量的鼠标或键盘,插入电脑时,恶意代码会被加载并执行。

00x3 可执行恶意代码的开源设备—TEENSY

(1)TEENSY设备的介绍

TEENSY,比起小小的、微型设备等翻译我更喜欢叫它小熊。 当然笔者开个玩笑,此处是这个设备的专有名词。

其实好多开发板都是基于这款芯片的。这是它的一个官方介绍: http://www.pjrc.com/teensy

上面写着:

The Teensy is a complete USB-based microcontroller development system, in a very small footprint, capable of implementing many types of projects. All programming is done via the USB port.

大意是:TEENSY的是一个基于USB完整的单片机系统(设备),占用很少的空间(资源),能够实现 许多类型的项目。 所有编程是通过USB。 Teensy主要特点如下

AVR处理器,16 MHz 单个按键编程 易于使用的Teensy Loader应用程序 免费软件开发工具 兼容Mac OS X,Linux和Windows 小尺寸,多项目的完美支持

它分为32Bit和8Bit:

(2)BS Micro pro micro leonardo Arduino 开发板

我买来做实验的板是:ATMega32U4 BS Micro pro micro leonardo Arduino 这个板是属于Arduino Leonardo(MCU: ATmega32U4 这个板子有点特殊,刚好支持TEENSY)

貌似UNO没有类似的产品,因为UNO是基于ATmega328。

(3)Arduino简介

Arduino是一款便捷灵活、方便上手的开源电子原型平台。 它构建于开放原始码simple I/O介面版,并且具有使用类似Java、C语言的Processing/Wiring开发环境。主要包含两个主要的部分:硬件部分是可以用来做电路连接的Arduino电路板;另外一个则是Arduino IDE,你的计算机中的程序开发环境。你只要在IDE中编写程序代码,将程序上传到Arduino电路板后,程序便会告诉Arduino电路板要做些什么了。 有人把这被制作成含有恶意代码的U盘叫做BadUSB。BadUSB的威胁在于:恶意代码存在于U盘的固件中,PC上的杀毒软件无法访问到U盘存放固件的区域,因此也就意味着杀毒软件和U盘格式化都无法应对BadUSB的攻击。

00x4 制作过程

(1)环境的准备:

我是win10我就用:http://www.pjrc.com/teensy/td_133/TeensyduinoInstall.exe

Arduino的下载地址:https://www.arduino.cc/en/Main/OldSoftwareReleases#previous

代码主要使用Arduino的Keyboard库,学习使用可以参见以下链接:https://www.arduino.cc/en/Reference/KeyboardPress

我使用的是1.6.x版本的,现在最新版本的是1.8.0。 先安装arduino,然后安装下载后双击运行,安装的时候会有一步安装设备驱动,按提示安装之。 注意,安装时要求手动选择Arduino IDE的安装位置,此时选择之前步骤zip的解压目录即可。 安装成功后运行arduino.exe会发现这里有了许多可选项:

(2)硬件连接IDE

  1. 硬件插入电脑
  2. 打开Arduino IDE
  3. 工具->版->选择“Arduino Leonardo”
  4. 工具->Port->选择“COM* (Arduino Leonardo)”
  5. 现在可以看到IDE右下角出现“Arduino Leonardo on COM*”

(3)代码写入硬件

1、用到的代码:

这段代码的意思:

• 插入后等待五秒

• 按下ctrl+esc,(作用:在任何界面打开开始菜单)

• 等待半秒

• 模拟输入一个字符串,并回车执行(作用:在开始菜单执行命令)

• 等待2.5秒,更改焦点,模拟键盘输入y(作用:绕过uac,得到系统许可)

2.将代码中的http://www.hackvaf.com/index.ps1改成自己的域名

3.点击IDE左上角 对号图标 验证,然后点击 箭头图标 上传代码到硬件,没报错就OK了

4.将硬件重新插入电脑,此时会看到电脑自动执行代码的全部动画过程

当然如果有朋友觉得等待5秒太久的话那么就把delay统统删掉….

(4)服务端的代码

硬件的设置会从域名下面的index.ps1文件下载代码并执行。 以下代码可在github下载:https://github.com/Xyntax/BadUSB-code

1. 下载所需代码,

2. 修改main.ps1的2754行 为上面的域名,

3. 修改main.ps1的2903-2919行 为发送邮件配置 发送邮箱尽量不要用163入口文件为GetPass.ps1

4. 修改GetPass.ps1中的前两行,域名,Getpass.rar实际上是lazagne,用rar下载尽量避免触发安全软件,这个不放心可以百度下载。command.rar实为bat 因为 lazagne注入lsass时会被安全软件拦截,所以用bat避免注入。修改GetPass.ps1中的邮箱配置,同main.ps1中的就行

5. 将这四个文件上传到公网服务器

关于什么是lazagne,可以看看安全客上面的http://bobao.360.cn/learning/detail/412.html

这里设置好收信和发信邮箱。

00x4 测试

值得一提的是,注意键盘的状态和焦点。这个主要是配合社会工程学~~~

如果键盘在中文状态,则会失败。

这里改进了代码,让其锁定为大写状态就ok了。

当然了,这个功能不止这样。理解原理之后,通过修改服务器端代码,利用方式可有很多….

• 反弹shell

• 获取文件

• 录屏、截屏

• 添加用户、开端口

• 下载病毒、木马

• ……

这里提供一段代码….知道怎么搞到*卷了吧….邪恶吧

当然,如果对于arduino 不熟悉或者powershell不熟悉的话,请移步这里!

Kali里面自带~~~

其他的MSF如果搞你们比我懂~~

本文分享自微信公众号 - 晨星先生(MoXuanIT),作者:vaf

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-01-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python寻找3389端口(2)

    lonelyvaf
  • #记一次对某违法网站的渗透纪实

    lonelyvaf
  • oreint db 远程代码执行漏洞

    lonelyvaf
  • Spring-Data-JPA尝鲜:快速搭建CRUD+分页后台实例

    JPA(Java Persistence API)是Sun官方提出的Java持久化规范。它为Java开发人员提供了一种对象/关联映射工具来管理Java应用中的关...

    我没有三颗心脏
  • LD_LIBRARY_PATH和LIBRARY_PATH的区别

    先来看看程序编译和链接的过程: 编译过程又可以分成两个阶段:编译和汇编。 编译 编译是指编译器读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换...

    昊楠Hacking
  • 开源OLAP分析引擎Apache Kylin™| MTdata小讲堂

    欢迎来到 MTData 小讲堂,本期 MT 酱带大家认识 Apache Kylin™

    美图数据技术团队
  • oj放苹果

    题目描述 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。 输入 每个用例...

    用户1215536
  • 业界 | 罗默斩获2018年诺贝尔经济学奖,Python功不可没!

    当地时间10月8日,瑞典皇家科学院将2018年诺贝尔经济学奖颁给了两位在经济学上有着突出贡献的学者,一位是62岁的美国经济学教授保罗·罗默(Paul M.Rom...

    大数据文摘
  • 修复服务器上出现ImportError: cannot import name main的问题

    上网查了好久,一般都是说要修改/usr/bin路径下的pip文件,原文件内容如下:

    marsggbo
  • mall整合Mongodb实现文档操作

    1.下载Mongodb安装包,下载地址:https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2008pl...

    macrozheng

扫码关注云+社区

领取腾讯云代金券