LOADING

正在加载

NPS代理工具

壹 工具说明

nps是一款轻量级、高性能、功能强大的内网穿透代理服务器。目前支持tcp、udp流量转发,可支持任何tcp、udp上层协议(访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析等等……),此外还支持内网http代理、内网socks5代理p2p等,并带有功能强大的web管理端。

1.2 优点

a.图形化
b.多协议

1.3 缺点

a.容易暴露自己
483afa7a380ececd006b6cdf34c36435.png
b.容易掉线

贰 工具适用场景

a.做微信公众号开发、小程序开发等—-> 域名代理模式
b.想在外网通过ssh连接内网的机器,做云服务器到内网服务器端口的映射,—-> tcp代理模式
c.在非内网环境下使用内网dns,或者需要通过udp访问内网机器等—-> udp代理模式
d.在外网使用HTTP代理访问内网站点—-> http代理模式
e.搭建一个内网穿透ss,在外网如同使用内网vpn一样访问内网资源或者设备—-> socks5代理模式

叁 安装说明

安装路径:releases

非常重要:
a、大家尽量使用最新版本,同时使用的版本必须一致,有些高低版本不兼容,会出一些问题;
b、工具与使用的系统架构环境必须一致;
c、挂上代理后,如果在npc.conf文件里面存在配置一定要删除该文件,不然会暴露自己;
5f43ea436b737a7136afe8137141eb08.png

序列 架构
386 X86架构
amd64 amd架构
arm arm架构
arm64 64位arm架构
mips mips架构
mips64 64位mips架构
mipsle mipsle架构
mips64le 64位mipsle架构

系统的架构可以看这个博客:如何查看linux系统的体系结构

uname -a或者arch或者file /bin/bash
// 存在aarch64,就是ARM架构;
// 存在x86_64,就是X86架构;

肆 工具参数说明

4.1 服务端

  • 服务端配置文件:nps/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,即 300s = 5mins

服务端例子如下:

# 工具名字
appname = nps
#Boot mode(dev|pro)
runmode = dev

# HTTP(S)代理端口
#HTTP(S) proxy port, no startup if empty
http_proxy_ip=0.0.0.0
http_proxy_port=80
https_proxy_port=443
https_just_proxy=true
# 设置https证书
https_default_cert_file=conf/server.pem
https_default_key_file=conf/server.key

# bridge,服务端于客户端通信的信息
# 连接方式
bridge_type=tcp
# 服务端客户端通信端口
bridge_port=8024
bridge_ip=0.0.0.0

# 公用密码,客户端可以使用该密码连接到服务器,连接后,服务器将能够根据自己的配置文件打开相关端口并解析相关域名。
# 就是客户端连接时使用的key,或者可以在web后台配置,web后台的vkey权限高于这个
public_vkey=123

# 服务端流量数据持久化间隔,单位分钟,忽略表示不持久化
#flow_store_interval=1


# 日志输出级别
# 紧急-0、警报-1、严重-2、错误-3、警告-4、通知-5、信息-6、调试-7
log_level=7
# 输出日志的地址
#log_path=nps.log


# 是否限制ip访问,true或false或忽略
#ip_limit=true

# p2p模式
# 服务端Ip,使用p2p模式必填
#p2p_ip=127.0.0.1
# p2p模式开启的端口
#p2p_port=6000

# web后台管理
# web地址
web_host=a.o.com
# web用户名,修改
web_username=admin
# web密码,修改
web_password=123
# 默认web端口
web_port = 8080
web_ip=0.0.0.0
# web管理主路径,用于将web管理置于代理子路径后面,例如:web_base_url=/nps,即:http://host/nps
# web_base_url=
web_open_ssl=false
web_cert_file=conf/server.pem
web_key_file=conf/server.key

# Web API 未经身份验证的IP地址(身份验证密钥的长度必须为16)
#auth_key=test
# 获取服务端authKey时的aes加密密钥,16位
auth_crypt_key =1234567812345678

#allow_ports=9001-9009,10001,11000-12000

#Web management multi-user login
allow_user_login=false
allow_user_register=false
allow_user_change_username=false


#extension
allow_flow_limit=false
allow_rate_limit=false
allow_tunnel_num_limit=false
allow_local_proxy=false
allow_connection_num_limit=false
allow_multi_ip=false
system_info_display=false

#cache
http_cache=false
http_cache_length=100

#get origin ip
http_add_origin_header=false

# debug模式
# debug pprof 服务端ip
#pprof_ip=0.0.0.0
# debug pprof 服务端端口
#pprof_port=9999

# 客户端连接超时,单位 5s,默认值 60,即 300s = 5mins
disconnect_timeout=60

4.2 客户端

  • 客户端配置文件:nps/conf/nps.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 流量限制,可忽略
remark 客户端备注,可忽略
max_conn 最大连接数,可忽略
pprof_addr debug pprof ip:port

官方使用文章:链接在此

伍 工具使用

5.1 服务端

服务端一般配置在攻击机上。使用工具分为Windows和Linux系统:

  • Windows:管理员身份运行cmd,进入安装目录执行nps.exe install,在运行nps.exe start,不过我实验的时候是直接双击运行的。
  • Linux:进入工具文件夹,执行sudo ./nps install,在执行sudo nps start,停止和删除是sudo nps uninstallsudo nps stop

