声明:仅供学习参考使用,请勿用作违法用途,否则后果自负。
简介
Nps是一个内网穿透工具,开源。 Github:https://github.com/ehang-io/nps nps是一款轻量级、高性能、功能强大的内网穿透代理服务器。目前支持tcp、udp流量转发,可支持任何tcp、udp上层协议(访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析等等……),此外还支持内网http代理、内网socks5代理、p2p等,并带有功能强大的web管理端。
实验环境准备
1台外网IP的VPS
1台内网的Windows主机
服务端的配置
本次实验为同时开启http代理、sockets代理、端口转发等。具体配置不在嗷嗷述,主打一个看图说话,杜绝废话文学。
上线
流量分析
开始握手
你好我是客户端,你好,我是服务端,拿出你的通行证,你好这是我的通行证,ok匹配成功
请求发送
客户端发送请求版本探测
认证 服务器和客户端进行32字节双向认证
认证成功后,服务器回给客户端返回data (4 bytes) 73756373
建立通信
此时客户端会像服务器端发送3个包 chan ,接着发送00ffffffff1c00,最后发送时间戳
服务器响应 08ffffffff1c00
客户端接收后,服务器继续向客户端发送 00ffffffff1e00 及时间戳
随后客户端接收并发送 08ffffffff1e00 及时间戳,至此结束
源码分析
1.客户端发起测试连接,携带版本
2.服务器接收后进行比较,version将MD5加密后给客户端
3.客户端收到服务端MD5后与本地版本的MD5进行对比,一致后,将vkey进行MD5加密发送给服务端
4.服务端收到MD5后的vkey,与本地数据进行对比,一致后,客户端在服务端验证成功
前期过程如下图:
通过nps源代码查看分析,发现NPS每次进行代理通信时,会单独建立TCP会话,并且客户端先进行登录验证,验证通过后,通过发送”chan”指令建立代理通道
总结
未完待续…