首页 > 其他分享 >移动app之base64编码后的AES加密流量

移动app之base64编码后的AES加密流量

时间:2023-12-06 13:57:03浏览次数:159  
标签:AES 加密 app base64 local email

移动app之base64编码后的AES加密流量

别搁那你抄我,我抄你了。咱直接抄海外okay?
参考资料:https://www.vaadata.com/blog/insecure-authentication-tokens-leading-to-account-takeover/

技术点

  • AES-256-CBC加密
  • base64 编码

会话管理请求包:

GET /login HTTP/1.1
Host: 172.23.76.53:8000
TOKEN: T1P6eRxSX7DosonF7cUSD+OALbeWmMYu3DpNYrYEdtvxnrL3LoiE7SFAimZ1hrBEk4vinGO89IvycKEGR7SyoA== 
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/117.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate, br
Connection: close
Upgrade-Insecure-Requests: 1

响应包:

HTTP/1.1 200 OK
Host: 172.23.76.53:8000
Date: Tue, 12 Sep 2023 13:40:30 GMT
Connection: close
X-Powered-By: PHP/8.2.8
Content-type: text/html; charset=UTF-8

Welcome User

整个请求包就一个token在搁那做会话管理
https://gchq.github.io/CyberChef/ 选from base64--来自于base64的编码需要解码
image

base64解码之后,数据还是加密状态。到这一步必须解密它。因为没有事先发送请求,这些加密信息大概率都在移动app内。所以我们尝试恢复源代码。

技术点

  • 反编译移动app
    不同的技术需要不同的方法反编译(native, Flutter, etc.),要先搞清楚它用的什么技术栈。应用程序位于 Xamarin 中,说明移动app使用 .NET 编写的。

    使用 apktool 反编译应用程序:apktool d app.apk
    解压缩 Xamarin 文件:pyxamstore unpack -d app/unknown/assemblies/
    使用 .NET 反编译器,在本例中为 JetBrains 的 dotPeek。

  • 数据关联大法与源码搜索
    不管你如何进行编码与加密,加密结果最后是不是都体现在请求包的中的token头中。因此,源码搜索的关键词是token,跟踪数据流。
    你会搜到在base64编码之前先进行了AES-256-CBC 算法加密。(base64属于后渗透数据溢出之base64编码传输,因此先加密再传输,而不是先传输再加密)

百度搜 AES-256-CBC 原理图。发现从明文到密文,需要IV和key。仅此而已,没了。
image

你猜,在源码你搜到的iv和passphrase参数值,是不是AES-256-CBC的IV和key

iv = 8c7b7ef51795142327fe06cea699e39b (sous forme hexadécimal)
passphrase = "AlfredWillFindMeaGoodPassphrase!"

填充参数进行解密
image

token解密如下:

email=user@local.dev|password=superpassword1234|App=company1

基本操作的威胁建模:
email=user@local.dev --> email=admin@local.dev 尝试提权: user改admin

把明文和密文调来调去,解来解去。你发现你发送的东西不是 email=user@local.dev|password=superpassword1234|App=company1
因为你加密发送之后,它请求包中的token变成了:

T1P6eRxSX7DosonF7cUSD1jxPCZrgA0tcnW+3wfxhX9aRuxSURkzQ39W1PH2K81icOoCRqR3jXj0tkQcjjArfOVzE2wahVpQu40xoobj1j1ToQ84fDq82sQA/8mxQd06KX+RoiW3FbNoTtUfON54qbmtptE9e2NtWAv2IX++FTmzlL0uPeF9G5X/wtoKTp/UEoyP7OtWuc97Pt832pIqPtnMvebL6k2S/CDa590XbIw=

你解密后发现,不对。我发送的是email=user@local.dev|password=superpassword1234|App=company1 的加密版本,怎么多了hash出来

email=user@local.dev|App=company1|hash=250ec51456a3c45e4a8b55344fffaf188c16180823efb813130c1672405308042eaded1146cbc1705635cddf386596834e17d67ebdcafe1a20d8700011f7220a

看一下hash长度,假设它是 sha512,你可以进行预判。源代码搜关键词hash或者搜你假设的sha512。-->发现sha512(email+'#'+company)
image

所以请求包就变成了:
威胁建模的明文-->添加hash参数-->整体AES加密
admin@local.dev#company1 => f765f0945a56a49e6f245eb74fe312a2a6619f7cdfe2298bf8bc4d816060583704ebb5bf87bcdd02218d699c0934f78b7044ba475432d5f6a4eb135348ad43a7

aes加密

7p/fKUgE5tiG7J+4MMeAsvaw66KNur4NpskFiwAnxqbqvvuElIwusapyaN7V1MOMG/YSeY+3OZ/RzunzUUKWRMI+y8XCL1bX0lJQtJYaWkey9LQBBy158M6Dq3SbglAqes+B+dG18vf6urXISZZAONkR7FxoDbFekqVgZ4urzQBBzkjkRvXJlAVkuhQ879OgplBSNSN382d4Qnrufeb6wqJWp0tFp/dj+BhsbkKsQfU=

poc验证:

