nps内网穿透工具学习

nps

nps简介

nps也是go语言编写,是一款强大的内网穿透工具。同样支持tcp、udp流量转发、内网http代理、内网socks5代理、p2p等,并带有强大的web管理端。比frp更强大。

nps下载

https://github.com/ehang-io/nps/releases/tag/v0.25.1 下载amd文件

nps配置

下载后查看一下文件目录。
server端

图片[1]-nps内网穿透工具学习-月其科技
image.png

在nps目录下有一个nps可执行文件、conf配置目录和web网页目录,我们使用的时候只需要修改conf/nps.conf即可。
以下表格来源 官方文档

名称 含义
web_port web管理端口
web_password web界面管理密码
web_username web界面管理账号
web_base_url web管理主路径,用于将web管理置于代理子路径后面
bridge_port 服务端客户端通信端口
https_proxy_port 域名代理https代理监听端口
http_proxy_port 域名代理http代理监听端口
auth_key web api密钥
bridge_type 客户端与服务端连接方式kcp或tcp
public_vkey 客户端以配置文件模式启动时的密钥,设置为空表示关闭客户端配置文件连接模式
ip_limit 是否限制ip访问,true或false或忽略
flow_store_interval 服务端流量数据持久化间隔,单位分钟,忽略表示不持久化
log_level 日志输出级别
auth_crypt_key 获取服务端authKey时的aes加密密钥,16位
p2p_ip 服务端Ip,使用p2p模式必填
p2p_port p2p模式开启的udp端口
pprof_ip debug pprof 服务端ip
pprof_port debug pprof 端口
disconnect_timeout 客户端连接超时,单位 5s,默认值 60

client端

图片[2]-nps内网穿透工具学习-月其科技
image.png

首先客户端有多个使用方式。

  1. 可以直接无配置文件使用

./npc -server=ip:port -vkey=web界面中显示的密钥
  1. 也可以注册到系统服务进行使用
    如linux下

sudo ./npc install 其他参数(例如-server=xx -vkey=xx或者-config=xxx) 注册
sudo npc start  启动
sudo npc stop   停止
sudo npc uninstall  卸载
  1. 也可以配置文件进行是使用,这就类似frp了。

./npc -config=npc配置文件路径

查看npc.conf配置文件

名称 含义
server_addr 服务端ip/域名:port
conn_type 与服务端通信模式(tcp或kcp)
vkey 服务端配置文件中的密钥(非web)
username socks5或http(s)密码保护用户名(可忽略)
password socks5或http(s)密码保护密码(可忽略)
compress 是否压缩传输(true或false或忽略)
crypt 是否加密传输(true或false或忽略)
rate_limit 速度限制,可忽略
flow_limit 流量限制,可忽略

再往下示具体模式进行配置。
具体参考官方文档

nps使用

server端启用nps
编辑nps.conf配置文件

appname = nps
#Boot mode(dev|pro)
runmode = dev

##bridge
#底层通信协议,默认tcp,可选用kcp协议
bridge_type=tcp
#底层通信端口,默认8024,如已被占用请指定其他端口
bridge_port=8024
bridge_ip=0.0.0.0

#当客户端以配置文件模式启动时会用到的验证密钥,可自行设置
public_vkey=cseroad

#web 控制台
web_host=10.xx.xx.7
web_username=cseroad
web_password=cseroad.com
web_port=18080
web_ip=0.0.0.0

启动nps

./nps start
图片[3]-nps内网穿透工具学习-月其科技
image.png

访问18080端口,输入控制台用户密码,即可登录

图片[4]-nps内网穿透工具学习-月其科技
image.png

搭建socks5隧道

新增一条客户端。

图片[5]-nps内网穿透工具学习-月其科技
image.png

设置”不以配置文件运行”,且压缩加密。

图片[6]-nps内网穿透工具学习-月其科技
image.png

客户端运行web控制台给出的命令。

图片[7]-nps内网穿透工具学习-月其科技
image.png

可以在无配置文件的情况下,上线成功。运行成功后status状态变为”online”

这时候就可以增加socks5代理。

图片[8]-nps内网穿透工具学习-月其科技
image.png

这时候就可以使用SocksCap64 设置端口,以及basic权限认证的用户名密码。访问内网。

图片[9]-nps内网穿透工具学习-月其科技
image.png

当然也可以选择加载npc.conf配置文件来运行npc,注意也要设置相对应的basic权限认证。

搭建tcp隧道

同样创建tcp隧道。

图片[10]-nps内网穿透工具学习-月其科技
image.png

用mac的microsoft remote desktop 远程连接公网的33389即可。完美实现端口转发。

图片[11]-nps内网穿透工具学习-月其科技
image.png

metasploit

metasploit作为红队神器,本身也有内网穿透的功能。
在获取session之后,可进行端口转发以及创建socks5隧道。

转发端口

portfwd用来转发单个端口

portfwd add -l 33389 –p 3389 -r 10.211.55.19
# 添加转发
portfwd delete -l 33389 –p 3389 -r 10.211.55.19
# 删除转发
portfwd list
# 列出当前转发的列表
portfwd flush
# 移除所有转发端口

创建socks5隧道

在有session基础上,先添加路由

run get_local_subnets
# 获取路由
run autoroute -s 10.211.55.0/24
# 添加路由
run autoroute -p
# 显示路由
图片[12]-nps内网穿透工具学习-月其科技
image.png

再创建socks5隧道

use auxiliary/server/socks5
set srvhost 127.0.0.1
set srvport 1080
run

没有设置用户名和密码。

图片[13]-nps内网穿透工具学习-月其科技
image.png

metasploit同时具有socks4和socks5两个模块。socks4只支持TCP协议,socks5支持TCP和UDP。
再使用proxychains命令进行代理访问

图片[14]-nps内网穿透工具学习-月其科技
image.png

cobalt strike

cobalt strike也一样具有内网穿透的能力。同样首先需要一个beacon

图片[15]-nps内网穿透工具学习-月其科技
image.png

端口转发

beacon自带了一个端口转发的命令rportfwd

rportfwd 本机端口 目标ip 目标端口  

创建socks4隧道

选择SOCKS Server

图片[16]-nps内网穿透工具学习-月其科技
image.png
图片[17]-nps内网穿透工具学习-月其科技
image.png

可用来创建socks4隧道。
对应的代理也需要设置为socks4协议

图片[18]-nps内网穿透工具学习-月其科技
image.png

可成功访问。

图片[19]-nps内网穿透工具学习-月其科技
image.png

在创建成功后,可以使用”Proxy Pivots”代理metasploit走内网。

图片[20]-nps内网穿透工具学习-月其科技
image.png

复制该命令到metasploit配置里。该设置为全局设置,一次设置,metasploit各个模块全部可用。
比如使用smb_login模块

setg Proxies socks4:172.16.252.11:1080    设置本地的msf走cs的socks4代理
setg ReverseAllowProxy true               建立双向通道
use auxiliary/scanner/smb/smb_version     探测smb版本
图片[21]-nps内网穿透工具学习-月其科技
image.png

其余内网穿透工具,如ew、ngork因为实际应用、免杀性就不多记录了。

总结

  1. 实战时注意将通信流量进行加密、压缩
  2. 注意将socks5代理设置为认证状态
  3. 在使用tcp协议上进行加密、压缩还不行的情况下,不妨试一下kcp协议

 

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享