-
-
[原创]透明加密的简单实现
-
发表于:
2010-6-5 15:06
17006
-
可能这个思路不是我第一个想出来的。有问题欢迎拍砖~
在网上看到的大多数透明加密的一些实现(我至少看到过4种),不是把标志放在文件尾,就是把标
志放在文件头。
去年十一月份的时候,由于实验室需要,花了大部分时间写了一份在文件头存放加密标志的sfilter
代码。基本满足项目需要了,支持OFFICE系列的透明。不过CAD没有测试过,好像以前测试的有点问题。
本人比较小白,琢磨了很长一段时间,想把标志放在文件的尾巴,在尝试了很长一段时间之后,最终
还是没能实现出来,可是由于信息安全大赛的需要,不得不硬着头皮继续写下去。在尝试了N中思路
(cleanup,close,write)尝试写入标志尾的时候,都未能成功,如果有哪位大牛看出哪里出问题了,欢
迎指正。万般无奈之下,尝试其他的办法。
其实用标识,只要是能表明此,或者彼文件是我们要加密的文件,在读和写的时候能进行识别,然后
正常解密或者加密就行。
这样的话,那么剩下的就好办了,标识可以放在文件里面,也可以放在外面。
一个要加密的文件对应一个标识文件,在操作加密文件的时候,对应的修改标识文件。比如重名名了
加密文件,那么标识文件对应的进行一些操作,那么就可以很好的结合起来了。其他操作类似。
以下是一些值得注意的问题,我只说标识文件的一些处理问题:
1·什么时候生成标识文件?
我的做法是在新生成一个文件的时候对应一个标识文件,当然这个标识文件必须跟新生成的文件名有对应
的联系,而且必须唯一。
2·标识文件的存放位置
可以放在一个盘的某个位置,也可以放在对应盘的某个位置。我的做法是,对应的加密文件的标志文件放
在对应的盘里面。这样做的好处是:比如用U盘拷贝文件,那么就可以在拷贝加密文件的时候对应的把标
志文件拷过去;还有其他的一些好处(暂时说到这)。
3·关于重入问题
对于生成的标志文件,微软已经为我们提供了一个API IoCreateXXXXxxxHint。对于其他的派遣功能函数
,可以自己直接构建IRP发往底层去实现相应的功能。也可以直接用微软提供的ZwXxxxFile函数,只是需
要小心处理重入问题即可。两种方法我都使用来处理过,基本上没什么问题。
4·加密文件对应的标志文件的操作问题
其实简单来说,需要处理的其实也不多,一个是拷贝(对于拷贝的操作,在DEBUGMAN上面有人已经讨论过
,可以搜一下),一个是重命名(剪切跟重命名一样),还有删除等等。
5·其他细节问题
每个人的情况不一样,根据需要来操作,未尝不好。有句话说得好,自己动手,丰衣足食。
以上是自己写过的sfilter拓展标志的一些处理情况,可能有某些地方不一定正确。
代码是花了几天时间来实现的,思路有了当然写出来对应的东西,只是体力活而已。
这份代码是准备拿去参赛的,所以还有很多BUG需要修正,就不提供了,再说使用的是还是古老的不能再
古老的技术,没有什么好炫耀的,只是想把自己的一些想法说出来。
如果需要bin测试的话可以联系。
目前bin支持记事本,office系列的流加密,块加密(aes)。
JeTus 2010.6.5
QQ:27402624
Email:gongfuid@yahoo.com.cn
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)