mitmproxy
和我们常用的burp
一样,是一款抓包工具。和其他抓包工具相比,不仅可以抓包 还可以对包进行2次过滤 并且伪装请求 与python 进行交互,相比fiddler
和burp
更为灵活。本文让我们一起来学习他的使用吧。
mitmproxy工作原理
特性
-
拦截 HTTP
和HTTPS
请求和响应并即时修改它们; -
保存完整的 HTTP
对话以供以后重播和分析; -
重播 HTTP
对话的客户端; -
重播先前记录的服务器的HTTP响应; -
反向代理模式将流量转发到指定的服务器; -
macOS和Linux上的透明代理模式; -
使用 Python
对HTTP流量进行脚本化更改; -
即时生成用于拦截的 SSL/TLS
证书
安装
在kali中已经默认安装了。其他系统我们需要安装python
环境。然后再执行下面命令就行安装。
pip3 install mitmproxy
🚢查看帮助
mitmproxy -h
抓手机数据包
在终端执行命令mitmproxy
会启动默认的8080
端口。如果要改变端口号 使用如下命令
mitmproxy -p 8888
监听的端口号就变成了8888
然后手机WiFi中设置手动代理和端口。保存后关闭WiFi并重新连接。
当手机访问网页时,我们在mitmproxy
的窗口中便可以看到相关的数据了。
⚽证书配置
目前我们只能得到http
的数据,对于https
的数据包,我们需要在手机端设置证书。这里我们已miui14
为例。首先浏览器打开mitm.it
,下载安卓证书。
默认下载位置download
。然后设置
-安全
-更多安全设置
-加密与凭证
-安装证书
-CA证书
选择刚才下载的证书安装就行了。
❄️测试
现在我们在手机浏览器中访问https
的站点,便可以看到相关的数据包了。
🎲键位操作说明:
-
上下键
选择数据包 回车进入详细数据包 -
q
退出某个数据包 -
z
清除数据包 -
按下 q
然后再使用y
完成退出
数据包的过滤
当有很多数据包请求时,我们需要对数据包进行筛选。在界面中输入f
,根据匹配规则进行筛选即可。如筛选所有域名blog.bbskali.cn
的请求,我们需要输入规则~d blog.bbskali.cn
🐼常用过滤表达式
规则 | 释义 | 示例 |
---|---|---|
~a | 匹配响应资源 | ~a (图片 css js) |
~d | 筛选域名 | ~d bbskali.cn |
~c | HTTP 响应码 |
筛选出非200的请求
|
~m | 筛选请求方法 | 所有的post方法
|
~e | 筛选指定错误 | 所有403 错误
|
~http | 筛选http 请求 |
~http |
~tcp | 筛选所有的tcp 请求 |
~tcp |
! | 非 | 非200的请求
|
& | 和 | 筛选post请求且是百度的请求
|
| |
或 | ~tcp |
~tcp | 筛选所有的tcp 请求 |
~tcp |
断点拦截
输入字母i
以此来 写断点条件 如:域名是blog.bbskal.cn 请求是post
的条件。
~d blog.bbskal.cn & ~m post
然后选择红色的数据包 点击回车进入,输入e
可修改。选择要修改的字段,如URLencoded form
字段中的password
的值。
通过选择修改的字段,选择后对应的字段会变成灰色。然后输入e
进行编辑值。修改完成后,输入q
返回到拦截页面,然后再输入a
重新加载数据。
修改数据
利用同上的方法,我们对请求的数据断点抓包。修改response.body
的值,便可以完成数据的篡改。
🍉效果如下
后记
这里我们仅对手机端的数据抓包进行了简单的说明。对于电脑端也是同样的道理,只需要下载相应的证书并安装。即可抓相关的数据包。当然这款工具仅仅抓包和拦截数据就足够用了。如果还想处理其他的事务,这时就需要我们的神器burp
来解决了。
收藏本号 精彩内容不错过
更多精彩文章 欢迎关注我们
原文始发于微信公众号(kali黑客笔记):mitmproxy从入门到放弃
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论