Pivoting 内网穿透基础

雷神众测

共 9033字,需浏览 19分钟

 · 2022-06-19

STATEMENT

声明

由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,雷神众测及文章作者不为此承担任何责任。

雷神众测拥有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经雷神众测允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。

FRP

frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
FRP frps.ini 服务端配置。

[common]bind_addr = 0.0.0.0bind_port = 7000token = Aabbccqaxsb

FRP frpc.ini 客户端配置。

[common]server_addr =server_port = 7000token = Aabbccqaxsb[socks5]type = tcpremote_port = 10086plugin = socks5

Proxifier [跳板机公网IP] 10086 检测 socks 5 是否配置成功。
FRP frpc.ini 隧道端口转发配置。

[common]server_addr =server_port = 7000token = Aabbccqaxsb
[range:tcp_port]type = tcplocal_ip = 172.16.0.40local_port = 875,32803,32769,892,662,2020,111,2049,53333,36589,32767,32768remote_port = 875,32803,32769,892,662,2020,111,2049,5333,36589,32767,32768
[range:udp_port]type = udplocal_ip = 172.16.0.40local_port = 875,32803,32769,892,662,2020,111,2049,53333,36589,32767,32768remote_port = 875,32803,32769,892,662,2020,111,2049,5333,36589,32767,32768


reGeorg

reGeorg 需要 Python 2.7 是基于 web 服务的 socks5 隧道,内网服务器不通外网的情况下也可使用。
Tips:上传的时候注意将脚本里面的 Banner 注释删除掉。

python reGeorgSocksProxy.py -p 1080 -u "http://example.com/tunnel.php"

Neo-reGeorg

Neo-reGeorg 是一个旨在积极重构 reGeorg 的项目。

python3 neoreg.py generate -k passwordpython3 neoreg.py -k password -u http://xxxxx/tunnel.php

特点:
1.提高 tunnel 连接安全性。
2.提高可用性,避免特征检测。
3.提高传输内容保密性。
4.应对更多的网络环境场景。

Proxifier 127.0.0.1 1080 检测 socks 5 是否配置成功。

Tunna

Tunna 是一款神奇的工具,它可以通过 HTTP 封装隧道通信任何 TCP,以及用于绕过防火墙环境中的网络限制。

python proxy.py -u "http://example.com/conn.jsp" -l 1080

Proxifier 127.0.0.1 1080 检测 socks 5 是否配置成功。

Dynamic proxy_s5

Python Dynamic Socks5 简称 s5.py 适用于Linux主机且机器出网,该工具为很古老的一个socks代理脚本。

# !/usr/bin/python# Filename s5.py# Python Dynamic Socks5 Proxy# Usage: python s5.py 1080# Background Run: nohup python s5.py 1080 &# Email: ringzero@557.im
import socket, sys, select, SocketServer, struct, time
class ThreadingTCPServer(SocketServer.ThreadingMixIn, SocketServer.TCPServer): passclass Socks5Server(SocketServer.StreamRequestHandler):def handle_tcp(self, sock, remote):fdset = [sock, remote]while True:r, w, e = select.select(fdset, [], [])if sock in r:if remote.send(sock.recv(4096)) <= 0: breakif remote in r:if sock.send(remote.recv(4096)) <= 0: breakdef handle(self):try:pass # print 'from ', self.client_address nothing to do.sock = self.connection# 1. Versionsock.recv(262)sock.send("\x05\x00");# 2. Requestdata = self.rfile.read(4)mode = ord(data[1])addrtype = ord(data[3])if addrtype == 1: # IPv4addr = socket.inet_ntoa(self.rfile.read(4))elif addrtype == 3: # Domain nameaddr = self.rfile.read(ord(sock.recv(1)[0]))port = struct.unpack('>H', self.rfile.read(2))reply = "\x05\x00\x00\x01"try:if mode == 1: # 1. Tcp connectremote = socket.socket(socket.AF_INET, socket.SOCK_STREAM)remote.connect((addr, port[0]))pass # print 'To', addr, port[0] nothing do to.else:reply = "\x05\x07\x00\x01" # Command not supportedlocal = remote.getsockname()reply += socket.inet_aton(local[0]) + struct.pack(">H", local[1])except socket.error:# Connection refusedreply = '\x05\x05\x00\x01\x00\x00\x00\x00\x00\x00'sock.send(reply)# 3. Transferingif reply[1] == '\x00': # Successif mode == 1: # 1. Tcp connectself.handle_tcp(sock, remote)except socket.error:pass # print 'error' nothing to do .except IndexError:passdef main():filename = sys.argv[0];if len(sys.argv)<2:print 'usage: ' + filename + ' port'sys.exit()socks_port = int(sys.argv[1]);server = ThreadingTCPServer(('', socks_port), Socks5Server)print 'bind port: %d' % socks_port + ' ok!'server.serve_forever()if __name__ == '__main__':main()

