frida-trace扩展信息到burp
[TOC]
1. 简介
参考原文Tracing API calls in Burp with Frida
利用frida实现一个与burp结合实时修改二进制函数参数返回值插件。
- 可以burp查看frida hook的值,burp有很多非常人性化的界面可以参考。
- 可以burp修改hook的参数,注入测试
- NSString*
- NSData*
- byte * or char*
2. 配置
2.1 frida-trace 传输到代理 127.0.0.1:26080
- python3 tracer.py -m “+[EncryptUtils AESEncrypt:key:]” -Uf me.pandamac.iOSPentest
- python3 tracer.py -m “+[EncryptUtils AESEncrypt:key:]” -f me.pandamac.iOSPentest -D c27808502c1f74e1659074e5154256360fe17f648
- python3 tracer.py -m “-[EncryptUtils ret_NSData_by_bytes:byNSString:]” -f me.pandamac.iOSPentest -D c7808502c1f74e1659074e5154256360fe17f648
# coding:utf-8 |
2.2 127.0.0.1:26080 重定位到 127.0.0.1:27080
2.3 回显server接受信息,返回信息
- 如果没有这个,将返回数据为 burp的代理信息给js代码,并不是burp修改后的数据。
- 相当于将数据修改后发送到127.0.0.1:27080,然后通过requests.request 返回的数据为回显server回显出来的数据。
# coding: utf-8 |
2.4 trace js 测试代码,需改参数和返回值
{ |
3.测试效果
3.1 burp接受函数参数包
可以进行修改,然后点击Forward
3.2 burp接受函数返回包
可以进行修改,然后点击Forward
4.总结
- 直接测试所有二进制的函数进出返回值,用于测试工作,剩下工作就是编写合适的 js 代码,将trace的函数用于通用。当然也可以不用trace,自己写hook 框架,达到任意修改函数返回值的效果。
- 如果函数有时间校验的话,可能会出错,这时候用代码实现修改即可。