将加密持久性添加到 Kali Linux Live USB 驱动器
在本次研讨会中,我们将研究从 USB 设备启动 Kali Linux 时可用的各种功能。我们将探索诸如持久性、创建 LUKS 加密持久性存储等功能,甚至涉足我们的 USB 驱动器的“LUKS Nuking”。默认的 Kali Linux ISO(从 1.0.7 开始)支持 USB 加密持久性。
0x01 - 首先将 Kali ISO 映像到您的 USB 驱动器上(我们的是 /dev/sdb)。完成后,您可以使用parted /dev/sdb print检查 USB 分区结构:
为了方便使用,请使用root帐户。这可以通过“sudo su”来完成。
kali@kali:~$ dd if=kali-linux-2022.3-live-amd64.iso of=/dev/sdb conv=fsync bs=4M
0x02 - 在 USB 驱动器上创建并格式化一个附加分区。在我们的示例中,我们在 Kali Live 分区上方的空白空间中创建了一个持久分区。
kali@kali:~$ fdisk /dev/sdb <<< $(printf "n\np\n\n\n\nw")
当 fdisk 完成时,新分区应该已经创建在/dev/sdb3
; 这可以通过命令来验证lsblk
。
0x03 - 使用 LUKS 加密分区:
kali@kali:~$ cryptsetup --verbose --verify-passphrase luksFormat /dev/sdb3
0x04 - 打开加密分区:
kali@kali:~$ cryptsetup luksOpen /dev/sdb3 my_usb
0x05 - 创建一个 ext3 文件系统并标记它:
kali@kali:~$ mkfs.ext3 -L persistence /dev/mapper/my_usb
kali@kali:~$ e2label /dev/mapper/my_usb persistence
0x06 - 挂载分区并创建您的 persistence.conf 以便更改在重新启动后持续存在:
kali@kali:~$ mkdir -p /mnt/my_usb
kali@kali:~$ mount /dev/mapper/my_usb /mnt/my_usb
kali@kali:~$ echo "/ union" | sudo tee /mnt/my_usb/persistence.conf
kali@kali:~$ umount /dev/mapper/my_usb
0x07 - 关闭加密分区:
kali@kali:~$ cryptsetup luksClose /dev/mapper/my_usb
现在您的 USB 驱动器已准备好插入并重新启动到 Live USB Encrypted Persistence 模式。
多个持久性存储
此时我们应该有如下分区结构:
kali@kali:~$ parted /dev/sdb print
我们可以向 USB 驱动器添加额外的持久性存储,无论是否加密……并在启动时选择我们要加载的持久性存储。让我们再创建一个非加密存储。我们会给它贴上标签并称之为“工作”。
0x01 - 创建一个额外的第四个分区,它将保存“工作”数据。我们再给它 5GB 的空间:
kali@kali:~$ parted /dev/sdb
GNU Parted 2.3
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
Model: SanDisk SanDisk Ultra (scsi)
Disk /dev/sdb: 31.6GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 32.8kB 2988MB 2988MB primary boot, hidden
2 2988MB 3050MB 64.9MB primary fat16
3 3050MB 10.0GB 6947MB primary
(parted) mkpart primary 10000 15000
(parted) quit
Information: You may need to update /etc/fstab.
0x02 - 格式化第四个分区,将其标记为“工作”:
kali@kali:~$ mkfs.ext3 /dev/sdb4
kali@kali:~$ e2label /dev/sdb4 work
0x03 - 挂载这个新分区并在其中创建一个 persistence.conf:
kali@kali:~$ mkdir -p /mnt/usb
kali@kali:~$ mount /dev/sdb4 /mnt/usb
kali@kali:~$ echo "/ union" > /mnt/usb/persistence.conf
kali@kali:~$ umount /mnt/usb
启动计算机,并将其设置为从 USB 启动。当启动菜单出现时,编辑 persistence-label 参数以指向您首选的持久性存储!
Kali 中数据的紧急自毁
作为渗透测试人员,我们经常需要随身携带存储在笔记本电脑上的敏感数据。当然,我们尽可能使用全盘加密,包括我们的 Kali Linux 机器,它往往包含最敏感的材料。让我们配置一个 nuke 密码作为安全措施:
kali@kali:~$ sudo apt install -y cryptsetup-nuke-password
kali@kali:~$ dpkg-reconfigure cryptsetup-nuke-password
配置的 nuke 密码将存储在 initrd 中,并可用于您可以在启动时解锁的所有加密分区。
备份你的 LUKS 密钥槽并加密它们:
kali@kali:~$ cryptsetup luksHeaderBackup --header-backup-file luksheader.back /dev/sdb3
kali@kali:~$ openssl enc -e -aes-256-cbc -in luksheader.back -out luksheader.back.enc
现在启动您的加密存储,并提供 Nuke 密码,而不是真正的解密密码。这将使加密存储中的任何信息都变得无用。完成此操作后,验证数据确实不可访问。
现在让我们恢复数据。我们将解密 LUKS 密钥槽的备份,并将它们恢复到加密分区:
kali@kali:~$ openssl enc -d -aes-256-cbc -in luksheader.back.enc -out luksheader.back
kali@kali:~$ cryptsetup luksHeaderRestore --header-backup-file luksheader.back /dev/sdb3
我们的插槽现已恢复。我们所要做的只是重新启动并提供我们正常的 LUKS 密码,系统就会恢复到原来的状态。
更新日期:2022 年 8 月 10 日
作者: g0tmi1k