STATEMENT
声明
由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,雷神众测及文章作者不为此承担任何责任。
雷神众测拥有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经雷神众测允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。
FRP
frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
FRP frps.ini 服务端配置。
[common]
bind_addr = 0.0.0.0
bind_port = 7000
token = Aabbccqaxsb
FRP frpc.ini 客户端配置。
[common]
server_addr =
server_port = 7000
token = Aabbccqaxsb
[socks5]
type = tcp
remote_port = 10086
plugin = socks5
Proxifier [跳板机公网IP] 10086 检测 socks 5 是否配置成功。
FRP frpc.ini 隧道端口转发配置。
[common]
server_addr =
server_port = 7000
token = Aabbccqaxsb
[range:tcp_port]
type = tcp
local_ip = 172.16.0.40
local_port = 875,32803,32769,892,662,2020,111,2049,53333,36589,32767,32768
remote_port = 875,32803,32769,892,662,2020,111,2049,5333,36589,32767,32768
[range:udp_port]
type = udp
local_ip = 172.16.0.40
local_port = 875,32803,32769,892,662,2020,111,2049,53333,36589,32767,32768
remote_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 password
python3 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): pass
class 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: break
if remote in r:
if sock.send(remote.recv(4096)) <= 0: break
def handle(self):
try:
pass # print 'from ', self.client_address nothing to do.
sock = self.connection
# 1. Version
sock.recv(262)
sock.send("\x05\x00");
# 2. Request
data = self.rfile.read(4)
mode = ord(data[1])
addrtype = ord(data[3])
if addrtype == 1: # IPv4
addr = socket.inet_ntoa(self.rfile.read(4))
elif addrtype == 3: # Domain name
addr = 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 connect
remote = 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 supported
local = remote.getsockname()
reply += socket.inet_aton(local[0]) + struct.pack(">H", local[1])
except socket.error:
# Connection refused
reply = '\x05\x05\x00\x01\x00\x00\x00\x00\x00\x00'
sock.send(reply)
# 3. Transfering
if reply[1] == '\x00': # Success
if mode == 1: # 1. Tcp connect
self.handle_tcp(sock, remote)
except socket.error:
pass # print 'error' nothing to do .
except IndexError:
pass
def 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 yes
GatewayPorts yes
渗透虚拟机:10.211.55.6
VPS 公网/内网:47.100.172.221 / 172.24.4.215
[email protected]:~# ip adder
etho: BROADCAST, MULTICAST, UP, LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00-15•30•25- f8-ac brdff-ff-ff-ff-ff-ff
inet 172.24.4.215/18 brd 172.24.63.255 scope global dynamic etho
valid_lft 314480015sec preferred_lft 314480015sec
inet6 fe80: :216:3eff: fe25: f89c/64 scope link
valid_lft forever preferred_lft forever
3: br-9[email protected]: «BROADCAST,MULTICAST, UP, LOWER_UP>
渗透虚拟机执行。
ssh -i sshkey.pem [email protected]100.172.221 -D 1080
ssh [email protected]100.172.221 -D 1080
[email protected]:/home/ubuntu# w
LOGINE IDLE JCPU PCPU WHAT
0.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.14
PING 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 ms
64 bytes from 172.24.4.215: imp_seq-Z ttl=128 time 50.1 ms
64 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
长按识别二维码关注我们