从安全的角度来看,哪些 HTTP 状态代码很有趣?

信息安全 Web应用程序 日志记录 http
2021-08-14 09:35:22

我正在寻找从网络服务器日志中提取有趣的信息,我想知道我应该过滤掉哪些 HTTP 状态代码?

例如,200 次点击可以被认为是“常规行为”,而来自某个 IP 的大量 404 次点击可能意味着某人不合格(自动扫描)。

那么,我主要在日志中看到哪些:

304 - Not Modified
404 - Not found
302 - Found
206 - Partial content
301 - Moved permanently
500 - Internal Server Error
403 - Forbidden
501 - Not implemented
406 - Not acceptable
416 - Requested Range Not Satisfiable
other?

我应该过滤掉,哪些通常会提供有见地的信息?哪些已知被坏人用来收集信息?可能最“有趣”的一个是 404,但如果其他人过去处理过这个问题,我想得到更多的意见。谢谢..

2个回答

当攻击者请求应受授权保护的 URI ( http://cwe.mitre.org/data/definitions/862.html ) 时,HTTP 200s 对攻击者来说非常棒。

攻击者会注意 HTTP 500——它们通常会导致攻击性成功。观察大量 HTTP 500 可能会很有趣。如果应用程序喜欢在错误时重定向(HTTP 302),那么很多 HTTP 302 可能会很有趣。

要捕获恶意活动,最好观察部分或全部 HTTP 状态代码的数值变化(最小值、最大值、中值、平均值、标准差)。在短时间内从 IP 块中观察到 50,000 个 HTTP 200 可能意味着您的数据库正在走向公众。许多不寻常的 HTTP 200 也可能意味着攻击者找到了一种成功发送恶意请求的方法,这些请求得到了 HTTP 200 的响应。

如果您有很多时间玩,您可以模拟“普通”用户的活动(例如,普通用户在会话期间生成的每个 HTTP 状态代码有多少)然后寻找跨越容差阈值的变化。搜索异常算法并尝试那些您认为可以通过仅分析 HTTP 状态代码来识别异常活动的算法。实际上可能是有趣的研究。

附带说明一下,如果您正在查看 Apache 攻击日志,请查看http://code.google.com/p/apache-scalp/

头皮!是 Apache Web 服务器的日志分析器,旨在查找安全问题。主要思想是查看巨大的日志文件并提取通过 HTTP/GET 发送的可能攻击(默认情况下,Apache 不记录 HTTP/POST 变量)。

基于响应代码这样的低分辨率而将请求视为不感兴趣而将其驳回是很危险的。来自未知 IP 地址的 /admin/ 中的 200 响应很有趣

除了您列出的有趣代码之外,400 响应也可能很有趣(例如,它们是由Slowloris引起的,它们也是由攻击者手动制作 HTTP 请求并弄错协议引起的。)

401 响应可能很有趣,因为它们是由 HTTP 身份验证(通常称为 htaccess 身份验证)生成的。其中很多都可能表示暴力攻击。

事实上,我会说 400 范围内的一切都很有趣。 可以在此处找到完整的响应代码列表。

但你问的是哪些有趣。为此,我会暂时建议整个 300 范围,但需要注意的是,任何不寻常的东西都很有趣。在实践中,这意味着 301、302 和 304 可能并不有趣。302 响应通常是表单提交的结果,并且会由垃圾评论发送者造成很多,因此您是否认为这很有趣是个人决定。

不寻常关键字在这里可能比任何特定的响应代码列表更有用。这适用于日志中的每个字段。不寻常的请求方法(例如 PUT 或 CONNECT)非常有趣,即使它们返回一个不感兴趣的响应代码。

一旦您发现了一个需要进一步调查的异常请求,您接下来应该做的就是抓取同一 IP 地址发出的每个请求,即使您通常会因为它们的响应代码而忽略它们,因为它们不感兴趣。

一系列 401 和 200 可能表明攻击者最终正确猜到了密码并获得了管理页面。如果您忽略 200 个响应,您可能会认为这是一次不成功的蛮力攻击。

在看到像上面这样的成功攻击之后,您会感兴趣的是每个请求的 URL 相同的 IP 地址,而不是响应代码。