❄️免脱壳寻找加解密算法
2022-9-8
| 2024-6-4
0  |  0 分钟
type
status
slug
tags
category
icon
password
Property
Jun 4, 2024 02:30 AM
date
summary

前言

在实际的渗透测试中我们经常会遇到某些app使用了加密或加签算法,如果我们不知道实际的加密算法我们将无法对app做进一步的渗透测试。所以我们不得不反编译,而反编译过程中又会遇到各种问题如加壳、混淆等(

前置知识

xposed框架

Xposed(也被称作Xposed框架、XP框架、Xposed framework),是一个运行于Android操作系统的钩子框架。其通过替换Android系统的关键文件,可以拦截几乎所有Java函数的调用,并允许通过Xposed模块中的自定义代码更改调用这些函数时的行为。因此,Xposed常被用来修改Android系统和应用程序的功能。

Hook

Hook 技术又叫做钩子函数,在系统没有调用该函数之前,钩子函数先得到控制权,这时钩子函数既可以加工处理(改变)该函数的执行行为,还可以强制结束消息的传递。这里的inspeckage插件寻找加解密原理就是hook加解密的方法,在原来加解密功能基础上增加了输出明文、密文和密钥等到inspeckage插件上的功能。这样只要当程序运行特定加密时候相关信息就会输出到日志上。

DES加密

DES是对称加密算法的一种,加密解密使用的是同样的key和iv。DES加密算法出自IBM的研究,后来被美国政府正式采用,之后开始广泛流传。主要需要注意的就是DES加密和解密过程中,密钥长度都必须是8的倍数

Inspeckage

Inspeckage是一个用来动态分析安卓app的xposed模块。通过Hook Android API的函数可以轻易获取如加密算法key等信息。并且Inspeckage对动态分析很多常用的功能进行了汇总并且内建一个webserver。使得整个分析操作可以在友好的web界面中进行。
下载地址https://github.com/ac-pm/Inspeckage
模块功能介绍
Logcat
实时查看该app的logcat输出
Tree View
可以实时浏览app的数据目录并直接下载文件到本地
Package Information
应用基本信息(组件信息、权限信息、共享库信息)
Shared Preferences
LOG:app XML文件读写记录;Files:具体XML写入内容
Serialization
反序列化记录
Crypto
常见加解密记录(KEY、IV值)
Hash
常见的哈希算法记录
SQLite
SQLite数据库操作记录
HTTP
HTTP网络请求记录
File System
文件读写记录
Misc.
调用Clipboard,URL.Parse()记录
WebView
调用webview内容
IPC
进程之间通信记录
Hook+
运行过程中用户自定义Hook记录

使用步骤

  • 手机/模拟器ROOT
  • 安装好xposed模块并激活
  • 安装inspeckage勾选
  • 重启
  • 使用adb连接设备
notion image
  • 打开软件会自动监听8008,并选择需要分析的软件
notion image
  • 使用adb转发8008到本地
nox_adb.exe foward tcp:8008 tcp:8008
  • 浏览器访问127.0.0.1:8008即可
notion image

例子

  • 打开某个APP抓包发现请求包和响应包都是加密的。
      notion image
  • 尝试使用jadx打开发现没有东西,估计是加壳了
  • 查壳发现固然是加壳了,其是用了阿里聚安全加壳
      notion image
  • 需要需要渗透我们就必须要找到他的加密算法,拿出我们的inspeckage选择app配置好启动
      notion image
  • 打开自动刷新,然后点击登录,这时候再搜索搜索密文。我们可以看到这个密文和明文以及加密算法密钥等信息。我们可以看到这个APP加密和解密都是使用DES算法(这里我们需要解密数据包还有找到sign算法)
    • notion image
  • 这里我们找到了KEY是w9JtyoYll4=而IV是32028092加密方法是DES/CBC/PKCS5,尝试使用DES解密我们收到burp的密文,如下图看到我们猜想是正确的可以解密
      notion image
  • 还有就是一个sign算法,点开hash模块,可以看到sign就是将下面几个字符串做了一个md5
      notion image
  • 尝试md5计算试试,结果也是和我们想的一样
      notion image
  • 这时候我们有了这个APP的大致加密逻辑,明文做个md5等于sign,明文+sign做个des加密等于密文,响应包原理也类似。接下来这时候又可以继续愉快的做渗透了
      notion image
  • 通过inspeckage我们可以轻松看到所有的数据我们都可以明文看到,在外面渗透没发现什么继续进到里面,发现有个有趣的地方列表信息居然传递了用户ID这是我们喜欢看到的,通常这种地方存在越权
      notion image
  • 按照原来逻辑对userid修改然后加签加密发送,果不期然收获越权漏洞一枚
      notion image
  • 继续深入在一个活动详情详情页面尝试插入恶意语句,随即收获一枚SQL注入
      notion image
       
  • 其实可以通过burp或titmproxy的加解密插件脚本实现sqlmap自动化检测之类的,本文主要讲的是快速查找加解密算法就不深入拓展了。有兴趣的小伙伴可以继续深入

总结

inspeckage提供web界面对于小白来说还是非常有好的,inspeckage并不是万能的,如果程序使用非标准加解密默认的crypto模块是看不到的。除了加解密算法等,该工具还集成代理、文件监控和http请求记录等功能。inspeckage的运用可以使在我们渗透测试过程中快速找出app的加密、解密和签名算法。但我们同时也需要对frida和xposed等有一定的了解,这ac样才能更好的使用这个工具hook其他函数寻找更底层复杂的加密算法。

参考链接

https://github.com/ac-pm/Inspeckage
https://la0s.github.io/2018/07/17/Inspeckage/
https://blog.csdn.net/tom__chen/article/details/78216732
https://www.freebuf.com/column/147856.html
技术分享
  • crypt
  • android
  • 前端加密加签之sqlmap自动化测试sql注入备忘录
    目录