GET /login HTTP/1.1
Host: 172.17.42.3:8000
Token: 7p/fKUgE5tiG7J+4MMeAsvaw66KNur4NpskFiwAnxqbqvvuElIwusapyaN7V1MOMG/YSeY+3OZ/RzunzUUKWRMI+y8XCL1bX0lJQtJYaWkey9LQBBy158M6Dq3SbglAqes+B+dG18vf6urXISZZAONkR7FxoDbFekqVgZ4urzQBBzkjkRvXJlAVkuhQ879OgplBSNSN382d4Qnrufeb6wqJWp0tFp/dj+BhsbkKsQfU=
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.5790.171 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate
Accept-Language: fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7
Connection: close

响应包

HTTP/1.1 200 OK
Host: 172.17.42.3:8000
Date: Thu, 17 Aug 2023 07:57:36 GMT
Connection: close
Content-type: text/html; charset=UTF-8

Welcome Admin

标签:AES,加密,app,base64,local,email
From: https://www.cnblogs.com/sec875/p/17879329.html

相关文章

  • AES 加密
    1.AES程序加密1packagecom.demo.util;23importcom.demo.exception.BusinessException;4importcom.demo.model.enums.ErrorEnum;5importlombok.extern.slf4j.Slf4j;6importorg.apache.commons.lang3.RandomStringUtils;7importorg.apache.comm......
  • RetsCloud AppLink适用的场景有哪些?
    Applink是什么产品?AppLink是一款由RestCloud公司推出的超级应用连接器。无需开发,零代码,即可快速打通应用系统之间的数据。通过流程搭建,可以智能、高效地完成自动化任务,在大大提高工作效率的同时,也降低了大量的人工成本。目前RestCloud Applink提供数百款应用,超过8000个接口动作......
  • 什么是全同态加密(FHE)中的自举(Bootstrapping)?
    PrimiHub一款由密码学专家团队打造的开源隐私计算平台,专注于分享数据安全、密码学、联邦学习、同态加密等隐私计算领域的技术和内容。全同态加密(FullyHomomorphicEncryption,FHE)中经常提到的一个术语是“自举”(Bootstrapping)。任何读过FHE初级材料的人都知道,自举是FHE方案中最......
  • 一、Spring学习 : 容器---->BeanFactory+ApplicationContext 的多种容器实现
    BeanFactory实现的特点我们来着重讲一下DefaultListableBeanFactory这个实现类:点击查看完整代码packagecom.itvayne.springbootcloudstudy.beanfactory01;importcom.sun.org.slf4j.internal.Logger;importcom.sun.org.slf4j.internal.LoggerFactory;importorg.springf......
  • 手机被植入了木马,银行APP显示切换用户
    前几天一个大哥找我咨询,说跟之前的合作伙伴发生了矛盾,后来怀疑他的手机被监控了,问了几个问题:大哥问:我的银行APP显示切换用户,对方是不是利用短信接持了我的短信,登录了我的银行app。我答:显示切换了用户是否有转账呢?如果能短信劫持到你的短信大概率你手机上的任何app都能利用劫持的短......
  • uniapp 微信小程序 onLaunch触发vuex 请求http报错600009?
    当在uniapp中的微信小程序中使用vuex触发http请求时,出现错误码600009通常表示网络请求发生了错误或失败。这个错误码通常不是uniapp或vuex特定的错误码,而是微信小程序的错误码。以下是一些可能导致此错误的原因和解决方法:网络连接问题:首先,确保您的设备已连接到互联网,并且网络连接稳......
  • centos 8 Failed to download metadata for repo ‘AppStream’: Cannot prepare inte
     查询后发现问题的原因是Centos8于2021年年底停止了服务,我们在使用yum源安装时候,出现下面错误“错误:Failedtodownloadmetadataforrepo‘AppStream’:Cannotprepareinternalmirrorlist:NoURLsinmirrorlist”。解决办法:1. 进入yum的repos目录:  cd/etc/yum.r......
  • Misc_XCTF_WriteUp | base64stego
    题目提示:菜狗经过几天的学习,终于发现了如来十三掌最后一步的精髓题目:分析尝试打开压缩包,发现需要密码。但准备爆破的时候被提示zip未被加密:猜测是zip伪加密,打开十六进制文件,发现数据区的全局方式位标记第2/4个数是偶数0,而目录区的第2/4是奇数9:将9改为偶......
  • js 中的 base64 转码 btoa/atob
    1场景有时,文本里面包含一些不可打印的符号,比如ASCII码0到31的符号都无法打印出来,这时可以使用Base64编码,将它们转成可以打印的字符。另一个场景是,有时需要以文本格式传递二进制数据,那么也可以使用Base64编码。所谓Base64就是一种编码方法,可以将任意值转成0~9、A~Z、a-z......
  • Spring Boot2 开启系统日志(2)- 在application中配置日志
    在application.yml中通过logging.level来配置root是所有日志级别的打印;sql、web是分别设置sql或web相关的日志级别2.另外还可以分别对不同的包设置不同的日志打印级别#Logconfigurationlogging:level:com.*:debugorg.springframework:warn如上所示,分别......