跳转到帖子

游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

TheHackerWorld官方

精选回复

发布于

这是围绕Raspberry Pi 设备上Kali 使用的3 部分博客文章系列的第一部分。第一篇文章将介绍在Raspberry Pi 上启用全磁盘加密(FDE),第二部分将介绍远程连接到它,最后,第三部分将介绍我们在制作这些文章时遇到的调试问题,以便其他人也可以学习如何做到这一点。

随着过去几年世界上发生的一切,越来越多的人开始远程工作。我们也不例外,今天,我们将重新审视我们的“投递箱”机器,该机器已被加密,因此一旦被发现就更难识别。

我们的目标是创建一个独立的“留下”无头设备,如果/当被发现时,我们很难弄清楚我们在做什么,因为我们的数据始终是安全的。为了实现这一目标,我们将使用全盘加密(FDE),并允许远程解锁(如果设备因任何原因重新启动)。如果我们希望在使用完磁盘后随时无法访问该磁盘,也可以选择使用LUKS Nuke 功能。

我们将在Raspberry Pi 4 Model B+ 上执行此操作,但它也在Raspberry Pi 3 Model B 上进行了测试。您应该能够使用大多数品牌/型号的类似设备,可能只需要一些创造性的适应/调整来保护您自己的系统。

这是一个更新的过程,因为我们之前已经介绍过其中的一部分。这次我们包括了额外的开发,并加入了一些社区贡献。我们要感谢Richard Nelson (unixabg) 的自动化脚本。我们将在完成手动方法后讨论这一点,因为我们始终建议您了解幕后发生的事情。

更高级别的概述

在深入了解我们要实现的目标的较低级别的技术细节之前,让我们快速浏览一下我们想要实现的目标,并将其分解:

在Raspberry Pi 4(以下称为“RPi”)上安装Kali Linux 准备系统加密启动,准备远程磁盘解锁设置SSH 密钥以允许远程解锁(使用initramfs 和Dropbear)备份任何现有数据配置加密分区恢复我们的数据破解!这听起来可能很多,但即使只有几个步骤,也相当简单。完成后,我们将拥有一个RPi,将:

引导从DHCP 获取IP 等待我们使用密钥通过SSH 连接允许我们提供LUKS 解锁或LUKS Nuke 密码然后当我们完成我们想做的任何事情时,剩下的唯一事情就是检索它mldr;在我们闲暇时!

在 RPi 上安装 Kali Linux

如果您按照步骤操作,请务必知道要将文件映像到何处,并替换/dev/sdX。不要盲目复制/粘贴!

我们将在现有的Kali 安装上创建我们的投递箱机器。使用其他基于Debian 的发行版应该非常容易,并且对于其他操作系统(Windows 用户除外!)

我们首先将下载最新的稳定的Kali RPi 镜像。在撰写本文时,这是Kali 2022.2。

我们还选择了64 位映像,因为我们有超过4GB 的RAM,并且没有使用任何HAT(顶部附加硬件)。调整文件名:后,32位的步骤是相同的

$ wget https://kali.download/arm-images/kali-2022.2/kali-linux-2022.2-raspberry-pi-arm64.img.xz

$ xzcat kali-linux-2022.2-raspberry-pi-arm64.img.xz | sudo dd of=/dev/sdX bs=512k 状态=进度

准备系统

准备 chroot

接下来我们将为chroot 做好准备。让我们创建要挂载microSD卡的位置,然后挂载它:

$ sudo mkdir -vp /mnt/chroot/

$ sudo 安装/dev/sdX2 /mnt/chroot/

$ sudo 安装/dev/sdX1 /mnt/chroot/boot/

$ sudo mount -t proc 无/mnt/chroot/proc

$ sudo mount -t sysfs 无/mnt/chroot/sys

$ sudo mount -o 绑定/dev /mnt/chroot/dev

$ sudo mount -o 绑定/dev/pts /mnt/chroot/dev/pts

$ sudo apt install -y qemu-用户-静态

$ sudo cp /usr/bin/qemu-aarch64-static /mnt/chroot/usr/bin/

最后两个命令稍后会派上用场,为initramfs 做好准备。

安装所需的软件包

现在我们的系统已设置完毕,我们可以使用chroot 来设置RPi 映像以进行加密。我们先进入chroot并安装一些必要的包:

$ sudo env LANG=C chroot /mnt/chroot/

┌──(根㉿kali)-[/]

└─# apt更新

┌──(根㉿kali)-[/]

└─# apt install -y busybox cryptsetup dropbear-initramfs lvm2

我们希望在开始之前确保我们使用的是最新的内核,所以我们还要确保我们已经安装了它们:

┌──(根㉿kali)-[/]

└─# apt install -y kalipi-kernel kalipi-bootloader kalipi-re4son-firmware

启动选项

接下来我们将编辑/boot/cmdline.txt 并更改根路径。 RPi 设备上的/boot/cmdline.txt 文件用于传递内核命令行选项。我们需要将根路径更改为/dev/mapper/crypt,然后添加cryptdevice=PARTUUID=$partuuid:crypt 。

这样做的原因是内核需要知道根文件系统在哪里,以便挂载并使用它,并且由于我们稍后将加密根文件系统,因此在启动时它也看不到未加密的设备,因为加密!虽然我们将此处的名称更改为“crypt”,但您可以随意命名它。

