某虚假交友APP(信息窃取)逆向分析

news/2024/5/20 5:51:46 标签: 交友, 协议开发, 软件开发

应用初探

在群里水群的时候 群u发了一个交友APP 于是拿来分析一下

可以看到应用打开后又一个登录的界面
需要用户输入手机号与验证码进行登录
#在线云沙箱分析
将APK放入某安信云沙箱中分析 提示应用请求了过多的敏感权限 

逆向分析

直接拖入Jadx分析 好在程序没有加固 也没有任何混淆

若直接点击注册会弹出以下窗口 直接利用搜索大法定位到关键的位置

 沿着调用链向上回溯

可以发现调用了startTimer 和 toLogin函数
进入startTimer函数分析
 发现程序APP进行一个90s的循环后就自动退出了 并不会启动其他什么奇奇怪怪的Activity(我有个朋友听到这个消息后特别失望)
然后分析toLogin

发现程序会创建一个 RxHttpJsonParam 对象并且请求的目标IP在Urls类中
双机进入类可以看到相关的接口地址 分析代码可以看到开发者编译的时候并没有把日志打印的函数給注释掉
所以这样能很方便咱们进行分析
其中调用的函数包括获取短信内容,获取联系人信息,获取图片...

抓包分析

首先在断网情况下测试

 在这里我尝试去利用Frida去hook okhttp3 中的 connect函数
发现hook不到 但是在smail层面位置设置断电调试却可以断下来
这里不明白是为什么 懂的大佬可以解释一下...

 日志中打印出来这些内容

接下将电脑和手机连接在同一网络中 配置手机的代理后直接用BP抓包分析

点击注册后 程序会发送目标Reg接口发送用户填写的手机号 验证码 当前时间 当前时间加盐后的hash值 手机型号
利用Repeat模块连续发了几次包之后 发现自己的IP被ban了 再次访问总是500

主动调用

此时我的IP已经不可以注册 (这里考虑用梯子挂了全局代理 但是没有用)
肯定无法触发后续的恶意操作了 此时想到了利用Frida主动调用其中的恶意函数
首先通过创建一个新的类去调用

1

2

3

4

5

6

7

8

let LoginActivity = Java.use("com.qinyue.vmain.activity.LoginActivity");

       var obj = LoginActivity.$new();

       console.log("getContacts()")

       obj.getContacts();

       LoginActivity["getContactsSms"].implementation = function () {

       console.log(`LoginActivity.getContactsSms is called`);

       this["getContactsSms"]();

   }

出现以下的错误
 

图片描述


考虑直接从堆栈中调用已经初始化过的类

1

2

3

4

5

6

7

8

9

10

11

12

Java.choose("com.qinyue.vmain.activity.LoginActivity",{    //要hook的类

            onMatch:function(instance){

                console.log("onMatch ");

                let ret=instance.getContacts(); //要hook的方法

                instance.getContactsSms();

                instance.getPhoto();

            },

            onComplete:function(){

                console.log("result: " );

            }

        });

此时抓包分析

 

可以看到此时向目标接口上传了一个图片

流量分析

Wireshark抓包 分析一下

 随便提取一个出来看看恰好就是我之前保存的应用截图

并且从日志中可以看到应用上传了相当多的信息(通讯录信息 各种图片) 

总结

该APP也算是一个比较简单的恶意APP 无加壳无混淆 甚至开发者为了自己方便编写的Log函数也没有删除 数据在传输过程中也没有加密
但是这样简单的一个仅有一张封面的APP 假如有小白中招 也是会造成很十分严重的数据泄露风险的
因此网络世界真真假假 假假真真 还是希望大家文明上网吧!


http://www.niftyadmin.cn/n/5468456.html

相关文章

4.6 offset指令,jmp short指令,far,dword ptr各种跳转指令

4.6 offset指令,jmp short指令,far,dword ptr各种跳转指令 可以修改IP,或同时修改CS和IP的指令统称为转移指令。概括的讲,转移指令就是可以控制CPU执行内存中某处代码的指令 1. 转移指令 1.1 8086CPU的转移行为有以…

梯度:般在神经网络里面是一个batch清空一次梯度还是一个epoch清空一次梯度?

通常,在神经网络训练中,是在每个 mini-batch 处理完成后清空一次梯度,而不是在每个 epoch 结束后清空一次梯度。 这是因为在每个 mini-batch 中,模型参数的梯度是根据当前 mini-batch 的损失计算得到的,如果不在每个 …

图论(Graph theory)

抽象数据结构类型 Graphic操作接口 操作接口功能描述操作接口功能描述e()获取图的总边数n()顶点的总数exits(v,u)判断v,u两个顶点是否存在边insert(v) 在顶点集 V 中插入新顶点 v remove(v,u)删除从v 到u的 关联边 remove(v) 将顶点 v 从顶点集中删除 type(v,u)边所属的类型(…

JavaScript map和set

JavaScript的默认对象表示方式{}可以视为其他语言中的Map或Dictionary的数据结构,即一组键值对。但是JavaScript的对象键必须是字符串。但实际上Number或者其他数据类型作为键也是非常合理的。最新的ES6规范引入了新的数据类型Map。 Map是一组键值对的结构&#xf…

212 基于matlab的双稳态随机共振的算法

基于matlab的双稳态随机共振的算法,分析信噪比随系统参数a,b及乘性噪声和加性噪声的增益变化曲线,60个数据样本可供选择。程序已调通,可直接运行。 212 双稳态随机共振 信噪比增益变化曲线 - 小红书 (xiaohongshu.com)

第十三届蓝桥杯大赛软件赛省赛CC++大学B组

第十三届蓝桥杯大赛软件赛省赛CC 大学 B 组 文章目录 第十三届蓝桥杯大赛软件赛省赛CC 大学 B 组1、九进制转十进制2、顺子日期3、刷题统计4、修建灌木5、x进制减法6、统计子矩阵7、积木画8、扫雷9、李白打酒加强版10、砍竹子 1、九进制转十进制 计算器计算即可。2999292。 2、…

【C++】编程规范之表达式原则

表达式中变量的位置 在编写表达式时,将变量放置在右边,可以提高代码的可读性和可理解性。这种做法符合自然语言的阅读习惯,使得代码更易于理解。 // Good if (5 x) {// do something }// Avoid if (x 5) {// do something }不变量和资源申…

《PDVC》论文笔记

PS:模型代码解释清明后出 原文链接: [2108.07781v1] End-to-End Dense Video Captioning with Parallel Decoding (arxiv.org) 原文笔记: What: End-to-End Dense Video Captioning with Parallel Decoding 并行解码的端到端…