加密软件漏洞
正常的磁盘操作示意图如下

正常磁盘操作


如果想实现透明文件加密(也就是不管操作员愿不愿意)无外乎劫持“应用软件”,劫持“操作系统”,劫持“驱动程序”三种。

劫持应用软件实现起来不容易,需要要替换应用软件中所有涉及磁盘操作部分的函数。还要做大量的测试。无法防范未知软件。所以,此方案不可行。

劫持操作系统实现起来容易,写个系统钩子(API HOOK)替换系统原始函数就可以实现。钩子被调用后,先判断是否是授权用户,如果是,调用原始系统函数,如果否,则报错。这个方案可以轻易实现透明加密,可以不针对特定程序。

劫持驱动软件实现起来最难,编写驱动程序需要高水平的程序员。驱动运行在Ring 0 级别。要求极高。这对一些十来个人的小公司来说,是不可能的。

根据上述分析,加密软件最有可能的实现方法是劫持操作系统。既然有目标了,我们可以顺
着分析下来。

既然是劫持操作系统,而加密软件又是基于操作系统的。那显然操作系统要比加密软件先启动。如果是这样,操作系统的文件就肯定不会被加密。不然,电脑启动的时候,谁去给系统文件解加密?

如何判断一个文件是否是系统文件?如果我是设计者,会考虑一下几种

1. 扩展名。操作系统启动时需要的文件无外乎.SYS .INI .DLL .VXD .INF .EXE .COM 等等有限的几种。只要在钩子里判断,扩展名是否是系统类的,是系统文件就放过,其他一律留下加密/鉴权。 有程序正在修改镜像劫持

2. 文件路径。操作系统的文件通常就在C:\ C:\windows 里面。只要判断是在系统文件路径内,就当作系统文件放行。不过这个方法有严重缺陷,容易被操作者绕过。

3. 白名单。软件自己有一个操作系统必须文件清单,在清单内的文件不被加密。但是,电脑
的配置何止万千,甚至同一驱动有数十个版本。维护起来极其困难。如果在加密软件安装后扫描,也难保不错误加密。

根据上述分析,最有可能的是依靠扩展名识别,其他方式方法辅助。

破_解方法如下:
1. 新建一个不在加密范围内的文件。如DWG、PCB、C文件被列入自动加密范畴,就建立一个TXT文件。
2. 使用应用程序打开刚才新建的TXT文件(或其他),可能会提示格式无效或者错误,无视之
3. 正常编辑、保存。
4. 拷贝……

P.S.
建立文件可以使用Dos命令:


如:DIR c:\ >&
意思是将C盘根目录的文件列出来,放进“1.txt”文件中(实际后缀txt,可以改成任意文件)

实测维响(VisTEAM)的加密软件,上述方法可行、有效。其他加密软件未测试,不敢保证一定可以。