https://www.t00ls.net/articles-45803.html

最近对某一APP进行安全检测,整个过程花费几天时间,最耗时的就是写中转脚本实现数据的自动加密解密过程,而且过程中遇到许多小问题,折腾了许久。

1.        360脱壳
    因为APP是被加固了,要想获取更多有价值的信息或者是想更快的对数据包的加密算法进行分析最好的办法就是查看源码关键的加密函数,所有第一步就是对APP进行脱壳。
貌似网上有对360加固的脱壳程序,但是还是习惯用之前的方式脱壳:android-sdk-windows中的模拟器和ddms.
(1), 查看加固方式
查看APP加固方式,可以看到是360加固

(2) 新建模拟器
使用安卓SDK新建一个原生的模拟器:

然后启动我们新建的那个名字为360的模拟器(这个启动要很长时间。。)
在设置中的开发着模式中更改系统启动方式:

更改runtime为ART方式,然后重启模拟器。

(3) 脱壳
模拟器重启后使用adb调试工具安装已加固的APP到模拟器: adb install xxx.apk
然后运行安卓的监控程序ddms

所有的app的端口和日志信息都会显示在这里。

然后运行我们刚刚安装的app,日志就会显示harvey:dex file name-->/data/data/APP包名字/.jiagu/xxx.dex

会自动把加固的dex 解密并dump到 .jiagu 目录,我们直接 使用adb把整个jiagu目录全部复制一份到我们电脑上: adb pull /data/data/com.baidu.com.app/.jiagu d:/aa/
有很多dex文件我们就可以反编译dex了。

2.        加密算法分析
使用jd-gui对dex进行反编译查看关键加密代码。

一般在进行对加密算法进行判断时,通常最简便的方法是直接搜索关键字:login、password、AES、DES、Sign、token、RSA等关键字。

可以看到其中一部分加密是AES加密,加密的偏移量IV明文的在字符串中。其中还有其他的算法RAS的算法:使用服务器的公钥加密部分数据到服务器。

代码虽然被被混淆了,但是基本的方法大概还是能看懂。

3.        动态数据分析
APP采用的HTTPS通信,要想捕获HTTPS的流量,需要在模拟器上安装BP或者FD的证书。
(1)        解密HTTPS数据
解密HTTPS的数据需要用到xposed框架和JustTrustMe插件。

现在BP监听所有IP或者内网IP的地址

打开测试的模拟器测试是否抓到数据包。运行APP查看抓包的数据:
发送的数据全加密:

返回数据全加密:

可以看到每个请求时发送的三段密文,三个加密算法组合验证数据。

(2)        动态分析通信数据
之前静态分析加密算法只知道大概的算法,没有具体验证加密信息,这里通过动态的分析可以明确加密算法和key。
使用inspeckage插件对APP的相关函数方法进行hook(具体什么功能我也说不清楚,能看到很多有用的信息)。
大概的功能有:
功能一:获取APP基本信息
【1】权限:请求权限(Requested Permissions)、自定义权限(APP Permissions)
【2】组件:导出和非导出的组件(Activity、Service、Broadcast Receiver、Content Provider)
【3】共享库(Shared Libraries)
【4】标志位:Debuggable,Allow Backup
【5】其他:UID,GIDs,Package等

功能二:实时查看应用程序的行为
【1】Shared Preferences(日志和文件)
【2】Serialization(序列化)
【3】Crypto(加密)、Hash
【4】SQLite数据库
【5】HTTP、WebView、IPC等
【6】Hooks(自定义HOOK)

功能三:其他操作

【1】开启任意Activity组件(导出和非导出)
【2】调用Provider组件(导出和非导出)
【3】开启、停止、重启应用程序

大概用法:
运行inspeckage打开要监视的APP。

点击启动APP,电脑客户端运行: adb forward tcp:8008 tcp:8008
浏览器打开本地127.0.0.1:8008

点击ON开始监听,

可以看到部分加密的数据是AES加动态的key和固定的IV进行加密。数据包中还有2种加密都体现在这里。

4.        加密解密脚本
要实现对数据包的篡改就必须对原密文解密然后再修改数据在加密发送服务器
知道了算法现在就通过python脚本对数据进行加密解密。
AES的AES/CBC/PKCS5Padding加密:

AES/CBC/PKCS5Padding解密用一个在线的吧: http://www.seacha.com/tools/aes.html

这个算法解密不需要脚本,直接解密一次明文,然后是重复修改明文再通过加密脚本发送修改后的数据。服务器返回的数据是密文也是需要脚本来进行解密。还有其他2段的加密算法就不举例了。

5.        数据中转注入
因为整个APP通讯除了使用HTTPS加密传输,而且每个数据包的请求都是动态的key+iv的加密,并且还要随时更改数据包中的其他2段加密才能正常正常发送服务器才能解析。
如果要测试越权或者注入之类的漏洞,并且要通过注入获取数据的话,手工的话得累死人,所有要实现数据的中转。
整体流程:首先本地请求明文数据到中转服务器—》中转服务器对请求包各种加密校验—》发送服务器---》解密服务器响应—》发送客户端。
因为各种加密算法都是python脚本支持的,所以中转使用python的BaseHTTPRequestHandler来实现,发送http请求用urllib2来实现。
大概代码:

