之前的渗透一直都是局域网的安卓设备,其实也就是利用tcp协议,把kali的ip当作服务端,但是如果安卓设备不在一个局域网内该如何实现呢?
这时候就需要进行端口转发了
一,端口转发和端口映射的区别
端口转发:
将本机被访问的端口转为访问另外一个机器的端口,即访问公网端口->访问内网端口
端口映射:
将内网某个端口隐射到公网,即访问公网的这个端口=访问内网端口
因为端口映射是双向的,当把这个端口映射到公网,在内网就不能再使用这个端口,因此需要进行端口转发
Ngrok实现端口转发
你可以在这里使用免费的ngrok服务器:
sunny 官网
下载自己系统对应版本并安装
如果你有域名和服务器可以跟着我使用自己服务器进行搭建:
在linux服务器:
1,安装go语言
sudo apt-get install golang
2,下载ngrok到主机
cd /usr/local
mkdir ngrok
cd ngrok
git clone https://github.com/inconshreveable/ngrok.git
3. 更改ngrok域名
export GOPATH=/usr/local/ngrok/
export NGROK_DOMAIN="ngrok.yourdomain.com"
4,为域名生成证书
执行这几个命令一定要进入ngrok的目录
openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=$NGROK_DOMAIN" -days 5000 -out rootCA.pem
openssl genrsa -out server.key 2048
openssl req -new -key server.key -subj "/CN=$NGROK_DOMAIN" -out server.csr
openssl x509 -req -in server.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out server.crt -days 5000
会生成六个证书
5. 拷贝证书到指定位置
cp rootCA.pem assets/client/tls/ngrokroot.crt
cp server.crt assets/server/tls/snakeoil.crt
cp server.key assets/server/tls/snakeoil.key
6. 编译
make release-server release-client
GOOS=windows GOARCH=amd64 make release-client
如果编译遇到: gopkg.in/yaml.v1
一直没反应
在这里下载压缩包:https://github.com/go-yaml/yaml/tree/v1
在src 目录下 创建 gopkg.in 目录 把yaml 重命名为yaml.v1 ,然后在重新执行命令
编译好的文件在 bin文件夹下:
第一句会编译好server,即 ngrokd,还有一个linux的客户端 ngrok。第二句编译windows平台
7,运行server
这里tlsKey tlsCrt分别指定刚才生成的key
./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="weixin.yangjiace.xyz" -httpAddr=":80" -httpsAddr=":443"
8,运行客户端
建立ngrok配置文件:ngrok.cfg
server_addr: “ngrok.morongs.com:4443"
trust_host_root_certs: false
server_addr端口默认4443,可通过ngrokd服务端启动修改端口
运行客户端,暴露本地6666端口站点:
$ ./ngrok -config=ngrok.cfg -proto=tcp 6666
如下界面运行成功: