红队工具之nps

  • A+
所属分类:安全工具

红队工具之nps

一、什么是nps

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

nps特点:

  • 协议支持全面,兼容几乎所有常用协议,例如tcp、udp、http(s)、socks5、p2p、http代理...

  • 全平台兼容(linux、windows、macos、群辉等),支持一键安装为系统服务

  • 控制全面,同时支持服务端和客户端控制

  • https集成,支持将后端代理和web服务转成https,同时支持多证书

  • 操作简单,只需简单的配置即可在web ui上完成其余操作

  • 展示信息全面,流量、系统信息、即时带宽、客户端版本等

  • 扩展功能强大,该有的都有了(缓存、压缩、加密、流量限制、带宽限制、端口复用等等)

  • 域名解析具备自定义header、404页面配置、host修改、站点保护、URL路由、泛解析等功能

  • 服务端支持多用户和用户注册功能

 

二、安装nps

Github地址:https://github.com/cnlh/nps

通常内网穿透工具都有服务端和客户端,安装要求如下:

服务端:需要安装在一个有公网IP的服务器上,系统为Linux/Windows/Mac均可。

客户端:一般安装在一个内网的VPS服务器或Windows/Mac电脑上使用。

1、编译安装

提示:编译安装主要讲的Linux系统,其它系统(Win/Mac,也包括Linux)建议直接使用作者编译好的文件即可。

安装Go语言:

#Debian/Ubuntu系统

apt-get-y install golang

#创建目录并定义GOPATH环境变量指向该目录

mkdir~/workspace

echo'export GOPATH="$HOME/workspace"' >> ~/.bashrc

source ~/.bashrc

 

#CentOS/RHEL系统

yum-y install golang

#创建目录并定义GOPATH环境变量指向该目录。

mkdir~/workspace

echo'export GOPATH="$HOME/workspace"' >> ~/.bashrc

source ~/.bashrc

安装git

#Debian/Ubuntu系统

apt-get-y install git

 

#CentOS/RHEL系统

yum-y install git

安装源码:

go getgithub.com/cnlh/nps

编译服务端和客户端:

#进入指定目录

cd~/workspace/src/github.com/cnlh/nps

#编译服务端

gobuild cmd/nps/nps.go

#编译客户端

gobuild cmd/npc/npc.go

编译好了后,就会在当前目录生成npcnps二进制文件了,就可以直接拿来用了。

编译的时候可能出现的问题解决方法:

#只拿一种常见的错误做例子,有时候可能会出现很多种这样的提示

lib/kcp/crypt.go:14:2:cannot find package "golang.org/x/crypto/pbkdf2"in any of:

   /usr/lib/go-1.7/src/golang.org/x/crypto/pbkdf2 (from$GOROOT)

   /root/workspace/src/golang.org/x/crypto/pbkdf2 (from$GOPATH)

#意思是缺少这种包,然后记住提示的地址,比如上面的golang.org/x/crypto/pbkdf2,有时候也会提示的github地址。

然后再使用命令go get golang.org/x/crypto/pbkdf2命令安装一下就行了。

2、直接安装除了自己编译外,作者也直接提供了编译好的文件给你使用,文件下载地址:点击进去,然后再根据自己的系统架构下载对应的最新版服务端和客户端。

如果对于Linux服务器还是不知道怎么选择的,这里拿Vultr、搬瓦工大多数VPS为例。先使用命令getconf LONG_BIT获取系统版本,32位就选38664就选amd64,具体还是以实际情况为准。

服务端使用

这里博主使用的是Vultr Linux x64服务器,直接使用命令:

#记得复制前先将下面链接替换成当前最新版地址

cd~

#下载并解压服务端

wgethttps://github.com/cnlh/nps/releases/download/v0.0.14/linux_amd64_server.tar.gz&& tar zxvf linux_amd64_server.tar.gz

#编辑配置文件

cdnps

nanoconf/nps.conf

配置文件参数如下:

#web管理端口

httpport

#web界面管理密码

password

#服务端客户端通信端口

bridePort

#ssl certFile绝对路径

pemPath

#ssl keyFile绝对路径

keyPath

#域名代理https代理监听端口

httpsProxyPort

#域名代理http代理监听端口

httpProxyPort

#web api免验证IP地址

authip

#客户端与服务端连接方式kcp或tcp

bridgeType

然后启动服务端:

./npsinstall

./npsstart

#重启/停止服务端

./nps stop|restart

然后打开地址http://ip:8080访问管理界面,具体端口以自己修改的为准,再使用密码登录进去,默认为123

#如果打不开Web界面,就需要开启防火墙,一般CentOS系统出现情况最多

#Centos 6系统

iptables-I INPUT -p tcp --dport 8080 -j ACCEPT

serviceiptables save

serviceiptables restart

 

#CentOS 7系统

firewall-cmd--zone=public --add-port=8080/tcp --permanent

firewall-cmd--reload

对于有些服务器,比如阿里云,谷歌云等,还需要在服务器管理面板上开放Web端口才行。

