在对APP测试常见的抓包方式应该就是wifi代理或者VPN了,这种都算的上是标准抓包因为这是系统本身就提供的流量代理方式,这也是最容易检测到的,只要APP检查系统环境发现使用代理或VPN就停摆不对外发包就会显的很棘手。所以我想到了一个非标准的抓包方式来解决这个问题。
burp抓包的简要图如下
我们挂代理到burp最开始的时候浏览器会提示不安全,是因为浏览器不信任burp的证书,所以我们要安装CA证书也就是证书颁发机构,这样burp签发出来的证书就会被接受就能正常通信
需要开启两个服务一个dns一个http的反向代理
项目地址: https://github.com/kaliwin/Needle (go版本 用的1.21 使用1.8以上都没问题)
这个函数用来启动dns服务 将所有包含com的域名劫持指向192.168.3.104 "." 的话代表所有域名 其他域名会正常解析
package main
import (
"github.com/kaliwin/Needle/network/dns"
"log"
)
func main() {
err := dns.ServeDNS(":53", "com", "192.168.3.104")
if err != nil {
log.Println(err)
}
}
正常就这样
这里先说一下有些路由器好像有防止dns劫持的功能你在局域网里的DNS流量网关可能会拦截 ,如果你上面的DNS服务没开,dns服务又指向他,完了你还能正常上网那就是路由器保护了你(用一个LOW点的路由器)
在手机上使用静态ip设置dns
看到dns服务有输出而且你的手机不能正常上网了就是正常的
之后先导出burp的CA证书和密钥 名称随便取我是burpCA.cer、burpCA-key.cer
这是证书
这是密钥
这个函数用于启动一个http反向代理
参数分别为:服务监听地址、代理地址、CA证书的文件路径、CA密钥的文件路径
package main
import (
"github.com/kaliwin/Needle/httpServer/middleman"
"log"
)
func main() {
err := middleman.StartMiddleman(":443", "http://127.0.0.1:8080", "/root/tmp/burpCA.cer", "/root/tmp/burpCA-key.cer")
if err != nil {
log.Println(err)
}
}
启动后是这个样子、需要确保CA证书已经在安卓上配好了
之后就是见证奇迹的时候, 不需要开代理不需要开VPN你也可以监听并篡改流量了
缺点:
1、只能抓一个端口,要多抓几个就要多开几个服务,后面计划封装进docker直接监听1-65535或者做一个网关
2、不支持协议识别,如果是http或者别的暂时不能识别,但是技术上可以做到
理论上其他平台也可以这样玩windows、mac、linux
中间人后面可以有很多玩法,只要配置好,客户端上的所有流量都可以监听和篡改包含ssh、ftp、smb的流量
原文始发于微信公众号(KQsec):通过配置中间人来抓取并篡改客户端流量
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论