这个当时被这个负载均衡IP郁闷了很久,在APP上登录一切正常,但是中转脚本走的数据一直提述未登录,找了好久好久的问题,最后发现每隔一段时间走的IP不一样(IP地址不知道是什么规则,不是网上的那个F5的规则),
而且就差一个字符不一样,一直没有发现,导致耽误很久。然后就是IP和前面的cookie之前必须有个空格,MD之前感觉各种都对的,返回总是提示未超时,害得我一个一个字符找问题。。。。
中转的脚本使用代理是为了方便我数据直接走BP,因为BP走的数据可以与服务器直接HTTPS通讯。我的python脚本不想再去搞什么HTTPS证书了,直接发送给BP,BP发送到服务器。
然后跑注入漏洞直接: python sqlmap.py -u “ http://192.168.0.10/id=1” 就Ok了。

最后附上一张测试的测试的效果图:

某APP安全检测 (360脱壳+算法分析+数据中转注入)相关推荐

  1. 登 GitHub 趋势榜首德国疫情追踪 App 号称可保疫情隐私数据无忧,你信吗?

    整理 | 夕颜 出品 | CSDN(ID:CSDNnews) 2020 年 5 月 21 日,GitHub Trending 榜首被一款德国疫情防控应用程序 Corona-Warn-App 夺得, 热 ...

  2. 安卓实现APP自动检测软件版本并提示更新

    安卓实现APP自动检测软件版本并提示更新 前言 当我们在做安卓项目的时候,客户的需求往往难免会发生变动.但是我们的产品已经上线了,却又需要修改的话我们该怎么办呢?也许很多应用商店已经集成了这个功能,只 ...

  3. 移动 app安全评估检测技术分析

    由于现今的网络技术日益发达,安卓 APP 的安全也有很多隐患,这些都需要我们不断地去注意,从而提高其安全性.人们基于系统程序.系统数据.基础业务的安全性以及应用程序出现的漏洞这几个方面,来不断地完善并 ...

  4. 京东怎么做《IOS系统APP耗电量检测分析和优化》?

    耗电量不仅是衡量应用性能表现的一个重要指标,同时也是用户体验的重要组成部分.要做好⼀款APP,不仅仅是实现功能那么简单,我们需要考虑很多性能指标,让用户用的更爽.在开发过程中,要充分考虑到各项性能指标 ...

  5. 《iOS APP 性能检测》

    colawyeeqiu | 导语 最近组里在做性能优化,既然要优化,就首先要有指标来描述性能水平,并且可以检测到这些指标,通过指标值的变化来看优化效果,于是笔者调研了iOS APP性能检测的一些方法, ...

  6. 齐向东透露工信部检测360浏览器

    [中国IDC群]12月12日报导:今天,360公司总裁齐向东承受了网易科技的采访.据他叙述,工信部和国家安全评测中心已对360浏览器的检测经过. 在此之前,360浏览器被曝窃取用户隐私,董事长周鸿祎曾 ...

  7. 论文分析---APP恶意软件检测

    恶意软件检测 概述 背景 动机 数据 特征 实验 结果 亮点 特征提取 weka软件 Towards a Network-Based Framework for Android Malware Det ...

  8. 测试打呼噜的软件,打呼噜人群福音!这款app能检测鼾声并提供一站式止鼾方案...

    原标题:打呼噜人群福音!这款app能检测鼾声并提供一站式止鼾方案 少侠,你睡觉会打鼾吗? 呃,呼噜这个事情,一般情况下,大家是不愿意承认的,毕竟没有证据,想怎么说都可以. 然而今天推荐的这款APP就能 ...

  9. 虚拟手机硬件环境,Xposed的特征修改,APP读取虚拟硬件信息,伪造数据读取硬件标识信息

    大厂的流行App都用技术手段检测手机硬件环境,标识用户的唯一性.这样的技术手段有两个目的,一个是为了更加精准的广告投放,另外一个原因是防止被薅羊毛等.其实无论是那种目的都是对个人隐私的侵犯.从Andr ...

最新文章

  1. 微信小程序开发之不能使用eval函数的问题
  2. 网络通讯程序整理(一)
  3. GraphQL的schema定义文件加载到内存里的例子
  4. C语言结构体字节对齐
  5. 【HDU - 2149】Public Sale (巴什博奕)
  6. Linux批量复制文件夹里的文件到另一个文件夹(问题:linux sh: /bin/cp: Argument list too long )
  7. 软件以人为本1 - 序 - 写于上海2011 ScrumGathering会后
  8. opencv-python库的安装
  9. mysql中order by的原理
  10. 基于exchange 2010迁移exchange 2016搭建共存环境
  11. 【指南 】北理珠第十届C语言程序设计挑战杯
  12. ie8和ie11的html代码生成,ie8升级ie11-IE11,IE8
  13. Matlab之isprime与find函数
  14. java bouncycastle,使用BouncyCastle在Java中使用ECIES进行加密
  15. 第71次上IM课(IMO72:About Friends)
  16. linux用户motd,linux需要装?那就和我一起来配置一个动态的MOTD登陆效果吧
  17. Android仿keep运动轨迹动画,仿keep思路
  18. 电商WMS与云仓储-E店宝-陈涛
  19. CTF解题记录-Misc-“短信”
  20. R语言错误信息及相关解决方法

热门文章

  1. 逆水寒土豪最多的服务器,逆水寒土豪到底多有钱?几个人可以承包一个服!
  2. 转:领导力的核心是让每个人得以蓬勃发展
  3. 可能真正解决Windows睡眠耗电
  4. ps游戏在什么系统下开发_游戏陪玩系统源码搭建,游戏陪玩软件开发,这些关键你都知道吗?...
  5. android图片解码显示,android 图片解码显示流程
  6. conda查看配置config命令
  7. Jmeter设置全局与局部变量
  8. React使用pubsub-js订阅发布和取消订阅
  9. python给word添加水印_python 批量给 word,excel,ppt 或 pdf 文件添加水印
  10. 股票量化分析工具QTYX使用攻略系列——远程量化机器人