https://github.com/hkx3upper/FOKS-TROT
Foxtrot 是一个实验性项目,且作者对于文件系统等的理解难免会存在偏差,因此可能会产生误导,望读者辩证的学习,并且请读者遵循相关的开源协议。且本项目5月12号以前的版本已作为毕设,如有雷同,纯属雷同((/- -)/)
经过五个月的维护, Foxtrot迎来了第一个稳定版1.0.0.2265版,项目现在是可以稳定运行在Windows 10 x64各版本上的(应该可以),建议大家重新clone一下,不过本版本不支持之前驱动加密过的文件(见第11条)。 P.S. 本来不想更新了,但又想想,还是决定实现一个能稳定运行的版本,省的有bug显得我很菜|•'-'•)و✧
Foxtrot 是一个使用minifilter框架的双缓冲透明加密解密过滤驱动,当进程有写入特定的文件扩展名(比如txt,docx)文件的倾向时自动加密文件。授权进程想要读取密文文件时自动解密,非授权进程不解密,显示密文,且不允许修改密文。 桌面端可以发送特权加密和特权解密命令,实现单独加密或解密文件;或者配置进程权限,机密文件夹,需加密的文件类型。
1.建议在Windows 10 x64,NTFS环境运行
2.安装并导入CNG库
3.在Config.c
中设置目标文件扩展名,机密文件夹,以及授权进程 4.使用Visual Studio 2019编译Debug x64 Poc驱动,(User、UserDll和UserPanel(这些不影响驱动使用)) 5.系统开启测试模式,cmd以管理员身份运行,输入bcdedit /set testsigning on
后重启电脑 6.使用DebugView的Capture->Capture Kernel
显示驱动日志,如果还是没有输出,修改注册表(可选)
7.如果使用OsrLoader之类的加载器加载驱动,Type请选择Minifilter,也可以使用cmd加载,如下
8.驱动加载以后,测试是否正常工作
9.鼠标右键菜单增加特权加密和特权解密功能(可选)
Foxtrot is now available for testing! Please test it and provide us with your valuable feedback and possible bugs.
hkx3upper:(<a href="https://github.com/hkx3upper">@hkx3upper</a>) wangzhankun:(<a href="https://github.com/wangzhankun">@wangzhankun</a>)
Foxtrot , and all its submodules and repos, unless a license is otherwise specified, are licensed under GPLv3 LICENSE. Dependencies are licensed by their own.
1.
本项目使用双缓冲,授权进程和非授权进程分别使用明文缓冲和密文缓冲;
2.
使用StreamContext存放驱动运行时的文件信息,在文件的尾部使用
4KB
文件标识尾储存解密所需信息;
3.
使用AES
-
128
ECB模式,
16
个字节以内分别在SetInfo
-
>EOF和WriteCachedIo时扩展文件大小到
16
字节,
大于
16
个字节,使用密文挪用(Ciphertext stealing)的方法,避免明文必须分块对齐的问题;
4.Write
和Read使用SwapBuffers的方式进行透明加密解密;
5.
特权加密和特权解密使用重入(Reentry)的方式,使驱动加密解密文件;
6.
在FileRenameInformationEx和FileRenameInformation重命名操作时做处理,
可以自动加密解密docx,doc,pptx,ppt,xlsx,xls等使用tmp文件重命名方式读写的文件;
7.
注册进程相关回调,使用链表统一管理授权与非授权进程;
注册进程与线程对象回调,保护进程EPROCESS,ETHREAD对象;对授权进程的代码段进行完整性校验。
8.
设置机密文件夹,文件处于该文件夹下才会透明加密,
并可以从桌面PocUser配置机密文件夹与需管控的文件扩展名 @wangzhankun
9.PostOperation
统一使用函数FltDoCompletionProcessingWhenSafed(PostRead除外),
InstanceSetup时使用Dpc
+
WorkItem回调(封装为PocDoCompletionProcessingWhenSafe),
避免在DISPATCH_LEVEL时出现IRQL_NOT_LESS_OR_EQUAL之类的蓝屏;
10.PostClose
时使用单独的线程,等待操作该文件的所有授权进程结束以后,
再重入加密或写入文件标识尾,解决了docx类文件的死锁问题。
11.
将ULONG改成LONGLONG,原则上可以支持
4GB
以上文件(目前特权加密和特权解密暂不支持
4GB
以上文件,
而且在内存有限的情况下,特权解密有可能会因非分页内存的缺少而失败,不想写了,这里可以放循环里读写大文件)
1.
本项目使用双缓冲,授权进程和非授权进程分别使用明文缓冲和密文缓冲;
2.
使用StreamContext存放驱动运行时的文件信息,在文件的尾部使用
4KB
文件标识尾储存解密所需信息;
3.
使用AES
-
128
ECB模式,
16
个字节以内分别在SetInfo
-
>EOF和WriteCachedIo时扩展文件大小到
16
字节,
大于
16
个字节,使用密文挪用(Ciphertext stealing)的方法,避免明文必须分块对齐的问题;
4.Write
和Read使用SwapBuffers的方式进行透明加密解密;
5.
特权加密和特权解密使用重入(Reentry)的方式,使驱动加密解密文件;
6.
在FileRenameInformationEx和FileRenameInformation重命名操作时做处理,
可以自动加密解密docx,doc,pptx,ppt,xlsx,xls等使用tmp文件重命名方式读写的文件;
7.
注册进程相关回调,使用链表统一管理授权与非授权进程;
注册进程与线程对象回调,保护进程EPROCESS,ETHREAD对象;对授权进程的代码段进行完整性校验。
8.
设置机密文件夹,文件处于该文件夹下才会透明加密,
并可以从桌面PocUser配置机密文件夹与需管控的文件扩展名 @wangzhankun
9.PostOperation
统一使用函数FltDoCompletionProcessingWhenSafed(PostRead除外),
InstanceSetup时使用Dpc
+
WorkItem回调(封装为PocDoCompletionProcessingWhenSafe),
避免在DISPATCH_LEVEL时出现IRQL_NOT_LESS_OR_EQUAL之类的蓝屏;
10.PostClose
时使用单独的线程,等待操作该文件的所有授权进程结束以后,
再重入加密或写入文件标识尾,解决了docx类文件的死锁问题。
11.
将ULONG改成LONGLONG,原则上可以支持
4GB
以上文件(目前特权加密和特权解密暂不支持
4GB
以上文件,
而且在内存有限的情况下,特权解密有可能会因非分页内存的缺少而失败,不想写了,这里可以放循环里读写大文件)
已测试系统及软件版本:
Windows
10
x64
1809
(
17763.2928
) LTSC 企业版 [WPS
11.1
.
0.11365
]
Windows
10
x64
1903
(
18362.30
) 教育版 [Microsoft Office Professional Plus
2021
x64]
[WPS
11.1
.
0.11744
] [
360
安全卫士
15.0
.
0.1061
]
Windows
10
x64
1909
(
18363.592
) 教育版 [WPS
11.1
.
0.11744
]
Windows Server
2019
DataCenter
1809
(
17763.379
)
已测试系统及软件版本:
Windows
10
x64
1809
(
17763.2928
) LTSC 企业版 [WPS
11.1
.
0.11365
]
Windows
10
x64
1903
(
18362.30
) 教育版 [Microsoft Office Professional Plus
2021
x64]
[WPS
11.1
.
0.11744
] [
360
安全卫士
15.0
.
0.1061
]
Windows
10
x64
1909
(
18363.592
) 教育版 [WPS
11.1
.
0.11744
]
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
最后于 2022-6-6 22:37
被hkx3upper编辑
,原因: 更新