USB-Armory + Kali 试水

USB-Armory

USB armory是由 Inverse Path 设计的一款开源硬件,它是一款U盘大小的微型计算机。通常受到信息安全人士和计算机Geeker的喜爱。

USB-Armory + Kali 试水_第1张图片

InversePath官网

GitHub项目

官方项目Wiki

购买 USB-Armory

由于usbarmory的硬件只在意大利生产,国内没有办法买到,我就在InversePath 官网提供的购买渠道之一的Hacker Warehouse 购买了这款硬件,第一次海外购买就这样完成了,使用了PayPal 的信用卡海外服务。这款硬件虽然小,但是死贵死贵的,花掉我1500+大洋(包括主机适配器和有监听模式的无线网卡) -_-# , 不过为了兴趣,我就忍了,吃土吧。

USB-Armory + Kali 试水_第2张图片

Kali Linux

Kali Linux 是信息安全人士做渗透测试用的比较多的平台。因为它包含了渗透测试常用的很多软件,不必另外麻烦下载安装。并且它较ubuntuCentOS等其它发行版小众一些,是信息安全入门的较好的一个linux平台。

Kali Linux官网

Kali Linux适配各种类型的计算机,像PC、手机、卡片机这些类型都可以安装,虚拟机什么的,而且还可以自己定制系统。

各平台Kali镜像下载

TL-WN722N无线网卡

这款无线网卡在国内也是很难买到的,京东上很抢手,几本上处于断货状态,这是一款经典的适合无线破解的网卡,而且Kali Linux 默认支持,不用额外自己去装驱动。


**在`Hacker WareHouse` 上下单购买一个星期左右到货,走的是`USPS` 到国内转`EMS`,还是挺快的**

USB-Armory + Kali 试水_第3张图片


既然货已经到,那么赶紧折腾起来

你得有张至少是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卡槽

USB-Armory + Kali 试水_第4张图片

作为主机的外设来通信的模式

把装了系统SD卡的 usbarmory 插入Mac电脑的USB口上,当有亮白色灯光闪烁后说明系统正常启动了,此时会在网络界面发现有一个虚拟网卡出现,如下图:

USB-Armory + Kali 试水_第5张图片

手动设置这个设备的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 + Kali 试水_第6张图片

并设备共享主机的网络给模拟网关,使得usb-armory可以通过它来连接网络:

USB-Armory + Kali 试水_第7张图片

然后登录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 upgradeapt-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 + Kali 试水_第8张图片

独立主机运行模式

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布局图如下:

USB-Armory + Kali 试水_第9张图片

我的设备型号是MK I,所以对应第二列,实际设备上焊盘为方形对应一号,如下图:

USB-Armory + Kali 试水_第10张图片

下面我们就连接设备从串口进行登录usb-armory,我使用的TTL-USB转换器如下:
USB-Armory + Kali 试水_第11张图片

我们把TTL-USBusb-armory的GPIO按以下方式连接:

TTL-USB USB-ARMORY
TXD 6
RXD 5
GND 1

实际连接方式为如下图:

USB-Armory + Kali 试水_第12张图片

我们已经把TTL-USB插入电脑,就需要设置一下minicom软件准备接收串口通信数据。关于如下设置minicom请参看这篇文章:http://blog.csdn.net/u010285246/article/details/72354038

设置完成我们开启minicom后,给usb-armory上电,就可以看到登录信息了:

USB-Armory + Kali 试水_第13张图片

USB-Armory + Kali 试水_第14张图片

此时,我们就通过串口登录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网卡的固件,方法如下:

  • 下载htc_9271.wf网卡驱动文件:
git clone git://git.kernel.org/pub/scm/linux/kernel/git/dwmw2/linux-firmware.git
  • 再将linux-firmware目录下的htc_9271.fw复制的/lib/firmware/
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的试水宣告完成,我们就可以开启渗透测试之旅了。

USB-Armory + Kali 试水_第15张图片

如果有同道中人,欢迎加微信w_z_z_1991进行交流。本人小白,刚刚起步。

你可能感兴趣的:(kali-linux,usb-armory,usb-armory,kali,渗透测试)