FOKS-TROT 开发文档
目录
FOKS-TROT 开发文档 1
引言: 1
简介: 1
编译及使用方法: 1
设计部分: 3
测试部分: 18
未修复的 bug: 18
结束: 18
引言:
本项目是个实验性项目,且作者对于文件系统等的理解难免会存在偏差,因此可能会产生误导,望读者辩证的学习,并且请读者遵循相关的开源协议。
因为之前写过一个 minifilter 的透明加密解密驱动,但当时水平确实有限, 有很多的问题,没有找到原因,只是进行了规避,导致在错误的基础上又产生了错误,所以在之前项目开发经验的基础上,写了这个项目。
这个项目也打算作为毕设,如有雷同,纯属雷同 s(- -)b
简介:
本项目是一个使用 minifilter 框架的透明加密解密过滤驱动,当进程有写入特定的文件扩展名(比如 txt,docx)文件的倾向时自动加密。授权进程想要读取密文文件时自动解密,非授权进程不解密,显示密文,且不允许修改密文,这里的加密或解密只针对 NonCachedIo。桌面端也可以发送特权加密和特权解密命令,实现单独加密或解密。
1.本项目使用双缓冲,授权进程和非授权进程分别使用明文缓冲和密文缓冲;
2.使用 StreamContext 存放驱动运行时的文件信息,使用文件标识尾的方式,在文件的尾部 4KB 储存文件所需的解密信息;
3.使用 AES 128-ECB 模式,并且使用密文挪用(Ciphertext stealing)的方法,避免明文必须分块对齐(padding)的问题;
4.Write 和 Read 使用 SwapBuffers 的方式进行透明加密解密;
5.特权加密和特权解密使用重入(Reentry)的方式,使驱动加密解密文件;
6.解决 FileRenameInformationEx 和 FileRenameInformation 问题,因此可以自动加密解密 docx,doc,pptx,ppt,xlsx,xls 等使用 tmp 文件重命名方式读写的文件;
7.注册进程相关回调,使用链表统一管理授权与非授权进程;注册进程与线程对象回调,保护进程 EPROCESS,ETHREAD 对象;对授权进程的代码段进行完整性校验。
编译及使用方法:
1.安装 CNG 库:
https://www.microsoft.com/en-us/download/details.aspx?id=30688
需要在微软官网下载 Cryptographic Provider Development Kit,
项目->属性的 VC++目录的包含目录,库目录设置相应的位置
链接器的常规->附加库目录 C:\Windows Kits\10\Cryptographic Provider Development Kit\Lib\x64
输入->附加依赖项一定要设置为 ksecdd.lib
2.在 Utils.c-> PocBypassIrrelevantFileExtension 设置要过滤的文件扩展名,Process.c->PocIsUnauthorizedProcess 设置非授权进程
3.使用 Visual Studio 2019 编译 Debug x64 驱动,编译 User、UserDll 和
UserPanel
4.建议在 Windows 10 x64,NTFS 环境运行(这里主要是 FltFlushBuffers2
的 IRP_MN_FLUSH_AND_PURGE 只支持 NTFS),