USB armory
是由 Inverse Path
设计的一款开源硬件,它是一款U盘大小的微型计算机。通常受到信息安全人士和计算机Geeker
的喜爱。
InversePath官网
GitHub项目
官方项目Wiki
由于usbarmory
的硬件只在意大利生产,国内没有办法买到,我就在InversePath
官网提供的购买渠道之一的Hacker Warehouse
购买了这款硬件,第一次海外购买就这样完成了,使用了PayPal
的信用卡海外服务。这款硬件虽然小,但是死贵死贵的,花掉我1500+
大洋(包括主机适配器和有监听模式的无线网卡) -_-# , 不过为了兴趣,我就忍了,吃土吧。
Kali Linux
是信息安全人士做渗透测试用的比较多的平台。因为它包含了渗透测试常用的很多软件,不必另外麻烦下载安装。并且它较ubuntu
、CentOS
等其它发行版小众一些,是信息安全入门的较好的一个linux平台。
Kali Linux官网
Kali Linux
适配各种类型的计算机,像PC、手机、卡片机这些类型都可以安装,虚拟机什么的,而且还可以自己定制系统。
各平台Kali镜像下载
这款无线网卡在国内也是很难买到的,京东上很抢手,几本上处于断货状态,这是一款经典的适合无线破解的网卡,而且Kali Linux
默认支持,不用额外自己去装驱动。
你得有张至少是8G
的SD卡来烧写Kali for usbarmory
然后是kali linux for usbarmory
系统镜像
我是从Mac上烧写的, 参考了这篇文章:
http://docs.kali.org/kali-on-arm/kali-linux-on-usb-armory
Mac 上需要安装xz
命令相关的解压工具
xzcat kali-$version-usbarmory.img.xz | dd of=/dev/sdb bs=512k
我的SD卡装入读卡器插上后,使用Mac下diskutil
命令列出相关信息:
$ diskutil list
/dev/disk0 (internal, physical):
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *121.3 GB disk0
1: EFI EFI 209.7 MB disk0s1
2: Apple_APFS Container disk1 120.5 GB disk0s2
3: Apple_KernelCoreDump 655.4 MB disk0s3
/dev/disk1 (synthesized):
#: TYPE NAME SIZE IDENTIFIER
0: APFS Container Scheme - +120.5 GB disk1
Physical Store disk0s2
1: APFS Volume Mac OSX 111.1 GB disk1s1
2: APFS Volume Preboot 28.3 MB disk1s2
3: APFS Volume Recovery 520.3 MB disk1s3
4: APFS Volume VM 1.1 GB disk1s4
/dev/disk2 (external, physical):
#: TYPE NAME SIZE IDENTIFIER
0: FDisk_partition_scheme *31.1 GB disk2
1: Linux 31.1 GB disk2s1
可以看到我的SD卡被识别为/dev/disk2
, 所以烧写镜像的命令修改为:
$ sudo xzcat kali-2017.2-usbarmory.img.xz | sudo dd of=/dev/rdisk2 bs=512k
#据说使用rdisk可以更快的写入,反正我是这么写入的,注意镜像文件改为你下载镜像文件名称, 使用sudo提升权限
这样就写Kali for usbarmory
镜像到SD卡了,烧写过程可能持续十多分钟左右,耐心等待完成, 我实际写入花了20分钟。
$ sudo xzcat kali-2017.2-usbarmory.img.xz | sudo dd of=/dev/rdisk2 bs=512k
Password:
0+232651 records in
0+232651 records out
15204352000 bytes transferred in 1301.114078 secs (11685641 bytes/sec)
Kali Linux
的默认用户为root
,密码是反过来toor
, 登录时需要用到。
然后你把SD卡插到usbarmory
的SD卡槽上,注意这里的SD卡槽不是那个弹片式的,而是那种手动推的,注意不要弄坏了。
如果usbarmory带了保护外壳的话,要拆下尾部的一块才能露出SD卡槽
把装了系统SD卡的 usbarmory
插入Mac电脑的USB口上,当有亮白色灯光闪烁后说明系统正常启动了,此时会在网络界面发现有一个虚拟网卡出现,如下图:
手动设置这个设备的IP地址为10.0.0.2
,掩码为255.255.255.0
,然后就可以使用ssh
访问了:
$ ssh [email protected] #注意这里是10.0.0.1
The authenticity of host '10.0.0.1 (10.0.0.1)' can't be established.
ECDSA key fingerprint is SHA256:F3Pb9WfZJGvQ2KatydD8gDlNesA3ABhn/xjc/HnopiM.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.0.0.1' (ECDSA) to the list of known hosts.
[email protected]'s password: #这里输入toor
The programs included with the Kali GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Kali GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
root@kali:~#
现在你已经登录了你的usb-armory
设备上的Kali系统了。
登录后使用命令查看一下文件系统:
root@kali:~# fdisk -l
Disk /dev/mmcblk0: 29 GiB, 31104958464 bytes, 60751872 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x098dc361
Device Boot Start End Sectors Size Id Type
/dev/mmcblk0p1 10240 29695999 29685760 14.2G 83 Linux
我的SD卡是32GB的,命令显示SD卡全部可用空间是29GB,但实际文件系统只使用了14.2GB,发现没有完全使用SD卡的空间,这里我们就需要来手动扩展文件系统以使用全部SD的空间。
我们使用fdisk
命令来修改SD卡的分区表信息从而合并那些未使用的空间:
root@kali:~# fdisk /dev/mmcblk0
Welcome to fdisk (util-linux 2.29.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): p #打印分区表信息
Disk /dev/mmcblk0: 29 GiB, 31104958464 bytes, 60751872 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x098dc361
Device Boot Start End Sectors Size Id Type
/dev/mmcblk0p1 10240 29695999 29685760 14.2G 83 Linux
Command (m for help):
我们看到mmcblk0p1
分区是从扇区10240
开始的,它之前的扇区里存有系统引导相关的信息,我们在修改分区表信息时不应该破坏那里的数据,我们只需要把mmcblk0p1
分区的结束扇区号设置为SD卡的最大可用扇区就行了,如下:
Command (m for help): d # 删除原来的分区
Selected partition 1
Partition 1 has been deleted.
Command (m for help): n #新建一个分区
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p #设置新建的分区为主分区
Partition number (1-4, default 1): #使用默认分区号1
First sector (2048-60751871, default 2048): 10240 #这里非常重要,一定要设置为10240, 从而不破坏启动引导数据
Last sector, +sectors or +size{K,M,G,T,P} (10240-60751871, default 60751871): #这里默认值就是SD卡的最大可用扇区号
Created a new partition 1 of type 'Linux' and of size 29 GiB.
Partition #1 contains a ext2 signature.
Do you want to remove the signature? [Y]es/[N]o: Y
The signature will be removed by a write command.
Command (m for help): w #确认对SD卡分区表的修改
The partition table has been altered.
Calling ioctl() to re-read partition table.
Re-reading the partition table failed.: 设备或资源忙
The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8).
root@kali:~# sudo reboot #重新启动之后再登录:ssh [email protected]
重新登录后,再看一下, 发现分区大小已经调整为29GB,但是文件系统仍然是14GB, 这就需要 使用resize2fs
命令来扩展文件系统到可用的分区上:
root@kali:~# fdisk -l
Disk /dev/mmcblk0: 29 GiB, 31104958464 bytes, 60751872 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x098dc361
Device Boot Start End Sectors Size Id Type
/dev/mmcblk0p1 10240 60751871 60741632 29G 83 Linux
root@kali:~# df -lh
文件系统 容量 已用 可用 已用% 挂载点
/dev/root 14G 4.2G 9.1G 32% /
devtmpfs 243M 0 243M 0% /dev
tmpfs 252M 0 252M 0% /dev/shm
tmpfs 252M 4.3M 247M 2% /run
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 252M 0 252M 0% /sys/fs/cgroup
tmpfs 51M 0 51M 0% /run/user/0
我们使用mount
命令查看一下/
目录的挂载点为/dev/mmblk0p1
,
root@kali:~# mount
/dev/mmcblk0p1 on / type ext2 (rw,relatime,block_validity,barrier,user_xattr,acl)
devtmpfs on /dev type devtmpfs (rw,relatime,size=248424k,nr_inodes=62106,mode=755)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
......
所以使用下面的命令来扩展文件系统,这个过程需要一些时间:
root@kali:~# resize2fs /dev/mmcblk0p1
resize2fs 1.43.5 (04-Aug-2017)
/dev/root 上的文件系统已被挂载于 /;需要进行在线调整大小
old_desc_blocks = 1, new_desc_blocks = 2
/dev/root 上的文件系统现在为 7592704 个块(每块 4k)。
root@kali:~# df -lh
文件系统 容量 已用 可用 已用% 挂载点
/dev/root 29G 4.2G 24G 16% /
devtmpfs 243M 0 243M 0% /dev
tmpfs 252M 0 252M 0% /dev/shm
tmpfs 252M 4.3M 247M 2% /run
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 252M 0 252M 0% /sys/fs/cgroup
tmpfs 51M 0 51M 0% /run/user/0
调整后我们看到,文件系统已经调整为SD卡的全部可使用空间大小29GB了。
现在我们已经可以登录usb-armory
设备,并调整了文件系统大小,但我们想到安装软件或者更新kali
系统就需要能够连接网络。
项目文档中介绍了方法: https://github.com/inversepath/usbarmory/wiki/Host-communication
我是在Mac平台上,所以先把usb-armory
的设备ip改成了192.168.2.2
, 网关地址改为:192.168.2.1
, 如下:
root@kali:~# vi /etc/network/interfaces
root@kali:~# cat /etc/network/interfaces
auto lo
iface lo inet loopback
allow-hotplug usb0
iface usb0 inet static
#address 10.0.0.1
address 192.168.2.2
netmask 255.255.255.0
#gateway 10.0.0.2
gateway 192.168.2.1
root@kali:~# reboot
再更改模拟网关ip如下图:
并设备共享主机的网络给模拟网关,使得usb-armory
可以通过它来连接网络:
然后登录usb-armory
:
$ ssh [email protected] #注意些时的usb-armory的ip已经改变为192.168.2.2了
The authenticity of host '192.168.2.2 (192.168.2.2)' can't be established.
ECDSA key fingerprint is SHA256:F3Pb9WfZJGvQ2KatydD8gDlNesA3ABhn/xjc/HnopiM.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.2.2' (ECDSA) to the list of known hosts.
[email protected]'s password:
The programs included with the Kali GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Kali GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Wed Jul 12 14:02:10 2017 from 10.0.0.2
root@kali:~#
这样就可以让usb-armory
连接到主机的网络,这里我更新一个apt-get
的缓存信息,可见网络连接是成功的:
root@kali:~# apt-get update
获取:1 http://kali.mirror.garr.it/mirrors/kali kali-rolling InRelease [30.5 kB]
获取:2 http://kali.mirror.garr.it/mirrors/kali kali-rolling/main Sources [11.5 MB]
14% [2 Sources 16.1 kB/11.5 MB 0%]
......
之后你就可以使用apt-get upgrade
或apt-get dist-upgrade
来更新系统了。也可以下载安装一些其它的软件。
刚装的Kali的官方软件源在国外,存在不能获取的问题,我们需要添加国内的软件源来更新系统和软件.
先查看一下Kali的版本:
root@kali:~# lsb_release -a
No LSB modules are available.
Distributor ID: Kali
Description: Kali GNU/Linux Rolling
Release: kali-rolling
Codename: kali-rolling
修改文件/etc/apt/sources.list
, 内容如下:
root@kali:~# cat /etc/apt/sources.list
#官方源
#deb http://http.kali.org/kali kali-rolling main non-free contrib
#deb-src http://http.kali.org/kali kali-rolling main non-free contrib
#阿里
deb http://mirrors.aliyun.com/kali kali-rolling main non-free contrib
#中科大
deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
#清华
deb http://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free
执行更新:
root@kali:~# apt-get clean
root@kali:~# apt-get update && apt-get upgrade && apt-get dist-upgrade
root@kali:~# apt-get install linux-headers-$(uname -r) # 内核更新
可能在更新了系统之后,出现下次重启之后无法从USB登录usb-armory
的问题,所以要确保/etc/modules
中选中了模块g_ether
,/etc/modprobe.d/usbarmory.conf
中有相关信息,不一定和下图完全一样:
usb-armory
还有一种运行模式是可以独立当作主机来运行的,配合上我买的 TL-WN722N
无线网卡以及Host Adapter
,可以连网独立运行,独立运行并连网后,可以使用ssh来远程登录它来做一些渗透测试的实验。
要切换运行模式还是有点难度的。下面让我为你细细道来;-D
我们目前是在外设模式,先登录后进入/boot
目录,列出目录下的文件:
root@kali:~# cd /boot && ls
imx53-usbarmory.dtb imx53-usbarmory-host.dtb imx53-usbarmory-scc2.dtb zImage
imx53-usbarmory-gpio.dtb imx53-usbarmory-i2c.dtb imx53-usbarmory-spi.dtb
我们注意两个文件: imx53-usbarmory.dtb和imx530usbarmory-host.dtb
。这两个文件分别对应外设模式和主机模式,当前生效的文件是imx53-usbarmory.dtb
,想要切换到主机模式 ,需要先把imx53-usbarmory.dtb
重命名为imx53-usbarmory-back.dtb
以便之后切回外设模式,然后把imx53-usbarmory-host.dtb
文件重命名为imx53-usbarmory.dtb
使主机模式被系统使用。
root@kali:/boot# mv imx53-usbarmory.dtb imx53-usbarmory-back.dtb
root@kali:/boot# mv imx53-usbarmory-host.dtb imx53-usbarmory.dtb
root@kali:/boot# ls
imx53-usbarmory-back.dtb imx53-usbarmory-gpio.dtb imx53-usbarmory-scc2.dtb zImage
imx53-usbarmory.dtb imx53-usbarmory-i2c.dtb imx53-usbarmory-spi.dtb
root@kali:/boot# halt #关机
重启之后就会以独立主机的模式运行了。
**这里有个问题: **切换为独立主机模式后,我们的虚拟USB网关将不起作用了,也就是说我们无法从电脑直接登录到usb-armory
设备上。只能先使用usb-armory
的串口并通过TTL-USB转换口连接电脑,使用minicom软件来从电脑上登录。
usb-armory
的GPIO布局图如下:
我的设备型号是MK I
,所以对应第二列,实际设备上焊盘为方形对应一号,如下图:
下面我们就连接设备从串口进行登录usb-armory
,我使用的TTL-USB转换器如下:
我们把TTL-USB
和usb-armory
的GPIO按以下方式连接:
TTL-USB | USB-ARMORY |
---|---|
TXD | 6 |
RXD | 5 |
GND | 1 |
实际连接方式为如下图:
我们已经把TTL-USB
插入电脑,就需要设置一下minicom
软件准备接收串口通信数据。关于如下设置minicom
请参看这篇文章:http://blog.csdn.net/u010285246/article/details/72354038
设置完成我们开启minicom
后,给usb-armory
上电,就可以看到登录信息了:
此时,我们就通过串口登录usb-armory
了。
如果我们独立主机模式每次都使用串口登录,无疑是很麻烦的,所以我们需要设置无线网卡连接热点,然后就可以通过局域网无线登录usb-armory
了。
通过串口登录后,在文件/etc/network/interfaces
中添加
allow-hotplug wlan0
iface wlan0 inet dhcp
wpa_ssid "TP-LINK_1202"
wpa_psk "1202120212021202"
这个文件指定了我要连接的无线接入点的名称和密码,根据实际情况修改为你们自己的。
到目前为止,我们已经把无线网卡(TL-WN722N)连接到了设备上,通过命令查看一下:
root@kali:~# lsusb
Bus 001 Device 002: ID 0cf3:9271 Atheros Communications, Inc. AR9271 802.11n
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
第一个设备就对应我的无线网卡,TL-WN722N的芯片是AR9271,驱动型号是 ath9k_htc,我们使用命令查看一下Kali默认的驱动程序:
root@kali:/etc/wpa_supplicant# lsmod
Module Size Used by
arc4 1638 2
ath9k_htc 51575 0
ath9k_common 20586 1 ath9k_htc
ath9k_hw 380368 2 ath9k_htc,ath9k_common
ath 18072 3 ath9k_htc,ath9k_hw,ath9k_common
ltc3589 6226 0
regmap_i2c 2753 1 ltc3589
mac80211 343001 1 ath9k_htc
cfg80211 226779 4 ath9k_htc,mac80211,ath,ath9k_common
i2c_imx 10122 0
......
可以看到,Kali默认是支持驱动这款无线网卡的,因为毕竟是做渗透用的最多的无线网卡了,很多网店处在断货状态,博主能买到这个网卡也是很不容易的。
上面我们已经配置了网卡的接入点参数,但是由于kali
自带的固件可能有些问题,我们需要更新一下系统对应TL-WN722N
网卡的固件,方法如下:
git clone git://git.kernel.org/pub/scm/linux/kernel/git/dwmw2/linux-firmware.git
root@kali:~# cd linux-firmware/
root@kali:~/linux-firmware# cp ./htc_9271.fw /lib/firmware/
这一步,我们可以先切换为主机外设模式,使用主机的网络下载好文件并拷贝后,再切换回独立运行模式。
独立运行模式下,reboot
重启,就会发现,TL-WN722N
无线网卡已经接入AP,并可以上网了:
root@kali:~# iwconfig wlan0
wlan0 IEEE 802.11 ESSID:"TP-LINK_1202"
Mode:Managed Frequency:2.462 GHz Access Point: EC:26:CA:1B:C0:44
Bit Rate=150 Mb/s Tx-Power=20 dBm
Retry short limit:7 RTS thr:off Fragment thr:off
Encryption key:off
Power Management:off
Link Quality=70/70 Signal level=-37 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:15 Missed beacon:0
root@kali:~# wpa_cli
wpa_cli v2.4
Copyright (c) 2004-2015, Jouni Malinen and contributors
This software may be distributed under the terms of the BSD license.
See README for more details.
Selected interface 'wlan0'
Interactive mode
> status
bssid=ec:26:ca:1b:c0:44
freq=2462
ssid=TP-LINK_1202
id=0
mode=station
pairwise_cipher=CCMP
group_cipher=CCMP
key_mgmt=WPA2-PSK
wpa_state=COMPLETED
ip_address=192.168.1.108
p2p_device_address=ec:08:6b:18:f1:70
address=ec:08:6b:18:f1:70
uuid=3be2a9c5-c2ad-5ce9-9bea-8abfedffeaea
> quit
root@kali:~# apt-get update
Hit:1 http://mirrors.aliyun.com/kali kali-rolling InRelease
Get:2 http://mirrors.ustc.edu.cn/kali kali-rolling InRelease [30.5 kB]
Get:3 http://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling InRelease [30.5 kB]
0% [2 InRelease gpgv 30.5 kB]
......
Yep!!!,USB-Armory
+Kali Linux
的试水宣告完成,我们就可以开启渗透测试之旅了。
如果有同道中人,欢迎加微信w_z_z_1991
进行交流。本人小白,刚刚起步。