最终结果应该是这样的:

┌──(根㉿kali)-[/]

└─# vim /boot/cmdline.txt

┌──(根㉿kali)-[/]

└─# cat /boot/cmdline.txt

dwc_otg.fiq_fix_enable=2 console=serial0,115200 kgdboc=serial0,115200 console=tty1 root=/dev/mapper/crypt cryptdevice=PARTUUID=ed889dad-02:crypt rootfstype=ext4 fsck.repair=yes rootwait net.ifnames=0

分区布局

我们现在需要更新/etc/fstab 文件,这是系统上的一个配置文件,其中包含所有可用磁盘、磁盘分区以及处理它们时要使用的选项。

目前它填充了根文件系统的UUID,我们需要它指向我们将要创建的加密文件系统。在此示例中,我们注释掉了先前根设备的UUID,并指向/dev/mapper/crypt,这就是我们创建加密文件系统后将挂载的内容:

┌──(根㉿kali)-[/]

└─# vim /etc/fstab

┌──(根㉿kali)-[/]

└─# cat /etc/fstab

# 文件系统挂载点类型选项dump pass

proc /proc proc 默认0 0

/dev/mapper/crypt/ext4 错误=重新挂载-ro 0 0

#UUID=747bfa7c-edd2-471f-8fff-0ecafc2d3791/ext4 错误=重新安装-ro 0 1

LABEL=BOOT /boot vfat 默认0 2

配置加密分区

使用加密分区时,我们需要编辑或创建(如果不存在)/etc/crypttab 文件,cryptsetup 使用该文件来了解解锁加密设备所需的选项。

因为这个文件不存在,所以我们将创建/etc/crypttab 文件,并用我们需要的选项填充它:

┌──(根㉿kali)-[/]

└─# echo -e 'crypt\tPARTUUID=ed889dad-02\tnone\tluks' /etc/crypttab

现在我们做一些文件系统的技巧。我们创建一个假的LUKS 文件系统,该系统将允许cryptsetup 包含在initramfs 中,因为它看到一个加密分区。当您格式化任何LUKS 分区时,系统会提示您输入密码,虽然通常您会使用强密码,但因为我们仅使用此作为将cryptsetup 包含到initramfs 中的一种破解方式,因此在完成这些步骤后将不需要或使用您在此提示符下创建的密码,因此您可以将其设置为简短/快速输入的密码。这将在cryptsetup luksFormat 步骤中发生,当您运行cryptsetup luksOpen 步骤时,系统将提示您输入在cryptsetup luksFormat 期间设置的密码。

输入密码时您不会看到任何输入

┌──(根㉿kali)-[/]

└─# dd if=/dev/zero of=/tmp/fakeroot.img bs=1M count=20

┌──(根㉿kali)-[/]

└─#退出

$ sudo cryptsetup luksFormat /mnt/chroot/tmp/fakeroot.img

$ sudo cryptsetup luksOpen /mnt/chroot/tmp/fakeroot.img 地穴

$ sudo mkfs.ext4 /dev/mapper/crypt

配置 SSH 密钥

之后,我们需要复制或生成一个新的ssh 密钥以添加到Dropbear 的authorized_keys 文件中。

如果我们已经有一个现有的密钥可以复制超过:

$ sudo cp ~/.ssh/id_rsa.pub /mnt/chroot/

或者生成新的key:

$ ssh-keygen -t rsa -b 4096

[.]

输入保存密钥的文件(/home/kali/.ssh/id_rsa): /home/kali/.ssh/id_rsa_dropbear

输入密码(无密码则为空):

再次输入相同的密码:

您的身份信息已保存在/home/kali/.ssh/id_rsa_dropbear

您的公钥已保存在/home/kali/.ssh/id_rsa_dropbear.pub

[.]

$ sudo cp ~/.ssh/id_rsa_dropbear.pub /mnt/chroot/

输入密码时您不会看到任何输入

配置加密

返回chroot,我们需要创建一些新文件。

首先是zz-cryptsetup 挂钩,它将cryptsetup 所需的文件添加到initramfs 中。为了让它工作,需要将其标记为可执行文件,以便mkinitramfs 运行hook:

$ sudo env LANG=C chroot /mnt/chroot/

┌──(根㉿kali)-[/]

└─# vim /etc/initramfs-tools/hooks/zz-cryptsetup

┌──(根㉿kali)-[/]

└─# cat /etc/initramfs-tools/hooks/zz-cryptsetup

#!/bin/sh

设置-e

先决条件=''

先决条件()

{

回显'${PREREQ}'

}

案例“${1}”

先决条件)

先决条件

出口0

;

埃萨克

./usr/share/initramfs-tools/hook-functions

mkdir -p ${DESTDIR}/cryptroot ||真实

猫/etc/crypttab ${DESTDIR}/cryptroot/crypttab

猫/etc/fstab ${DESTDIR}/cryptroot/fstab

猫/etc/crypttab ${DESTDIR}/etc/crypttab

猫/etc/fstab ${DESTDIR}/etc/fstab

copy_file 配置/etc/initramfs-tools/unlock.sh /etc/unlock.sh

┌──(根㉿kali)-[/]

└─# chmod

创建帐户或登录后发表意见

最近浏览 0

  • 没有会员查看此页面。