免脱壳寻找加解密算法 | 技术精选0123

admin 2022年2月17日01:55:50评论197 views字数 2483阅读8分16秒阅读模式
免脱壳寻找加解密算法 | 技术精选0123

免脱壳寻找加解密算法 | 技术精选0123
本文约2400字,阅读约需6分钟。


在渗透测试中,我们经常会遇到某些App使用了加密或加签算法。如果我们不知道实际的加密算法,我们将无法对App做进一步的渗透测试。

而在我们对加密算法反编译的过程中,又会遇到如加壳、混淆等问题,增加渗透难度。下文我们介绍一下,如何快速查找加解密算法。

1

前置知识

Xposed框架


Xposed(也被称作Xposed框架、XP框架、Xposedframework),是一个运行于Android操作系统的钩子框架。

其通过替换Android系统的关键文件,可以拦截几乎所有Java函数的调用,并允许通过Xposed模块中的自定义代码,更改调用这些函数时的行为。

因此,Xposed常被用来修改Android系统和应用程序的功能。

Hook


Hook技术又叫做钩子函数,在系统没有调用该函数之前,钩子函数先得到控制权,这时钩子函数既可以加工处理(改变)该函数的执行行为,还可以强制结束消息的传递。

这里的Inspeckage插件寻找加解密原理就是Hook加解密的方法,在原来加解密功能基础上增加了输出明文、密文和密钥等到Inspeckage插件上的功能。

这样只要当程序运行特定加密时,相关信息就会输出到日志上。

DES加密


DES是对称加密算法的一种,加密解密使用的是同样的KEY和IV。DES加密算法出自IBM的研究,后来被美国政府正式采用,之后开始广泛流传。

需要注意,DES加密和解密过程中,密钥长度都必须是8的倍数。

Inspeckage


Inspeckage是一个用来动态分析安卓App的Xposed模块。通过HookAndroidAPI的函数,可以轻易获取如加密算法KEY等信息。

同时,Inspeckage对动态分析很多常用的功能进行了汇总且内建一个Webserver,使得整个分析操作可以在友好的Web界面中进行。

Inspeckage下载地址:

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连接设备


免脱壳寻找加解密算法 | 技术精选0123

打开软件会自动监听8008,并选择需要分析的软件:

免脱壳寻找加解密算法 | 技术精选0123

使用adb转发8008到本地。

"nox_adb.exefoward tcp:8008 tcp:8008"

浏览器访问127.0.0.1:8008即可:

免脱壳寻找加解密算法 | 技术精选0123

2

示例

打开某个APP抓包,发现请求包和响应包都是加密的:

免脱壳寻找加解密算法 | 技术精选0123

尝试使用Jadx打开,发现没有东西,估计是加壳了。查壳发现果然如此。

免脱壳寻找加解密算法 | 技术精选0123

我们必须要找到他的加密算法才能进行渗透。拿出我们的Inspeckage选择App,配置好启动。

免脱壳寻找加解密算法 | 技术精选0123

打开自动刷新,然后点击登录,这时候再搜索搜索密文。

我们可以看到这个密文和明文以及加密算法密钥等信息。这个APP加密和解密都是使用DES算法(这里我们需要解密数据包还有找到sign算法)。

免脱壳寻找加解密算法 | 技术精选0123

我们找到了KEY是”w9JtyoYll4=“而IV是”32028092“,加密方法是DES/CBC/PKCS5。

尝试使用DES解密我们收到burp的密文,可以看到我们的猜想是正确的。

免脱壳寻找加解密算法 | 技术精选0123

还有ign算法。点开hash模块,可以看到sign就是将下面几个字符串做了一个md5:

免脱壳寻找加解密算法 | 技术精选0123

尝试md5计算试试,结果也是和我们想的一样:

免脱壳寻找加解密算法 | 技术精选0123

这时候我们有了这个APP的大致加密逻辑,明文做个md5等于sign,明文+sign做个DES加密等于密文,响应包原理也类似。

接下来,又可以继续愉快的做渗透了:

免脱壳寻找加解密算法 | 技术精选0123

通过Inspeckage,我们可以轻松看到所有的数据。

继续深入过程中,发现有个列表信息居然传递了用户ID。通常这种地方存在越权:

免脱壳寻找加解密算法 | 技术精选0123

按照原来逻辑,对userid修改然后加签加密发送,果不其然,收获越权漏洞一枚:

免脱壳寻找加解密算法 | 技术精选0123

接下来,在一个活动详情页面尝试插入恶意语句,随即收获一枚SQL注入:

免脱壳寻找加解密算法 | 技术精选0123

其实还可以通过burp或titmproxy的加解密插件脚本实现sqlmap自动化检测,不过本文主要讲的是快速查找加解密算法,这里就不深入拓展了。有兴趣的小伙伴可以自行了解。

3

总结

Inspeckage提供Web界面对于小白来说还是非常友好的。但Inspeckage并不是万能的,如果程序使用非标准加解密,默认的crypto模块就无法看到。

除了加解密算法,该工具还集成代理、文件监控和http请求记录等功能。

Inspeckage的运用,可以使在我们渗透测试过程中快速找出App的加密、解密和签名算法。同时,我们也需要对Frida和Xposed等有一定的了解,这样才能更好地使用这个工具去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


- END -


往期推荐

免脱壳寻找加解密算法 | 技术精选0123

记一次卑微的渗透测试

免脱壳寻找加解密算法 | 技术精选0123

pwn入门之栈入门

免脱壳寻找加解密算法 | 技术精选0123

MYSQL另类利用方式

长按下方图片即可关注
免脱壳寻找加解密算法 | 技术精选0123

点击下方阅读原文,加入社群,读者作者无障碍交流

原文始发于微信公众号(酒仙桥六号部队):免脱壳寻找加解密算法 | 技术精选0123

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年2月17日01:55:50
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   免脱壳寻找加解密算法 | 技术精选0123http://cn-sec.com/archives/781429.html

发表评论

匿名网友 填写信息