航信[增值税税控开票软件(金税盘)]数据库安全分析及数据采集

1. 航信【增值税税控开票软件(金税盘版)】

增值税开票软件目前主要有两大阵营,一者是百旺的《增值税开票软件(税控盘版)》和《增值税开票软件(UKey版)》系列,另外一个阵营就是作者在这篇文中分析的航信《增值税税控开票软件(金税盘版)》系列。金税盘和开票软件如下图所示。

增值税税控开票软件(金税盘版)

                                                                                  增值税税控发票开票软件(金税盘版)

金税盘

                                                                                                 金税盘

2. 金税盘版开票软件安全分析

本文作者擅长逆向分析,长期专注税控领域的逆向分析,下面从软件安全角度对航信的金税盘版开票软件进行分析。航信的金税盘版开票软件从安全角度来说,可以划分为三个阶段,每个阶段的软件安全都是有所进步的。

2.1 初级阶段

V2.2.30.181028版本为明显的分水岭,该版本之前的版本(不含该版本)在软件安全方面及为脆弱(尽管航信开发者在软件安全方面做了很多的努力)。航信金税盘版开票软件业务层使用c#进行开发,和金税盘进行交互的驱动层使用c/c++开发。由于.net局限性,很容反编译(这和java,安卓app类似),航信的开发者们为了提升软件的安全主要进行了如下几方面的加固。

加壳,使用c#开发的业务层的dll航信开发者都进行了加壳,防止进行反编译。但是,天下没有脱不了的壳,碰到高手这些壳也是极为脆弱的,仍然能进行反编译成c#代码,反编译后里面的一切细节都将大白天下。尤其,使用.net,java[含安卓app]开发的软件来说,逆向极为容易。只从安全方面来说(不包括用户体验),百旺系列的开票软件前期使用delphi开发,后期使用QT开发,如果要想进行逆向分析,如果不是顶尖的高手是无能为力的,要比航信系的金税盘版开票软件高了一筹。

dll加密,航信的开发者们或许是意识到了.net在安全方面的脆弱性,又做了一道的安全加固,对dll进行加密。这些dll包括使用c#开发的业务层的dll和使用c/c++开发的硬件交互的层的dll。在应用程序发布之前首先对部分的dll进行加密,运行期间使用Aisino.Framework.Plugin.Core.dll来加载这些dll。航信的开发者们虽然做了这一道加固,但最终还是徒劳的。因为最应该做防,又行之有效的加固,应该是在使用c/c++开发的硬件交互层dll做防护,但在这一阶段没做任何的防护。

综上所属,在该阶段航信开发者们提交的成果在安全性方面是极为脆弱的,本文作者,在逆向分析生涯中,感觉对该阶段金税盘版开票软件的逆向分析过程是最为简单,投入精力最少的,但成果又颇为丰富的。

2.2 中级阶段

该阶段的分水岭版本为V2.2.30.181028,从该版本开始,该阶段最为显著的是在在使用c/c++开发的硬件交互层dll,进行了加固。进行了该加固后,如果要进行逆向分析的话,必须要有很是的技术功底方可有所突破,尤其要精通汇编语言和机器指令,并能对运行期间的内存进行精确的分析,才可能会有所突破,该阶段成果在安全性方面是有了较为明显的进步。但该阶段明显的不足,和初级阶段一样在数据库安全方面是极为脆弱的,也算是没有进行任何的防护。

2.3 现阶段

该阶段的分水岭版本为V2.3.10.200228版本,从该版本开始,航信的开发者们对数据库安全方面进行了加固,在sqlite3.dll上进行了重写(c/c++开发),做了多层加固,该版本极大的提升了数据攻克难度。

3. 航信金税盘开票软件数据库分析

航信金税盘版开票软件在数据库方面有两个版本,V2.3.10.200228之前的版本(不含该版本)为老版本,V2.3.10.200228之后的版本(含该版本)为新版本。数据库表结构在这两个版本中没有变化,数据库密码也没有变化,使用的是固定密码,只是在安全性方面做较大的加固。

3.1 老版本数据库

老版本的数据库使用的是固定密码,在安全性方面没有做任何的防护,只要有一定技术功能的技术工作者(甚至没有任何的逆向工作背景)采用拦截,注入,跟踪等方法都可以轻而易举的攻破。如果说航信的开发者们在数据库安全方面做了努力,也就是在数据库文件的命名上放了烟雾弹,数据库文件名的后缀居然是".dll",其他,尚未做任何的努力。在数据库安全方面,航信和百旺的真是差距太大了。

金税盘版开票软件老版本数据库文件

                                                                             金税盘版开票软件老版本数据库文件

3.2 新版本数据库

金税盘版开票软件新版本数据库和老版本相比,在数据表结构,固定密码。但在sqlite3.dll方面做了多层且行之有效的防护,如果想对该版本的数据库进行攻克,没有一定逆向经验,是会败北而归的。这一次本为作者,确实看到了航信开发者们确实费心了,但和百旺系的相比仍有一定的提升空间。据了解,航信现在已经有了新版本,但尚未公开发行,该版本在数据库安全方面可以和百旺系的相媲美了。

金税盘版开票软件新版数据库文件

                                                                           金税盘版开票软件新版本数据库文件

4. 航信[增值税税控开票软件(金税盘)]数据采集工具

本文作者擅长逆向分析,作为逆向分析的成果,开发了航信【增值税税控开票软件(金税盘版)】数据采集工具,该工具支持新老版本数据库数据的采集,本工具仅用于和逆向爱好者进行技术经验交流(扣扣:708534032),本工具CSDN地址:https://download.csdn.net/download/delinkong/16184946

航信[增值税税控开票软件(金税盘版)]采集工具

                                                                 航信[增值税税控开票软件(金税盘版)]采集工具 

猜你喜欢

转载自blog.csdn.net/delinkong/article/details/115284718