• 渗透测试系统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的制作差不多。

    后语

     
  • 相关阅读:
    Android驱动开发
    LCD控制器时序参数的确定(基于TFT LCD: KD50G9-40NM-A3)
    Delphi IDHTTP用法详解
    Delphi开发Android的几个注意
    Delphi 调试连接 任意Android手机/平板/盒子
    Delphi XE10在 Android下调用静态库a文件
    Delphi的FIFO实现
    Delphi获取Android下GPS的NMEA 0183数据
    【CJOJ1603】【洛谷1220】关路灯
    【洛谷2986】【USACO10MAR】伟大的奶牛聚集
  • 原文地址:https://www.cnblogs.com/zgq123456/p/12608129.html
Copyright © 2020-2023  润新知