a.访问服务端ip:web服务端口(默认为8080)
b.使用用户名和密码登陆(默认admin/123,正式使用一定要更改)
c.创建客户端

5.2 客户端

跳板机或者受害机一般配置客户端。也分两种系统:

  • Windows:npc.exe install 其他参数(例如-server=xx -vkey=xx或者-config=xxx)
  • Linux:sudo ./npc install 其他参数(例如-server=xx -vkey=xx或者-config=xxx)
    可以试试nohup ./npc -server=(ip:port) -vkey=(web界面中显示的密钥) > file.log 2>&1 &
    或者
    cd $(dirname $0)
    pid=$(pgrep npc)
    if [ -z "$pid" ]; then
      nohup ./npc -server=(ip:port) vkey=(web界面中显示的密钥) -type=tcp >/dev/null 2>&1 &
    fi
    
    或者在web后台管理可以查看以上命令:
    631e04a30103f8890524452f3c4bfb16.png

启动服务后,日志文件Windows位于当前目录下,Linux位于/var/log/npc.log。不过可以修改配置设置log的存放位置。

陆 例子

6.1 端口转发

Windows服务端IP地址:192.168.91.136
Linux客户端IP地址: 192.168.91.138、 192.168.127.132
  • Windows服务端

服务端配置文件于参数的配置文件一样:nps.conf
双击点击nps.exe文件,如下:
ef8fe04a2dccba86a2c3d2c4b1da7f3e.png

在浏览器中登录127.0.0.1:8080,用户名密码:admin\123
8684fc4f15b81f9a58b22409e83b2bcc.png
新增客户端:
cc467975bc25638136bef919bbc27d1c.png
c730fa6324a228b4edfb91e3232c5a09.png
以下就是新增加的客户端,其中ID下面新建隧道时候用:
bcb6352fba91141f3d273bfc3d920500.png
接下来点击隧道,新建隧道:
9b49fe923daefe55bd365ab111580e61.png
在这里ID一定要配置与前面客户端ID一样,不然会输出没有:
8da16733425633799b39f8c8de79c98f.png
可以看到增加了一个隧道,并且选择加号可以看到详细信息:
d90242c3441fb9f77e1cbec2670091b7.png
客户端还没有连接,可以看到客户端属于离线(信息中的IP要改变):
276a83588388b62950fbc48f2491743a.png

  • Linux客户端

将对应的nps客户端文件上传到跳板机中,并且将npc文件增加x权限:chmod +x npc
736fc54c8a368588bf5b551720287e73.png
然后执行./npc.exe -server=服务器IP:bridge端口 -vkey=nps的Web后台唯一验证密钥 -type=tcp命令,成功运行:
0f2466a7594dc465c9c6b768b39d9215.png
在服务端nps的web后台可以看到:
c5b4ce4b0663d40df23b0f0ed995ff01.png

  • 配置Proxifier

不可以服务受害机的192.168.127.0网段:
4dfff80492ee5431d530d838ce687c2b.png
配置Proxifier
fc35907ef2e8b23b76bdbd7eb9229d34.png
配置Proxifier servers
1919309c45524a1097416ae1c8e12c42.png
配置Proxifier rules
15354346d62da731e63a2d568d308851.png
访问成功!
a7b5f252fb440e3d5b8149ad15980851.png
其实在nps代理工具中,以上设置可以访问22端口ssh。

6.2 端口映射

Windows办公机IP地址:192.168.106.184
kali服务端IP地址:192.168.106.187
Linux客户端IP地址: 192.168.106.202、 192.168.91.139

首先我们使用Windows办公机ssh连接:192.168.106.202:2222,不通,说明没有映射!

  • Windows办公机进入kali的web后台

服务端配置文件于参数的配置文件一样:nps.conf
双击点击nps.exe文件,如下:
ef8fe04a2dccba86a2c3d2c4b1da7f3e.png
在浏览器中登录192.168.187:8080,用户名密码:admin\123
f34d36a4cbaa784ef7c594fc6fdca2ce.png
新增客户端:
879f0af4a3f7ffd8f5b093d1267bf2c5.png
c730fa6324a228b4edfb91e3232c5a09.png
以下就是新增加的客户端,其中ID下面新建隧道时候用:
2da0a5e02d0f0f07c4b6361688af4d8a.png
接下来点击隧道,新建隧道:
9b49fe923daefe55bd365ab111580e61.png
上面基本上和端口转发一样,到了这里我们选择的是tcp隧道:
22c4fe71ed52b86cf9c2c4810107dafa.png
可以看到增加了一个隧道,并且选择加号可以看到详细信息:
e70ee516d7800587957a5ee856de3af9.png

  • Linux客户端

将对应的nps客户端文件上传到跳板机中,并且将npc文件增加x权限:chmod +x npc
736fc54c8a368588bf5b551720287e73.png
然后执行./npc.exe -server=服务器IP:bridge端口 -vkey=nps的Web后台唯一验证密钥 -type=tcp命令,成功运行:
e075c085005ae84110cb2e4b53c08148.png
在服务端nps的web后台可以看到:
9fc67b1ba85294a696255951ed1c4741.png
此时不需要配置Proxifier,直接用办公机ssh连接:192.168.106.202:2222,连同说明成功!
b71779800b20ce0ba7231d9932eca22d.png

柒 参考

avatar
小C&天天

修学储能 先博后渊


今日诗句