发布于12月5日12月5日 NPS工具简介NPS工具是一款用Go语言编写的轻量级、功能强大的内网渗透工具。支持TCP、UDP流量转发,支持内网HTTP、SOCKS5代理,支持snappy压缩(节省带宽和流量)、站点保护、加密传输、复用、修改报头等,还支持Web图形化管理。这个工具很容易使用。与FRP相比,NPS具有图形界面,因此配置更简单。 [root@ls4jtubcnt opt]#wget https://github.com/ehang-io/nps/releases/download/v0.26.10/linux_amd64_server.tar.gz [root@ls4jtubcnt opt]# mkdir nps[root@ls4jtubcnt opt]# tar -zxf linux_amd64_server.tar.gz -C nps/[root@ls4jtubcnt opt]# cd nps/[root@ls4jtubcnt nps]# ./nps install #执行安装命令[root@ls4jtubcnt nps]# ./nps start #启动NPS,nps start|stop|restart|uninstall|reload[root@ls4jtubcnt nps]# cd /etc/nps/conf/#安装后配置文件位于/etc/nps/conf 目录下的nps.confg 配置文件: appname=weblogger#启动模式(dev|pro)#指定运行模式(dev|pro)runmode=dev #HTTP(S)代理端口,为空则不启动# http[s]代理,如果设置为空则表示忽略#http_proxy_ip=#http_proxy_port=#https_proxy_port=#https_just_proxy=#default https证书设置#表示https默认证书文件位置https_default_cert_file=conf/server.pemhttps_default_key_file=conf/server.key ##bridge#客户端与服务器之间使用的通信协议,端口与服务器绑定ipbridge_type=tcpbridge_port=8024bridge_ip=0.0.0.0 # 公共密码,客户端可以使用该密码连接服务器# 连接后,服务器将能够根据自己的配置文件打开相关端口并解析相关域名。 #客户端以配置文件模式启动时的key,设置为空则关闭客户端配置文件连接模式public_vkey=Pksfy2312df70i5osc #流量数据持久化间隔(分钟)#忽略表示不持久化#服务器流量数据持久化间隔,单位为分钟,忽略表示不持久化flow_store_interval=3 # 日志级别LevelEmergency-0 LevelAlert-1 LevelCritical-2 LevelError-3 LevelWarning-4 LevelNotice-5 LevelInformational-6 LevelDebug-7#输出运行日志,如下,写入当前目录下的weblogger.log 文件,7 代表调试模式log_level=7log_path=weblogger.log #生成的日志文件路径为:/weblogger.log #是否限制IP访问,true或false或忽略#是否限制IP访问,true或false或忽略#ip_limit=true #p2p#p2p_ip=127.0.0.1#p2p_port=6000 #web# Web控制面板配置,包括域名、访问端口和登录账号密码。需要使用反向代理配置域名访问web_host=login.weblogger.comweb_username=backlionweb_password=bks.net@#125web_port=8081web_ip=0.0.0.0web_base_url=web_open_ssl=falseweb_cert_file=conf/server.pemweb_key_file=conf/server.key# 如果代理下的web 使用子路径。像http://host/nps 需要这个。#web_base_url=/nps #Web API未认证的IP地址(auth_crypt_key的len必须为16)#如果需要请去掉注释# auth_key为Web api密钥,auth_crypt_key代表获取服务器authKey时的aes加密密钥,16位#auth_key=ATi39sdp2dauth_crypt_key=AmSo173adsPEWRSZ #allow_ports=9001-9009,10001,11000-12000#为了防止nps服务器端口滥用,可以限制可以打开的端口。如果忽略或留空,则表示该端口不受限制。 #Web管理多用户登录#是否支持多用户登录,该功能默认关闭,一般不会使用。 allow_user_login=falseallow_user_register=falseallow_user_change_username=false #扩展#其他杂项,比如流量限制、带宽限制、客户端隧道数限制、最大连接数等.默认忽略即可allow_flow_limit=falseallow_rate_limit=falseallow_tunnel_num_limit=falseallow_local_proxy=falseallow_connection_num_limit=falseallow_multi_ip=false#nps服务器支持在网页上显示和统计服务器相关信息,但有些统计图表被关闭默认。您可以通过此选项打开system_info_display=true。 #cache# http缓存设置,保持默认http_cache=falsehttp_cache_length=100 #获取原点iphttp_add_origin_header=false #pprof 调试选项#pprof_ip=0.0.0.0#pprof_port=9999 #client disconnect timeoutdisconnect_timeout=60 服务器启动后,首先会监听两个端口,一个是web面板访问端口【这里是8081】,另一个是nps客户端与服务器之间的通信端口【这里是9099】[root@ls4jtubcnt conf]# netstat -tulnp access: http://vps ip:8081/,并输入上面/etc/nps/conf/nps.confg配置文件中设置的用户名和密码。下面是登录成功后整个nps web控制面板的实际效果图。由于当前没有客户端在线,所以全部显示为 客户端,新建一个客户端链接(注意,这里的用户名和密码只有使用socks5和http代理时才会用到) 下面是客户端创建成功后的样子。特别注意这个id。后续的所有隧道代理和socks5代理都将基于此id创建。 在客户端执行命令:/npc -server=106.13.218.47:8024 -vkey=yxznk7q02rirabtz -type=tcp 发现客户端已上线,说明已与服务器连接 tcp隧道 适用范围:SSH、远程桌面、数据库等TCP连接场景 假设场景:我想访问公网服务器1.1.1.1的2022端口,连接内网机器192.168.126.128:的22端口,实现SSH连接。 使用步骤 在刚刚创建的客户端隧道管理中添加一条tcp隧道,填写监听端口(2022)、内网目标IP和目标端口(192.168.126.128:22),保存 访问公网服务器IP(1.1.1.1),填写监听端口(2022),相当于访问内网IP (192.168.126.128) : 目标端口(22) udp隧道 适用范围:内网DNS解析等UDP连接场景 假设场景:内网有一个DNS(10.1.50.102:53)。如果要在非内网环境下使用此DNS,公网服务器为1.1.1.1 使用步骤 在刚刚创建的客户端的隧道管理中添加一条UDP隧道,填写监听端口(53)、内网目标IP和目标端口(10.1.50.102:53),保存。将需要的DNS地址修改为1.1.1.1,相当于使用10.1.50.102作为DNS服务器socks5代理 适用范围:像使用VPN一样访问内网设备或外网环境中的资源 假设场景:我想使用公网服务器1.1.1.1的3538端口作为socks5代理,达到访问内网任意设备或资源的效果 使用步骤 在刚刚创建的客户端隧道管理中添加socks5代理,填写监听端口(3538),保存。在外网环境本地配置socks5代理(例如使用proxifier进行全局代理)。 ip为公网服务器ip(1.1.1.1),端口为填写的监听端口(3438)。您可以享受内网并添加代理服务器。 点击菜单栏的Proxy Servers图标-添加,这里添加socks代理,填写socks服务器的IP和端口【一定要记住,这里的代理是有账号和密码的,就是我们开始创建客户端配置时设置的账号和密码】 单击代理规则图标— 添加。这里,如果访问192.168.126.*目标内网网段,该IP网段将使用socks5代理。 检查我们添加的代理规则。默认代理规则是Direct!记住 这样我们就可以像在本地一样直接访问目标内网的机器并启动burp进行渗透测试了。 或者使用SocksCap64进行全局代理socks5 注意,通过socks5代理,当接收到socks5数据包时,socket已经处于accept状态。表现为连接建立后不久扫描端口全部打开又关闭。如果想要和内网一样的性能,建议远程连接设备。 http 转发代理 适用范围:在外网环境下使用http正向代理访问内网站点 假设场景:我想使用公网服务器1.1.1.1的9999端口作为http代理访问内网网站 使用步骤 在刚刚创建的客户端隧道管理中添加http代理,填写监听端口(9999),保存。 在外网环境下在本机配置http代理。 ip为公网服务器ip(1.1.1.1),port为填写的监听端口(9999)。您可以访问 注意:对于私有代理和p2p,除了客户端和服务器统一配置外,还需要客户端作为访问端,提供访问的端口。 私人代理 适用范围:不需要占用额外端口且安全性要求较高的TCP服务,可防止他人连接,例如ssh。 假设场景:无需添加额外端口即可访问内网服务器10.1.50.2的22端口 使用步骤 在刚刚创建的客户端上添加私有代理,并在需要连接SSH执行命令的机器上设置唯一密钥secretest和内网目标10.1.50.2:22 /npc -server=1.1.1.1:8024 -vkey=vkey -type=tcp -password=secretest -local_type=secret 如果需要指定本地端口,可以添加参数-local_port=xx,默认2000 注:密码为Web管理中添加的唯一密钥。具体命令请查看Web管理上的命令提示符。 假设10.1.50.2用户名为root。现在执行ssh -p 2000 [email protected] 即可访问ssh。 p2p 服务 适用范围:大流量传输场景,流量不经过公网服务器,但由于p2p穿透与NAT类型关系密切,不保证100%成功,支持大部分NAT类型。 nat类型检测 假设场景: 我要访问用户机器(接入端,即本机)的2000端口----访问内网机器10.2.50.2的22端口 使用步骤 在nps.conf中设置p2p_ip(nps服务器ip)和p2p_port(nps服务器udp端口)注意:如果p2p_port设置为6000,请在防火墙中打开6000~6002(额外2个端口)udp端口 在刚刚创建的客户端上添加p2p代理,并设置唯一密钥p2pssh在用户机器(本机)上执行命令。 /npc -server=1.1.1.1:8024 -vkey=123 -password=p2pssh -target=10.2.50.2:22Copy to ClipboardErrorCopied 如果需要指定本地端口,可以添加参数-local_port=xx,默认2000 注:密码为Web管理中添加的唯一密钥。具体命令请查看Web管理上的命令提示符。 假设内网机器为10.2.50.2,ssh用户名为root。现在在本机上执行ssh -p 2000 [email protected] 即可访问2号机的ssh。如果是网站,只需在浏览器中访问127.0.0.1:2000端口即可。
创建帐户或登录后发表意见