第一次接触Yakit的MITM功能时,我被它的简洁界面和强大功能惊艳到了。相比Burp Suite那种需要复杂配置的工具,Yakit给我的感觉就像是一个开箱即用的瑞士军刀。记得当时我测试一个电商网站,只需要简单几步就完成了所有流量的拦截和修改,这在以前用其他工具时至少要折腾半小时。
Yakit的MITM模块核心功能可以分为三大块:流量拦截、规则引擎和数据分析。流量拦截支持HTTP/1.1和HTTP/2.0协议,还能处理国密TLS这种特殊场景。规则引擎是它的杀手锏,支持55条默认规则,可以快速实现流量标记和内容替换。数据分析则通过History和网站树两个视角,让海量流量变得清晰可控。
安装配置Yakit的过程异常简单。下载官方包解压后,只需要执行一个命令就能启动服务。我通常在Linux环境下这么操作:
bash复制./yakit mitm --host 0.0.0.0 --port 8080
这个命令会启动一个监听所有网卡8080端口的代理服务。如果你需要支持HTTP/2.0,记得加上--http2参数。对于国内的特殊环境,Yakit还贴心地提供了国密TLS支持,这在测试金融类应用时特别有用。
Yakit的劫持界面设计得非常人性化。左上角的代理设置区域有五个关键配置项,我一个个来说说实际使用中的经验。
监听主机设置建议用0.0.0.0而不是127.0.0.1,特别是在需要手机或其他设备连入的场景。端口选择上要避开常见服务端口,我习惯用8080、8888这类端口。下游代理功能特别实用,可以把Yakit的流量转发到Burp或者其他工具做进一步分析。
HTTP/2.0选项要根据目标网站情况决定是否开启。有次测试时我发现某个网站加载异常,后来发现是HTTP/2.0兼容性问题,关闭后就正常了。国密TLS选项在测试银行、政府网站时经常要用到,普通网站可以保持关闭。
手动劫持模式是我最常用的功能。打开浏览器配置好代理后,访问目标网站,Yakit会像交警一样拦下所有流量。这里有个小技巧:在访问敏感页面之前,最好先清理浏览器缓存,否则可能会错过一些关键请求。
遇到重要请求时,右键菜单里的"拦截响应"选项特别有用。有次测试登录功能,我就是靠这个功能修改了服务器返回的权限标识,直接提权成功。丢弃请求功能要慎用,我有次不小心丢弃了关键JS文件,导致整个测试环境都崩了。
Yakit的规则引擎绝对是它的核心竞争力。默认提供的55条规则已经覆盖了大部分常见场景,比如敏感信息替换、关键参数标记等。导入默认配置后,我通常会根据项目需求做一些定制化修改。
新建规则时,正则表达式的调试是个技术活。推荐使用regex101.com这个网站先测试好表达式,再粘贴到Yakit里。有次我写了个复杂规则总是失败,后来发现是转义字符的问题。规则执行顺序也很关键,Yakit是从上到下依次执行的,所以要把优先级高的规则放在前面。
最近测试一个OA系统时,我创建了这样一条规则:
code复制匹配模式:Cookie: session_id=(.*)
替换内容:Cookie: session_id=injected_value
标记颜色:红色
这条规则成功帮我实现了会话固定攻击。标记颜色功能在分析大量流量时特别有用,不同颜色的请求一目了然。对于AJAX请求,我还会加上特定的Tag,方便后续在History中快速过滤。
规则作用范围要注意,它不仅会影响你看到的请求,还会修改那些被过滤掉的静态资源。有次测试时我发现页面样式全乱了,查了半天才发现是CSS文件里的某个URL被规则误改了。
History模块是我的数据分析中心。它的高级过滤功能可以组合多种条件,比如我经常用"method:POST && status:200"来查找可能的敏感接口。时间范围筛选在分析定时任务时特别有用,有次我就是靠这个发现了凌晨3点执行的数据库备份接口。
导出功能也很强大,支持HAR、JSON等多种格式。我习惯把重要会话导出为HAR文件,然后用其他工具做进一步分析。历史记录搜索支持正则表达式,找特定模式的URL时这个功能能省不少时间。
网站树是我最喜欢的功能之一。它像X光机一样把整个网站的结构照得清清楚楚。右键菜单里的"扫描此路径"功能可以快速对特定目录进行深度扫描。有次我发现了一个不在sitemap里的/admin路径,就是靠这个功能找到的。
网站树还支持自定义标记,我会把重要接口标成红色,已完成测试的标成绿色。对于大型网站,这个视觉化管理方式比纯文字列表高效得多。导出网站树为图片的功能在做报告时也很实用。
Yakit的插件系统让它的能力可以无限扩展。MITM插件中最实用的是"被动扫描"类插件,它们会在流量经过时自动检测漏洞。我常用的组合是:SQL注入检测+敏感信息泄露+XSS检测。插件分组功能让管理变得简单,我会按测试阶段创建不同分组。
编写自定义插件也不难,Yakit提供了完善的文档和示例。有次项目需要检测特定的API密钥格式,我花了半小时就写了个定制插件。插件商店里有很多现成的轮子,建议先用再造。
处理高并发流量时,有几个配置很关键:调整内存限制、启用流量压缩、优化规则数量。有次测试一个高流量网站,Yakit卡得要死,后来发现是规则太多导致的。建议只启用必要的规则,其他规则按需开启。
对于大型项目,我建议用分布式部署。Yakit支持多实例协同工作,一个负责流量采集,其他的做专项分析。日志管理也很重要,合理配置日志级别能显著提升性能。