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内网穿透工具学习-月其科技](http://upload-images.jianshu.io/upload_images/1734768-a87b661bc6760342.png?imageMogr2/auto-orient/strip|imageView2/2/w/1134/format/webp)
在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内网穿透工具学习-月其科技](http://upload-images.jianshu.io/upload_images/1734768-5f93834a5bf50b0e.png?imageMogr2/auto-orient/strip|imageView2/2/w/1166/format/webp)
首先客户端有多个使用方式。
- 可以直接无配置文件使用
./npc -server=ip:port -vkey=web界面中显示的密钥
- 也可以注册到系统服务进行使用
如linux下
sudo ./npc install 其他参数(例如-server=xx -vkey=xx或者-config=xxx) 注册
sudo npc start 启动
sudo npc stop 停止
sudo npc uninstall 卸载
- 也可以配置文件进行是使用,这就类似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内网穿透工具学习-月其科技](http://upload-images.jianshu.io/upload_images/1734768-9346094878fd3678.png?imageMogr2/auto-orient/strip|imageView2/2/w/952/format/webp)
访问18080端口,输入控制台用户密码,即可登录
![图片[4]-nps内网穿透工具学习-月其科技](http://upload-images.jianshu.io/upload_images/1734768-16fb3e66510e3a6b.png?imageMogr2/auto-orient/strip|imageView2/2/w/1200/format/webp)
搭建socks5隧道
新增一条客户端。
![图片[5]-nps内网穿透工具学习-月其科技](http://upload-images.jianshu.io/upload_images/1734768-b4c306ba7fc1f107.png?imageMogr2/auto-orient/strip|imageView2/2/w/1200/format/webp)
设置”不以配置文件运行”,且压缩加密。
![图片[6]-nps内网穿透工具学习-月其科技](http://upload-images.jianshu.io/upload_images/1734768-c56654a012f4a695.png?imageMogr2/auto-orient/strip|imageView2/2/w/1200/format/webp)
客户端运行web控制台给出的命令。
![图片[7]-nps内网穿透工具学习-月其科技](http://upload-images.jianshu.io/upload_images/1734768-7ac088881eb3e0a6.png?imageMogr2/auto-orient/strip|imageView2/2/w/1200/format/webp)
可以在无配置文件的情况下,上线成功。运行成功后status状态变为”online”
这时候就可以增加socks5代理。
![图片[8]-nps内网穿透工具学习-月其科技](http://upload-images.jianshu.io/upload_images/1734768-c19bc6f206d29289.png?imageMogr2/auto-orient/strip|imageView2/2/w/1200/format/webp)
这时候就可以使用SocksCap64 设置端口,以及basic权限认证的用户名密码。访问内网。
![图片[9]-nps内网穿透工具学习-月其科技](http://upload-images.jianshu.io/upload_images/1734768-c58a7ba54204e2e6.png?imageMogr2/auto-orient/strip|imageView2/2/w/1200/format/webp)
当然也可以选择加载npc.conf配置文件来运行npc,注意也要设置相对应的basic权限认证。
搭建tcp隧道
同样创建tcp隧道。
![图片[10]-nps内网穿透工具学习-月其科技](http://upload-images.jianshu.io/upload_images/1734768-25b6c28913838bb6.png?imageMogr2/auto-orient/strip|imageView2/2/w/1200/format/webp)
用mac的microsoft remote desktop 远程连接公网的33389即可。完美实现端口转发。
![图片[11]-nps内网穿透工具学习-月其科技](http://upload-images.jianshu.io/upload_images/1734768-404fc0b272c29cfe.png?imageMogr2/auto-orient/strip|imageView2/2/w/1200/format/webp)
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内网穿透工具学习-月其科技](http://upload-images.jianshu.io/upload_images/1734768-98c443add89add70.png?imageMogr2/auto-orient/strip|imageView2/2/w/1104/format/webp)
再创建socks5隧道
use auxiliary/server/socks5
set srvhost 127.0.0.1
set srvport 1080
run
没有设置用户名和密码。
![图片[13]-nps内网穿透工具学习-月其科技](http://upload-images.jianshu.io/upload_images/1734768-c1ec58a2c04324f1.png?imageMogr2/auto-orient/strip|imageView2/2/w/1084/format/webp)
metasploit同时具有socks4和socks5两个模块。socks4只支持TCP协议,socks5支持TCP和UDP。
再使用proxychains命令进行代理访问
![图片[14]-nps内网穿透工具学习-月其科技](http://upload-images.jianshu.io/upload_images/1734768-3277262b068c17f7.png?imageMogr2/auto-orient/strip|imageView2/2/w/1200/format/webp)
cobalt strike
cobalt strike也一样具有内网穿透的能力。同样首先需要一个beacon
![图片[15]-nps内网穿透工具学习-月其科技](http://upload-images.jianshu.io/upload_images/1734768-16b228caf3318b1a.png?imageMogr2/auto-orient/strip|imageView2/2/w/1200/format/webp)
端口转发
beacon自带了一个端口转发的命令rportfwd
rportfwd 本机端口 目标ip 目标端口
创建socks4隧道
选择SOCKS Server
![图片[16]-nps内网穿透工具学习-月其科技](http://upload-images.jianshu.io/upload_images/1734768-87f756b6e6590058.png?imageMogr2/auto-orient/strip|imageView2/2/w/866/format/webp)
![图片[17]-nps内网穿透工具学习-月其科技](http://upload-images.jianshu.io/upload_images/1734768-5159aa1e4f60ed1b.png?imageMogr2/auto-orient/strip|imageView2/2/w/1200/format/webp)
可用来创建socks4隧道。
对应的代理也需要设置为socks4协议
![图片[18]-nps内网穿透工具学习-月其科技](http://upload-images.jianshu.io/upload_images/1734768-7cceea472640ce37.png?imageMogr2/auto-orient/strip|imageView2/2/w/742/format/webp)
可成功访问。
![图片[19]-nps内网穿透工具学习-月其科技](http://upload-images.jianshu.io/upload_images/1734768-cb51dab2fa0697fd.png?imageMogr2/auto-orient/strip|imageView2/2/w/1200/format/webp)
在创建成功后,可以使用”Proxy Pivots”代理metasploit走内网。
![图片[20]-nps内网穿透工具学习-月其科技](http://upload-images.jianshu.io/upload_images/1734768-7da4aca2a8b57e14.png?imageMogr2/auto-orient/strip|imageView2/2/w/1200/format/webp)
复制该命令到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内网穿透工具学习-月其科技](http://upload-images.jianshu.io/upload_images/1734768-3750eef28fec3b1f.png?imageMogr2/auto-orient/strip|imageView2/2/w/1200/format/webp)
其余内网穿透工具,如ew、ngork因为实际应用、免杀性就不多记录了。
总结
- 实战时注意将通信流量进行加密、压缩
- 注意将socks5代理设置为认证状态
- 在使用tcp协议上进行加密、压缩还不行的情况下,不妨试一下kcp协议








