一、ICMP隧道

背景:已经通过某种手段拿到了园区网A主机的控制权,但是边界防火墙只放行该主机向外的ICMP流量,此时怎样才能让A主机和公网主机C建立TCP连接呢?

方案:将TCP包内容包裹在ICMP中进行传递

工具: ptunnel

工作原理:A主机通过周期性向渗透测试工程师发送ICMP请求以建立ICMP连接。在本地侦听一个空闲端口并与指定IP的指定端口(C主机)建立映射。此时访问侦听的这个端口就相当于访问公网指定IP的指定端口了(C主机)

隧道建立命令:

渗透测试工程师端(开启这个程序后本地不会侦听任何端口,因为它用的是ICMP,既不属于TCP也不属于UDP):
ptunnel -x passwd

参数说明:
-x:密码

A主机端:
ptunnel -p 120.1.1.1 -lp 8000 -da 180.1.1.1 -dp 80 -x passwd

参数说明:
-p:渗透测试工程师IP地址
-lp:本地侦听端口
-da:C主机
-dp:C主机端口
-x:密码

验证:此时在A主机将侦听8000端口,A、B主机此时连接A主机8000端口的TCP流量均被导入C主机的80端口

缺点:唯一的缺点是运行此程序需要root权限

提醒:如果觉得每个隧道只能映射一个公网地址有局限性,可以配合SSH动态端口使用。通过此方法建立ICMP隧道后,再在此隧道内建立一条SSH动态端口转发隧道就可以访问公网任意地址了

二、http隧道

背景:已经通过某种手段拿到了园区网内A主机的控制权,但是边界防火墙只放行代理服务器的出向流量,可是又想用A主机与外面的PC建立ssh连接时该怎么办?

方案:让http代理服务器代替A主机与PC建立ssh连接

工作原理:在本地侦听一个空闲端口,并将PC的22端口映射至该侦听端口,然后将通往PC22端口的流量包裹进代理服务器的http包中,代理服务器将代替A主机与PC建立ssh连接,然后将回包通过http反还给A主机。此时园区网内所有设备只要sshA主机侦听的端口,流量就会被导入PC的22端口。(另外该方案还支持代理链,即通过代理服务器连接至外网的某一代理服务器,再通过该代理服务器与PC建立ssh连接)

隧道建立命令:proxytunnel -a 2222 -p 10.1.1.1:3128 -r 180.1.1.1:80 -d 120.1.1.1:22

-a:本地侦听端口
-p: 本地官方的代理服务器
-r: 墙外的代理服务器
-d: 最终要访问的目标

验证:A主机将在0.0.0.0侦听2222端口,此时园区网内任意一主机ssh主机A的2222端口都将连到PC的22端口

三、UDP隧道

背景:通过某种手段拿到了园区网A主机的控制权,却发现边界防火墙只放行向外的DNS请求流量,此时想要ssh公网上的B主机该怎么办?

方案:将ssh流量包裹在DNS请求报文中

工作原理:搭建一个DNS服务器(B主机),申请域名,并确保上级DNS服务器能将该域名解析至自己的DNS服务器。A主机向公网发出DNS请求(因为A记录长度有限,故可以请求txt这种记录,请求的txt内容就为ssh流量),经过根DNS将流量解析至自己的DNS服务器(B主机),这样公网的主机B就收到了A主机发来的ssh协商请求,然后B主机通过将协商内容写入DNS应答包返回给主机A,这样一来一回就达成了建立ssh连接的网络环境。

由于这种隧道搭建需要一定成本(要让根DNS解析至自己主机),所以就没有做实验验证了。

需要提醒一点:大家都知道DNS会用到UDP的53端口和TCP的53端口,但需要注意的是UDP的53端口是用来做DNS查询使用,TCP的53端口是用用于同一区域冗余DNS之间同步信息,并非这俩端口都是用来做DNS查询的,所以网络管理员一般在边界防火墙只需放开UDP的53端口即可。

总结:归根结底,每种隧道的实现其实都是将协商数据封装至可以放行的流量中。(即:防火墙放行什么协议就将隧道协商流量封装至什么协议)

