• Xposed+XServer无需脱壳抓取加密包


    Xposed框架简介
    Xposed框架是一款可以在不修改APK的情况下影响程序运行(修改系统)的框架服务,通过替换/system/bin/app_process程序控制zygote进程,使得app_process在启动过程中会加载XposedBridge.jar这个jar包,从而完成对Zygote进程及其创建的Dalvik虚拟机的劫持。
    基于Xposed框架可以制作出许多功能强大的模块,且在功能不冲突的情况下同时运作。此外,Xposed框架中的每一个库还可以单独下载使用,如Per APP Setting(为每个应用设置单独的dpi或修改权限)、Cydia、XPrivacy(防止隐私泄露)、BootManager(开启自启动程序管理应用)对原生Launcher替换图标等应用或功能均基于此框架。
    Xposed框架安装
    本次记录一下在夜神模拟器中安装Xposed框架,安装过程中踩了几个坑,导致在安装步骤上就浪费了许多时间,因此着重记录坑点。
    安装环境如下:
    夜神模拟器 6.6.0.5
    Android 5.1.1
    Xposed.installer(5.11安卓系统)
    注意事项:
    1.Xposed.installer要与Android版本相互兼容。
    2.第一次成功安装以后提示Xposed框架未激活,此时需要进行第二次安装并重启。
    针对第二点详细说明,碰到这个问题时上网搜了下,发现这个问题困扰了许多朋友,也不知道是不是夜神模拟器自身的原因。
    初次安装重启后模拟器的键盘失灵(原因未知),需要再次重启模拟器,此时提示Xposed框架已安装但未激活:

    此时进行第二次安装并重启后,解决未激活问题:


    XServer模块简介
    现如今市面上第三方APP加壳的平台较多,同时也竞争激烈。导致了对APP进行渗透测试的过程中经常遇到通信协议的分析或者各类混淆、加壳。这对渗透测试工作而言,无疑是雪上加霜。如果通过静态代码分析,那么大部分精力以及时间会耗在定位关键函数上,除此之外,逆向通信协议也通常比较麻烦,尤其本着测试目的而非协议本身。于是,XServer应运而生。
    XServer是一个用于对方法进行分析的Xposed插件,它针对的是“方法”接口。由于人类习惯函数式编程,为了可维护性,往往会把各个功能分别封装进各个类与方法,这成为了程序的弱点。利用注入和反射,可以记录并拦截方法的调用,也可以在应用自身的运行环境中调用某个具体方法。这就可以对应用的分析起到辅助。另外,XServer还通过HTTP和WebSocket提供远程动态操作界面,也提供RPC接口供其它工具调用应用内的方法。
    XServer模块使用
    XServer安装过程较为简单,因此不再赘述,记录一下XServer模块的使用。
    Xposed框架激活XServer模块:

    XServer模块中选择对象:

    进行端口转发:

    打开浏览器输入127.0.0.1:8000,如下图所示,说明XServer启动成功:

    Xposed+XServer实战演示
    1.查找、定位加密函数
    测试的APP对传输的数据全部进行了加密,因此需要先找出加解密函数并使用XServer对其hook,其次在调用解密函数对传输数据进行解密,这样便可以实现在不脱壳情况下对加密包进行解密,直接查看其传输的明文数据。寻找加解密函数一般使用关键字(常见如decode、encoder、decrypt、encrypt、DES、AES等)搜索。
    2.尝试使用DES进行搜索:

    3.可以看到哪些类中存在DES函数,此时运行APP,可以看到加解密函数被hook,并打印出堆栈信息:

    4.此时在模拟器中设置好代理,APP运行时如果触发加解密函数便会将数据回弹到bp中:



    总结
    从bp中可以清楚得看到APP对传输数据进行加解密的整个过程。这样便可以随意在bp里对数据进行修改,然后再转发给APP,此过程便实现了在不对APP进行脱壳的情况下对加密包进行解密、修改的功能。
    参考链接
    https://github.com/monkeylord/XServerhttps://blog.csdn.net/nini_boom/article/details/104400619

  • 相关阅读:
    矩阵遍历 局部处理 661. 图片平滑器
    最小堆make_heap(), pop_heap()和push_heap()
    vector<pair<int, int>>或者有序map
    简单的滑动窗口 643. 子数组最大平均数 I
    js中getYear()和getFullYear()的区别
    异常:No WebApplicationContext found: no ContextLoaderListener registered?
    异常:Duplicate key or integrity constraint violation message from server: "Duplicate entry '0' for key 1"
    异常:the type net.sf.hibernate.lockmode cannot be resolved, it is indirectly referenced from required .class files
    使用cxf写web service的简单实例
    struts1多文件上传、下载实例
  • 原文地址:https://www.cnblogs.com/0daybug/p/12867570.html
Copyright © 2020-2023  润新知