渗透测试系统Kali安装到USB硬盘并实现数据可存储

小提示:本文使用的操作系统为Linux,所有命令都在 root 用户下执行

在计算机硬件越来越NB的时代下,把Kali安装到USB中对我们来讲然意义并不是太大,那为什么还要介绍Kali的U盘安装方法呢?

  • 便携
  • 从USB启动Kali完全不影响主机的操作系统(虚拟机运行在宿主机上,总有种不安全的感觉)

以上纯属个人观点

1、材料准备

  • Kail Linx 镜像,Kali Linux 官方下载地址 。
  • 一个容量为8GB的U盘(建议U盘大小为16GB以上,8GU盘太小,我这里使用8GB容量U盘只是出于演示目的)
  • 一台安装了Linux操作系统的主机(我这里使用的Debian9)

准备Kali镜像:这是我所下载的Kali镜像

准备U盘:
a. 插入U盘,确认设备名称以及分区
使用以下命令查看:

fdisk -l
3.png

由上面可以看出,目前我的系统有三个磁盘:

  • 一个465.8G,设备名称为 sda ,路径是 /dev/sda(这是我本机的系统盘)
  • 一个111.8G,设备名称为 sdb ,路径是 /dev/sdb(这是我额外挂载的用于存储家目录数据的磁盘)
  • 一个7.5G,设备名称为 sdc,路径是 /dev/sdc (这就是我们刚刚插入的8GU盘)

现在我们不管另外两个磁盘,来看下U盘,可以看到,目前我的U盘上有三个分区

  • /dev/sdc1
  • /dev/sdc2
  • /dev/sdc3

b. 清除分区(如果你的U盘没有分区,那你可以直接跳到下一步)
以下是分区清除过程

# 进入U盘(操作U盘)
root@c5:/home/code5# fdisk /dev/sdc

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.

# 输入指令 d ,表示删除分区
Command (m for help): d
# 输入3 表示删除分区3,也就是 /dev/sdc3 这个分区
Partition number (1-3, default 3): 3

Partition 3 has been deleted.

# 删除分区 2
Command (m for help): d   
Partition number (1,2, default 2): 2

Partition 2 has been deleted.

# 删除分区 1,由于上面删除了两个分区,U盘中只剩下一个分区,所以不用选择分区号,fdisk会直接删除分区1
Command (m for help): d
Selected partition 1
Partition 1 has been deleted.

# 写入对U盘的修改
Command (m for help): w

再次查看分区

fdisk -l

从上面可以看到,我们的U盘已经没有任何分区了
所以我们现在拥有了一个没有任何分区的纯净U盘

2、制作启动盘

现在我们的Kali镜像以及纯净U盘准备好了,开始制作kali的启动盘。
要制作Kali的启动盘很简单,使用dd命令即可

# 把 kali 镜像写入到我们的U盘中
dd if=./kali-linux-2019.1a-amd64.iso of=/dev/sdc bs=1M
# if(input file) :  输入
# of(output file):  输出
# bs(bytes)      :  输入/输出块大小

写入完成后,你U盘会多出两个分区,一个是引导分区,一个是Kali的系统分区。


所以,你的U盘看起来应该是这样的


使用 dd 命令制作Kali启动盘后就是可直接使用的 Live 系统了,插上到USB中,把电脑设置为USB启动即可使用。

3、为启动盘做持久化处理

第二步中我们已经把Kali的启动盘制作好了,但还不能持久化存储数据,一旦重启,你对Kali的所有修改都会复原,所以我们要对启动盘做一些持久化的处理,让其可以存储我们的修改和数据。

做持久化处理说白了就是在启动盘中:划分存储分区,配置存储分区,用于存储数据。

所以,我们先使用 parted命令 在U盘中新建一个分区,以下是新建分区步骤:

# 进入U盘(操作U盘)
root@c5:/home/code5# parted /dev/sdc
GNU Parted 3.2
Using /dev/sdc
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted)                                                                  
(parted)
# 使用print指令查U盘所有分区                                                                  
(parted) print                                                            
Model: Generic Flash Disk (scsi)
Disk /dev/sdc: 8053MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: s

# 未划分前有两个分区
Number  Start   End     Size    Type     File system  Flags
 1      32.8kB  3483MB  3483MB  primary               boot, hidden
 2      3483MB  3484MB  721kB   primary

