[关闭]
@devilogic 2016-03-08T15:05:37.000000Z 字数 2845 阅读 1443

飞贷APP项目单

娜迦


DEX文件保护模块

总价:10万

项目名称 说明
Dex类抽取模块 将每个类进行分布加密,哪个类运行,哪个类才进行解密
Dex类抽取回填模块 对类抽取模块的支持,当类运行完毕后,进行加密回填
Dex文件分割 将一个Dex文件分割为数个小的Dex文件,在内存中拆散,加强还原难度
Dex文件畸形头 将一个正常格式的Dex文件修改为畸形头的Dex,防止一些逆向工具进行静态逆向

SO文件保护模块

总价:40万

项目名称 说明
SO文件代码段加密 使用壳对代码段进行加密
SO文件符号表加密 对目标文件的符号表进行加密,使得从外部无法读取符号表
ARM体系重定位表加解密 在ARM体系下使用重定位表机制进行自动解密
隐藏壳入口点 隐藏保护壳的入口点,防止黑客进行壳代码定位
自定义SO格式 将目标文件的标准ELF格式进行分解成NAGA的自有格式,防止逆向还原
虚拟环境 使用NAGA自定义的加载器对被保护的SO进行加载,脱离ANDROID本身的系统机制

飞贷定制SO壳体

总价:20万

经过我们的分析飞贷操作私钥是在一个SO文件中进行的,我们的重点是要保护私钥不被拿走。所以这里我们采用专门对飞贷的壳进行特殊化的定制,此壳与NAGA其他保护产品的壳段绝非同一个壳段,是按照飞贷的情况,进行定制化开发。从安全,体积与速度上更适合飞贷的情况。

安全编译器

总价:20万

项目名称 说明
IOS安全编译器 在编译IOS程序时,对目标进行代码乱序,混淆操作
ELF安全编译器 在编译Android SO时,对目标进行代码乱序,混淆操作

反调试保护模块

总价:5万

项目名称 说明
调试器进行黑白名单 建立黑白名单机制,当发现调试进程名时退出程序
调试器内存标志检测 当调试器运行时,会修改内存中的一些标志,当发现这些标志修改时,退出程序
反Hook机制 保护程序会对关键的库函数,做整体的映射校验,当HOOK操作改变映射时,保护程序检测到退出程序

环境安全

总价:10万

在APP启动之后,壳体会检测内存中是否存在有可能对飞贷程序造成威胁的程序,如果发现则立即退出。

唯一性绑定

总价:10万

此模块将飞贷的SO与DEX文件做调用性绑定,外部程序不能通过dlopen等函数调用飞贷的SO接口,如果有黑客将其SO程序放置到它自己的包中进行模拟调用,则他的测试APP包运行崩溃。飞贷的SO只可以由飞贷自身的DEX调用。

文件完整性校验模块

总价:5万
飞贷的项目会在下述基础上进行速度与体积针对性的优化

娜迦采用的是程序代码与数据形成密钥关联的方法,实现二次打包的原则,而不是仅仅采用验证文件签名的方法。

娜迦壳保护公私钥生成

  1. 使用娜迦保护文件的所有HASH值做累积直到这个值达到1023
  2. 如果是素数则直接使用它,如果不是找到以它开始的下一个素数,然后通过这个素数,根据索非日耳曼素数生成下一个素数
  3. 随意选取一个1024位的大素数,这个数字称为
  4. 根据欧拉函数计算
  5. 随机选取一个随机数。根据欧拉定理计算,则为所求的公钥。
  6. 为私钥。

娜迦加密原则

娜迦加密任何数据以及代码,使用相互验证原则,例如:加密A文件必将用B文件的HASH进行加密,这样当黑客修改了B文件那么A文件将不能得到正确的解密结果。

加密

  1. 随机取一个KEY,随后计算B文件的HASH然后使用KEY对其进行加密生成DKEY
  2. 使用DKEYA进行加密。
  3. 使用公钥对KEY进行加密生成EDKEY并写入到壳So中。
  4. 也一同写入。

