
Intro:
在用户量逐渐变多的时候,很多用户提出了更加贴近实战的需求:
- HaE 有 Yakit 支持吗?(Inspired HaE by @gh0stkey)
- 测试的时候如何避免其他网站的干扰?
我们十分感谢用户的深度使用,这些非常贴近大家实战的需求,是需要一点一点积累的。实际在早些时候,Yakit 已经增加了针对替换 / 染色 / 标记的支持;上线之后并没有做详细介绍,灰度测试一段时间之后,功能相对趋于稳定。
MITM: Match & Replace & Coloring & Tag
实际在 HTTP History 的使用中,我们会在 History 花费非常多的时间,寻找可用于测试或者感兴趣的数据包,同时在一些数据安全测试场景中,我们需要检查数据包的内容
- 是否有敏感数据?
(?i)access_?key
这类命中? - 能否标记一下
document.write
这类危险 JS 操作(DOM XSS) - 替换掉敏感信息:比如我的手机号和 ID 不想让他出现在流量中
- ...
技术实现
虽然表面上,Match & Replace 大家可能会觉得,这非常简单,不就是strings.ReplaceAll
的事儿嘛?其实远没有这么简单,这是一个非常考验 MITM 技术细节实现的功能
- 能否正确识别并解码 chunked 数据包?
- 能否正常解码
gzip / flate / zlib-flate
等数据? - 在解码之后,能否正确修复数据包的 Headers?
- 在修复了数据包之后,可以对 Response 进行替换,在替换之后,能否合理修复数据包
Content-Length
- 在 UTF8 作为通用编码的情况下,遇到
GBK / GBxxx
情况应该怎么处理? - ...
在解决了上面这些细节之后,我们还实现了很多应用层面的功能
- 针对 Header / Body 进行可配制化的处理
- 替换功能的启动与关闭
- 标记与染色是否会对 “Header / Body” 分别生效?
- 标记了的 Tag 如何展示到 HTTP History 中?
在配置了上面内容之后,我们作为日常使用访问一些网页的时候,将会看到 Yakit MITM 通过配置的规则,将命中的规则进行染色,并且把追加 Tag 填在了 History 中,标注出这个响应 / 请求的 History 的补充属性。
如何使用:导出,导入,编辑规则
在启动 MITM 之前,我们就可以配置这些规则,当然,我们也可以在 MITM 劫持过程中动态修改。
如果编辑规则 / 如何导入现有规则
编写规则的部分采用 Golang 风格正则表达式:推荐使用 https://regex101.com/ 调试,规则如果编译失败,则自动降级为关键字匹配。
如何添加规则并配置?
在视频中我们做了如下操作:
- 添加一个 gstatic 规则,把所有有关这个的字段标注为
Google GStatic
并且设置为绿色 - 使用浏览器随意搜索内容,查看 History 中关于
Google GStatic
相关的记录
导出规则:分享给你的朋友!
到此用户应该可以熟练使用 Yakit MITM 的这个新功能了,但是独乐乐不如众乐乐,如果你写了非常棒的规则,如何把它分享给你的朋友呢?
我们在操作界面选择 “导出配置 / 导出为 JSON” 即可进入这个配置,复制或者另存为文件均可!
当然,你也可以脱离 Yakit 自己编写 JSON 规则,然后导入到 MITM 中!这些都是被允许的
细节说明:
- 这些规则是针对代理全流量的,不光会对用户在 History 看到的过滤后的请求生效,对一些已经被过滤掉的 JS 或者静态文件都是生效的,编写简单规则务必明确场景
- 规则的执行顺序是有意义的
- 规则基于 Golang 风格正则 / Glob / 关键字,采取降级策略:即如果无法编译为正则,将会最后被降级为 “关键字” 匹配。
- 替换后的数据包将会被自动修复,用户不需担心数据包毁坏协议
MITM:不配置证书也能抓 HTTPS?
其实这是一个 “标题党”,不过通过启动 Chrome 的时候设置一些参数,我们确实可以实现这个功能,核心原理其实非常简单,我们给 Chrome 启动增加一些 “不安全参数” 即可实现:
根据这个最朴素的想法, 我们把它做成了接口比较友好的界面:
当启动之后,会提示用户确认配置,并提示用户潜在风险:
当用户明确这个配置之后,将可以启动这个功能
如何使用免证书配置浏览器?
细节说明:
- Yakit 关闭的时候,通过 Yakit 启动的浏览器会自动关闭
- 浏览器暂时并没有继承用户的各种信息(为了安全考虑),这个是可以配置的
- 慎重在浏览器配置中进行日常生活的操作,避免安全问题
END
官网教程:https://www.yaklang.io/products/intro
视频教程:https://space.bilibili.com/437503777
下载地址:https://github.com/yaklang/yakit
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)