# 把剩余空间划分为存储分区
# 3484: 第二个分区的起点
# 8053: U盘总大小
(parted) mkpart primary 3484 8053                                         
(parted) print                                                            
Model: Generic Flash Disk (scsi)
Disk /dev/sdc: 8053MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

# 划分存储分区后
Number  Start   End     Size    Type     File system  Flags
 1      32.8kB  3483MB  3483MB  primary               boot, hidden
 2      3483MB  3484MB  721kB   primary
 3      3484MB  8053MB  4569MB  primary               lba

# 退出 parted
(parted) quit                                                             
Information: You may need to update /etc/fstab.

root@c5:/home/code5#                                                      
现在,你的U盘看起来应该是这样

分区划分好了,向分区写入 ext3 文件系统, 并命名为 persistence(这一步很重要!这一步很重要!这一步很重要!)

mkfs.ext3 -L persistence /dev/sdc3

写入文件系统后,为存储分区分配一个名为 persistence 的卷标(这一步很重要!这一步很重要!这一步很重要!)

e2label /dev/sdc3 persistence

现在你可以从U盘启动你的Kali,并在Kali的设置中把语言改为中文,重启Kali。

重启后你会发现,语言是英文而不是我们重启前所设置的中文,这说明我们的Kali启动盘还没有实现数据的持久化存储。

那是因为我们还未配置我们的存储分区。

现在,让我们重新插入U盘。

挂载我们的存储分区(因为我们要向存储分区写入配置文件)

# 在挂载目录下新建 my_usb 目录用于挂载我们的存储分区
mkdir -p /mnt/my_usb

# 挂载存储分区到 /mnt/my_usb
mount /dev/sdc3 /mnt/my_usb

写入配置文件

# 在存储分区创建配置文件 persistence.conf 并写入内容: / union
echo "/ union" > /mnt/my_usb/persistence.conf

卸载存储分区

umount /dev/sdc3

持久化的处理到这里已经结束了,现在!你可以弹出你的U盘,再次尝试修改Kali的使用语言 <*_*>

关于启动选项问题

在启动过程中你会发现Kali给出了许多个启动选项

其中关于 持久化 的选项有两个

  • Live system (persistence, check kali.org/prst)
  • Live system (encrypted persistence, check kali.org/prst)

Live system (persistence, check kali.org/prst):这个选项用于启动可持久化的Kali
Live system (encrypted persistence, check kali.org/prst):这个选项用于启动可持久化的加密kali(也就是把存储分区加密后的kali),关于如何制作加密Kali,请看Kali官方教程,这里不再赘述。

什么,你不想看官方教程,那我在这里把命令简单的复制并解释一下下

# 首先把你的U盘搞成纯净U盘
# 假设你的U盘设备为 /dev/sdc
# 假设你使用的Kali镜像为 kali.ios



### 把镜像写入到到U盘,得到两个分区 /dev/sdc1 /dev/sdc2
dd if=kali.iso of=/dev/sdb bs=1M


### 划分存储分区 /dev/sdc3
# 选择操作的设备
parted /dev/sdc
#划分一个 start~end 大小的分区,根据你的U盘大小来设置
mkpart primary start end
# 退出 parted
quit


### 加密存储分区 /dev/sdb3
# LUKS加密 存储分区 /dev/sdc3
cryptsetup --verbose --verify-passphrase luksFormat /dev/sdc3
# 映射 /dev/sdb3 存储分区为 my_sub
cryptsetup luksOpen /dev/sdc3 my_usb
# 向分区写入 ext3 文件系统
mkfs.ext3 /dev/mapper/my_usb
# 为存储分区分配卷标 persistence
e2label /dev/mapper/my_usb persistence


### 写入配置文件
# 创建挂载目录
mkdir -p /mnt/my_usb
# 挂载存取分区到 /mnt/my_usb
mount /dev/mapper/my_usb /mnt/my_usb
# 向存储分区写入配置文件 persistence.conf ,内容为:/ union
echo "/ union" > /mnt/my_usb/persistence.conf
# 卸载存储分区
umount /dev/mapper/my_usb
# 关闭映射
cryptsetup luksClose /dev/mapper/my_usb

其实制作加密版的可持久化Kali只是多了一个 LUKS加密 的步骤,和普通的可持久Kali的制作差不多。

后语

 
原文地址:https://www.cnblogs.com/zgq123456/p/12608129.html