解密

  1. 壳启动后在获取EDKEY,以及
  2. 然后按照娜迦壳保护公钥生成的流程,计算出,推到出私钥
  3. 使用私钥对EDKEY进行解密得到KEY
  4. 核算B文件的HASH,随后使用KEY对其进行加密生成DKEY
  5. 使用DKEY进行对A文件的解密。

密钥体系安全评估

  1. 我们首先采用了娜迦加密原则达到不直接在壳中储存关键密码并且达到文件的相互关联性。
  2. 我们将加密数据的密码做了2次加密。
  3. 2次加密的密码使用了公钥算法再进行加密。
  4. 本地不存储私钥。
  5. 私钥本身是与娜迦壳本身做了关联,通过娜迦壳本身才可以计算出私钥,天生的防止篡改。
  6. 私钥本身是在程序运行过程中计算出来的。

密钥生成安全评估

加解密函数以及私钥推导函数都是在运行期间才会解密,运行完毕又加密回去的,在很大程度上造成了对破解者的逆向分析难度。

变形密码算法模块

总价:15万

以下为NAGA的壳的独有技术,只在定制客户的APP中使用

每次对DEX文件或者SO文件进行加密时,变形密码算法模块会随机生成一个世界上独一无二的加密算法。并生成变形密码算法虚拟机独有的加密与解密算法的字节码文件。加密时调用一组字节码,当解密时调用解密算法的字节码进行解密,这样当对目标程序保护一次,密码算法变形一次。防止脱壳机的生成。

软件质量测试检测项目

项目名称 单价(万) 个数 总价(万)
软件质量测试 0.2 24 4.8

此检测项目是考虑到飞贷的有效版本更迭周期,忽略了小版本的迭代,半个月一次更新,NAGA每次做300台手机的人工实测,其中包含了原包与加壳后的两个测试。6个测试人员,1个工作日完成。保证当天出测试结果。

APP安全常规测试检测项目

项目名称 单价(万) 个数 总价(万)
APP安全常规测试 2 12 24

出于对飞贷大版本更替的考虑,只需要一个月一次在遇到大版本升级时,做对APP本身的常规安全检测,这项检测主要针对的是程序员在开发过程中由于编码习惯以及使用组建不得到可能会造成的一些安全隐患进行检测。并提出修复意见。此项测试由NAGA攻防实验的逆向工程师完成,一次检测时间为5个工作日。

APP软件安全测试检测项目

项目名称 单价(万) 个数 总价(万)
APP软件安全测试 10 6 60

在做大版本升级或者改动比较大的迭代时,NAGA攻防实验室对软件本身做实际的黑客模拟攻击,进行真实的软件逆向从中发现APP的本身的漏洞,这些漏洞可能对APP业务操作极大的安全隐患,所以我们会剖析软件所有流程以及关键点,随后给出修正意见,以及对应的修整方案。一般此项测试需要花费在10个工作日。这里用的时间比较长,是因为我们要从头剖析整个软件系统。

安全咨询服务

在软件测试之后,会给出修改与整改意见,整个服务贯穿整个服务期。NAGA会派专人来负责对飞贷整个软件安全的项目对接与实施评估。

负责人:阎文斌(娜迦CTO)、马宏亮(娜迦项目总监)

当前发现的漏洞

由于时间有限,这里仅分析了问题较大的三个问题。由于问题比较明显,所以这里以非正式文档给出。

问题1:用户名和密码泄露,shared_prefs目录下config.xml中保留了明文用户名和密码。如下图所示。

1.jpg-266kB

问题2:RSA公钥、私钥泄露,由于so未被加固,libegis_security.so保存公钥和私钥,如下图所示。

私钥获取函数:
2.png-34.3kB

公钥、私钥信息:
3.png-41.6kB

脱壳后解密函数使用私钥解密:
4.png-25.5kB

脱壳后发现加密函数使用公钥加密:
5.png-23.1kB

问题3:当前壳可脱,可重打包

0.jpg-98.2kB

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注