草庐IT

抓包淘宝APP HTTPS请求2022最新多种方法

feelsyt 2023-04-03 原文

抓一下淘宝App的HTTPS请求。到目前为止非常坎坷。

之前抓小红书App的时候,也折腾过类似的事情。解决了几个问题:

  • 抓包工具:MITMProxy
  • 手机端的强制代理:ProxyDroid的全局模式。因为有些App会检测是否有代理,所以必须强制走iptables流量。Droni也可以。
  • SSLPinning:用了SSLUnpinning + Taichi。

用了以上的方法,愉快的抓取了非常多的信息,比较稳定。

但是今天用了同样的方法去抓淘宝App,怎么都搞不定。别说抓包了,连走代理都不行,连都连不上。记录一下遇到的问题和解决方法。问题依次是:

  1. 想要抓包淘宝App,首先要解决阿里系私有协议的问题。据各路文章,阿里用的是私有的协议Spdy。所以要使用一个hook来把是否使用spdy这个选项改为false。(参考1)
  2. 要达到这个方法,就需要用到xposed或者frida的方法。
    1. xposed之前有用过。查了一下,有人已经给出了代码。(参考2)代码链接(https://github.com/zhaoboy9692/me-tools)。不过下载安装到Taichi之后不起作用。Taichi显示无法运行这个module。
      1. 中间还花了些时间来研究xposed教程,尝试自己写。结果发现原来xposed基本上就是一个java写的app,不懂基础概念,超出能力了。算了。
    2. 转去理解frida。
      1. 第一次听说frida,简单理解了下,就是frida不止在安卓,在各个系统上都可以运行,基本上就是一个在线hook的工具。和xposed的区别就是xposed模块可以一劳永逸带着走,frida则需要联机使用。但足够灵活。分为控制端(一般是PC)和被控制端(一般是手机)。控制端支持Python/Java。被控制端是一个server端接受指令。(参考3、4)
      2. 研究阿里系并且提到Frida的文章不少。我主要跟着参考5。
      3. 理解了Frida,我用的时候遇到了几个问题:端口转发的问题和权限的问题。
    3. 解决完了Frida,淘宝还是连不上数据,总显示网络故障。我以为是代理服务器的问题。研究了下MITMProxy,终于还是确认ProxyDroid和Droni都没问题。因为小红书就很好。
    4. 继续研究,找到了这篇文章很好:参考10总结了不少抓包的问题和解决方法。简单来说,抓不到有几个可能:
      1. App自己不走代理,哪怕你设了代理。这种就只能强制走代理。
      2. App自己不信任用户证书,只信任系统证书
      3. App自己连系统证书也不信任,只信任特定证书。SSLPinning的问题。
    5. 觉得是SSLPinning的问题。先用了UNPinningSSL,不解决问题。于是想把证书放在系统级下面。
      1. 尝试自己改名,adb push等等。结果又遇到了权限问题,卡在了这里。Android 10以上无法修改/system了,哪怕root也不行。连adb disable-verity也执行不了。
      2. 权限问题这几个文章讨论的比较好:参考21/22。看到的唯一可能是用Magisk Module来做。先park在这里,再去研究下。

神奇,更新!

刚写完上面,5分钟后看到一个文章,提到了Move Certificates这个Magisk Modules,能够把user certificates移动到系统certificates。试了一下,成功了!可以顺利抓包了

附录

import frida
rdev = frida.get_remote_device()
processes = rdev.enumerate_processes()
for process in processes:
print process

参考

  1. 解决淘宝、闲鱼等淘系App无法抓包问题 – iamSummi – 程序员ITS500(https://www.its500.com/article?url=Summi/p/14491808.html)
  2. 淘宝系抓包hook模块(淘宝系抓包hook模块_哈里哈气的博客-CSDN博客_frida spdy)
  3. 一篇文章带你领悟Frida的精髓(基于安卓8.1)(frida-all-in-one/READMD.md at master · hookmaster/frida-all-in-one · GitHub)
  4. FRIDA实践(FRIDA实践 - 简书)
  5. 抓包:淘宝、支付宝(抓包:淘宝、支付宝 | 小歪的博客)
  6. 淘宝系抓包hook模块(https://blog.csdn.net/zhangmiaoping23/article/details/105827285?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ETopBlog-1.topblog&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ETopBlog-1.topblog&utm_relevant_index=1)
  7. XPosed+Charles抓包淘宝App(https://www.jianshu.com/p/7df2d305f0c1)
  8. 在使用frida hook的时候报错(在使用frida hook的时候报错 - 简书)
  9. Android hook神器frida(二)(Android hook神器frida(二) - bamb00 - 博客园)
  10. 大型 App抓不到包?app抓包 抓不到评论(https://www.lanbu.net/d/244)
  11. 某些app无法抓包问题(https://blog.csdn.net/qq_40157234/article/details/103760612)
  12. mtopsdk(淘宝系android app使用的sdk)强迫请求通过代理进行抓包(mtopsdk(淘宝系android app使用的sdk)强迫请求通过代理进行抓包_深入浅出信息安全的博客-CSDN博客_mtopsdk)
  13. Android 7.0 Https抓包单双向验证解决方案汇总(Android 7.0 Https抓包单双向验证解决方案汇总 - 猿人学Python爬虫)
  14. Android抓包攻防技术(Android抓包攻防技术 - 先知社区)
  15. 部分应用不能抓包的原因(部分APP无法代理抓包的原因及解决方法(flutter 抓包) - lulianqi15 - 博客园)
  16. App绕过SSL Pinning机制抓取Https请求(https://www.cnblogs.com/yyoba/p/12370510.html)
  17. Android应用中https SSL pinning以及绕过的方法介绍(https://zhuanlan.zhihu.com/p/127847550)
  18. adb安装CA证书(https://www.cnblogs.com/yumoblogs/p/14773298.html)
  19. 制作证书的方法(adb shell安装证书/修改证书到系统级/ - 小君~ - 博客园)
  20. 把 charles,Fiddler 证书安装到安卓根目录,解决安卓微信 7.0 版本以后安装证书也无法抓包问题,需要 root(把 charles,Fiddler 证书安装到安卓根目录,解决安卓微信 7.0 版本以后安装证书也无法抓包问题,需要 root · TesterHome)
  21. How to disable dm-verity on Android with “user” build type ROM?(https://android.stackexchange.com/questions/215800/how-to-disable-dm-verity-on-android-with-user-build-type-rom)
  22. https://gist.github.com/pwlin/8a0d01e6428b7a96e2eb

有关抓包淘宝APP HTTPS请求2022最新多种方法的更多相关文章

  1. ruby - 如何使用 Nokogiri 的 xpath 和 at_xpath 方法 - 2

    我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div

  2. ruby - 如何从 ruby​​ 中的字符串运行任意对象方法? - 2

    总的来说,我对ruby​​还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用

  3. ruby - 为什么我可以在 Ruby 中使用 Object#send 访问私有(private)/ protected 方法? - 2

    类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc

  4. ruby - Facter::Util::Uptime:Module 的未定义方法 get_uptime (NoMethodError) - 2

    我正在尝试设置一个puppet节点,但ruby​​gems似乎不正常。如果我通过它自己的二进制文件(/usr/lib/ruby/gems/1.8/gems/facter-1.5.8/bin/facter)在cli上运行facter,它工作正常,但如果我通过由ruby​​gems(/usr/bin/facter)安装的二进制文件,它抛出:/usr/lib/ruby/1.8/facter/uptime.rb:11:undefinedmethod`get_uptime'forFacter::Util::Uptime:Module(NoMethodError)from/usr/lib/ruby

  5. Ruby 方法() 方法 - 2

    我想了解Ruby方法methods()是如何工作的。我尝试使用“ruby方法”在Google上搜索,但这不是我需要的。我也看过ruby​​-doc.org,但我没有找到这种方法。你能详细解释一下它是如何工作的或者给我一个链接吗?更新我用methods()方法做了实验,得到了这样的结果:'labrat'代码classFirstdeffirst_instance_mymethodenddefself.first_class_mymethodendendclassSecond使用类#returnsavailablemethodslistforclassandancestorsputsSeco

  6. ruby-on-rails - Rails 3.2.1 中 ActionMailer 中的未定义方法 'default_content_type=' - 2

    我在我的项目中添加了一个系统来重置用户密码并通过电子邮件将密码发送给他,以防他忘记密码。昨天它运行良好(当我实现它时)。当我今天尝试启动服务器时,出现以下错误。=>BootingWEBrick=>Rails3.2.1applicationstartingindevelopmentonhttp://0.0.0.0:3000=>Callwith-dtodetach=>Ctrl-CtoshutdownserverExiting/Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/actionmailer-3.2.1/lib/action_mailer

  7. ruby - Highline 询问方法不会使用同一行 - 2

    设置:狂欢ruby1.9.2高线(1.6.13)描述:我已经相当习惯在其他一些项目中使用highline,但已经有几个月没有使用它了。现在,在Ruby1.9.2上全新安装时,它似乎不允许在同一行回答提示。所以以前我会看到类似的东西:require"highline/import"ask"Whatisyourfavoritecolor?"并得到:Whatisyourfavoritecolor?|现在我看到类似的东西:Whatisyourfavoritecolor?|竖线(|)符号是我的终端光标。知道为什么会发生这种变化吗? 最佳答案

  8. ruby - 主要 :Object when running build from sublime 的未定义方法 `require_relative' - 2

    我已经从我的命令行中获得了一切,所以我可以运行rubymyfile并且它可以正常工作。但是当我尝试从sublime中运行它时,我得到了undefinedmethod`require_relative'formain:Object有人知道我的sublime设置中缺少什么吗?我正在使用OSX并安装了rvm。 最佳答案 或者,您可以只使用“require”,它应该可以正常工作。我认为“require_relative”仅适用于ruby​​1.9+ 关于ruby-主要:Objectwhenrun

  9. ruby-on-rails - Rails HTML 请求渲染 JSON - 2

    在我的Controller中,我通过以下方式在我的index方法中支持HTML和JSON:respond_todo|format|format.htmlformat.json{renderjson:@user}end在浏览器中拉起它时,它会自然地以HTML呈现。但是,当我对/user资源进行内容类型为application/json的curl调用时(因为它是索引方法),我仍然将HTML作为响应。如何获取JSON作为响应?我还需要说明什么? 最佳答案 您应该将.json附加到请求的url,提供的格式在routes.rb的路径中定义。这

  10. ruby - 多个属性的 update_column 方法 - 2

    我有一个具有一些属性的模型:attr1、attr2和attr3。我需要在不执行回调和验证的情况下更新此属性。我找到了update_column方法,但我想同时更新三个属性。我需要这样的东西:update_columns({attr1:val1,attr2:val2,attr3:val3})代替update_column(attr1,val1)update_column(attr2,val2)update_column(attr3,val3) 最佳答案 您可以使用update_columns(attr1:val1,attr2:val2

随机推荐