利用nps(docker部署)实现隐藏ip

渗透技巧 2年前 (2022) admin
892 0 0

前言

之前听过nps是在内网碰到不出网的时候可以实现内网穿透,最近听师傅说可以docker部署nps然后利用socks5实现隐藏ip(也就是访问ip变成了我们vps从而实现隐藏ip),所以实际搭建了一下。一开始我把nps放到vps把上npc放在我的主机上,但是发现代理出去的ip和地址还是我自己的,不知道是哪里出了问题,最后问了几个师傅才明白其实真正实现socks转发的是npc,而nps只是用来启一个web管理端的,最后把nps、npc都放在vps上后成功实现功能完成隐藏ip。

nps一款轻量级、高性能、功能强大的内网穿透代理服务器。支持tcp、udp、socks5、http、p2p等几乎所有流量转发,可用来访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析、内网socks5代理等等,并且带有功能强大的web管理端。


原理

像nps、frp、ngork都是cs客户端服务端的代理工具,这类工具原理都是通过服务端生成相应的客户端,而生成的客户端才是需要真正走代理的服务器,可能说起来比较绕,用到这里来,其实nps就是用来搭建起web管理页面,并用来生成npc、赋予npc相应的隧道/代理功能,所以最终起socks作用的是npc,而nps只是个管理npc的服务端。


搭建

这里搭建分三部分,docker部署nps、执行npc、本地代理配置。配置用到的环境

1.vps(阿里云centos7)2.火狐插件FoxyProxyProxifier代理软件


docker部署nps

这里我把可能用到的端口都放到了19000:19010,所以首先保证服务器的相应端口开放,如果有宝塔的话也要将端口放行。首先先拉取nps的镜像

docker pull ffdfgdfg/nps

在vps云服务器上做挂载目录(这个目录挂哪都行)

mkdir -p /mnt/sdc/nps/conf

https://github.com/ehang-io/nps 把代码下载出来,把里面的conf文件夹目录里面的东西拷贝到上面的挂载目录里面(我这里有宝塔所以直接上传了,可以用xftp或者直接下载)

上传到服务器后,修改挂在目录里面的 nps.conf 文件,主要修改 http_proxy_port、 https_proxy_port、web_port 、web_username、web_password。

appname = nps#Boot mode(dev|pro)runmode = dev
http_proxy_ip=0.0.0.0 (官方下载下来没有此项)http_proxy_port=19000 # 域名代理http代理监听端口https_proxy_port=19001 # 域名代理https代理监听端口(一般会修改这两个端口,避免端口冲突)https_just_proxy=true#default https certificate settinghttps_default_cert_file=conf/server.pemhttps_default_key_file=conf/server.key
##bridgebridge_type=tcp # 客户端与服务端连接方式kcp或tcpbridge_port=19002 # 服务端客户端通信端口,也就是说客户端通过访问服务端的这个端口可以进行连接bridge_ip=0.0.0.0
# Public password, which clients can use to connect to the serverpublic_vkey=123 # 客户端以配置文件模式启动时的密钥,设置为空表示关闭客户端配置文件连接模式
#Traffic data persistence interval(minute)#Ignorance means no persistence#flow_store_interval=1
log_level=7 # 日志输出级别#log_path=nps.log
#Whether to restrict IP access, true or false or ignore#ip_limit=true
#p2p#p2p_ip=127.0.0.1 # 服务端IP,使用p2p模式必填#p2p_port=6000 # p2p模式开启的udp端口
#webweb_host=a.o.comweb_username=admin # web界面管理账号web_password=123 # web界面管理密码web_port = 19003 # web管理端口,通过访问该端口可以访问NPS后台web_ip=0.0.0.0web_base_url= # web管理主路径,用于将web管理置于代理子路径后面web_open_ssl=falseweb_cert_file=conf/server.pemweb_key_file=conf/server.key# if web under proxy use sub path. like http://host/nps need this.#web_base_url=/nps
#Web API unauthenticated IP address(the len of auth_crypt_key must be 16)#Remove comments if needed#auth_key=testauth_crypt_key =1234567812345678 # 获取服务端authKey时的aes加密密钥,16
#allow_ports=9001-9009,10001,11000-12000
#Web management multi-user loginallow_user_login=falseallow_user_register=falseallow_user_change_username=false

#extensionallow_flow_limit=falseallow_rate_limit=falseallow_tunnel_num_limit=falseallow_local_proxy=falseallow_connection_num_limit=falseallow_multi_ip=falsesystem_info_display=false
#cachehttp_cache=falsehttp_cache_length=100
#get origin iphttp_add_origin_header=false
#pprof debug options#pprof_ip=0.0.0.0 # debug pprof 服务端IP#pprof_port=9999 # debug pprof 端口
#client disconnect timeoutdisconnect_timeout=60  # 客户端连接超时,单位 5s,默认值 60,即 300s = 5mins

接下来启动nps服务,设置对外映射端口

docker run -d -p 19000-19010:19000-19010 -v /mnt/sdc/nps/conf:/conf –name=nps ffdfgdfg/nps

访问vpsip:19003进入web管理页面,使用上面设置的admin:admin登录

来到客户端点击新增,填一个备注,下面三个都选是即可

创建完成后为其添加一个socks隧道,模式就是socks,id是第一张图里的,端口我这里写19005,这个端口是后面主机上开启socks代理对应的端口

docker运行nps

直接在https://github.com/ehang-io/nps/releases/tag/v0.26.10下载一个linux的客户端

也可以使用命令下载

wget https://github.com/ehang-io/nps/releases/download/v0.26.10/linux_amd64_client.tar.gztar -zxvf linux_amd64_client.tar.gz

解压出一个npc一个conf,这里客户端的这个conf可以不配置直接使用,不配置的使用命令在web管理端查看

在npc所在位置执行

本地代理配置

这里我使用火狐插件Foxyproxy,也可以使用Proxifier或者其他的一些工具

放一张配置图,这里ip就填vps的ip,端口填刚刚nps添加socks隧道时候填的19005

最后执行效果

 

欢迎关注听风安全,分享更多安全技术~

原文始发于微信公众号(听风安全):利用nps(docker部署)实现隐藏ip

版权声明:admin 发表于 2022年7月15日 下午6:30。
转载请注明:利用nps(docker部署)实现隐藏ip | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...