中间人攻击简介
中间人攻击(Man-in-the-MiddleAttack,简称MITM攻击
)是一种间接的入侵攻击,这种攻击模式是通过各种技术手段, 将受入侵者控制的一台计算机,虚拟放置在网络连接中的两台通信计算机之间,这台计算机就称为中间人
。
安装mitmproxy
pip install mitmproxy
本质上是安装mitmproxy库的相关代码和mitmproxy.exe mitmdump.exe mitmweb.exe
三个可执行程序。
Linux 则会在安装目录出现 mitmproxy mitmdump mitmweb
三个可执行程序。
mitmproxy
: 命令交互界面mitmweb
: Web图形界面 地址:http://127.0.0.1:8081/mitmdump
: 可编程接口
from mitmproxy import ctx
......
ImportError: DLL load failed while importing _brotli: 找不到指定的模块。
错误位置:
Python39\site-packages\brotli.py
line 8
importing _brotli
谷歌之,报错原因为缺少 redist
我的电脑系统为windows10_64位。下载并安装 vc_redist.x64.exe
。即可解决。
https://support.microsoft.com/en-gb/help/2977003/the-latest-supported-visual-c-downloads
x86: vc_redist.x86.exe
x64: vc_redist.x64.exe
编写代理脚本文件
my_demo.py
from mitmproxy import ctx
# 所有发出的请求数据包都会被这个方法所处理
# 所谓的处理,我们这里只是打印一下一些项;当然可以修改这些项的值直接给这些项赋值即可
def request(flow):
# 获取请求对象
request = flow.request
# 实例化输出类
info = ctx.log.info
# 打印请求的url
info(request.url)
# 打印请求方法
info(request.method)
# 打印host头
info(request.host)
# 打印请求端口
info(str(request.port))
# 打印所有请求头部
info(str(request.headers))
# 打印cookie头
info(str(request.cookies))
# 所有服务器响应的数据包都会被这个方法处理
# 所谓的处理,我们这里只是打印一下一些项
def response(flow):
# 获取响应对象
response = flow.response
# 实例化输出类
info = ctx.log.info
# 打印响应码
info(str(response.status_code))
# 打印所有头部
info(str(response.headers))
# 打印cookie头部
info(str(response.cookies))
# 替换响应报文内容
response.text = response.text.replace('百度', '摆渡')
启动代理
mitmdump -s mitmdump.py -p 8083
配置二级代理
mitmproxy拦截流量,并通过特定规则,对不同流量进行二次代理转发
设本地有3个端口:
8889 mitmproxy
1080 默认代理1号(V2YYY)
1234 代理2号(SS)
mitmdump --mode upstream:http://127.0.0.1:1080 -s mitmdump.py -p 8889
mitmdump.py
from mitmproxy.http import HTTPFlow
def request(flow: HTTPFlow):
# 获取请求对象
flow.request.headers["sec-ch-ua-platform"] = "Windows"
flow.request.headers["header-key-hello"] = "halll value"
if flow.request.method == 'CONNECT':
return
if flow.live:
flow.live.change_upstream_proxy_server(('127.0.0.1', 1234))
https://blog.csdn.net/qq_27648991/article/details/105797785
https://www.jianshu.com/p/dfd1e2753d71
生成并安装SSL证书
生成CA证书文件
自动生成
mitmproxy 或 mitmdump 命令首次运行时,会默认在用户家目录 ~/.mitmproxy
路径创建证书文件。
mitmdump
输入以上命令,会在用户家目录 .mitmproxy
文件夹,生成mitmproxy-ca-cert.p12
等证书文件。
手动下载
浏览器连接mitm的代理端口后,访问 http://mitm.it/
网站下载对应平台的证书文件。
mitmproxy-ca-cert.p12 PKCS12格式证书私钥 Windows Other
mitmproxy-ca-cert.pem Linux macOS iOS Firefox Other
mitmproxy-ca-cert.cer Android
mitmproxy-ca.p12 : ----PKCS12格式证书私钥
mitmproxy-ca.pem : ----PEM格式证书私钥
mitmproxy-ca-cert.cer : ----PEM格式证书,与mitmproxy-ca-cert.pem同,适用于部分Android
mitmproxy-ca-cert.p12 : ----PKCS12格式证书,适用于Windows
mitmproxy-ca-cert.pem : ----PEM格式证书,适用于大多数非Windows
平台。如 Linux macOS iOS
mitmproxy-dhparam.pem : ----PEM格式密钥文件,用于增强SSL安全性
安装CA证书
安装在浏览器上: 谷歌浏览器 -- 设置 -- 安全 -- 管理证书 -- 授权机构 -- 导入
安装在操作系统上:Windows
安装证书:双击mitmproxy-ca-cert.p12
----全部默认直接点“下一步”直到安装完成。Android
安装证书:把mitmproxy-ca-cert.cer
通过usb复制到手机上----点击使用证书安装器安装证书
Python3+mitmproxy安装使用教程(Windows) https://www.cnblogs.com/lsdb/p/10106655.html
使用 mitmproxy + python 做拦截代理 https://www.cnblogs.com/grandlulu/p/9525417.html
python-Mitmproxy抓包 https://www.cnblogs.com/shuzf/p/12157240.html