客户端使用

1、Linux系统

#比如下载的客户端文件在根目录,先进入根目录

cd ~

#启动客户端,比如服务端公网IP为1.1.1.1,服务端配置文件中tcpport为8284

./npc-server=1.1.1.1:8284 -vkey=客户端的密钥

2、Windows系统首先按住Win+R输入cmd进入命令窗口,然后使用命令:

#比如下载的客户端文件在D盘,先进入到D盘

cd /d d:

#启动客户端,比如服务端公网IP为1.1.1.1,服务端配置文件中tcpport为8284

npc.exe-server=1.1.1.1:8284 -vkey=客户端的密钥

至于Mac系统启动参考上面就行。

使用场景

关于使用场景Github文档写的很清楚了,这里大概的说下。

1、tcp隧道模式

适用:想在外网通过ssh连接内网的机器,做云服务器到内网服务器端口的映射,或者做微信公众号开发、小程序开发等。

详细教程→点击查看

2udp隧道模式

适用:在非内网环境下使用内网dns,或者需要通过udp访问内网机器等。

详细教程→点击查看

3http代理模式

适用:在外网使用HTTP代理访问内网站点。

详细教程→点击查看

4、socks5代理模式

适用:搭建一个内网穿透55,在外网如同使用内网v皮n一样访问内网资源或者设备。

详细教程→点击查看

相关功能

1、数据压缩支持由于是内网穿透,内网客户端与服务端之间的隧道存在大量的数据交换,为节省流量,加快传输速度,由此本程序支持SNNAPY形式的压缩。

·        所有模式均支持数据压缩,可以与加密同时使用

·        开启此功能会增加cpu和内存消耗

·        server端加上参数-compress=snappy(或在web管理中设置)

2、加密传输如果公司内网防火墙对外网访问进行了流量识别与屏蔽,例如禁止了ssh协议等,通过设置配置文件,将服务端与客户端之间的通信内容加密传输,将会有效防止流量被拦截

·        开启此功能会增加cpu和内存消耗

·        server端加上参数-crypt=true(或在web管理中设置)

3、站点保护域名代理模式所有客户端共用一个http服务端口,在知道域名后任何人都可访问,一些开发或者测试环境需要保密,所以可以设置用户名和密码,nps将通过Http Basic Auth来保护,访问时需要输入正确的用户名和密码。

·        web管理中可配置

4、host修改由于内网站点需要的host可能与公网域名不一致,域名代理支持host修改功能,即修改requestheader中的host字段。

·        web管理中设置

5、自定义header支持对header进行新增或者修改,以配合服务的需要。

6、404页面配置支持域名解析模式的自定义404页面,修改/web/static/page/error.html中内容即可,暂不支持静态文件等内容。

7、流量限制支持客户端级流量限制,当该客户端入口流量与出口流量达到设定的总量后会拒绝服务,域名代理会返回404页面,其他会拒绝连接。

8、带宽限制支持客户端级带宽限制,带宽计算方式为入口和出口总和,权重均衡。

9、负载均衡本代理支持域名解析模式的负载均衡,在web域名添加或者编辑中内网目标分行填写多个目标即可实现轮训级别的负载均衡。

10、守护进程本代理支持守护进程,使用示例如下,服务端客户端所有模式通用,支持linuxdarwinwindows

./(nps|npc) start|stop|restart|status若有其他参数可加其他参数

(nps|npc).exe start|stop|restart|status若有其他参数可加其他参数

11、KCP协议支持KCP是一个快速可靠协议,能以比TCP浪费10%-20%的带宽的代价,换取平均延迟降低30%-40%,在弱网环境下对性能能有一定的提升。可在app.conf中修改bridgeTypekcp

·        当服务端为kcp时,客户端连接时也需要加上参数-type=kcp


文章参考于网络!如何雷同,纯属巧合。


关于我们:

北京路劲科技有限公司(Beijing Lujin Technology Co. , Ltd.)成立于2019年1月4日,是一家提供全面系统集成与信息安全解决方案的专业IT技术服务公司。公司秉承“为网络安全保驾护航”的企业愿景及“提升国家整体安全”的使命,依据风险评估模型和等级保护标准,采用大数据等技术手段,开展网络安全相关业务。公司致力于为各个行业的业务信息化提供软件和通用解决方案、系统架构,系统管理和数据安全服务、以及IT咨询规划、系统集成与系统服务等专业化服务。公司立足北京,走向全国,始终坚持“换位、细节、感恩”的核心价值观,以“共赢、共享、共成长”的经营理念为出发点,集合了一批敢于创新、充满活力、热衷于为IT行业服务的优秀人才,致力于成为您身边的网络安全专家。

 

关注路劲科技,关注网络安全!

公司:北京路劲科技有限公司

地址:北京市昌平区南邵镇双营西路78号院2号楼5层504


PS:如果觉得本篇文章对您有所帮助,欢迎关注!帮忙点个赞,转发一下 分享出去吧!




发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: