如何在kali Linux上创建一个用于隐藏文件的加密容器
如何在kali Linux上创建一个用于隐藏文件的加密容器
本篇文章给大家分享的是有关如何在kali Linux上创建一个用于隐藏文件的加密容器,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
作为渗透测试人员,有时我们需要长期的存储一些较为敏感的客户数据。为了保证这些数据的安全性,我们会使用到各种加密手段及算法。虽然,这在很大程度上保证了我们数据的安全性,但有关加密学和加密学的主题非常庞大和复杂。因此,本文我将教大家在Kali Linux上创建一个简易但非常安全的,用于隐藏文件的加密容器(container )。当容器被锁定时,除你之外将没有任何人能够查看存储在其中的文件。
注:如果你的系统是Ubuntu或Debian,为了保证安全性请使用非root权限运行以下命令,并且只在需要时添加sudo。
创建一个解锁容器的密钥
首先,我们来创建一个文件作为解锁容器的主密钥。这里我不建议大家使用密码,如果使用密码的话攻击者很可能会实施爆破攻击。
ddif=/dev/urandomof=/path/to/master.keyfilebs=4096count=11+0recordsin1+0recordsout4096bytes(4.1kB,4.0KiB)copied,0.000300577s,13.6MB/s
以上的密钥文件可以取任意名称。为了简单起见,我使用的名称为“master.keyfile”。dd命令将随机(/dev/urandom)生成一个4096字节的密钥文件,这比我们能想到的任何可能的32字符密码更为强壮。你可以将该密钥文件保存在你的U盘或远程服务器上。但切记千万不要将其共享或电子邮件发送甚至丢失。因为一旦丢失的话,容器将永远无法被解锁!
创建一个空容器
接着,我们使用dd和zero命令来创建一个空容器(根据需求指定创建容器大小)。
ddif=/dev/zeroof=/path/to/CONTAINERbs=1count=0seek=1G0+0recordsin0+0recordsout0bytescopied,0.000190114s,0.0kB/s
以上我们可以将“CONTAINER”命名为“Vault”或“Encrypted”以方便我们的查找。或者如果你想要更加隐蔽,你也可以将其命名为像“TaylorSwift.mp3”这类的名称,并将其放在歌曲目录中以规避被动取证。
加密容器
使用cryptsetup命令加密容器。
sudocryptsetup-v-y-caes-xts-plain64-s512-hsha512-i5000--use-randomluksFormat/path/to/CONTAINER/path/to/master.keyfileWARNING!========Thiswilloverwritedataon/tmp/CONTAINERirrevocably.Areyousure?(Typeuppercaseyes):YESKeyslot0created.Commandsuccessful.
以上我将cipher(-c),密钥大小(-s)和hash(-h)都设置为了高强度值。cryptsetup命令将格式化(luksFormat)CONTAINER,并对其进行加密。
系统会要求你输入“YES”以进行下一步操作。此过程可能需要等待几分钟的时间,具体取决于你容器的大小。100 GB大小的容器需要大概5分钟的时间才能完成。
解锁容器
完成后,我们需要解锁CONTAINER格式化卷(volume)。
sudocryptsetupluksOpen/path/to/CONTAINERPRIVATE--key-file/path/to/master.keyfile
cryptsetup命令将使用之前我们创建的“master.keyfile”(--key-file)解锁(luksOpen)我们的容器。mapper point("PRIVATE") 用于映射(以及稍后挂载)设备和卷。名称“PRIVATE”是任意的,你也可以使用其它的名称。
格式化未锁定卷
格式化未锁定的CONTAINER,将允许我们实际读取和写入卷的数据。有许多可用的格式类型,如FAT32和NTFS。这里我将使用Ext4,一种广泛支持且灵活的Unix格式。任何Debian或Ubuntu机器,都能够解锁和读取存储在容器中的文件。
使用以下mkfs命令格式化未锁定容器。
sudomkfs.ext4/dev/mapper/PRIVATEmke2fs1.44.3(10-July-2018)Creatingfilesystemwith2616324kblocksand65408inodesFilesystemUUID:948eae1b-dd6d-4910-8a3c-3474488bdf0cSuperblockbackupsstoredonblocks:32768,98304,163840,229376Allocatinggrouptables:doneWritinginodetables:doneCreatingjournal(4096blocks):doneWritingsuperblocksandfilesystemaccountinginformation:done
将未锁定卷挂载到本地目录
首先,我们使用mkdir命令来创建一个目录(名称任意)。当解锁卷和挂载后,将可在该目录下访问容器中的文件。
mkdir~/Private
然后,使用以下命令将未锁定卷挂载到新创建的〜/Private目录。
sudomount/dev/mapper/PRIVATE~/Private
Kali用户可以使用文件管理器导航到/root/Private目录访问内容。
Ubuntu和Debian用户可以导航到/home/
设置文件权限
设置文件权限对Ubuntu和Debian用户尤为重要。设置卷权限,可以方便非root用户在容器未锁定时访问其中的数据。否则,将只有root权限的用户才能更改容器中的内容。
sudochown-R"$USER":"$USER"~/Private
chown命令将递归(-R)将未锁定容器及其内容的权限,更改为当前用户($USER)权限设置。
完成后锁定容器
在容器中添加或删除文件后,使用下面的umount命令卸载卷并锁定(luksClose)容器。
sudoumount/root/Private&&sudocryptsetupluksClosePRIVATE
需要时解锁容器
之后,当你需要解锁容器时可以使用以下命令(luksOpen)容器。
sudocryptsetupluksOpen/path/to/CONTAINERPRIVATE--key-file/path/to/master.keyfile
然后,使用mount命令将卷挂载到本地目录。
sudomount/dev/mapper/PRIVATE~/Private
自动创建安全容器(可选)
这里我编写了一个交互式可用于自动化创建安全容器的Bash脚本。一旦运行,你只需输入容器名称,密钥文件名,挂载点及容器大小即可。其余操作都将自动为你完成,且整个过程不到一分钟的时间。
#!/bin/bashG="\033[1;32m";N="\033[0;39m";functionnotification(){echo-e"$G""\n[+]$1""$N"};functionnameVol(){read-p"Nameofencryptedcontainer(e.g.,"Vault","grocerylist.txt"):"vol_name;if[[!-n"$vol_name"]];thenvol_name='EncryptedContainer';fi};functionnameKey(){read-p"NameofKeyfile(e.g.,"master.keyfile","image.jpg"):"key_file;if[[!-n"$key_file"]];thenkey_file='master.keyfile';fi};functionnameMount(){read-p"Wheretomountthecontainerwhenit'sunlocked(e.g.,"luksPrivate"):"mount_dir;if[[!-n"$mount_dir"]];thenmount_dir='luksPrivate';fi};functionnameSize(){read-p"Choosevolumesize(e.g.,10G,200M):"vol_size;if[[!-n"$vol_size"]];thenvol_size='1G';fi};functionddZero(){ddif=/dev/zeroof="$vol_name"bs=1count=0seek="$vol_size"&¬ification"Emptyvolumecreated."};functionddRandom(){ddif=/dev/urandomof="$key_file"bs=4096count=1&¬ification"Keyfilesuccessfullycreated."};functionencryptCon(){sudocryptsetup-v-y-caes-xts-plain64-s512-hsha512-i5000--use-randomluksFormat"$vol_name""$key_file"&¬ification"Encryptedcontainercreated."};functionencryptOpen(){sudocryptsetupluksOpen"$vol_name""$mount_dir"--key-file"$key_file"&¬ification"Volumeunlocked."};functionmkfsFormat(){sudomkfs.ext4/dev/mapper/"$mount_dir"&¬ification"Volumeformatted."};functionmountDir(){if[[!-d$HOME/"$mount_dir"/]];thenmkdir-p$HOME/"$mount_dir"/;fi;sudomount/dev/mapper/"$mount_dir""$HOME"/"$mount_dir"/&¬ification"Volumemounted."};functionvolPerm(){sudochown-R"$USER":"$USER""$HOME"/"$mount_dir"&¬ification"Volumepermissionsset.Don'tlosetheKeyfile!"};nameVol;nameKey;nameMount;nameSize;ddZero;ddRandom;encryptCon;encryptOpen;mkfsFormat;mountDir;volPerm
将上述脚本保存到名为“createContainer.sh”的文件中,并赋予文件可执行(chmod)权限,然后运行文件。
chmod+xcreateContainer.sh./createContainer.sh
截图:
以上就是如何在kali Linux上创建一个用于隐藏文件的加密容器,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注恰卡编程网行业资讯频道。
推荐阅读
-
如何快速查看笔记本电脑型号?
-
如何彻底卸载Office 2016,分步指南
-
手机如何快速验钞?简单步骤鉴别真伪
-
如何给压缩包加密设置密码?
-
如何查看手机隐藏图片?简单步骤教学
-
B站如何赚钱?平台盈利模式与用户变现方法解析
-
如何用PS抠图?Photoshop抠图详细步骤解析
-
如何手工制作台历?简单步骤与创意设计指南
-
学生成绩如何正确排序?
-
如何制作英文表格?步骤详解与实用技巧
-
如何快速查看笔记本电脑型号?
-
如何彻底卸载Office 2016,分步指南
-
手机如何快速验钞?简单步骤鉴别真伪
-
如何给压缩包加密设置密码?
-
如何查看手机隐藏图片?简单步骤教学
-
B站如何赚钱?平台盈利模式与用户变现方法解析
-
如何用PS抠图?Photoshop抠图详细步骤解析
-
如何手工制作台历?简单步骤与创意设计指南
-
学生成绩如何正确排序?
-
如何制作英文表格?步骤详解与实用技巧
-
如何快速查看笔记本电脑型号?
-
如何彻底卸载Office 2016,分步指南
-
手机如何快速验钞?简单步骤鉴别真伪
-
如何给压缩包加密设置密码?
-
如何查看手机隐藏图片?简单步骤教学
-
B站如何赚钱?平台盈利模式与用户变现方法解析
-
如何用PS抠图?Photoshop抠图详细步骤解析
-
如何手工制作台历?简单步骤与创意设计指南
-
学生成绩如何正确排序?
-
如何制作英文表格?步骤详解与实用技巧