内网渗透] ngrok 实现内网渗透详细教程
内网穿透概念
什么是内网穿透?内网穿透,也即 NAT 穿透,进行 NAT 穿透是为了使具有某一个特定源 IP 地址和源端口号的数据包不被 NAT 设备屏蔽而正确路由到内网主机。
UDP 内网穿透的实质是利用路由器上的NAT 系统。NAT 是一种将私有(保留)地址转化为合法IP地址的转换技术,它被广泛应用于各种类型 Internet 接入方式和各种类型的网络中。NAT可以完成重用地址,并且对于内部的网络结构可以实现对外隐蔽。
但是有些情况下我们不能随意控制路由器的NAT功能,哪个就需要一些软件来辅助实现类似NAT功能的内网穿透。
应用场景:总结一句话就是本地运行的项目,如果不使用内网穿透,只能本机访问。用到了内网穿透,就会给一个公网的ip代替本地ip,这样别人就可以访问到你的本地项目啦。
用到的工具
ngrok 我们可以把他部署到windows上,当然也可以部署到linux上。接下来让我们以windows下的使用过程为例进行演示。
使用过程
1、注册ngrok账号
2、成功完成登录
3、下载ngrok客户端(根据自己得os选择对应的软件,我这里式Windows的)
4、下载后解压
PowerShell 7.3.8
PS D:\> cd E:\temp\ngfrok
PS E:\temp\ngfrok> .\ngrok help
NAME:
ngrok - tunnel local ports to public URLs and inspect traffic
USAGE:
ngrok [command] [flags]
DESCRIPTION:
ngrok exposes local networked services behinds NATs and firewalls to the
public internet over a secure tunnel. Share local websites, build/test
webhook consumers and self-host personal services.
Detailed help for each command is available with 'ngrok help <command>'.
Open http://localhost:4040 for ngrok's web interface to inspect traffic.
Author:
ngrok - <support@ngrok.com>
TERMS OF SERVICE: https://ngrok.com/tos
EXAMPLES:
ngrok http 80 # secure public URL for port 80 web server
ngrok http --domain baz.ngrok.dev 8080 # port 8080 available at baz.ngrok.dev
ngrok http foo.dev:80 # tunnel to host:port instead of localhost
ngrok http https://localhost # expose a local https server
ngrok tcp 22 # tunnel arbitrary TCP traffic to port 22
ngrok tls --domain=foo.com 443 # TLS traffic for foo.com to port 443
ngrok start foo bar baz # start tunnels from the configuration file
COMMANDS:
api use ngrok agent as an api client
completion generates shell completion code for bash or zsh
config update or migrate ngrok's configuration file
credits prints author and licensing information
diagnose diagnose connection issues
help Help about any command
http start an HTTP tunnel
service run and control an ngrok service on a target operating system
start start tunnels by name from the configuration file
tcp start a TCP tunnel
tls start a TLS tunnel
tunnel start a tunnel for use with a tunnel-group backend
update update ngrok to the latest version
version print the version string
OPTIONS:
--config strings path to config files; they are merged if multiple
-h, --help help for ngrok
--metadata string opaque user-defined metadata for the tunnel session
-v, --version version for ngrok
PS E:\temp\ngfrok>
5、确定需要在外网访问到自己内网计算机的端口号以及使用的协议
可以使用netstat -ano | findstr xxx来查询
我这里以远程桌面端口3389为例,当然要记得设定好防火墙的例外。
6、设置ngrok,使其连接到自己的账户:
ngrok config add-authtoken 2Wxhip**********************************KvmEVKE
PS E:\temp\ngfrok> .\ngrok config add-authtoken 2Wxhip**********************************KvmEVKE
Authtoken saved to configuration file: C:\Users\Administrator\AppData\Local/ngrok/ngrok.yml
PS E:\temp\ngfrok>
这串token代码在自己的账号下,每个账户都是自己独一无二的。
7、设置端口的对外映射
我这里是tcp的3389端口
PS E:\temp\ngfrok> netstat -ano | findstr 3389
TCP 0.0.0.0:3389 0.0.0.0:0 LISTENING 1532
TCP [::]:3389 [::]:0 LISTENING 1532
UDP 0.0.0.0:3389 *:* 1532
UDP [::]:3389 *:* 1532
PS E:\temp\ngfrok> .\ngrok help
PS E:\temp\ngfrok> .\ngrok tcp 3389
ngrok (Ctrl+C to quit) Introducing Always-On Global Server Load Balancer: https://ngrok.com/r/gslb Session Status online Account GoodMan (Plan: Free) Version 3.3.5 Region Japan (jp) Latency 33ms Web Interface http://127.0.0.1:4040 Forwarding tcp://0.tcp.jp.ngrok.io:13755 -> localhost:3389 Connections ttl opn rt1 rt5 p50 p90 0 0 0.00 0.00 0.00 0.00
关键词:
(Ctrl+C to quit) 作用是告知按CTRL+C键退出。
Web Interface:http://127.0.0.1:4040作用是以网页的形式显示连接情况:
Forwarding tcp://0.tcp.jp.ngrok.io:13755 -> localhost:3389
作用是0.tcp.jp.ngrok.io:13755转发到本地的3389端口
9、测试连接
PS D:\> telnet 0.tcp.jp.ngrok.io 13755
连接成功
同时在外部网络的计算机上尝试穿越Internet远程桌面到这台计算机
至此,成功完成!
下一篇: 实用的 NAT 已从面试官中脱颖而出