巧用EvilUSB攻击智能路由器—EvilUSB制作篇

http://butian.360.cn/School/content/id/418

0x00 前言

关于写公众号,这是我18年年初定的计划中的事,一直准备写,但是因为一直以来都很忙加上自己的懒惰,所以一篇文章也没有发出来。最近在Fit大会发表了一个关于使用USB攻击智能路由器的议题,会议结束后共享了PPT,可有的朋友还是不是很理解,所以这次借着这次在Fit大会演讲的议题,给大家分享一下议题中所提到的攻击方法及EvilUSB制作过程。

0x01 攻击场景

控制EvilUSB两种方式:

1.    直接通过共享热点或同一局域网的方式控制EvilUSB

2. 通过反向SSH隧道的方式控制EvilUSB

1.jpg

通过远程访问到我们制作的EvilUSB,我们可以执行我们之前写好的脚本,结合其他路由器漏洞实现对路由器进行攻击的目的,其实这里也可以直接设置好插入EvilUSB设备后直接进行pwn操作,但是希望给观众一个可视化的过程,所以以交互的方式进行的此攻击过程的演示。

0x02 漏洞成因

1. 开启不恰当服务

在对路由器固件分析过程中,我们不只关注对源代码的审计,同时也关注对配置文件的审计,下面分别对两款路由器的问题进行说明:

Router1:

此项漏洞来源于在对国内某款路由器的服务审计时发现nginx配置文件/etc/nginx.conf中在8080端口上开启的web服务,此服务用于用户在手机app端可进行的多项操作,插入USB后会挂载到相应目录下,当手机端执行下载视频或者备份相册等操作时,会在USB挂在的目录下创建相应的存储路径,用于存储下载的视频以及备份相片等。

2.png

对于以上功能,我们发现它会将USB挂载到/mnt/sda1目录下。

Router2:

3.png

此项漏洞在分析过程中发现其服务开在了80端口上,同时对配置项和源码进行审计,在其httpd.conf文件中发现如下图所示配置项。

4.jpg

同时对源代码审计时发现,此处存在对USB设备的挂载操作,并挂载到extdisks目录下,所以当我们访问路径/api-third-party/download/extdisks即可实现对USB设备存储数据的访问。

2. 支持文件系统类型

5.png

在对系统固件审计及测试过程中,我们发现路由器系统支持多种文件类型,可以看到下图中几种文件系统(exfat/fat/ntfs/ext4)类型。(.ko文件即kernel object 文件,作为一个内核功能模块,需要使用时,直接插入运行)

0x03 EvilUSB制作

1. 构造恶意的USB设备

基于以上两点原因,所以我们在一台linux/mac机器上对USB构造一个恶意的软连接,将USB的root文件夹连接到系统的根目录下。

umount /media/root/fc90****e848

mkfs.ext4 /dev/sdbx

ln –s / ./root

所以当我们访问USB的root目录时,便可以直接访问到操作系统的根目录。将制作好的USB设备插入到路由器中,我们可以利用8080端口开启的服务,实现对系统根目录的访问,导致一个任意文件读取的漏洞。下图是我们读取/etc/passwd的截图。

6.png

2.可控化EvilUSB

可是就目前而言我们还不能实现对路由器的自动化或可控制的攻击,所以我们选择了Raspberry PI Zero w来制作一款可控的USB设备,这里说明一下选择树莓派zero的原因,很多朋友可能都了解树莓派,但是可能有些人不知道USB设备有两种,一种是Host,比如电脑,可以去读取其他USB 设备中的数据,另外一种是Device,比如键盘鼠标U盘。所以从根本上来说,制作一个EvilUSB核心要求就是自身可以作为USB Device,市面上的树莓派,如树莓派2B,树莓派3等,他们只支持作为Host,而树莓派Zero 和Zero w 同时支持作为Host 和Device。

相比Raspberrry PI Zero,Raspberrry PI Zero w 增加了WiFi 和蓝牙,因为我们要实现对USB对远程控制,所以我们实验中选中了zero w这个型号,某宝大约需要100多就能买到(我购买时忘记买焊接好的GPIO接口了,所以自己焊接的,如果感兴趣的朋友想自己实验,建议购买焊接好的,因为没有焊接经验的容易把板子焊坏),但是其作为USB设备缺点就是体积稍大。

7.jpg

1)Raspberry PI Zero 支持多种OTG模式:

如果设置成某种模式,则PI可以充当USB从设备,提供虚拟串行(终端),虚拟以太网,虚拟大容量存储设备或其他虚拟设备,如HID,MIDI,或充当虚拟网络摄像头等。此处我们要制作的是一个USB存储设备所以选择g_mass_storage模式,但是此篇文章不准备讲其制作过程,感兴趣的同学可以自己研究一下,给大家个参考地址:https://www.raspberrypi.org/magpi/pi-zero-w-smart-usb-flash-drive/

2)实现对USB的远程控制

8.png

制作好作为从设备的树莓派后,因为树莓派zero w本身支持wifi连接,所以我们可以实现在同一局域网通过SSH对USB进行控制,但是如果我们想进行远程攻击,我们怎么办,此处笔者在EvilUSB和外网服务器上建立了一个反向的SSH隧道(autossh),在远程实现对设备的控制,此处制作过程也不多赘述。

3)附加硬件网卡模块enc28j60

最后要实现对路由器设备的攻击,我们还需要使被攻击的路由器与我们的EvilUSB处于同一网络环境下,所以此处我们添加了一个硬件模块enc28j60,通过树莓派zero开发板上的GPIO接口外接此模块。

制作好的设备:

9.png

1.RaspberryPI Zero w+enc28j60

2. Orange PI Zero

10.png

因为Orange PI自带网卡插口所以使用其代替RaspberryPI 直接省去了外接enc28j60模块的步骤。

0x04 结语

此篇文章主要用来讲解EvilUSB的漏洞成因以及EvilUSB的制作过程,在USB制作过程中踩到过很多坑,但是也学到了很多东西,后面文章我会讲解通过制作的USB实现远程控制其对路由器的攻击并获取shell的过程。

关于xmsg

技术面前人人平等.同时技术也不分高低贵贱.正所谓学无大小,达者为尊.
此条目发表在未分类分类目录。将固定链接加入收藏夹。

发表评论