绕过边界防火墙之ICMP隧道、HTTP隧道、UDP隧道的更多相关文章

  1. Kcptun 是一个非常简单和快速的,基于KCP 协议的UDP 隧道,它可以将TCP 流转换为KCP+UDP 流

    本博客曾经发布了通过 Finalspeed 加速 Shadowsocks 的教程,大家普遍反映能达到一个非常不错的速度.Finalspeed 虽好,就是内存占用稍高,不适合服务器内存本来就小的用户:而 ...

  2. labview中的移位寄存器、循环隧道,自动索引隧道的区别

    对于循环结构(For 循环.while循环)而言,循环体内的数据域外部数据的传递是通过以下三种方式: 1.移位寄存器2.循环隧道3.自动索引隧道 第一.各自的区别.作用 循环隧道,就是把数据传入传出循 ...

  3. 华三F100系列防火墙 、华为USG6300系列防火 GRE 隧道配置

    GRE概述: 通用路由封装(GRE: Generic Routing Encapsulation)是通用路由封装协议,可以对某些网络层协议的数据报进行封装,使这些被封装的数据报能够在IPV4网络中传输 ...

  4. 利用ICMP进行命令控制和隧道传输

    目录 使用ICMP进行命令控制 使用ICMP搭建隧道 使用ICMP进行命令控制 攻击机:Kali  192.168.10.11 靶机:Windows 192.168.10.1 使用的工具:icmpsh ...

  5. Firewalld防火墙与ICMP攻击

    原文地址:http://www.excelib.com/article/293/show 提到ICMP大家应该都很熟悉,可能有人会说:不就是ping吗?但是说到ICMP攻击以及相关防御措施可能就有的人 ...

  6. 使用 connect http proxy 绕过 ssh 防火墙限制

    1.安装 connect brew install connect 2.配置 ~/.ssh/config Host * ProxyCommand connect -H your.proxy.serve ...

  7. DNS隧道工具:iodine使用

      iodine可以通过一台dns服务器制造一个IPv4数据通道,特别适合在目标主机只能发送dns请求的网络中环境中使用.iodine是基于C语言开发的,分为服务端程序iodined和客户端程序iod ...

  8. Linux/Unix System Level Attack、Privilege Escalation(undone)

    目录 . How To Start A System Level Attack . Remote Access Attack . Local Access Attack . After Get Roo ...

  9. 小白日记8:kali渗透测试之主动信息收集(二)三层发现:ping、traceroute、scapy、nmap、fping、Hping

    三层发现 三层协议有:IP以及ICMP协议(internet管理协议).icmp的作用是用来实现intenet管理的,进行路径的发现,网路通信情况,或者目标主机的状态:在三层发现中主要使用icmp协议 ...

随机推荐

  1. python之模块调用

    1.以 atm_run 为入口,在atm中的main模块调用config中的settings from config import settings 2.以atm_run为入口,在main中调用log ...

  2. Rsync的一般使用需求

    rsync 只同步指定类型的文件 需求: 同步某个目录下所有的图片(*.jpg),该目录下有很多其他的文件,但只想同步*.jpg的文件. rsync 有一个--exclude 可以排除指定文件,还有个 ...

  3. wx:for类表渲染

    列表渲染 wx:for 在组件上使用wx:for控制属性绑定一个数组,即可使用数组中各项的数据重复渲染该组件. 默认数组的当前项的下标变量名默认为index,数组当前项的变量名默认为item < ...

  4. SSM_CRUD新手练习(9)显示分页数据

    我们已经做好了用来显示数据的分页模板,现在只需要将我们从后台取出的数据填充好,显示出来. 我们使用<c:forEach>标签循环取出数据,所以需要先导入JSTL标签库 <%@ tag ...

  5. django自定义user认证系统

    第一种,彻底推翻django的user认证系统,重新定义我们想要的字段 from django.contrib.auth.models import AbstractBaseUser,Permissi ...

  6. 背水一战 Windows 10 (74) - 控件(控件基类): UIElement - 与 CanDrag 相关的事件, 与 AllowDrop 相关的事件

    [源码下载] 背水一战 Windows 10 (74) - 控件(控件基类): UIElement - 与 CanDrag 相关的事件, 与 AllowDrop 相关的事件 作者:webabcd 介绍 ...

  7. word文档的python解析

    主要两块,第一个是文件类型的转换,第二个是用docx包去对word文档中的table进行parse 1. 文件格式装换 因为很多各种各样的原因,至今还有一些word文档是doc的格式存的,对于这种,如 ...

  8. [Swift]扩展UIColor:实现十六进制颜色字符串与UIColor之间的相互转换

    对[UIColor]进行扩展 import UIKit extension UIColor { // Hex String -> UIColor convenience init(hexStri ...

  9. kafka shutdown停止关闭很慢问题的解决方案

    kafka shutdown停止很慢问题 在数据量大的时候,consumer一次抓取数据的数据很多,进入到业务处理的数据可能有很多, 假设一次poll有1万条数据进入业务程序,而且业务程序是和poll ...

  10. WinForm版图像编辑小程序(实现图像拖动、缩放、旋转、抠图)

    闲暇之余,开发一个图片编辑小程序.程序主要特点就是可方便的对多个图像编辑,实现了一些基本的操作.本文主要介绍一下程序的功能.设计思路. 执行程序 下载地址: 百度网盘.https://pan.baid ...