物理安全与磁盘加密
约 1530 字大约 5 分钟
2024-11-16
物理安全
安全原则之一是纵深防御,因此我们应该考虑安全层,第一层就是物理安全
如果您阻止潜在的对手能够获得对计算机系统的物理访问,那将是最好的。如果入侵者可以进入您的办公室,那么很容易将磁盘驱动器移除并带走。这是一个简单的攻击,需要最少的技术技能。
假设您已经采取了必要的措施,以防止入侵者采取磁盘驱动器或整个计算机系统。此外,您已确保系统密码复杂且无法猜测。如果入侵者可以物理访问系统,那么使用GRUB(一种流行的Linux引导加载程序)重置root密码帐户是一项简单的任务。因此,我们有一句谚语“boot访问=root访问”。
很明显,我们需要确保电脑系统的实体安全;然而,万一实体安全受到破坏,我们需要提供额外的保护层。许多BIOS和UEFI固件允许您添加boot密码。此密码将防止未经授权的用户启动系统。但是,这只能用于个人系统;在服务器上使用它没有意义,因为这需要有人亲自在场以提供boot密码。
我们可以考虑根据要保护的Linux系统添加GRUB密码。许多工具可以帮助实现这一点。其中一个工具是grub2-mkpasswd-pbkdf2,它会提示您输入两次密码并为您生成一个哈希值。根据Linux发行版(例如:Fedora和Ubuntu)的不同,结果哈希应该被添加到相应的配置文件中。此配置将防止未经授权的用户重置您的root密码。它将要求用户提供密码以通过GRUB访问高级boot配置,包括使用root访问权限登录。
root@AttackBox# grub2-mkpasswd-pbkdf2
Enter password:
Reenter password:
PBKDF2 hash of your password is
grub.pbkdf2.sha512.10000.534B77859C13DCF094E90B926E26C586F5DC9D00687853487C4BB1500D57EC29E2D6D07A586262E093DCBDFF4B3552742A25700BAB6B76A8206B3BFCB273EEB4.4BA1447590EA8451CD224AA1C5F8623FE85D23F6D34E2026E3F08C5AA79282DB65B330BAB4944E9374EC51BF11EFF418EDA5D66FF4D7AAA86F662F793B92DA61提示
需要注意的是,为GRUB添加密码不适用于使用云服务提供商部署的系统; GRUB密码没有意义,因为您没有访问物理终端的权限。
确保适当的物理安全是必须考虑到它是多么容易的攻击者与物理访问肆虐。向GRUB添加密码是阻止物理访问系统键盘的用户获得访问权限的合理措施。但是,我们需要一个计划,以防攻击者找到窃取磁盘驱动器的方法。
回答以下问题
可以使用什么命令为GRUB引导加载程序创建秘密?
答案: grub2-mkpasswd-pbkdf2
PBKDF2代表什么
答案:Password-Based Key Derivation Function 2
url: https://en.wikipedia.org/wiki/PBKDF2 title: "PBKDF2 - Wikipedia" host: en.wikipedia.org favicon: https://en.wikipedia.org/static/favicon/wikipedia.ico
文件系统分区和加密
加密使数据在没有解密秘钥的情况下不可读。在这种情况下,即使对手有完全的物理访问您笔记本的权限(比如:窃取它),也不能读取磁盘数据,一个充满加密数据的磁盘启动器,就像一个坏的磁盘一样安全。
LUKS(Linux Unified Key Setup)
Linux统一密钥设置(LUKS)是用于Linux系统的加密磁盘加密标准。它使用对称和非对称加密来保护加密磁盘和分区上的数据。LUKS是一种通用的加密方法,可用于加密任何块设备,包括硬盘驱动器,USB驱动器,甚至整个操作系统。
当分区使用LUKS加密时,磁盘布局将如下图所示:
 图中字段含义:
- LUKS phdr: (LUKS Partition Header) 存储有关UUID(通用唯一标识符)、使用的密码、密码模式、密钥长度和主密钥的校验和的信息。
 - KM:每个KM 是一个保存秘钥中用户密码加密的主秘钥副本,换句话说,我们可以用第一个用户的密码加密主密钥并保存在KM 1中,用第二个用户的密码加密并保存在KM 2中,依此类推。
 - BulkData: 保存了由主秘钥加密的数据,主秘钥由用户名密码加密后,保存在KM中。
 
LUKS 使用示例
安装
apt install cryptsetupyum install cryptsetup-luksdnf install cryptsetup-luks使用
- 先使用
fdisk -l、lsblk、或blkid确认分区名称,(如有必要,需使用fdisk创建分区) - 设置LUKS 加密分区:
cryptestup -y -v luksFormat /dev/sdb1(将/dev/sdb1替换为要加密的分区名称)。 - 创建访问分区的映射:
cryptsetup luksOpen /dev/sdb1 EDCdrive。 - 确认映射详情: 
ls -l /dev/mapper/EDCdrive和cryptsetup -v status EDCdrive。 - 用
0覆盖原有数据dd if=/dev/zero of=/dev/mapper/EDCdirve。 - 格式化分区:
mkfs.ext4 /dev/mapper/EDCdrive -L "Strategos USB"。 - 挂载并开始使用:
mount /dev/mapper/EDCdrive /media/secure-USB。 - 查看磁盘LUKS设置: 
cryptsetup luksDump /dev/sdb1。 
回答以下问题
LUKS代表什么?
答案: Linux Unified Key Setup
我们无法将外部存储附加到VM,因此我们创建了一个/home/tryhackme/secretvault.img文件。它使用秘密2N9EdZYNkszEE3Ad进行加密。要访问它,您需要使用cryptestup打开它,然后将其挂载到空目录,例如myvault。秘密保险库中的标志是什么?
答案:THM{LUKS_not_LUX}
题目二过程
打开并挂载加密磁盘
sudo cryptsetup luksOpen secretvault.img EDCdrive
sudo mount /dev/mapper/EDCdrive myvault/查看磁盘挂载情况
lsblk
NAME       MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
loop0        7:0    0  24.4M  1 loop  /snap/amazon-ssm-agent/6312
loop1        7:1    0 116.8M  1 loop  /snap/core/14946
loop2        7:2    0  28.1M  1 loop  /snap/amazon-ssm-agent/2012
loop3        7:3    0  55.3M  1 loop  /snap/core18/1885
loop4        7:4    0  55.6M  1 loop  /snap/core18/2714
loop5        7:5    0  63.3M  1 loop  /snap/core20/1852
loop6        7:6    0  70.6M  1 loop  /snap/lxd/16922
loop7        7:7    0  91.9M  1 loop  /snap/lxd/24061
loop8        7:8    0   512M  0 loop
\u2514\u2500EDCdrive 253:0    0   510M  0 crypt /home/tryhackme/myvault
xvda       202:0    0     8G  0 disk
\u2514\u2500xvda1    202:1    0     8G  0 part  /
xvdh       202:112  0     1G  0 disk获取flag
ls
lost+found  task3_flag.txtcat task3_flag.txt
THM{LUKS_not_LUX}
