freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

渗透测试效率提升利器:MITM 替换 染色 标记以及免证书启动 Chrome!
2022-06-02 17:00:13
所属地 四川省

Intro:

在用户量逐渐变多的时候,很多用户提出了更加贴近实战的需求:

  1. HaE 有 Yakit 支持吗?(Inspired HaE by @gh0stkey)
  2. 测试的时候如何避免其他网站的干扰?

我们十分感谢用户的深度使用,这些非常贴近大家实战的需求,是需要一点一点积累的。实际在早些时候,Yakit 已经增加了针对替换 / 染色 / 标记的支持;上线之后并没有做详细介绍,灰度测试一段时间之后,功能相对趋于稳定。

MITM: Match & Replace & Coloring & Tag

实际在 HTTP History 的使用中,我们会在 History 花费非常多的时间,寻找可用于测试或者感兴趣的数据包,同时在一些数据安全测试场景中,我们需要检查数据包的内容

  1. 是否有敏感数据?(?i)access_?key这类命中?
  2. 能否标记一下document.write这类危险 JS 操作(DOM XSS)
  3. 替换掉敏感信息:比如我的手机号和 ID 不想让他出现在流量中
  4. ...

技术实现

虽然表面上,Match & Replace 大家可能会觉得,这非常简单,不就是strings.ReplaceAll的事儿嘛?其实远没有这么简单,这是一个非常考验 MITM 技术细节实现的功能

  1. 能否正确识别并解码 chunked 数据包?
  2. 能否正常解码gzip / flate / zlib-flate 等数据?
  3. 在解码之后,能否正确修复数据包的 Headers?
  4. 在修复了数据包之后,可以对 Response 进行替换,在替换之后,能否合理修复数据包Content-Length
  5. 在 UTF8 作为通用编码的情况下,遇到GBK / GBxxx情况应该怎么处理?
  6. ...

在解决了上面这些细节之后,我们还实现了很多应用层面的功能

  1. 针对 Header / Body 进行可配制化的处理
  2. 替换功能的启动与关闭
  3. 标记与染色是否会对 “Header / Body” 分别生效?
  4. 标记了的 Tag 如何展示到 HTTP History 中?

1654076080_629732b0a8fb4508232cd.jpg!small?1654076079473

在配置了上面内容之后,我们作为日常使用访问一些网页的时候,将会看到 Yakit MITM 通过配置的规则,将命中的规则进行染色,并且把追加 Tag 填在了 History 中,标注出这个响应 / 请求的 History 的补充属性。

1654076154_629732fa73c6b8c69eb86.jpg!small?1654076153294


1654076163_6297330383eeaa9dca82e.jpg!small?1654076162601

如何使用:导出,导入,编辑规则

在启动 MITM 之前,我们就可以配置这些规则,当然,我们也可以在 MITM 劫持过程中动态修改。

1654076174_6297330e179d47eda34ec.jpg!small?1654076173769

如果编辑规则 / 如何导入现有规则

编写规则的部分采用 Golang 风格正则表达式:推荐使用 https://regex101.com/ 调试,规则如果编译失败,则自动降级为关键字匹配。

1654077279_6297375f1f28dce6998f1.jpg!small?1654077279240

1654077284_62973764ccbba6dd42078.jpg!small?1654077284200

1654077292_6297376c4d990311793a3.jpg!small?1654077293721

1654077297_629737718ed5176c70af1.jpg!small?1654077297942

1654077303_629737773f51cfa75b690.jpg!small?1654077303672

如何添加规则并配置?1654077058_62973682e51fedb1a57f9.jpg!small?1654077058827

1654077065_629736894c1f803490dab.jpg!small?1654077067717

1654077071_6297368f4a6fcc6dab43c.jpg!small?1654077071933

1654077105_629736b17ec78536b36b4.jpg!small?1654077109944

在视频中我们做了如下操作:

  1. 添加一个 gstatic 规则,把所有有关这个的字段标注为Google GStatic并且设置为绿色
  2. 使用浏览器随意搜索内容,查看 History 中关于Google GStatic相关的记录

1654076187_6297331be7820ebcbd510.jpg!small?1654076187093

导出规则:分享给你的朋友!

到此用户应该可以熟练使用 Yakit MITM 的这个新功能了,但是独乐乐不如众乐乐,如果你写了非常棒的规则,如何把它分享给你的朋友呢?

1654076198_62973326067db0bd874ae.jpg!small?1654076197015

我们在操作界面选择 “导出配置 / 导出为 JSON” 即可进入这个配置,复制或者另存为文件均可!

当然,你也可以脱离 Yakit 自己编写 JSON 规则,然后导入到 MITM 中!这些都是被允许的

细节说明:

  1. 这些规则是针对代理全流量的,不光会对用户在 History 看到的过滤后的请求生效,对一些已经被过滤掉的 JS 或者静态文件都是生效的,编写简单规则务必明确场景
  2. 规则的执行顺序是有意义的
  3. 规则基于 Golang 风格正则 / Glob / 关键字,采取降级策略:即如果无法编译为正则,将会最后被降级为 “关键字” 匹配。
  4. 替换后的数据包将会被自动修复,用户不需担心数据包毁坏协议

MITM:不配置证书也能抓 HTTPS?

其实这是一个 “标题党”,不过通过启动 Chrome 的时候设置一些参数,我们确实可以实现这个功能,核心原理其实非常简单,我们给 Chrome 启动增加一些 “不安全参数” 即可实现:

1654076207_6297332fd170d46394f45.jpg!small?1654076206436

根据这个最朴素的想法, 我们把它做成了接口比较友好的界面:

1654076213_62973335e707df9064b37.jpg!small?1654076212986

当启动之后,会提示用户确认配置,并提示用户潜在风险:

1654076221_6297333d15aee118f89c5.jpg!small?1654076219848

当用户明确这个配置之后,将可以启动这个功能

如何使用免证书配置浏览器?

1654076489_629734497423d32753a2b.jpg!small?1654076492564

1654076496_629734508adf3a694b109.jpg!small?1654076500341

1654076507_6297345b09011295bcfbc.png!small?1654076510045

1654076512_62973460991edc2b446e7.jpg!small?1654076524405

1654076521_629734699ff52952eaca8.jpg!small?1654076524407

1654076526_6297346eded53a64ae8dd.jpg!small?1654076529349

细节说明:

  1. Yakit 关闭的时候,通过 Yakit 启动的浏览器会自动关闭
  2. 浏览器暂时并没有继承用户的各种信息(为了安全考虑),这个是可以配置的
  3. 慎重在浏览器配置中进行日常生活的操作,避免安全问题

END

官网教程:https://www.yaklang.io/products/intro

视频教程:https://space.bilibili.com/437503777

下载地址:https://github.com/yaklang/yakit

# 渗透测试 # yakit
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录