Pivoting 内网穿透基础
2023-4-20 00:26:33 Author: 白帽子(查看原文) 阅读量:31 收藏

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: [email protected]
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

[email protected]:~# 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-9[email protected]: «BROADCAST,MULTICAST, UP, LOWER_UP>

渗透虚拟机执行。

ssh -i sshkey.pem [email protected]100.172.221 -D 1080ssh [email protected]100.172.221 -D 1080[email protected]:/home/ubuntu# wLOGINE IDLE JCPU PCPU WHAT0.06s ssh [email protected]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 通信如下。

[email protected]:/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

长按识别二维码关注我们


文章来源: http://mp.weixin.qq.com/s?__biz=MzAwMDQwNTE5MA==&mid=2650246644&idx=1&sn=981b757cc1d9f6fe3307f20f802e936e&chksm=82ea565db59ddf4b9b7c732e173559b9eaa64dc3ff3c85639088ee4d8d201ae284a3d52af163#rd
如有侵权请联系:admin#unsafe.sh