- 对本书的赞誉
- 前言
- 基础篇
- 第 1 章 Android 中锁屏密码加密算法分析
- 第 2 章 Android 中 NDK 开发
- 第 3 章 Android 中开发与逆向常用命令总结
- 第 4 章 so 文件格式解析
- 第 5 章 AndroidManifest.xml 文件格式解析
- 第 6 章 resource.arsc 文件格式解析
- 第 7 章 dex 文件格式解析
- 防护篇
- 第 8 章 Android 应用安全防护的基本策略
- 第 9 章 Android 中常用权限分析
- 第 10 章 Android 中的 run-as 命令
- 第 11 章 Android 中的 allowBackup 属性
- 第 12 章 Android 中的签名机制
- 第 13 章 Android 应用加固原理
- 第 14 章 Android 中的 so 加固原理
- 工具篇
- 第 15 章 Android 逆向分析基础
- 第 16 章 反编译神器 apktool 和 Jadx
- 第 17 章 Hook 神器 Xposed
- 第 18 章 脱壳神器 ZjDroid
- 第 19 章 Native 层 Hook 神器 Cydia Substrate
- 操作篇
- 第 20 章 静态方式逆向应用
- 第 21 章 动态调试 smali 源码
- 第 22 章 IDA 工具调试 so 源码
- 第 23 章 逆向加固应用
- 第 24 章 逆向应用经典案例分析
- 第 25 章 Android 中常见漏洞分析
- 第 26 章 文件加密病毒 Wannacry 样本分析
26.3 文件解密
上面的锁机还不是重点,这个病毒的重点其实是文件加密。在本章开始的图 26-1 中,如果点击“注册使用”,会出现如图 26-6 所示的勒索界面。
图 26-6 勒索界面
点击“注册软件”,会等一会儿,其实这里他在做一些坏事,然后出现提示界面,如图 26-7 所示。
这就是 Wannacry 病毒界面,需要付钱才能对文件解密。而这时手机设备 SD 卡中的文件已经被全部加密了,如图 26-8 所示。
最糟糕的是,可能 SD 卡都打不开了,这是因为病毒制作者无限制地新建一些文件和文件夹到 SD 中。可以发现,每个文件都是 0 字节,然后文件对应一个空文件夹。
图 26-7 提示界面
图 26-8 文件加密界面
下面来分析病毒代码:
进入这个类看看,在 onCreate 方法中看到几个方法:
继续追踪:
有一个可怕的“爆炸”方法:
在这里会创造出很多空文件和空文件夹,这样你的 SD 卡到最后几乎打不开了,手机也就废了。
文件加密在程序启动的时候就做了,在 MainActivity 中:
然后跟踪这个方法:
这里会过滤他自己创建出来的空文件和空文件夹不进行加密,继续看代码:
这里通过方法的最后一个参数来判断是加密文件还是解密文件。加解密方法参数都是类似的,第一个参数是 AES 加解密的密钥。到这里我们大致清楚了这个病毒是用 AES 对文件进行加密的,而密钥又用 AES 加密。这时加密的 key 和内容是:
分析到这里,我们就可以开始手动解密文件了。当然有很多种方法:
第一种方法:借助 Xposed 工具直接 hook 他的 FormetFileSize 方法,因为从上面的分析知道,这个方法的最后一个参数标志着是解密文件还是加密文件,拦截这个方法之后,修改这个参数状态为 false 表示是解密文件:
第二种方法:把他的解密功能代码拷贝出来,自己写一个解密程序,这比较适合给中招的“小白”使用:
因为他的代码这几个类都比较独立,所以直接拷贝出来不会有太多的错误,而错误就是变量定义重复,自己手动改一下即可:
下面就开始运行这个程序,这里为了操作不浪费时间,把 SD 卡清空了,然后写入三个简单的文件,让他加密:
这时会发现,他加密之后的文件名就是原始文件名凭借一个串而已,请忽略乱码。因为只有这样,他在解密之后才能获取原始文件,从他的代码中也可以看到这点:
然后运行我们的解密程序,看到日志:
到这里,我们就成功进行解密了。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论