也就是说这个PrivilegeKey是由auth.token与当前时间戳计算得到,在无配置token的访问中, 这里的token为空。也就是只需要时间戳即可构造。 具体实现方法为 md5(token + timestamp) 而未授权时实际上为md5(timestamp)。 是不是有点像是nps未授权访问?nps是默认把auth_key注释了,导致获取时为空字符串。 返回的信息...
另外frpc在连接认证Frps的时候,会进行三次握手,会把Frp的版本信息发给frps进行认证,如果是用的一个没有改过的Frp那么这时候只要建立连接,很容易就会被安全设备捕获到。如下可以看到该工具版本Version、Arch、User、Privilege_key等字段 这时候追踪 TCP 流可以看到我这个 Frp 版本为0.38 很多安全设备也会基于 Frp 的相...
在告警信息界面,下载pcap包,使用wireshark打开,右键点击数据包条目,选择“追踪TCP流”,看到下面的信息: {"version":"0.38.0","hostname":"","os":"windows","arch":"amd64","user":"","privilege_key":"a155174bb09e0de606a35e5258887bf8a","timestamp":1700179954,"run_id":"","metas":null,"po...
ip.dst_host == ip 可以看到frp版本信息0.49.0(最新版本),Privilege_key等信息 可以看到账户密码校验整体交互都是属于明文,能很清晰的看到账户密码,很多安全设备都会以此为特征,来进行流量识别
"privilege_key": <string>, "run_id": <string>, "pool_count": <int>, "metas": map<string>string, "client_address": <string> } } NewProxy 创建代理的相关信息 { "content": { "user": { "user": <string>, "metas": map<string>string ...
{"version":"0.28.2","hostname":"","os":"darwin","arch":"amd64","user":"","privilege_key":"144fa23b09635f403ccd18","timestamp":1567119104,"run_id":"","pool_count":1} 服务端抓包 打开终端,输入命令 # xxxx 为frp监听端口tcpdump -i eth0 port xxxx -n ...
{"version":"0.28.2","hostname":"","os":"darwin","arch":"amd64","user":"","privilege_key":"144fa23b09635f403ccd18","timestamp":1567119104,"run_id":"","pool_count":1} 服务端抓包 打开终端,输入命令 代码语言:javascript 复制 ...
打开github搜索auth或者login,定位到frp/pkg/auth/token.go的77行,可见判断了PrivilegeKey是否与util.GetAuthKey函数处理token和Timestamp之后的值相等。 定位到util.GetAuthKey函数,可见是util.GetAuthKey的返回值是token和Timestamp拼接之后的md5。 所以爆破的思路就是密码和时间戳拼接然后计算md5,将计算出来的md5当作...
先从数据包中分析有用的字段 version,hostname,os,arch,user,privilege_key,runid,metas,接下来会从代码萌新层面讨论如何去掉特征。 4.2 代码分析 git拉取源代码分析,git clonehttps://github.com/fatedier/frp 首先定位到pkg/msg/msg.go type Login struct { ...
先从数据包中分析有用的字段 version,hostname,os,arch,user,privilege_key,runid,metas,接下来会从代码萌新层面讨论如何去掉特征。 4.2 代码分析 git拉取源代码分析,git clonehttps://github.com/fatedier/frp 首先定位到pkg/msg/msg.go type Login struct { ...