利用MITM技术实现请求和返回的重写、重定向、阻断等操作
介绍
使用MITM技术来提供 rewrite
、redirect
、reject
等功能,直白的说差不多类似于劫持或者将目标访问重定向
证书准备
为了实现对HTTPS流量进行MITM,同时为了浏览器等不显示安全警告,需要生成并信任自签名CA证书
生成CA证书
出于安全考虑,用户必须自己生成自己的CA证书,随意使用不可信的CA证书将会留下严重的安全隐患
经验丰富的用户可以自行使用OpenSSL进行相关操作,考虑到没有相关经验的用户,可以使用以下命令直接生成相关内容,生成的证书和私钥将存储在ca
目录下
good-mitm.exe genca
在浏览器使用了Good-MITM提供的代理后,通过访问 http://cert.mitm.plus 可以直接下载证书,这在给其他设备提供服务时非常有用
信任生成的证书
使用你自己的证书,自签证书,亲测可以使用fidder生成的证书
Filter 筛选器
Filter
用来筛选需要处理的请求和返回
候选项
Filter
目前包含以下类型:
- All
- Domain(String)
- DomainKeyword(String)
- DomainPrefix(String)
- DomainSuffix(String)
- UrlRegex(fancy_regex::Regex)
注意
当前版本中,domain
相关类型匹配的是host
,通常情况下不会影响结果
在网站使用非常规端口时,规则需要注明端口
后续版本将会对此行为进行优化
All 全部
指定筛选器为all
时将会命中全部请求和返回,通常用来执行日志记录行为
- name: "log"
filter: all
action:
- log-req
- log-res
Domain 域名
domain
对域名进行全量匹配
- name: "redirect"
filter:
domain: 'none.zu1k.com'
action:
redirect: "https://zu1k.com/"
DomainKeyword 域名关键词
domain-keyword
对域名进行关键词匹配
- name: "reject CSDN"
filter:
domain-keyword: 'csdn'
action: reject
DomainPrefix 域名前缀
domain-prefix
对域名进行前缀匹配
- name: "ad prefix"
filter:
domain-prefix: 'ads' // example: "ads.xxxxx.com"
action: reject
DomainSuffix 域名后缀
domain-suffix
对域名进行后缀匹配
- name: "redirect"
filter:
domain-suffix: 'google.com.cn'
action:
redirect: "https://google.com"
UrlRegex Url正则
url-regex
对整个url进行正则匹配
- name: "youtube追踪"
mitm: "*.youtube.com"
filter:
url-regex: '^https?:\/\/(www|s)\.youtube\.com\/(pagead|ptracking)'
action: reject
多个筛选器
filters
字段支持单个筛选器和多个筛选器,多个筛选器之间的关系为或
- name: "youtube-2"
mitm:
- "*.youtube.com"
- "*.googlevideo.com"
filters:
- url-regex: '^https?:\/\/[\w-]+\.googlevideo\.com\/(?!(dclk_video_ads|videoplayback\?)).+(&oad|ctier)'
- url-regex: '^https?:\/\/(www|s)\.youtube\.com\/api\/stats\/ads'
- url-regex: '^https?:\/\/(www|s)\.youtube\.com\/(pagead|ptracking)'
- url-regex: '^https?:\/\/\s.youtube.com/api/stats/qoe?.*adformat='
action: reject
具有相同动作的多个规则可聚合为一个规则以便于维护
目标若是https
需要目标在本地安装证书,才能实现重定向或者阻断
空空如也!