CoolerVoid/casper-fs

Casper-fs 是一个自定义的 Linux 内核模块生成器,用于使用资源来保护或隐藏自定义文件列表。
每个 LKM 都有资源来保护或隐藏 YAML 规则文件中的自定义列表之后的文件。
——是的,即使是 root 也无权查看文件或进行编辑和删除等操作。
只有当用户向自定义设备发送适当的密钥以释放文件系统中的操作时,才能捕获、编辑和删除文件:
Casper-fs:自定义隐藏Linux内核模块生成器 - 图1

概述

第一点,用户向 Casper-FS 发送带有规则的 YAML 文件的输入以生成自定义 LKM(Linux 内核模块),每个生成的模块都在文件系统中工作以保护和隐藏机密文件(即使是 root 也没有权限要查看文件,只能使用正确的发送密钥到自定义设备查看)。该程序有两个主要功能:隐藏私人文件。第二个功能是保护机密文件,防止读取、写入和删除。
动机:攻击者可以在糟糕的情况下读取您机器中的每个文件(如果他获得了 root 权限)。但如果你有一个 Casper-fs 自定义模块,攻击者将找不到隐藏的内核模块,该模块具有保护你的私人数据文件(如日志和密码库)的功能。
我开始这个项目的目的是保护我的服务器,也就是保护我朋友的机器。当我与朋友交谈时,我会说那些不知道如何编写低级代码的人。使用 Casper-fs,您可以生成自定义内核模块来保护您的机密文件。低级程序员可以为模块等编写新模板。

工具特点

  • 解释 YAML 文件并生成 C 语言文件“Linux 内核模块”的工具。
  • YAML 上下文是在内核领域创建自定义模块的白屏。当您使用 Casper-FS 时,“是”并不难。
  • 生成隐藏内核模块的资源,是的,即使root用户也看不到它。
  • 使 Linux 内核模块可见的资源,传递一个密钥来启用上下文。
  • 将任何文件转换为不可见文件系统的资源(甚至 root 都无法看到它)。
  • 转向可见的任何不可见文件的资源。
  • 保护文件系统中任何文件以防止写入和删除的资源。
  • 取消保护任何文件写入并删除适当权限的资源。
  • 带有脚本的持久性配方,在您引导系统时始终启动 Casper-fs。

    视频演示

    第一步:跑前了解

    内核

    验证内核版本是 3.x、4.x 还是 5.x:
    1. $ uname -r

    克隆存储库

    1. $ git clone https://github.com/CoolerVoid/casper-fs

    安装python环境

    进入文件夹并安装python3模块:
    1. $ cd casper-fs/module_generator
    2. $ sudo python3 -m pip install -r requirements.txt

    生成

    编辑目录 module_generator/rules/fs-rules.yaml 中的文件规则,python 脚本,使用该文件生成新的 casper-fs 自定义模块。 ```shell $ cat module_generator/rules/fs-rules.yaml binary_name: casperfs module_name: Casperfs unhide_module_key: AbraKadabra hide_module_key: Shazam fake_device_name: usb15 unhide-hide-file-key: Alakazam unprotect-protect-file-key: Sesame fs-rules:
  • hidden: 1: secret.txt 2: my_vault.db
  • protect: 1: backup_httpd.log 阵列被隐藏并受到阵列保护。您可以在上下文中插入许多另一个文件的元素,例如:shell
  • protect: 1: backup_httpd.log 2: secret_img.iso 3: secret_file.img 4: secret_file2.img 5: secret_file3.img

    1. 如果要研究生成静态代码,看目录下的“templates”内容。
    2. <a name="dNhl9"></a>
    3. ## 第二步:生成你的模块
    4. 如果要按照 YAML 规则文件生成内核模块,请按照该命令:
    5. ```shell
    6. $ python3 casper-fs-gen.py --rules rules/fs-rules.yaml

    此操作可以使用 fs-rules.yaml 生成通用模块。

    第三步:安装你的模块

    如果您使用 Fedora Linux,请为开发人员安装内核包:

    1. # dnf update
    2. # dnf install kernel-headers.x86_64 kernel-modules.x86_64 kernel.x86_64 kernel-devel kmod

    在 Ubuntu Linux 上:

    1. apt install linux-headers-generic gcc make

    测试模块:

    1. # cd output; make clean; make
    2. # insmod casperfs.ko

    第四步运行您的自定义模块。

  • 使 lsmod 可见的 casper-fs 模块的密码是密钥“Shazam”。

  • 使 casper-fs 不可见的密码是“AbraKadabra”。
  • 将秘密文件转为隐藏的密码是“Alakazam”,转为不隐藏的密码相同。
  • 保护文件或取消保护的密码是“芝麻”。

您需要发送假设备的密码,例如“usb15”,以测试文件系统上的隐藏和未隐藏资源:

  1. $ touch secret.txt
  2. $ ls
  3. -- no results--
  4. $ echo "Alakazam" > /dev/usb15
  5. $ ls
  6. secret.txt
  7. $ echo "Alakazam" > /dev/usb15
  8. $ ls
  9. -- no results--

所以这是一个尝试通过 Casper-fs 删除受保护文件的示例:

  1. # ls
  2. test.txt log.txt backup_httpd.log
  3. # rm backup_httpd.log
  4. # ls
  5. test.txt log.txt backup_httpd.log
  6. # echo "Sesame" > /dev/usb15 // to remove protection
  7. # rm backup_httpd.log
  8. # ls
  9. test.txt log.txt
  10. # echo "Sesame" > /dev/usb15 // to active protection again
  • 注意您需要在“lsmod”命令中将 casperfs 变为可见。移除模块前需要此操作:
    1. # rmmod casperfs
    2. rmmod: ERROR: ../libkmod/libkmod-module.c:799 kmod_module_remove_module() could not remove 'casperfs': No such file or directory
    3. rmmod: ERROR: could not remove module casperfs: No such file or directory
    4. # lsmod | grep casper
    5. # echo "Shazam" > /dev/usb15
    6. # lsmod | grep casper
    7. casperfs
    8. # rmmod casperfs

    Random notes

    在内核“3.x”、“4.x”和“5.x”的 ubuntu 16 和 fedora 29 上测试。

    持久化和隐藏历史的命令

    按照这个提示了解更多信息: https ://github.com/CoolerVoid/casper-fs/blob/main/module_generator/scripts/README.md

    关注点

    该工具旨在用于强化系统环境。在使用之前请注意您是否有适当的授权。我不对你的行为负责。你可以用锤子建造或摧毁它,选择法律路径,不要做坏人,记住。

    参考

    【WIKI】网络过滤器

    Linux 设备驱动程序

    M0nad 的 Diamorphine