.. _run_kali_on_pi_zero: ====================================== 在树莓派Zero W上安装和运行Kali Linux ====================================== 树莓派Zero W概述 ================= 正如我在 :ref:`introduce_kali_linux` 所说的,Kali Linux作为基于Debian开发的面向安全的Linux发行版,天然继承了Debian跨平台的能力,可以在不同硬件平台运行,也包括ARM平台。因此,Kali Linux同样提供了 `ARM不同硬件平台 `_ 镜像。 .. note:: 详细在树莓派上安装操作系统,请参考 :ref:`pi_quick_start` 。 为了好玩(更Geek一些),我在Raspberry Pi(树莓派)上安装和运行Kali Linux,并且,使用一种称为 `Raspberry Pi Zero W `_ 的口香糖大小树莓派: .. figure:: ../../../_static/linux/kali_linux/pi_zero_w.jpg 另外,Zero W的USB扩展卡 ( :ref:`pi_zero_net_gadget` ),可以方便地将Kali Linux随身携带,只需要插入主机USB接口就可以工作, 加上一个透明的亚克力保护壳,非常美观: .. figure:: ../../../_static/linux/kali_linux/zero_usb_2.jpg :scale: 50 .. note:: 请注意,需要 :ref:`pi_zero_net_gadget` 才能实现通讯。 下载和镜像 ============ `Offensive Security官方网站提供Kali Linux ARM Images `_ ,提供了不同ARM版本的镜像,其中不仅有 Raspberry Pi 2/3 的版本,也有 Raspberry Pi Zero W版本。 下载 `Raspberry Pi Zero W版本kali-linux-2018.1 `_ 是 ``.xz`` 压缩版本(不是ISO),通过一下命令解压缩并写入到U盘(这里实际上是TF卡加了USB套,在linux上显示为 ``/dev/sdb`` ):: xzcat kali-linux-2018.1-rpi0w-nexmon.img.xz | \ dd bs=4M of=/dev/sdb iflag=fullblock oflag=direct status=progress 注意:这里使用的 ``of=/dev/sdb`` 是因为U盘识别为 ``sdb`` ,具体要看TF卡转成U盘插入Linux系统主机识别的设备名。 设置USB方式网络通讯 ====================== 采用 :ref:`pi_zero_net_gadget` 方式,设置通过USB通讯。所以需要修订树莓派启动配置参数。 - 挂载U盘:: sudo mount /dev/sdb2 /mnt sudo mount /dev/sdb1 /mnt/boot - 编辑 ``config.txt`` (Kali Linux默认似乎没有这个文件,所以创建),在最后添加一行:: dtoverlay=dwc2 - 编辑 ``cmdline.txt`` 在 ``rootwait`` 之后加上一个空格,以及 ``modules-load=dwc2,g_ether`` 。完整配置如下:: dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=792bacf6-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait modules-load=dwc2,g_ether .. note:: 我修改了Kali Linux的 ``cmdline.txt`` 文件中 ``root=/dev/mmcblk0p`` ,改成 ``root=PARTUUID=792bacf6-02`` 。这是因为我通过USB转接卡后,设备名称会改变,所以通过 ``PARTUUID`` 来确保设备识别实际不会变化。 - 编辑 ``/mnt/etc/network/interfaces`` 配置如下:: allow-hotplug usb0 iface usb0 inet static address 192.168.7.10 netmask 255.255.255.0 network 192.168.7.0 broadcast 192.168.7.255 gateway 192.168.7.1 dns-nameservers 192.168.7.1 - 卸载挂载的U盘:: sudo umount /mnt/boot sudo umount /mnt 然后将TF卡插入树莓派Zero W,通过USB方式插入到一台Linux主机上,此时Linux主机会自动发现新的网卡设备,例如 ``enp0s29u1u1`` - 通过在Linux主机上 ``/etc/network/interfaces`` 添加如下内容:: auto enp0s29u1u1 iface enp0s29u1u1 inet static address 192.168.7.1 netmask 255.255.255.0 network 192.168.7.0 broadcast 192.168.7.255 然后启动 ``sudo ifup enp0s29u1u1`` 网络通了之后,就可以 ``ssh 192.168.7.10`` ,默认账号 ``root`` 的密码是 ``toor`` ,请立即修改。 参考 ======== - `Hands-On: Kali Linux 2018.1 on the Raspberry Pi Zero W `_ - `How to customise your Linux desktop: Kali Linux and i3 Window Manager `_