使用命令:python s5.py 1080
后台运行:nohup python s5.py 1080&
Proxifier [跳板机公网IP] 1080 检测 socks 5 是否配置成功。

SSH 端口转发

Server-side need to configure /etc/ssh/sshd_config:

AllowTcpForwarding yesGatewayPorts yes

渗透虚拟机:10.211.55.6
VPS 公网/内网:47.100.172.221 / 172.24.4.215

root@Pentester:~# ip adderetho: BROADCAST, MULTICAST, UP, LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000link/ether 00-153025- f8-ac brdff-ff-ff-ff-ff-ffinet 172.24.4.215/18 brd 172.24.63.255 scope global dynamic ethovalid_lft 314480015sec preferred_lft 314480015secinet6 fe80: :216:3eff: fe25: f89c/64 scope linkvalid_lft forever preferred_lft forever3: br-9bafcd@df86: «BROADCAST,MULTICAST, UP, LOWER_UP>

渗透虚拟机执行。

ssh -i sshkey.pem root@47.100.172.221 -D 1080ssh root@47.100.172.221 -D 1080root@ubuntu:/home/ubuntu# wLOGINE IDLE JCPU PCPU WHAT0.06s ssh root@47.100.172.221 -D 1080

渗透虚拟机配置

 proxychains vim /etc/proxychains.conf。

[ProxyList]# add proxy here# meanwile# defaults set to "tor"socks5 127.0.0.1 1082

与 172.24.4.215 通信如下。

root@ubuntu:/home/ubuntu# proxychains4 ping 172.24.4.215[proxychains] config file found: /etc/proxychains.conf[proxychains] preloading /usr/lib/aarch64-linux-gnu/libproxychains.so.4[proxychains] DLL init: proxychains-ng 4.14PING 172.24.4.215 (172.24.4.215) 56(84) bytes of data.64 bytes from 172.24.4.215: imp_seq-1 ttl-128 time 405 ms64 bytes from 172.24.4.215: imp_seq-Z ttl=128 time 50.1 ms64 bytes from 172.24.4.215: imp_seq-3 ttl=128 time 88.9 ms

参考:https://artkond.com/2017/03/23/pivoting-guide/

LCX 端口转发

Lcx 是一个经典的端口转发工具,直接把 3389 转发到公网的 vps 上。
将公网的 1234 端口转发到公网的 3399 端口。

lcx -listen 1234 3399

将本地的 3389 端口转发到公网的 1234 端口。

lcx -slave1234 192.168.1.2 3389

使用远程桌面服务连接 :3399 即可。

客户端全局代理

客户端还需全局代理软件:
1.SocksCap64
2.Proxifier
3.ProxyChains


安恒信息

杭州亚运会网络安全服务官方合作伙伴

成都大运会网络信息安全类官方赞助商

武汉军运会、北京一带一路峰会

青岛上合峰会、上海进博会

厦门金砖峰会、G20杭州峰会

支撑单位北京奥运会等近百场国家级

重大活动网络安保支撑单位


END

长按识别二维码关注我们

浏览 21
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报