如何通过Charles+BurpSuite的配合在PC端抓到手机包

2023-11-19

渗透测试工作记录



前言

在我日常的渗透测试工作中,用的最多的软件就是Burp Suite,我觉得它功能多样,界面清晰简洁,即使是之前完全没接触过这类软件的人也可以很快上手,所以实际上在刚入行的时候我根本就没再去学去用什么其他的软件了。但随着测试的系统越来越多,我发现有时会遇到在Burp Suite中抓不到包的问题!我现在也不知道这种情况产生的原因,只知道在burp里抓不到包就无法进行常规的测试操作,令我这个菜鸟感到非常着急(唉~

目前遇到过两种抓不到包的情况:一是微信小程序,二是测试APP的时候在进入APP和登录时都可以正常抓到包,但偏偏进了需要测试的功能点之后就抓不到包了。

听大佬说,要用“全局代理”,要用“花瓶”……虽然不是很懂但是去安装了Charles并学了一下怎么使用,然后顺利在burp中抓到了包,在这里记录一下以备未来如果忘记了可以翻一翻。

本文仅简单记录了在一次渗透测试工作中,通过借助Charles来解决burp中抓不到包的问题的配置步骤,不涉及Charles的具体功能介绍和如何安装等内容。


一、Charles是什么?

Charles 是在PC端常用的网络包截取工具,Charles 通过将自己设置成系统的网络访问代理服务器,使所有的网络访问都要经过它,从而实现了对网络包的截取和分析。
有关Charles比较全面的介绍和使用方法可以参考别人的这篇文章:https://www.jianshu.com/p/dd6a24f0c73d
PS:看了Charles的使用方法之后,我感觉Charles好像和burp的功能差不多啊,但是界面和操作方法似乎不如burp来的简洁,所以才没有burp那么出名吗?

二、实现步骤(以Mac端抓包IOS微信小程序为例)

1.在Charles下设置代理的端口

点击Charles窗口内上部工具栏图标的最后一个(Settings),点击弹出菜单中的Proxy Settings,填入代理端口 8888(或者自定义,但不能和系统已占用端口冲突),并且勾上“Support HTTP/2”和 “Enable transparent HTTP proxying”,点击右下角OK即可。
找到设置代理端口的地方
设置代理端口为8888

2.分别在PC端和手机端安装证书

先给PC端安装证书,点击位于屏幕顶端的菜单栏的Help,找到SSL Proxying,选择Install Charles Root Certificate按照提示就可以下载安装上。接下来是要把证书设置成信任(这很关键!方法在下面)。
找到安装证书的选项
安装PC端证书之后,在Mac的“钥匙串访问”(安装证书时“钥匙串访问”应该会自己弹出来)的左侧点击“系统”,从显示已安装证书的列表里找到Charles的证书,在证书位置点击鼠标右键,在出现的菜单中点击“显示简介”,展开窗口中的“信任”一栏,设置为“始终信任”。
在PC端将证书设置为始终信任
再给手机端安装证书,步骤如下:
1.还是点击位于屏幕顶端的菜单栏中的Help并找到SSL Proxying,这一次选择有on a Mobile Device的这一项。
2.点击后会弹出窗口提示设置的方法,按照提示在手机端将代理设置为电脑的ip:8888,这里要先确保手机和电脑连接同一个无线网络。然后在手机的浏览器打开http://chls.pro/ssl,按提示下载证书即可。
3.下载证书之后同样很关键的步骤就是要设置证书为信任。在手机的设置->通用->关于本机->(滑到最下面找到)证书信任设置->找到并打开Charles Proxy CA的开关。选择在手机端安装证书手机证书设置提示
手机端设置代理
手机下载证书提示弹窗
手机端打开证书信任

3.关闭macOS代理,打开外部代理

点击位于屏幕最上方菜单栏右侧的小花瓶logo,在下拉菜单中去掉macOS Proxy的勾选,再勾选上External Proxy Servers,如下图1。如果这里勾选了macOS Proxy,就是打开了本机的本地全局代理,相当于手动进行了操作:网络偏好设置->高级->代理->勾选上本地的http和https代理,如下图2。因为这里我是想在PC端抓手机端的包,所以没必要打开电脑的本地代理,但后面是要将Charles作为手机端的代理,再由Charles将包转发给burp,所以对于Charles来说,burp就成了一个“External Proxy Server”。(个人理解不一定对
图1 :取消勾选本地代理并勾选外部代理
图2:打开macOSProxy后会打开本地代理
PS:上图的本机http、https代理实际上在这里是不需要勾选的哈!

4.配置外部代理

点击屏幕顶端的Charles菜单栏中的Proxy,从下拉菜单中找到External Proxy Settings,勾选http和https代理,这里http和https的代理服务器地址都是127.0.0.1:8080.
找到外部代理设置选项
外部代理的配置窗口

5.打开burp

已经设置了外部代理了,就必须打开burp(当然了主要是要打开burp中对127.0.0.1:8080的监听),否则就会出现“连不上网了”的现象。在burp的菜单栏中的Proxy选项下的Options中打开127.0.0.1:8080的代理监听(默认应该是已经打开的),在Intercept中关闭请求拦截。

6.让Charles能解析https的包

完成上面的配置步骤后,从手机上打开微信小程序,登录并进入功能点,应该已经可以在Charles窗口左侧的列表中找到想抓的包。在想抓的https包的url处右击选择Enable SSL Proxying这一步非常重要,因为我曾经不知道这一步骤然后burp中依然抓不到包……
以上都完成后,再访问在手机端微信小程序中想要测试的功能点,此时burp中应该就可以抓到包了。
打开SSL代理


总结

以上就是今天要记录的内容。这里一定要注意的事情有:
1.PC端和手机端都需要安装burp证书和Charles证书,并且打开信任。
2.点击位于屏幕顶部右侧的Charles小花瓶logo,取消macOS Proxy的勾选,勾选上External Proxy Servers。
3.在Charles窗口左侧的列表中找到想要用burp抓包的url并右键选择打开SSL Proxying。
4.开了外部代理就一定要记得打开burp的127.0.0.1:8080监听,否则网络不通。
5.Charles中设置的外部代理的地址是127.0.0.1:8080,手机端代理的地址是电脑ip(与手机在同一网段):8888

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何通过Charles+BurpSuite的配合在PC端抓到手机包 的相关文章

  • 谁在 Mac OS X 上监听给定的 TCP 端口?

    在Linux上 我可以使用netstat pntl grep PORT or fuser n tcp PORT找出哪个进程 PID 正在侦听指定的 TCP 端口 如何在 Mac OS X 上获得相同的信息 在 macOS 上Big Sur然
  • 如何在Mac上使用AVFoundation将图片编码为H264,而不是使用x264

    我正在尝试制作一个 Mac 广播客户端 使用 FFmpeg 但不使用 x264 库编码为 H264 所以基本上 我可以从 AVFoundation 中获取原始帧CMSampleBufferRef or AVPicture 那么有没有一种方法
  • Mac OS X 中文件系统的 Unicode 编码在 Python 中不正确?

    在 OS X 和 Python 中处理 Unicode 文件名有点困难 我试图在代码中稍后使用文件名作为正则表达式的输入 但文件名中使用的编码似乎与 sys getfilesystemencoding 告诉我的不同 采取以下代码 usr b
  • xcode 4 垃圾收集已删除?

    我正在学习 Xcode 和 Objective C 但是我正在阅读的书使用的是旧版本 3 2 的 Xcode 其中一章完全致力于内存和泄漏 说我需要通过 项目设置 gt 构建 打开垃圾收集 但是 我找不到垃圾收集设置 它已被删除还是我只是错
  • Laravel/Homestead - OSX - Vagrant 连接超时

    Problem 我正在尝试让 Laravel Homestead 在我的 Mac Book Air 上运行 我已按照以下指示进行操作http laravel com docs 4 2 homestead http laravel com d
  • 当前收据无效或不匹配的 ds 人员 ID

    我正在尝试测试 MacOS 的应用内购买 输入测试用户凭据后 App Store 抱怨 当前收据无效或 ds 人员 ID 不匹配 并且购买失败 我尝试了很多方法来解决这个问题 获取 App Store 收据 http www kotanco
  • Xcode 服务器 ibtool 构建失败

    我一直在研究使用 Xcode Server 进行 CI 我已经解决了一些问题 但现在有一个问题困扰着我 构建似乎工作正常 但在测试阶段挂起 并在日志底部生成以下内容 2015 11 25 14 44 45 650 xcodebuild 58
  • 让 TensorFlow 在 ARM Mac 上使用 GPU

    我已经安装了TensorFlow在 M1 上 ARM Mac 根据这些说明 https github com apple tensorflow macos issues 153 一切正常 然而 模型训练正在进行CPU 如何将培训切换到GPU
  • 更新 OSX 命令行工具 6.3 后缺少 C++ 标头 <__debug>

    从 App Store 更新到 Command Line Tools 6 3 后 程序包括
  • 以编程方式检索 OSX 网络/代理配置值

    考虑到我的应用程序具有当前登录的管理员用户的用户 ID 和密码 是否可以从 OSX 网络设置中检索配置值 对 高级 代理 选项卡内容特别感兴趣 通过设置 API 完成 以下是从 OSX 网络设置中获取 PAC URL 字符串的示例 stat
  • 在 OSX 上,Java 线程在不关注时会进入睡眠状态

    我正在编写一个程序来监听系统剪贴板的更改 侦听器在单独的线程上运行 并在剪贴板的内容更改时执行某些操作 例如写入文件 我正在使用轮询剪贴板剪贴板所有者界面 http www javapractices com topic TopicActi
  • 如何在全屏视图前面显示 NSPanel?

    我的应用程序以全屏方式运行 我需要类似 iOS 的 UIPopoverController 之类的东西 第一个想法是使用 NSPanel 但我无法让它显示在全屏视图前 我需要一个类似 UIPopoverController 的 Cocoa
  • 带有存储在文件中的通配符的 grep

    我希望 grep 通过读取需要从文本文件中过滤掉的内容来过滤掉行 这是我给 grep 的内容 它存储在foo txt Users 1337 X Users 1337 R Users 1337 W 这是它应该过滤的内容 它存储在bar txt
  • Cocoa webview UserAgent“webkit-legacy”问题

    我解决了这个问题 请看下面所选的答案 我一直在努力寻找导致 OSX Cocoa 应用程序的 WebView 与 Safari 表现不同的原因 事实证明 用户代理是不同的 有点明显 并且我正在访问的网站不知道如何处理它 令人惊讶的是 它是ht
  • 在 MAC OSX 上使用 CMake 生成 .bundle 文件

    我想生成一个可执行文件 bundle文件于Mac OSX 10 6 8 using CMake 我的 CMakeLists txt 文件如下所示 cmake minimum required VERSION 2 8 PROJECT TEST
  • NSMenu 未调用 validateMenuItem 或 menuWillOpen

    我的 Mac 应用程序有一个 NSMenu 其委托功能validateMenuItem and menuWillOpen从来没有被调用过 到目前为止 网上的解决方案都没有帮助 看来我做的一切都是对的 菜单项的选择器属于同一类 管理它的类继承
  • 包含 Xcode 上添加的框架的标头

    我想使用一些框架 例如glew and cg所以我手动添加 通过右键单击项目 gt 将文件添加到 来将所需的框架添加到我的项目中 并选择正确的框架 问题是 当我尝试包含头文件时 Xcode 找不到其中任何一个 我希望这张图能帮助理解 And
  • Python代码检测OS X El Capitan中的暗模式以更改状态栏菜单图标

    我有目标 C 代码来检测暗模式以更改状态栏 NSDistributedNotificationCenter defaultCenter addObserver self selector selector darkModeChanged n
  • 左右 mac“命令”键的配置不同吗?

    我想知道是否可以将右侧的 mac 命令 设置为像 ctrl 键一样 但保留左侧 命令 键的默认功能 谢谢 有一个非常棒的应用程序 称为 Ukelele 免费 不幸的是 它无法区分左右命令键 然而 我最近发现了一个更好的应用程序 名为 Con
  • Core Data 与 SQLite 3 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi

随机推荐

  • 文件内存映射mmap解决大文件快速读写问题

    转自 http blog csdn net gulaizi article details 6325726 mmap函数主要用途有三个 1 将一个普通文件映射到内存中 通常在需要对文件进行频繁读写时使用 这样用内存读写取代I O读写 以获得
  • 5、Ubuntu20常用操作_进程管理&重定向和管道&常用命令&网络管理&构建web静态服务器nginx

    进程管理 进程的概念 大家比较熟悉 Windows 下的可执行文件 就是那些扩展名为exe的文件 大家知道 只需要鼠标双击这些程序 就可以运行了 程序运行起来后 我们把这个程序正在运行的 实例 称之为 进程 操作系统对每个进程都分配一个数字
  • 小程序添加本地图片

    写背景图片的时候用了本地的图片 报错说是不能直接使用本地图片 只能使用
  • 为什么振荡电路晶体旁要放22pF电容?

    振荡电路用于实时时钟RTC 对于这种振荡电路只能用32 768KHZ 的晶体 晶体被连接在OSC3 与OSC4 之间而且为了获得稳定的频率必须外加两个带外部电阻的电容以构成振荡电路 32 768KHZ的时钟晶振产生的振荡信号经过石英钟内部分
  • (ps2019)Photoshop 2019 最新破解版下载

    Photoshop CC 2019新增功能 下载地址点我 新功能介绍 https helpx adobe com cn photoshop using whats new html 经过改良设计的内容识别填充 借助 Adobe Sensei
  • 设计简单算数表达式语法分析器算法(LR来实现)

    include
  • 高通平台中gpio简单操作和调试

    做底层驱动免不了gpio打交道 所以对其操作和调试进行了一下简单的梳理 一 gpio的调试方法 在Linux下 通过sysfs 获取gpio状态 也可以操作gpio 1 获取gpio状态 cd sys kernel debug cat gp
  • R语言聚类分析

    本文首发于公众号 医学和生信笔记 完美观看体验请至公众号查看本文 文章目录 系统聚类 层次聚类 Hierarchical clustering 快速聚类 划分聚类 partitioning clustering K means聚类 围绕中心
  • kettle开发-Day40-AI分流之case/switch

    前言 前面我们讲到了很多关于数据流的AI方面的介绍 包括自定义组件和算力提升这块的 今天我们来学习一个关于kettle数据分流处理非常重要的组件Switch Case 当我们的数据来源于类似日志 csv文件等半结构化数据时 我们需要在数据流
  • Node.js安装与配置(详细步骤)

    前言 本篇博文记录了Node js安装与环境变量配置的详细步骤 旨在为将来再次配置Node js时提供指导方法 另外 Node js版本请根据自身系统选择 安装位置 全局模块存放位置和环境变量应根据自身实际情况进行更改 Node js安装与
  • Wordle是优秀的信息可视化吗?如何真正使用Wordle?

    数据可视化之美 Beautiful Visualization Wordle是优秀的信息可视化吗 如果你认为Wordle 是严格意义上的信息可视化工具 它在设计的某些方面存在误导或者干扰用户的潜在可能 有必要指出并加以批判 以下是我认为Wo
  • 迷宫问题-DFS-BFS

    迷宫问题 迷宫问题简介 BFS解决迷宫最短路径问题 DFS记录迷宫路径 DFS解决迷宫所有路径问题 迷宫问题简介 学习过算法程序设计的应该都学习过迷宫这个问题 迷宫问题主要设计的算法就是DFS 深度优先遍历和BFS 广度优先遍历 在一个二维
  • python读取含有多个sheet的xlsx文件,并将解析各个sheet页的数据进行融合

    import pandas as pd from xlrd import open workbook if name main table open workbook 文件名称 xlsx 打开文件 data pd read excel 文件
  • 复制对象时勿忘其每一个成分——条款12

    设计良好之面向对象系统 OO systems 会将对象的内部封装起来 只留两个函数负责对象拷贝 复制 那便是带着适切名称的copy构造函数和copy assignment操作符 我称它们为copying函数 条款5观察到编译器会在必要的时候
  • 杭州端点网络java开发实习生笔试题自我反省

    1 Spring Bean的默认范围是 A Prototype B Singleton C Abstract D Session 2 下列关于一个类的的静态成员的描述中 不正确的是 A 静态成员变量可被该类的所有方法访问 B 该类的静态方法
  • 二叉树的实现及其遍历(Python)

    树是一种基本的 非线性 数据结构 数据结构树分为 根 枝和叶三个部分 节点Node 是组成树的基本部分 每个节点具有名称或 键值 边Edge 边是组成树的另一个基本部分 根Root 树中唯一一个没有入边的节点 路径Path 由边依次连接在一
  • 2023年电赛E题详细讲解

    前言 E题是运动目标控制与自动追踪系统 其实就是一个红色激光追踪绿色激光 本文主要授人以渔 讲解思路 不含代码 建议自己编写 本文旨在和大家探讨一下更好的方案 欢迎讨论 读题 做题肯定是要读题的 本节主要是将一些主要的点 并反推出题人的出题
  • PLC控制电动机的顺序启动逆序停止

    一 PLC控制电动机延迟启动正转和反转 实验要求 当按下电动机的正转启动按钮时 电动机需要延迟30秒后 电动机才会正转启动工作 当按下反转按钮时 电动机需要延迟20秒后 电动机才会反转启动工作 当按下停止按钮时电动机立刻停止工作 PLC I
  • 浅谈系列之DevSecOps(一)目标及优点

    一 DevOps目标 说到DevSecOps就不得不提DevOps 后者的目标是提升整个研发效能 进行更便捷 更快捷 更可靠的交付 从而提高产品竞争优势 DevOps模糊了以往研发模式中开发 测速 运维等岗位和角色的界限 加强了他们之间的协
  • 如何通过Charles+BurpSuite的配合在PC端抓到手机包

    渗透测试工作记录 文章目录 渗透测试工作记录 前言 一 Charles是什么 二 实现步骤 以Mac端抓包IOS微信小程序为例 1 在Charles下设置代理的端口 2 分别在PC端和手机端安装证书 3 关闭macOS代理 打开外部代理 4